0
我想封装下面的CUDA代码:__shared__变量可以封装在__device__ __host__函数中吗?
__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];
...
}
凡SHARED_MEMORY评估是否__CUDA_ARCH__定义,或任何其他方式__shared__。以下是显而易见的方法:
#define SHARED_MEMORY \
#ifdef __CUDA_ARCH__ \
__shared__ \
#endif
但是,这不会编译,因为其他c预处理器指令不能在宏中使用。有没有什么办法来封装这些代码?
请记住在几天后回来接受这个答案,所以问题从CUDA标记的未答复列表中脱落 – talonmies