1

nvcc によってコンパイルされた CUDA (*.cu) コードがあります。これは GPU でかなりうまく機能しています。ただし、nvcc は一部の c++11 機能をサポートしておらず、一部のサードパーティの c++ ライブラリは nvcc では使用できません。.cu コードを gcc やその他の商用 C++ コンパイラでコンパイルすることは可能でしょうか? ありがとう。

4

1 に答える 1

4

nvcc は、ホスト コンパイラ固有のオプションと共に、使用するホスト コンパイラを明示的に指定することをサポートします。nvcc オプション-ccbin-Xcompiler詳細については、ドキュメントを参照してください。

http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#nvcc-command-options

たとえば、次のように nvcc を Intel コンパイラと Intel MKL にバインドします。

$ nvcc -ftz true -ccbin icpc -Xcompiler "-Wall -Wno-long-long -ansi -pedantic -ansi-alias -parallel -fopenmp -openmp-link=static -static-intel -wd10237" -O2 -Xcompiler "-O2"   -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -Ilib -c -o test/triangle.o test/triangle.cu
$ nvcc -ftz true -ccbin icpc -Xcompiler "-Wall -Wno-long-long -ansi -pedantic -ansi-alias -parallel -fopenmp -openmp-link=static -static-intel -wd10237" -O2 -Xcompiler "-O2"  -Ilib -Llib test/triangle.o lib/KTiming.o -lpthread -lm /opt/intel/composer_xe_2013.1.117/mkl/lib/intel64/libmkl_intel_lp64.a /opt/intel/composer_xe_2013.1.117/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composer_xe_2013.1.117/mkl/lib/intel64/libmkl_core.a /opt/intel/composer_xe_2013.1.117/mkl/lib/intel64/libmkl_core.a -lcublas -lcurand -lcusparse -o test/triangle
于 2013-09-04T04:40:11.780 に答える