在cuda中使用cpu函数

时间:2013-08-19 14:04:00

标签: c++ cuda parallel-processing

我想在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内核中使用它的函数)

如果您需要更多解释(因为这可能看起来令人困惑),请问我。

1 个答案:

答案 0 :(得分:3)

您可以使用__host__ __device__装饰器标记要在设备和主机上使用的功能,以便为您的cpu和gpu编译它。