1

我正在通过 CUDA 移植一个小型 C++ 代码库以在显卡上调用。CUDA 要求所有函数都预先添加__host__ __device__,以便在 CPU 和 GPU 内核代码中都可以调用。例如,

void foo() {} // callable on CPU, not on GPU
__host__ __device__ foo() {} // callable on CPU and on GPU

__host__ __device__添加到我的代码库中的每个函数是一项乏味但直接的任务,但我想知道:有没有一种有效的方法来为 C/C++ 函数添加限定符?

我会对检测到所有函数声明的文本编辑器技术或编译器功能感到满意。但是,我不知道涉及任何一个的解决方案。

想法?

4

1 回答 1

1

我不知道任何此类编译器功能。不过,无论如何我都会对广泛应用这些指令保持警惕,因为调用约定和堆栈管理在不需要时可能与正常的主机约定有很大不同(例如更慢?)。我可能会将我自己的宏放在一起,例如#define HDFN __host__ __device__这样可以很容易地添加/更改。

除此之外,您也许可以挖掘一个用于检测方法的正则表达式并编写一个简单的宏......

于 2013-02-11T20:09:51.390 回答