- CUDA C语言
CUDA C语言主要是对C语言进行了一些扩展
- 引入函数类型限定符
__device__该函数在device上执行
__host__该函数在host上执行
__global__该函数在host上调用,在device上执行,主要是在kernel函数,即执行指令
- 引入变量类型限定符
这主要是用来规定变量被存储在哪一类存储器上。在CUDA编程模型中,一共抽象出来多达8种不同的存储器。为了区分各种存储器。必须引入一些限定符
- 引入内建变量
blockIdx和threadIdx用于索引线程块和线程,gridDim和blockDim用于描述线程网格和线程块的维度
gridDim:指示网格的维度,类型为dim3
blockIdx:指示网格内的块索引,类型为uint3,这里的blockIdx表示的是一个grid里面block的id
blockDim:指示块的维度,类型为dim3
threadIdx:指示块内的线程索引,类型为uint3,这里的threadIdx表示一个block里面thread里面的id
warpSize:指示线程为单位的warp块大小,类型为int
我自己的理解是,内建变量是在线程分配时自己定义的,不需要自己修改,当编译运行这段指令的时候,threadIdx.x threadIdx.y blockIdx.x blockIdx.y会在进入不同线程的时候自己发生变化,说起来,应该看看PTX 和JIT
- 引入<<< >>>运算符
用于指定线程网格和线程块维度,传递执行参数
-
<