CUDA-6

CUDA-6

之前看的还只是一维的,而实际上开的线程可以是两维的。比如像下面这样

int x = blockIdx.x;
int y = blockIdx.y;
int offset = x + y*gridDim.x;

如果申请两维的话,在调用核函数的时候就要这样

dim3 grid(DIM, DIM);
kernel<<<grid, num>>>(args);

这里的dim3并不是标准的C定义的类型,类型dim3表示一个三维数组,可以用于指定启动的线程块的数量。但是我们在指定的时候却指定了两个参数。这是因为最后一维的大小是1.这是内部指定好的。应该是为了以后扩展的时候用的。

关于__device__ 之前已经说过,这表示代码只能在GPU上而不是主机上面运行。这种函数只能从__device__函数或者__global__函数中调用它们。

打赏,谢谢~~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦