CUDA C编程(笔记)——CUDA的异构并行计算
1.并行性
1.1 并行计算
在应用程序设计中有两种基本的并行类型:任务并行、数据并行,CUDA适合数据并行计算。
数据并行程序设计第一步就是把数据依据线程划分,有两种划分方式:块划分(block partitioning)、周期划分(cyclic partitioning)。
块划分:一组连续的数据被分到一个块内,每个数据块以任意次序被安排给一个线程,线程通常在同一时间只处理一个数据。每个线程作用于一部分数据块,通常这些数据块具有相同的大小。
周期划分:较少的数据被分到一个块内,相邻的线程处理相邻的数据块,每个线程可以处理多个数据块。每个线程作用于数据的多部分。
CPU核心比较重,用来处理非常复杂的控制逻辑,以优化串行程序执行
GPU核心比较轻,用于优化具有简单控制逻辑的数据并行任务,注重并行程序的吞吐量
1.2 异构计算
同构计算使用的是同一架构下的一个或多个处理器来执行一个应用
异构计算使用一个处理器架构来执行一个应用,为任务选择合适他的架构,使其最终对性能有所改进。
一个典型的异构计算节点包括两个多核CPU插槽和两个或多个众核GPU。GPU不是独立运行的平台,而是CPU的协处理器,要通过PCIe总线与基于CPU的主机相连进行操作。
异构应用包括两部分:主机代码、设备代码
1.3 CUDA
CUDA程序包含:CPU上运行的主机代码、GPU上运行的设备代码
以下例程运行环境为VS2019、1050ti、cuda_11.4.0_471.11_win10 、cudnn-11.4-windows-x64-v8.2.2.26
#include<stdio.h>
#include"cuda.h"
#include"cuda_runtime.h"
#include"device_launch_parameters.h"// __global__ 是CUDA在标准C中添加的一个限定符,告诉编译器此函数在设备(GPU)上运行
__global__ void helloFromGPU() {printf("Hello World from GPU!\n");
}int main(int argc, char** argv) {printf("Hello World from CPU!\n");// 从主机上调用设备代码 << <1, 10 >> >表示在设备上的1个块中的10个线程运行helloFromGPU 函数helloFromGPU << <1, 10 >> > ();system("pause");return 0;
}
运行结果
CUDA C编程(笔记)——CUDA的异构并行计算相关推荐
- 【CUDA】学习笔记(3)论文笔记:并行异构计算机调研
发表在CCF期刊上的一篇论文<Parallel programming models for heterogeneous many‐cores: a comprehensive survey&g ...
- CUDA是Nvidia开发的一种并行计算平台和编程模型,用于在其自己的GPU(图形处理单元)上进行常规计算
https://baike.baidu.com/item/CUDA/1186262?fr=aladdin CUDA是Nvidia开发的一种并行计算平台和编程模型,用于在其自己的GPU(图形处理单元)上 ...
- CUDA 编程上手指南:CUDA C 编程及 GPU 基本知识
作者丨科技猛兽 编辑丨极市平台 本文原创首发于极市平台,转载请获得授权并标明出处. 推荐大家关注极市平台公众号,每天都会更新最新的计算机视觉论文解读.综述盘点.调参攻略.面试经验等干货~ 目录 1 C ...
- GPU加速(一)CUDA C编程及GPU基本知识
前 言 笔记来自深蓝学院<CUDA入门与深度神经网络加速> 补充:线程与线程 线程是进程中执行运算(CPU调度)的最小单位.同一类线程共享代码和数据空间:进程是资源分配的最小单位.每个进程 ...
- 来自GPU的Hello World-基于Win10+VS2019+CUDA 11.0搭建CUDA编程环境
序 CPU和GPU 当代计算机的两个核心,GPU计算与CPU计算的结合,使得原本的计算性能得到大幅度的提高,两者功能的互补性使得CPU+GPU的异构并行计算得到快速发展.为了支持使用CPU+GPU ...
- CUDA (一):CUDA C 编程及 GPU 基本知识
目录 1 CPU 和 GPU 的基础知识 2 CUDA 编程的重要概念 3 并行计算向量相加 4 实践 4.1 向量相加 CUDA 代码 4.2 实践向量相加 5 给大家的一点参考资料 1 CPU 和 ...
- cuda C 编程权威指南 Grossman 第2章 CUDA编程模型
2.1 CUDA编程模型概述 CUDA编程模型提供了一个计算机架构抽象作为应用程序和其可用硬件之间的桥梁. 通信抽象是程序与编程模型实现之间的分界线,它通过专业的硬件原语和操作系统的编译器或库来实现. ...
- 《CUDA C编程权威指南》——导读
###前 言 欢迎来到用CUDA C进行异构并行编程的奇妙世界! 现代的异构系统正朝一个充满无限计算可能性的未来发展.异构计算正在不断被应用到新的计算领域-从科学到数据库,再到机器学习的方方面面.编程 ...
- CUDA刷新器:CUDA编程模型
CUDA刷新器:CUDA编程模型 CUDA Refresher: The CUDA Programming Model CUDA,CUDA刷新器,并行编程 这是CUDA更新系列的第四篇文章,它的目标是 ...
最新文章
- SCN试验之二 checkpoin scn 与数据库scn的关系
- java反射sethaha_Java反射深度测试
- oracle导入视图报错,exp/imp 报错处理(EXP-00003 / IMP-00019 / IMP-00058)
- 【算法系列之十三】二叉树两叶节点的最大距离
- [蓝桥杯]2019年第十届省赛真题C/C++ B组 填空+大题
- PWDX查找程序执行路径
- C# XML文件操作类XmlHelper
- c++语言 进行验证码识别,C++ 借助 Tesseract-OCR 识别乐讯新版验证码
- editview软键盘弹出和隐藏
- FAT和FAT32文件系统的原理
- CloudSim仿真流程研究(一)
- 计算机中显示器的分类,显示器怎么分类
- 2007年个人回忆与总结
- 2022年荧光染料市场前景分析及研究报告
- Android N混合编译与对热补丁影响解析
- 从大数据应用案例中理解大数据的应用价值
- 设备远程监控物联网平台
- 阿里云-云存储OSS
- 地理信息系统GIS和增强现实技术AR
- 华为大队入职培训记(1)