CUDA 基本概念理解

CUDA 基本概念理解

grid

  • 分配给每个kernel总的线程资源,可以是一维二维三维的,其中包含许多block。
  • 共享global memory

block

  • grid 的组成单位,线程块嘛,分配到 GPU SM上的基本单位,不能将其拆开分到不同的SM上。
  • block内的所有线程共享 shared memory,L1 cache 。

thread

  • GPU线程,每个线程都有自己私有 资源,例如寄存器,local memory 等等

常出现在代码中几个内部变量

维度

  • 维度表示的总是一个方向上的总数,比如说 blockdim.x 就表示 在block 中,x方向上,thread的总个数。
  • blockDim.x,y,z gives the number of threads in a block, in the particular direction
  • gridDim.x,y,z gives the number of blocks in a grid, in the particular direction
  • blockDim.x * gridDim.x gives the number of threads in a grid (in the x direction, in this case)

索引

  • 索引,简单的说就是编号。比如threadIdx.x 这个线程在 block 中x 方向(维度)上的,一个编号,排第几
  • threadIdx.x,y,z
  • blockIdx.x,y,z

那么根据上边两个概念,我们就可以计算 在grid 中全局的 blockIdx 和 threadIdx,以及在 block 中的 threadIdx了。

比如常用的 就是在 block 中的全局threadIdx,我们假如block是三维的;

发表评论

电子邮件地址不会被公开。 必填项已用*标注