1 介绍
1.1 Grid 和 Block 概念
核函数以线程为单位进行计算的函数
,cuda编程会涉及到大量的线程(thread),几千个到几万个thread同时并行计算,所有的thread其实都是在执行同一个核函数。
- 对于核函数(Kernel),一个核函数一般会分配1个Grid, 1个Grid又有很多个Block,1个Block中又有很多个thread,可以认为Grid和Block都是大量的thread组合:
Grid > Block > thread
。之所以这么划分
,比如将Grid划分为多维的Block,Block划分为多维thread,它其实是为了帮助你快速索引对应的thread
。- Grid 和Block是逻辑上意义的概念,它并不是在你的GPU硬件上实际存在的。
从上图可以看出,Block中有很多个thread,每个thread它都有自己的Registers和Local Memory。同时每一个Block中的thread,他们都是共享一个Shared Memory
。同时一个Grid中的多个Bl