CUDA基本语法 - 简书
文章推薦指數: 80 %
示例:向量加的CUDA实现这里通过向量加计算这个例子介绍CUDA的基本知识,主要包括内存操作、核函数(kernel function)以及线程配置等。
CUDA基本语法示例:向量加的CUDA实现
这里通过向量加计算这个例子介绍CUDA的基本知识,主要包括内存操作、核函数(kernelfunction)以及线程配置等。
向量加问题描述
向量a,b,c为有N个元素的一维向量,计算c=a+b.
由于c中每个元素的计算与其他的元素间没有依赖关系,所以该问题适合于并行计算。
见下图:
向量加操作示意图
CUDA是对现有编程语言的扩展,比如CUDAC是对C语言的扩展,大部分为C语言语法。
下面我们分别来看下该问题的CPU代码实现以及CUDA代码实现,然后针对CUDA代码中新出现的语法作一一说明。
CPU代码实现
CPU向量加的函数实现:
voidvecAdd(intn,int*a,
int*b,int*c)
{
for(inti=0;i
我们这里主要关心的是两者的不同之处:
向量加函数的实现处不同。
CUDA代码实现中函数最前面多出一个标识符__global__,该标识符表明这段函数会在GPU端执行,我们通常称这样的函数为核函数(Kernelfunction)。
在函数的内部inti=blockDim.x*blockIdx.x+threadIdx.x;表示的是在GPU上执行时的线程号。
另外CPU代码使用for循环对向量中的每个元素依次进行操作,而在CUDA代码中则省去了该循环操作,取而代之的是所有的元素同时操作,每个CUDA线程对应一个向量元素,这也就是并行计算。
内存的分配与释放。
观察两者main函数的实现,总共可以发现两处不同之处,一是内存的分配与释放,另外一个是向量加实现函数的调用。
前面我们也提到CPU与GPU分别具有各自的内存系统,数据可以在CPU内存以及GPU内存之间传递,要想在GPU上进行计算,我们首先要把待处理的数据放到GPU端,GPU完成计算后再把结果拷贝回CPU端。
GPU端内存的分配与释放分别有相应的CUDARuntimeAPI来完成。
实现函数的调用。
与CPU代码的另外一个明显的不同就在于实现函数的调用方式不同。
从CUDA代码可以看出,其调用方式为kernel_name<<
上面简要说明了CUDA代码相对于CPU代码的不同之处,后面将针对这几个部分作详细的说明。
推荐阅读更多精彩内容CUDA——"从入门到放弃"开篇一张图,后面听我编1.知识准备1.1中央处理器(CPU)中央处理器(CPU,CentralProc...He_Yu阅读43,263评论8赞109无CUDA从入门到精通标题文章(转)CUDA从入门到精通(零):写在前面本文原版链接:在老板的要求下,本博主从2012年上高性能计算课程开始接触C...Pitfalls阅读3,182评论1赞3CUDA编程入门1.CPUvs.GPU1.1四种计算机模型GPU设计的初衷就是为了减轻CPU计算的负载,将一部分图形计...王侦阅读18,526评论3赞19CUDACProgrammingGuide本篇文章作为学习CUDA官方文档的学习笔记。
CUDACProgrammingGuide1.Program...凉凉zz阅读2,057评论0赞12018-04-034月3日日精进:【敬畏】-【体验】-【持续】-【交给】-【显现】1、缺啥补啥,怕啥练啥2、一切为我所用,所用...xiebo阅读40评论0赞0公交车上的遐想公交车上的遐想文||与你相识满车焦灼的目光写满回家的渴望一早晨的时光划过落下一地落寞重复的生活像火辣...与你相识_40fa阅读112评论2赞2在乎因为太在乎,所以才会计较。
平常心平常做人阅读101评论0赞02018-08-16凯骏凯骏凯骏就不写阅读93评论0赞0抽奖2赞3赞赞赏更多好文
延伸文章資訊
- 1CUDA · parallel_processing
而在device 上執行的function(device 和global)有一些基本的限制:. 不支援遞迴; 不能有static 變數; 不能使用variable number of argum...
- 2[07W310]《科管局補助80%》CUDA程式設計與深度學習
平行計算概論與CUDA基本語法。 2.GPU的硬體架構與CUDA程式優化。 3.TensorFlow與深度學習應用。 課程師資:. 自強基金會專業講師學歷:美國馬里蘭大學博士專長:數值 ...
- 3CUDA程式設計指南閱讀筆記
CUDA基本概念(上) ... 本節將介紹CUDA的一些基本的程式設計概念,該節用到的例子來自於CUDA Sample中的VectorAdd專案。 ... 執行配置語法來設定。
- 4NVIDIA CUDA 编程指南
nvcc 的基本工作流程在于从主机代码中分离出设备代码,并且编译设备代码成为一个二进制 ... 包含一个执行配置语法的转换,和进入必要的CUDA Runtime 的起始码(第4.2.3 ...
- 5cuda编程基础概念语法 - CSDN博客
注意CUDA C/C++可以看作一个新的编程语言,因为NVIDIA配置了相应的编译器nvcc,CUDA Fortran一样。 ... 学习记录--CUDA基本语法--CUDA10.2.