我想封装以下cuda代码:
__device__ __host__
void myFunction()
{
#ifdef __CUDA_ARCH__
__shared__ float sharedVar[3];
#else
float sharedVar[3];
#endif
...
}转换成更流畅的东西,比如:
__device__ __host__
void myFunction()
{
SHARED_MEMORY float sharedVar[3];
...
}其中,如果定义了__CUDA_ARCH__,则SHARED_MEMORY的计算结果为__shared__,否则为nothing。以下是显而易见的方法:
#define SHARED_MEMORY \
#ifdef __CUDA_ARCH__ \
__shared__ \
#endif但是,这不会编译,因为其他c-preprocessor指令不能在宏中使用。有没有办法封装这段代码?
https://stackoverflow.com/questions/38338572
复制相似问题