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

Phi*_*hil 8 c++ scope cuda function

我在一些需要从设备和主机调用的CUDA代码中都有一个可重用的函数.这有适当的限定词吗?

例如,在这种情况下,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
}
Run Code Online (Sandbox Code Playgroud)

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

tke*_*win 16

来自CUDA编程指南:

但是__device__,__host__限定符可以一起使用,在这种情况下,将为主机和设备编译函数.