使用其他c++编译器编译CUDA代码

use*_*419 2 c++ cuda nvcc

我有一个由 nvcc 编译的 CUDA (*.cu) 代码,它在 GPU 中运行得很好。但 nvcc 不支持某些 c++11 功能,并且某些第 3 方 c++ 库无法与 nvcc 一起使用。我想知道是否可以使用 gcc 或其他商业 c++ 编译器编译 .cu 代码?谢谢。

kan*_*yin 5

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
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,英特尔编译器仅在 64 位 Linux 上的 CUDA 5.0 或更高版本中受支持。 (2认同)