美文网首页
如何快速理解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