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