在GPU上调用函数时,我可以避免__device__限定符吗

Can I avoid __device__ qualifier when calling a function on the GPU?

本文关键字:device 可以避免 GPU 调用 函数      更新时间:2023-10-16

将在GPU上运行的函数需要限定符__device__。我目前正在编写一组通用的数学函数,这些函数既可以在GPU上使用,也可以在CPU上使用。我认为将所有这些函数限定为__device__不是很好,因为它们可能也包含在其他根本没有CUDA的程序中。有没有办法去掉__device__

在为非CUDA目标构建时,您可以只使用-D__device__=""进行编译,或者在为CUDA进行编译时,可以使用更通用的宏,该宏可以定义为__device__

#ifndef __CUDACC__
#define __device__
#endif

或者类似的。当然,您需要类似的保护来处理在非CUDA设置中没有意义的包含和函数。