搞了我好久,关键是nvcc和cuda版本要一致
对于我的3080,nvcc版本是11.0;对于我的2080,nvcc版本是10.0
以3080为例:
conda create -n PLOP python=3.7 -y
conda activate PLOP
#3080
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch
#2080
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch
pip install packaging
git clone https://github.com/NVIDIA/apex
cd apex
在安装之前,修改apex源码,把如下代码注释掉
if "reduce_scatter_tensor" not in dir(torch.distributed):
torch.distributed.reduce_scatter_tensor = torch.distributed._reduce_scatter_base
if "all_gather_into_tensor" not in dir(torch.distributed):
torch.distributed.all_gather_into_tensor = torch.distributed._all_gather_base
因为CUDA11.0不支持3080的8.6算力,所以需要修改
# 打开配置文件
vi ~/.bashrc
# 在配置文件中添加如下一行
export TORCH_CUDA_ARCH_LIST="8.0" # 因为是CUDA11.0,对应的算力为8.0
# 保存后source更新
source ~/.bashrc
然后安装apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
对于我要配置的PLOP环境,还需要再安装一些包
conda install tensorboardX
conda install matplotlib
pip install inplace-abn