可由设备或主机调用的CUDA函数调用

9

我有一段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
}

我目前只能通过两次调用函数来使其在设备和宿主机上分别运行。是否有更好的方式?

1个回答

17

来自CUDA编程指南:

__device____host__限定符可以一起使用,此时函数会被编译成适用于主机和设备的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接