使用CUDA只讀緩存有兩個辦法
1.你可以使用內部函數__ldg來通過只讀緩存直接對數組進行讀取訪問:
但是我的彙報錯,說__ldg未定義,非常玄奇,不知道有沒有老鐵看了知道的告訴我一下
__global__ void copyKernel(int *out,int *in){
int idx = blockIdx.x*blockDim.x+threadIdx.x;
out[idx] = __ldg(&in[idx]);
}
2.使用__restrict__ 和constant
__global__ void copyKernel_2(int *__restrict__ out,const int *__restrict__ in){
int idx = blockIdx.x*blockDim.x+threadIdx.x;
out[idx] = in[idx];
}
都可以。