MacBook Pro安装GPU版PyTorch遇NVCC与Clang兼容问题
解决Mac上NVCC与Apple Clang版本不兼容导致PyTorch GPU编译失败的问题
我之前也碰到过Mac上CUDA和Clang版本不兼容的坑,结合你的环境信息(CUDA 8.0、macOS Sierra 10.12.6),给你一套能彻底解决的方案:
问题根源
CUDA 8.0对Apple Clang的支持有严格版本限制,仅兼容Clang 8.0.x及以下版本。你之前降级到Clang 8.1.0仍然超出了支持范围,而且Xcode 9.2自带的工具链和单独降级的Clang存在版本绑定冲突,导致NVCC还是会检测到不兼容的编译器版本。
具体解决步骤
1. 安装兼容的Xcode版本
CUDA 8.0完美匹配Xcode 8.3.3(自带Clang 8.0.x),操作如下:
- 卸载当前Xcode 9.2:将Applications文件夹中的Xcode拖入废纸篓,然后执行命令清理残留的命令行工具:
sudo rm -rf /Library/Developer/CommandLineTools - 下载并安装Xcode 8.3.3(需要登录Apple开发者账号获取安装包),安装完成后打开一次Xcode,同意用户协议以完成初始化。
- 安装对应版本的命令行工具:
xcode-select --install
2. 配置环境变量强制指定编译器
确保PyTorch编译时使用Xcode 8.3.3自带的Clang:
- 打开你的shell配置文件(如果用bash是
~/.bash_profile,用zsh是~/.zshrc),添加以下内容:export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang export CXX=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ - 执行命令让配置生效:
source ~/.bash_profile # 对应bash环境 # 或 source ~/.zshrc # 对应zsh环境
3. 重新编译PyTorch
先清理之前的编译缓存,再重新执行编译:
cd pytorch rm -rf build git clean -xdf python setup.py install
额外说明
如果你不想完全替换Xcode版本,可以尝试在编译时临时指定编译器路径,但这种方法容易出现工具链依赖冲突,不如直接安装兼容的Xcode版本稳定。
内容的提问来源于stack exchange,提问作者Jerry Yang




