Ubuntu18.04.6 LTS下安装ISCE2.6.0+CUDA10.2+cuDNN(2022最新安装指南)
安装ISCE2.6.0+GPU的全套流程
前言
目前,在空间大地测量方面,无论是科研圈还是业务圈,InSAR是当之无愧的热点。从上世纪90年代发展至今,InSAR技术已经成为一项成熟的形变监测技术,也步入了一个实用化阶段。
现在的InSAR软件众多,ISCE软件是由NASA资助开发的软件,是一款在Apache许可条款限制下的开源软件。ISCE支持多颗星载SAR的DInSAR和时序InSAR全流程数据处理,它的各方面被设计成一个通用的软件开发框架。这也是我选择ISCE做InSAR的重要原因。
本人一直在做InSAR方面的工作,最近由于服务器系统崩溃,需要重装系统和软件,借此机会,刚好总结一下自己的安装过程和碰到问题的解决方法,分享出来以供同行们参考。
这篇文章分为三部分,前两部分是对CUDA和cuDNN的安装介绍,第三部分是ISCE2.6.0的安装,均在Ubuntu18.04.6上安装成功。
一、CUDA10.2的安装
1.确认显卡型号
lspci | grep -i nvidia
返回如下信息,其中VGA compatible controller后面即为显卡型号。
这时看到后面的信息是NVIDIA Corporation Device 21c4 (rev a1)时,不用瞎想,这就是你的显卡型号,只是以ID形式出现。登录网站,输入21c4即查询得到。
我的显卡型号是GTX 1660 Super
2.安装显卡驱动
- 防止网络连接造成的中断,先切换成国内源。
打开Software & Updates,在Ubuntu Software(第一个界面)>Download from:>Server for China
- 安装驱动
得益于Ubuntu18系统的可用源,推荐自动安装,这样可以避免手动安装驱动造成重启后无界面的麻烦。
在终端中输入:ubuntu-drivers devices #查看可用驱动版本 sudo ubuntu-drivers autoinstall #自动安装推荐的版本 sudo reboot #重启系统
在终端中输入nvidia-smi 即可查看驱动信息和显卡信息,也表示驱动安装成功。
3.下载和安装
1.下载安装包和补丁
针对Ubuntu18系统,需要下载一个CUDA10.2的主安装包,两个补丁,安装时,先主包再补丁1、补丁2.
进入官网下载页面:
https://developer.nvidia.com/cuda-toolkit-archive
选择runfile(local)。在终端中下载
wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
2.安装
安装主包
sudo sh cuda_10.2.89_440.33.01_linux.run #安装主包
安装时,需要把所有条款拉到底,输入 accept 接受即可,注意不要安装驱动前面已经安装过)。
下载补丁1和2
安装补丁1和2,过程与主包类似。
sudo cuda_10.2.1_linux.sh
sudo cuda_10.2.2_linux.sh
4修改环境变量
sudo gedit ~/.bashrc
在末尾加入:
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64
export CUDA_HOME=/usr/local/cuda-10.2/bin
export PATH=$PATH:$LD_LIBRARY_PATH:$CUDA_HOME
重新载入配置文件,使其生效:
source ~/.bashrc
5验证安装
进入*/home/wang/NVIDIA_CUDA-10.2_Samples*。测试例子所在的取决于安装时所选的路径,所以前面安装时,要知道安装在哪个位置,如果忘记了,也不要着急,输入下面命令可返回所在路径。
locate /NVIDIA_CUDA-10.2_Samples
进入例子目录,编译、测试
cd /home/wang/NVIDIA_CUDA-10.2_Samples/1_Utilities/deviceQueryDrv
make
./deviceQueryDrv
出现:
表示安装成功。
还可以在终端中输入nvcc -V,返回版本号则表示安装成功。
二、cuDNN安装
cuDNN比较简单。
1.下载安装文件
进入官网下载,先注册账号,下载对应CUDA版本的 cuDNN 版本。这里就选择对应CUDA10.2的linux版本(Local isntaller for Linux86_64(Tar))。
2安装
解压文件,把相应的文件复制到对应的cuda安装目录下,并赋予权限。
sudo cp cudnn-linux-x86_64-8.3.2.44_cuda 10.2-archieve/include/cudnn.h /usr/local/cuda-10.2/include
sudo cp cudnn-linux-x86_64-8.3.2.44_cuda 10.2-archieve/lib64/libcudnn* /usr/local/cuda-10.2/lib64
sudo chmod a+r /usr/local/cuda-10.2/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.2/lib64/libcudnn*
3 查看版本号
终端输入
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
返回如下信息,表明安装成功。
3 ISCE2.6.0安装
ISCE既可以利用GPU,也可以不用GPU完成计算,只是使用GPU可以加速计算,减少等待时间,所以说前面两部分即使没有也不会影响ISCE的安装和使用。
大部分人在这部分经历的坑是最多的,我自己也整了将近两天,所以我会尽量写的详细。如果自己一次没有搞定,不要着急,多点耐性,仔细检查每一步是否都正确,一般按照这个教程是不会出错的。
3.1 安装Anaconda
官网下载安装包,注意对应的python版本号。这里选择对应python3.6.9的64位版本
sudo sh anaconda3-5.3.0-linux-x86_64.sh
按照提示一步步安装既可,注意不需要安装Vscode。
3.2 安装ISCE
ISCE是安装在conda环境中的
对其它软件的依赖关系如下:
gcc >= 4.8+ (with C++11 support)
fftw >= 3.2.2 (with single precision support)
Python >= 3.5 (3.6 preferred)
scons >= 2.0.1
curl # 用于automatic DEM downloads
GDAL及python包 >= 2.2
hdf5 >= 1.8.5 and h5py >= 1.3.1 # 可选 (用于COSMO-SkyMed, Kompsat5 和'Generic' sensor)
cython3
cuda cudnn
opencv
3.2.1 创建环境
创建并激活环境isce2
conda create -n isce2 #创建环境
conda activate isce2 #激活环境
3.2.2 配置环境
先安装系统编译器,如已安装可以忽略。
sudo apt-get install gcc gfortran g++ # C C++ gfortran的编译包
sudo apt-get install libmotif-dev # 若无法定位,可以忽略
配置isce2
将如下软件名输入一个文件requirements.txt
python=3.7
cython
gdal=2.3.2
git
h5py
h5pylib
libgdal
pytest
numpy
fftw
scipy
basemap
scons
opencv
安装(2选取1)
conda install --yes --file requirements.txt #批量安装
conda -c conda-forge install package # 逐个安装,可以安装最近版本
3.2.3 下载安装包
(1)下载isce2安装包
git clone https://github.com/isce-framework/isce2
或者去
https://github.com/isce-framework/isce2/releases
选择版本下载。这里下载的是isce2.6.0
并解压到安装位置(如/home)
tar -xvf isce2-2.6.0.tar.gz # 解压文件路径/home/isce2-2.6.0
(2)下载和安装RelaxIV、PULP
这两个包用于unwrap 2 stage。
(1)RelaxIV
使用C++编译的最小费用流松弛算法。
从网站下载安装包Min-Cost-Flow-Class-master.zip。
解压到 /home/isce2-2.6.0/contrib/UnwrapComp/src/RelaxIV 既可,会在ISCE安装过程中进行编译。
(2)PULP
pip3 install pulp
3.2.4 安装
建议使用官网推荐的scons安装。
(1)配置scons安装
scons需要预先配置源文件路径和依赖库的路径
使用环境变量配置源文件路径
export SCONS_CONFIG_DIR=/home/isce2-2.6.0
使用配置文件SConfigISCE制定依赖库的路径和安装路径
cd /home/isce2-2.6.0
mkdir build
mkdir isce
touch SConfigISCE
gedit SconfigISCE
将如下内容输入SConfigISCE:(此处一定要仔细,最容易出错的地方)
PRJ_SCONS_BUILD = /home/isce2-2.6.0/isce/build
PRJ_SCONS_INSTALL = /home/isce2-2.6.0/isce
LIBPATH = /home/wang/anaconda3/envs/isce2/lib
CPPPATH = /home/wang/anaconda3/envs/isce2/include/ /home/wang/anaconda3/envs/isce2/include/python3.7m
FORTRANPATH = /usr/include
FORTRAN = /usr/bin/gfortran
CC = /usr/bin/gcc
CXX = /usr/bin/g++
#libraries needed for mdx display utility
MOTIFLIBPATH = /usr/lib/x86_64-linux-gnu # path to libXm.dylib
X11LIBPATH = /usr/lib/x86_64-linux-gnu # path to libXt.dylib
MOTIFINCPATH = /usr/include/Xm # path to location of the Xm
X11INCPATH = /etc/X11 # path to location of the X11 directory
#Explicitly enable cuda if needed
ENABLE_CUDA = True
CUDA_TOOLKIT_PATH = /usr/local/cuda-10.2
编译
scons install
若最后显示,表示编译成功
scons: done building targets
3.2.5 编译出错的解决方法
1.库或者头文件找不到
如找不到gdal、libhdf5等错误(如下图所示),一般有两种原因,一是 SConfigISCE中的路径设置错误,二是前面配置conda环境时这些包没有正确安装导致。解决方法也对应两种,即1.重新检视SConfigISCE中的路径设置,确保是自己安装依赖包所在位置,2.重新安装依赖包。
conda -c install --yes --file requirements.txt #txt中放入缺少的包
2.出现C++编译冲突
一般是因为cython与g++版本不一致,重新安装cython即可解决
pip3 install cython
3.编译时出现fatal error
编译时若出现找不到numpy的头文件、opencv的头文件(出现autoRIFT)的错误时(如下面所示),一般是安装包版本与conda创建的环境isce2配置冲突或include中不包含所需头文件导致, 一般将冲突的软件版本卸载,再重新安装即可,或者找到头文件所在位置,建立链接即可。
fatal error: numpy/arrayobject.h: No such file or directory
error: opencv2/opencv.hpp”: No such file or directory
pip3 uninstall numpy
locate opencv.hpp #找到所在位置
#建立链接
sudo ln -sf /usr/include/opencv/opencv.hpp /home/wang/anaconda3/envs/isce2/include
3.2.5 系统环境变量设置
前述编译通过后,还需设置系统环境变量。这步也是个坑,很多人就卡在这一步上,目前网上流传的多数教程中的设置,已经不再适用。此步亲测有效。
sudo gedit ~/.bashrc
末尾加入
source ~/.bashrc #更新环境变量
3.2.6 测试安装
在Terminal中输入(记得先激活环境)
conda activate isce2
topsAp.py --help
若返回帮助信息,则表示安装成功。 如出错,最可能是环境变量设置出错,检查修改再次尝试