【发布时间】:2013-08-21 08:49:27
【问题描述】:
我想在 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内核中使用它的功能)
如果您需要更多解释(因为这可能看起来令人困惑),请询问我。
【问题讨论】:
-
rand()的 GPU 版本从何而来? -
好问题。假设 rand() 函数在 GPU 上使用 curand.h 或 Thrust cuda 库。
标签: c++ cuda parallel-processing