2016-07-12 14 views
0

私は、次のCUDAコードをカプセル化したいと思います:SHARED_MEMORYは__CUDA_ARCH__は別に定義されていない、または何もされている場合__shared__と評価__device__ __host__関数に__shared__変数をカプセル化できますか?

__device__ __host__ 
void myFunction() 
{ 
    SHARED_MEMORY float sharedVar[3]; 
    ... 
} 

:何かに

__device__ __host__ 
void myFunction() 
{ 
#ifdef __CUDA_ARCH__ 
    __shared__ float sharedVar[3]; 
#else 
    float sharedVar[3]; 
#endif 

    ... 
} 

は、よりなどの合理化。以下は明白なアプローチである:

#define SHARED_MEMORY \ 
#ifdef __CUDA_ARCH__ \ 
    __shared__ \ 
#endif 

他のCプリプロセッサディレクティブがマクロで使用することができないのでしかし、これはコンパイルされません。このコードをカプセル化する方法はありますか?

答えて

0

私がしなければならなかったことは#defdefの外に#ifdefを移動することでした。

#ifdef __CUDA_ARCH__ 
#define SHARED_MEMORY __shared__ 
#else 
#define SHARED_MEMORY 
#endif 
+0

質問がCUDAタグの未回答のリストから外れるように、この回答を受け入れることを覚えておいてください – talonmies

関連する問題