为nvcc设置默认主机编译器

时间:2017-06-28 01:26:22

标签: cuda clang

我刚在新的GPU服务器上安装了Debian Stretch(9)和Cuda 8。 Stretch没有附带旧版本的gcc,所以我需要使用clang作为主机编译器(nvcc不支持gcc-6)。我可以这样做调用nvcc:

nvcc -ccbin clang-3.8

有没有办法实现这个系统 - 例如在cuda配置或环境变量?

1 个答案:

答案 0 :(得分:5)

nvcc的文档没有列出任何改变ccbin的env变量,只列出选项:

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

  

--compiler-bindir directory-ccbin指定编译器可执行文件所在的目录。还可以指定主机编译器可执行文件名,以确保选择正确的主机编译器。

Linux指南也没有这样的信息:http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

您可以尝试创建一些nvcc包装器脚本并将其放在PATH env var中,如:

mkdir ~/supernvcc
echo '#!/bin/sh' > ~/supernvcc/nvcc
echo `which nvcc` -ccbin clang-3.8 '$@' >> ~/supernvcc/nvcc
chmod +x ~/supernvcc/nvcc
export PATH=/home/`id -un`/supernvcc:$PATH

(在使用export之前在每个新shell中重复nvcc的最后一行,或将其添加到.bashrc或其他shell init脚本中

PS:和nvcc也是bash脚本,你可以复制它并编辑:

cat `which nvcc`

更新:People recommend to link correct gcc version到cuda的内部目录/usr/local/cuda/bin/

  sudo ln -s /usr/bin/gcc-4.4 /usr/local/cuda/bin/gcc