美文网首页
如何快速理解CUDA GPU并行编程?

如何快速理解CUDA GPU并行编程?

作者: Hennyxu | 来源:发表于2020-07-27 11:37 被阅读0次

理解线程(Thread)、线程块(Block)、网格(Grid),线程块数(BlockDim)、网格数(GridDim)以及核函数(Kernel)的概念,是CUDA学习的一个难点。本文会详细介绍如何在CUDA中使用一维、二维核函数,并索引其下标。

Dim3类型的数据

这是CUDA自定义的一种数据结构,一般为三维的无符号整型,其定义及引用方式如下;

Dim3 BlockSize(16, 16, 1)
// BlockSize.x = 16; BlockSize.y = 16; BlockSize.z = 1;
// 也可以写为  Dim3 BlockSize(16, 16),最后一维默认为1;

一维的CUDA核函数

  • blockIdx.x代表x方向上的线程块序号;
  • blockDim.x代表x方向上单个线程块内最大的线程数;
  • threadIdx.x代表x方向上的线程序号;

所以要索引第三个Block(序号2)中第4个线程(序号3)的下标index,其过程如图所示:

一维结构及一维下标索引

二维的CUDA核函数

  • blockDim.x代表x方向上单个线程块包含的线程数
  • blockDim.y代表y方向上单个线程块包含的线程数

而x、y的方向如下图所示:

二维结构及二维下标索引

以上就是两种最常见的索引方式,在大部分任务中应该已经够用了。

相关文章

网友评论

      本文标题:如何快速理解CUDA GPU并行编程?

      本文链接:https://www.haomeiwen.com/subject/euzmlktx.html