CUDA 11.1+PyTorch 1.8+Conda环境编译Apex报错及疑问
解决Conda环境编译Apex时的TypeError问题
问题背景
- 从干净环境(已移除所有CUDA及NVIDIA相关驱动)出发,创建新Conda环境并执行安装命令:
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge - 通过apt安装
nvidia-driver-450并重启系统,验证torch.cuda.is_available()返回True,PyTorch CUDA功能正常。
错误现象
编译Apex时触发以下错误:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' error: subprocess-exited-with-error
曾尝试多次重装驱动/重建环境、设置TORCH_CUDA_ARCH_LIST为GPU算力值,均无法解决。
根本原因及解决方法
Conda默认安装的cudatoolkit是运行时版本,仅包含运行PyTorch所需的核心库,缺少完整的CUDA工具链(比如nvcc编译器),而编译Apex需要完整的CUDA开发工具链支持。
解决步骤:
- 在当前Conda环境中安装对应版本的CUDA开发包
- 设置环境变量
CUDA_HOME为当前Conda环境的路径(即CONDA_PREFIX),确保编译工具能找到CUDA开发文件
结论
无需通过apt安装系统级CUDA,仅需在Conda环境内补充安装CUDA开发版本即可满足Apex编译需求。
内容的提问来源于stack exchange,提问作者Joe Casale
相关产品推荐
相关产品推荐

