CUDA功能可由设备或主机调用

时间:2011-01-18 15:45:04

标签: c++ function scope cuda

我在某些CUDA代码中有一个可重用的功能,需要从设备和主机中调用。是否有适当的限定词?

e.g。在这种情况下,func1的正确定义是什么:

int func1 (int a, int b) {
    return a+b;
}

__global__ devicecode (float *A) {
    int i = blockDim.x * blockIdx.x + threadIdx.x;
    A[i] = func1(i,i);
}

void main() {
    // Normal cuda memory set-up

    // Call func1 from inside main:
    int j = func1(2,4)

    // Normal cuda memory copy / program run / retrieve data
}

到目前为止,我只能通过两次执行此功能来实现此功能:一次是显式设备,一次是主机。还有更好的方法吗?

1 个答案:

答案 0 :(得分:16)

来自CUDA编程指南:

  

__device____host__限定符可以一起使用   在哪种情况下,功能是为主机和设备编译的。