我在 Ubuntu 10.10 上使用 CUDA 4.0 和 GTX 570(计算能力 2.0)以及 GCC 编译器套件。据我了解,在编译过程中,CUDA编译器驱动程序nvcc将
.cu
文件拆分为主机代码和设备代码,并调用主机编译器分别编译主机代码和设备代码。最后,它将生成的主机对象代码和设备 PTX 代码合并为单个可执行文件。
对于 Linux 系统,调用来编译主机代码的默认编译器是什么? 是吗 GCC 套件的 C 编译器 (
gcc
) 或 C++ 编译器 (g++
)?
您想要
-ccbin
的 nvcc
选项,例如要使用 icpc
(英特尔 C++ 编译器),请使用 nvcc -ccbin=icpc
(假设 icpc
在您的 $PATH
中可用)。
请注意,您应该始终通过 C++ 编译器(
g++
、icpc
等),因为 nvcc
将代码视为 C++,即使它是 C 代码。
据我所知,它使用
g++
(更准确地说,它使用 gcc
,语言设置为 c++),当然还使用 g++
进行最终链接。如果需要,请使用 nvcc
选项运行 --verbose
以查看更多详细信息。