Cuda 11.1 + 30系显卡 + Pytorch 1.8.0 + Ubuntu 18.04 安装FlowNet2.0


30系显卡不支持低版本的cuda,所以只能使用新版本的pytorch,在安装编译FlowNet2.0里三个自定义层的包时由于版本原因各种报错,试着运行旧版本编译成功时的编译命令竟然安装成功了!
显卡是3070, gcc和g++版本都是5.5.0

环境配置

CUDA

这里NVIDIA驱动版本是460.56,cuda使用的是11.1.0,具体的安装和环境配置就不写了,有很多详细的教程。安装好以后确保终端nvcc -V命令输出正确

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Tue_Sep_15_19:10:02_PDT_2020
Cuda compilation tools, release 11.1, V11.1.74
Build cuda_11.1.TC455_06.29069683_0

旧版本pytorch环境

用anaconda创建一个python3.6+pytorch1.4.0的环境。
创建虚拟环境pytorch_old:

$ conda create -n pytorch_old python=3.6

完成后安装pytorch1.4.0(这里cudatoolkit版本应该没有影响,我用的是10.1):

$ conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch

新版本pytorch环境

先创建虚拟环境pytorch:

$ conda create -n pytorch python=3.6

安装新版本的pytorch,这里是最新的1.8.0:

$ conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge

两个python环境都搭建好后,进入下载的FlowNet2.0代码中的networks文件夹,然后打开两个终端,分别进入这两个虚拟环境,方便后面的操作,用

$ conda activate 环境名

进入之前的pytorch或pytorch_old环境。

编译

现在开始编译自定义层,以resample2d_package这个包为例,注意当前是在networks文件夹下。

使用旧版本编译,获取编译命令

首先使用pytorch_old环境下的终端进入resample2d_package文件夹:

(pytorch_old)$ cd resample2d_package/

用旧版本先编译一遍:

(pytorch_old)$ python setup.py install

运行成功的话最后是这样的:

Installed /home/czy/anaconda3/envs/pytorch_old/lib/python3.6/site-packages/resample2d_cuda-0.0.0-py3.6-linux-x86_64.egg
Processing dependencies for resample2d-cuda==0.0.0
Finished processing dependencies for resample2d-cuda==0.0.0

现在往上翻终端刚才的输出去找这两段命令:
(1)

gcc -pthread -B /home/czy/anaconda3/envs/pytorch_old/compiler_compat -Wl,–sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/czy/anaconda3/envs/pytorch_old/lib/python3.6/site-packages/torch/include -I/home/czy/anaconda3/envs/pytorch_old/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/home/czy/anaconda3/envs/pytorch_old/lib/python3.6/site-packages/torch/include/TH -I/home/czy/anaconda3/envs/pytorch_old/lib/python3.6/site-packages/torch/include/THC -I/usr/local/cuda/include -I/home/czy/anaconda3/envs/pytorch_old/include/python3.6m -c resample2d_cuda.cc -o build/temp.linux-x86_64-3.6/resample2d_cuda.o -std=c++11 -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=resample2d_cuda -D_GLIBCXX_USE_CXX11_ABI=0

(2)
/usr/local/cuda/bin/nvcc -I/home/czy/anaconda3/envs/pytorch_old/lib/python3.6/site-packages/torch/include -I/home/czy/anaconda3/envs/pytorch_old/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/home/czy/anaconda3/envs/pytorch_old/lib/python3.6/site-packages/torch/include/TH -I/home/czy/anaconda3/envs/pytorch_old/lib/python3.6/site-packages/torch/include/THC -I/usr/local/cuda/include -I/home/czy/anaconda3/envs/pytorch_old/include/python3.6m -c resample2d_kernel.cu -o build/temp.linux-x86_64-3.6/resample2d_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ‘-fPIC’ -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_70,code=compute_70 -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=resample2d_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11

然后创建一个txt文件:

(pytorch_old)$ gedit cmd.txt

上面的两段代码复制进去,把其中的“pytorch_old全部替换成“pytorch”(把旧环境名改成新的环境名),把“c++11全部替换成“c++14”。

用旧版本编译命令在新版本下编译

接下来打开pytorch环境下的终端,先进入resample2d_package文件夹:

(pytorch)$ cd resample2d_package/

删除刚才生成的三个文件夹build,dist和resample2d_cuda.egg-info:

(pytorch)$ rm -rf build/ dist/ resample2d_cuda.egg-info/

先运行一下安装命令:

(pytorch)$ python setup.py install

会报错:

g++: error: /home/czy/python_projects/test/FlowNet/networks/resample2d_package/build/temp.linux-x86_64-3.6/resample2d_cuda.o: No such file or directory
g++: error: /home/czy/python_projects/test/FlowNet/networks/resample2d_package/build/temp.linux-x86_64-3.6/resample2d_kernel.o: No such file or directory
error: command 'g++' failed with exit status 1

不用管它,现在运行一下替换过内容的第一段命令(不要直接从这里复制运行,每个人的路径名不一样):

(pytorch)$ gcc -pthread -B /home/czy/anaconda3/envs/pytorch/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/czy/anaconda3/envs/pytorch/lib/python3.6/site-packages/torch/include -I/home/czy/anaconda3/envs/pytorch/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/home/czy/anaconda3/envs/pytorch/lib/python3.6/site-packages/torch/include/TH -I/home/czy/anaconda3/envs/pytorch/lib/python3.6/site-packages/torch/include/THC -I/usr/local/cuda/include -I/home/czy/anaconda3/envs/pytorch/include/python3.6m -c resample2d_cuda.cc -o build/temp.linux-x86_64-3.6/resample2d_cuda.o -std=c++14 -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=resample2d_cuda -D_GLIBCXX_USE_CXX11_ABI=0

正常的话会有warning,不会有error,之后再运行一次安装命令(这一步不要省略):

(pytorch)$ python setup.py install

可以看到少了一个报错,然后运行之前替换过内容的第二段命令:

(pytorch)$ /usr/local/cuda/bin/nvcc -I/home/czy/anaconda3/envs/pytorch/lib/python3.6/site-packages/torch/include -I/home/czy/anaconda3/envs/pytorch/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/home/czy/anaconda3/envs/pytorch/lib/python3.6/site-packages/torch/include/TH -I/home/czy/anaconda3/envs/pytorch/lib/python3.6/site-packages/torch/include/THC -I/usr/local/cuda/include -I/home/czy/anaconda3/envs/pytorch/include/python3.6m -c resample2d_kernel.cu -o build/temp.linux-x86_64-3.6/resample2d_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options '-fPIC' -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_70,code=compute_70 -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=resample2d_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14

一样有warning没error,最后运行一遍安装命令:

(pytorch)$ python setup.py install

如果和旧版本一样输出:

Installed /home/czy/anaconda3/envs/pytorch_old/lib/python3.6/site-packages/resample2d_cuda-0.0.0-py3.6-linux-x86_64.egg
Processing dependencies for resample2d-cuda==0.0.0
Finished processing dependencies for resample2d-cuda==0.0.0

那就表示这个包安装成功了!接下来对剩下的两个包重复上面的这些操作就可以了。

测试

把FlowNet2.0代码中的models.py文件和networks文件夹放入同一路径下,打开终端,进入pytorch环境,打开python:

(pytorch)$ python

导入FlowNet2模型包:

>>> from models import FlowNet2

如果没有报错,就说明安装成功了,这样就可以在pytorch这个环境里使用FlowNet2模型了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值