我的CUDA学习笔记

研究生阶段开始接触CUDA。这里要感谢我的老板,感谢他的眼光和对我的信任,把这副担子交给我,我不想让他失望。在学习中慢慢陶醉于CUDA的神奇,被它强大的power所折服,这个过程实在太美妙,让我有很强烈的冲动把它记下来。这期间也受到一些前辈们博客的启发,我会在以下内容中特别提到。在项目实践中还有一些值得记下来的经验教训和典型bug,将另外专开一篇帖子记录。OK, let's begin.  


(一)、CUDA相关书籍:《GPU高性能编程CUDA实战》、《CUDA并行程序设计GPU编程指南》、《GPU高性能运算之CUDA》、《大规模并行处理器编程实战》、《OpenGL编程指南》、《GPGPU编程技术——从GLSL、CUDA到OpenCL》


(二)、程序体系:CUDA解构、线程模型、内存模型、


(三)、CUDA解构

一、代码结构:

1、主机端代码框架:(1)启动CUDA,使用多卡时加上设备号,或使用cudaSetDevice()设置GPU设备;(2)为输入数据分配内存空间;(3)初始化输入数据;(4)为GPU分配显存,用于存放输入数据;(5)将内存中的数据拷贝到显存;(6)在GPU上分配显存,用于存放输出数据;(7)调用device端的kernel进行计算,将结果写到显存中对应区域;(8)为CPU分配内存,用于存放GPU传回来的输出数据;(9)将显存中的结果读回到内存;(10)使用CPU对数据进行其他处理;(11)释放内存和显存空间;(12)退出CUDA。

2、设备端代码框架:(1)存显存读数据刀GPU内;(2)对数据进行处理;(3)将处理后的数据写回显存。

3、CUDA runtime API & CUDA driver API 的用途、关系:必须用二者之一,才能实现管理GPU资源,在GPU上分配显存、启动核函数等功能。但是在一个程序中只能用二者中的一种,不能混合使用。

二、CUDA对C的扩展:(1)函数类型限定符。__global__、__device__等。(2)变量类型限定符。__shared__等。(3)内置矢量类型。dim3等。(4)引入了4个内建变量。blockIdx、threadIdx、gridDim、blockDim。(5)引入了<<<>>>运算符,用于指定grid和block维度。ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值