线程索引:基于以网格和块的一维信息来计算全局数据访问的唯一索引:
int idx = blockIdx.x*blockDim.x+treadIdx.x;
定义一个错误处理宏封装所有的CUDA API调用,简化错误检查过程:(\ 不能省去)
#define CHECK(call) \{
const cudaError_t error =call; \
if(error != cudaSuccess) \
{ \
printf("Error: %s:%d,", __FILE__, __LINE__); \
printf("code:%d, reason: %s \n",error,cudaGetErrorString(error)); \
exit(1); \
}
}
调用方式如下,此仅以调试为目的的,核函数启动后添加这个检查点会阻塞主机端线程,使该检查点成为全局屏障。
CHECK(cudaDeviceSynchronize());