VisualStudioで__syncthreads()が使えない

[過去の記事]

VisualStudioでCUDAを使った時__syncthreads()が使えなくて困ったので対処法を.

参考にしたのはこのあたり.

  1. __syncthreads(); is undefined need a help
  2. CUDA __syncthreads() compiles fine but is underlined with red
要はdevice_functions.hをincludeして
#ifndef __CUDACC__  
    #define __CUDACC__
#endif
を追加すればいいっぽい。

linuxでnvccを直に使えば不要なことだけど...

[2018/11/18追記]
linuxのnvccコマンドがgccを呼び出す際のオプションを見てみると
g++ -std=c++14 -c -x c++ 
-DFATBINFILE="\"/tmp/tmpxft_00000c9b_00000000-3_qr_dlink.fatbin.c\"" 
-DREGISTERLINKBINARYFILE="\"/tmp/tmpxft_00000c9b_00000000-2_qr_dlink.reg.c\"" 
-I. 
-D__NV_EXTRA_INITIALIZATION= 
-D__NV_EXTRA_FINALIZATION= 
-D__CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__  
"-I/usr/local/cuda-10.0/bin/../targets/x86_64-linux/include"    
-D__CUDACC_VER_MAJOR__=10 
-D__CUDACC_VER_MINOR__=0 
-D__CUDACC_VER_BUILD__=130 
-m64 
-o "/tmp/tmpxft_00000c9b_00000000-6_qr_dlink.o" 
"/usr/local/cuda-10.0/bin/crt/link.stub"
となっているため,これと同じようなオプションを渡してあげればいいかも??
カテゴリー:CUDA
記事作成日:2017-05-30