组织CUDA内核

时间:2011-06-29 14:41:45

标签: gpu cuda

我正在编写一个非常长的CUDA内核,这对于人类的可读性来说非常糟糕。有没有办法用内核之外的函数组织CUDA内核? 例如:

__global__ void CUDA_Kernel(int* a, int* b){
     //calling function 1
     //calling function 2
     //calculation function
         .......
}

2 个答案:

答案 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]);
}