【发布时间】:2015-03-23 06:02:35
【问题描述】:
将在 GPU 上运行的函数需要限定符 __device__。我目前正在编写一套通用的数学函数,可以在 GPU 和 CPU 上使用。我认为将所有这些函数限定为__device__ 并不是很好,因为它们也可能包含在根本不存在 CUDA 的其他程序中。有没有办法省略__device__?
【问题讨论】:
将在 GPU 上运行的函数需要限定符 __device__。我目前正在编写一套通用的数学函数,可以在 GPU 和 CPU 上使用。我认为将所有这些函数限定为__device__ 并不是很好,因为它们也可能包含在根本不存在 CUDA 的其他程序中。有没有办法省略__device__?
【问题讨论】:
在为非 CUDA 目标构建时,您可以只使用 -D__device__="" 进行编译,或者在为 CUDA 编译时使用可以定义为 __device__ 的更通用的宏。
【讨论】:
#ifndef __CUDACC__
#define __device__
#endif
或类似的。当然,您需要类似的守卫来处理在非 CUDA 设置中不有意义的包含和函数。
【讨论】: