CUDA基础(1):操作流程与kernel概念
2018-06-17 23:04:00来源:未知 阅读 ()
Cuda是Nvidia发布的并行计算框架,GPU的工作早已不局限于处理图形图像,它所包含的大量的计算单元用来执行那些计算量大但可以并行处理的任务。
Cuda的操作概括来说包含5个步骤:
1.CPU在GPU上分配内存:cudaMalloc;
2.CPU把数据发送到GPU:cudaMemcpy;
3.CPU在GPU上启动内核(kernel),它是自己写的一段程序,在每个线程上运行;
4.CPU把数据从GPU取回:cudaMemcpy;
5.CPU释放GPU上的内存。
其中关键是第3步,能否写出合适的kernel,决定了能否正确解决问题和能否高效的解决问题。
Cuda对线程做了合适的规划,引入了grid和block的概念,block由线程组成,grid由block组成,一般说blocksize指一个block放了多少thread;gridsize指一个grid放了多少个block。
一个kernel结构如下:Kernel<<<Dg, Db, Ns, S>>>(param1, param2, ...)
-Dg:grid的尺寸,说明一个grid含有多少个block,为dim3类型,一个grid最多含有65535*65535*65535个block,Dg.x,Dg.y,Dg.z最大值为65535;
-Db:block的尺寸,说明一个block含有多上个thread,为dim3类型,一个block最多含有1024(cuda2.x版本)个threads,Db.x和Db.y最大值为1024,Db.z最大值64;
(举个例子,一个block的尺寸可以是:1024*1*1 | 256*2*2 | 1*1024*1 | 2*8*64 | 4*4*64等)
-Ns:可选参数,如果kernel中由动态分配内存的shared memory,需要在此指定大小,以字节为单位;
-S:可选参数,表示该kernel处在哪个流当中。
可参见:
关于cuda版本信息:http://blog.cuvilib.com/2010/06/09/nvidia-cuda-difference-between-fermi-and-previous-architectures/
blocksize大小:http://stackoverflow.com/questions/5062781/cuda-max-threads-in-a-block
gridsize大小:http://stackoverflow.com/questions/6048907/maximum-blocks-per-gridcuda
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 如何0基础学习C/C++? 2020-06-06
- 复习C++语法--基础篇 2020-05-27
- C++基础 学习笔记六:复合类型之数组 2020-04-25
- C++基础 学习笔记五:重载之运算符重载 2020-04-23
- C++基础 学习笔记四:重载之函数重载 2020-04-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash