C++ 设备或主机均可调用CUDA函数

C++ 设备或主机均可调用CUDA函数,c++,function,scope,cuda,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() { // No

我在一些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
}

到目前为止,我只能通过两次使用该函数来实现这一点:一次显式地用于设备,一次用于主机。有更好的方法吗?

来自CUDA编程指南:

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