2.1 NVCC IDENTIFICATION MACRO
最近nvccのドキュメント読んでるので一応記録。
もうそろそろCUDA 6がリリースされそうなので、リリースされたら少し変わるかもしれない。
今日は2.1節のみ。
nvccでは__NVCC__マクロと__CUDACC__マクロが、あらかじめ定義されている。
__NVCC__
このマクロは、ソースファイルがnvccでコンパイルされているかどうかを
確認するために使うらしい。
thrustライブラリから例を持って来る。コピーライト等のコメントと一部のコードは
省略しています。
次のコードはthrust/detail/config/global_workarounds.hから。
... #if defined(THRUST_GCC_VERSION) && (THRUST_GCC_VERSION >= 40800) # if defined(__NVCC__) && (CUDA_VERSION >= 6000) # pragma GCC diagnostic ignore "-Wunused-local-typedefs" # endif // nvcc & cuda 6+ #endif // gcc 4.8
__CUDACC__
このマクロは、ソースファイルがCUDAファイルとして扱われているかどうかを
確認するために使うらしい。
これはヘッダを書くときに便利みたい。
再びthrustライブラリから例を提示。先ほどと同様にコピーライト等は省略している。
次のコードはthrust/detail/config/compiler.hから。
... #ifdef __CUDACC__ #include <cuda.h> // Thrust supports CUDA >= 3.0 #if CUDA_VERSION < 3000 #error "CUDA v3.0 or newer is required" #endif // CUDA_VERSION #endif // __CUDACC__
最後に
thrustへのリンクを張っておきます。
https://github.com/thrust/thrust