我正在编写一个非常长的CUDA内核,这对于人类的可读性来说非常糟糕。有没有办法用内核之外的函数组织CUDA内核? 例如:
__global__ void CUDA_Kernel(int* a, int* b){
//calling function 1
//calling function 2
//calculation function
.......
}
答案 0 :(得分:4)
是的。定义和调用设备功能:
__device__ float foo(float x, float y) {
return x+y*x;
}
答案 1 :(得分:4)
如果使用__device__关键字定义函数,则可以从内部调用该函数。
例如:
__device__ int test_fun(int val)
{
return 2*val + 3;
}
__global__ void kern_test( int * data)
{
int aOffset = blockDim.x * blockIdx.x + threadIdx.x;
data[offset] = test_fun(data[offset]);
}