使用conda安装的cudatoolkit安装NVIDIA apex

需要在一台无sudo权限的机器上编译安装NVIDIA的apex扩展,然而系统的cuda版本是9.0。

查看系统cuda千万不能用nvidia-smi来看,nvidia-smi提供的是Driver Cuda的版本,并非我们运行时所用的cuda。可以用下列最可靠的指令来看系统cuda版本。

nvcc -V

或者(如果你没配环境变量的话)

/usr/local/cuda/bin/nvcc -V

编译安装apex的前提条件之一就是所使用辅助apex编译的cudatoolkit版本必须和pytorch所需的cuda版本对应。(其实就是用到了cudatoolkit里面的NVIDIA CUDA Compiler——nvcc罢了)

同时想到我用conda装pytorch的时候,也装了和pytorch版本对应的cudatoolkit,那么用这里面的nvcc是不是就能来编译apex了呢?

很遗憾的是,经过翻箱倒柜的寻找,并没有在我的anaconda环境里找到nvcc。

查阅相关资料 后发现,conda install安装的cudatoolkit只是NVIDIA提供的cudatoolkit的一个子集,通常只包含 PyTorch、TensorFlow 等深度学习框架运行所需的运行时环境,即 runtime lib,但是并没有nvcc。

无奈之下,只能自己在用户目录下装一个工具人cudatoolkit,用完nvcc后删掉就行。

在用户目录下安装cudatoolkit的方法可以参考:https://blog.csdn.net/weixin_41278720/article/details/81255265

在安装要阅读一大段文字的时候可以直接按ctrl+c,不用一直按回车一行行看完。安装器会提供很多组件给我们选择是否安装,除了我们的工具人cuda toolkit以外,其他的组件都无需安装。

安装完之后,可以有这两种方式来编译安装apex:

export CUDA_HOME=(cuda安装目录)
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

或者

export PATH=(cuda安装目录)/bin:$PATH
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

安装完成后,可以用下面这段代码来检验是否安装成功:

import torch
import apex

input = torch.rand(3, 10).cuda()
fln = apex.normalization.FusedLayerNorm(10).cuda()
fln(input)

你可能感兴趣的:(环境配置与使用)