我想在CUDA内核中包含一个C ++函数,但是这个函数是为这样的CPU编写的:
inline float random(int rangeMin,int rangeMax){
return rand(rangeMin,rangeMax);
}
假设rand()函数使用curand.h或Thrust cuda库。
我认为在使用内核函数(只有一个GPU线程)时会将此函数包含在内联中,因此cuda编译器会为GPU生成二进制文件。
这可能吗?如果是这样,我想在CUDA内核函数中包含为cpu编写的另一个内联函数。
这样的事情:
- InlineCpuFunction.h和InlineCpuFunction.cpp
- CudaKernel.cuh和CudaKernel.cu(这个包含上面的标题并在CUDA内核中使用它的函数)
如果您需要更多解释(因为这可能看起来令人困惑),请问我。
答案 0 :(得分:3)
您可以使用__host__ __device__
装饰器标记要在设备和主机上使用的功能,以便为您的cpu和gpu编译它。