Nvidia Jetson AGX Orin是2022年Nvidia推出的开发套件,它的算力达到了200 TOPS左右。Jetson AGX Orin采用了NVIDIA Ampere架构GPU,根据这里可知,它的CUDA计算能力版本为“-gencode=arch=compute_87,code=sm_87”。自带的Linux为"arm64"架构。
该设备的上手及系统配置基本参考了这篇文章:
Nvidia Jetson AGX Orin 初体验 - 知乎 (zhihu.com)
顺便安装了miniconda测试了几个深度学习项目,安装过程参考了这篇文章:
Jetson AGX Orin安装CUDA+Anaconda+PyTorch+ROS_jetson agx orin cuda-CSDN博客
一段时间后为了测试一个半全局立体匹配(SGM)的GPU加速项目,需要配置opencv环境,接下来介绍配置环境的过程。
一、安装opencv
opencv的安装过程基本参考了这篇文章:
玩转Jetson AGX Orin——orin上安装gpu版本opencv4.6.0_opencv安装 nvidia orin-CSDN博客
step1.下载opencv-4.6.0源项目包(Sources),解压并新建build文件夹
step2.安装依赖环境
在运行这条命令时报错404
sudo apt install libjpeg8-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
之后上网查了是没有更换国内下载源,于是运行下面命令修改sources.list文件
# 回到主目录,备份sources.list文件
sudo vim /etc/apt/sources.list
# 重写文件,添加下面的阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
# 更新下载源
sudo apt-get update
另外通过查看Linux的架构,在deb后面添加条件:
#查看架构
dpkg --print-architecture
#修改sources.list
deb [arch=arm64] http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src [arch=arm64] http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
但是这样依然报错:
E: Failed to fetch http://mirrors.aliyun.com/ubuntu/dists/focal-proposed/main/binary-arm64/Packages 404 Not Found [IP: 117.185.132.27 80]
E: Some index files failed to download. They have been ignored, or old ones used instead.
在网上搜到解决方案为:修改 /etc/apt/sources.list,在每个镜像源链接最后加上-ports,如
deb [arch=arm64] http://mirrors.aliyun.com/ubuntu-ports/ focal main restricted universe multiverse
deb-src [arch=arm64] http://mirrors.aliyun.com/ubuntu-ports/ focal main restricted universe multiverse
这之后运行apt-get update还是报错了:
N: Skipping acquire of configured file 'main/binary-amd64/Packages' as repository 'https://repo.download.nvidia.com/jetson/common r35.1 InRelease' doesn't support architecture 'amd64'
N: Skipping acquire of configured file 'main/binary-amd64/Packages' as repository 'https://repo.download.nvidia.com/jetson/t234 r35.1 InRelease' doesn't support architecture 'amd64'
E: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/focal/main/binary-amd64/Packages 404 Not Found [IP: 185.125.190.36 80] E: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/focal-updates/main/binary-amd64/Packages 404 Not Found [IP: 185.125.190.36 80]
E: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/focal-backports/main/binary-amd64/Packages 404 Not Found [IP: 185.125.190.36 80]
E: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/focal-security/main/binary-amd64/Packages 404 Not Found [IP: 185.125.190.36 80] E: Some index files failed to download. They have been ignored, or old ones used instead.
之后搜到的解决方案是删掉系统的副架构(具体方法已经找不到了,大概过程就是一个命令查看系统的主架构(arm64)和副架构(amd64),删掉副架构的支持就行),目前还不知道有没有什么后患。。。经过不断apt-get update然后这条安装命令终于成功了!
在安装这条依赖项时遇到了和作者一样的问题:
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
换成清华源之后可以:
sudo add-apt-repository "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe"
sudo apt update
sudo apt install libjasper1 libjasper-dev
另外还有报错:
The following packages have unmet dependencies:
python-dev : Depends: libpython-dev (= 2.7.11-1) but it is not going to be installed
Depends: python2.7-dev (>= 2.7.11-1~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
查到解决方案如下:
1.安装aptitude
sudo apt-get install aptitude
2.利用aptitude来安装
sudo aptitude install python-dev
至此,所有opencv依赖项安装成功!
step3.编译GPU版本时,查看CUDA_ARCH_BIN
step4. 安装扩展模块opencv-contirb-4.6.0
step5.回到/opencv-4.6.0/build/文件夹下,cmake生成makefiles文件
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN="8.7" \
-D CUDA_ARCH_PTX="" \
-D WITH_CUBLAS=ON \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D ENABLE_NEON=ON \
-D WITH_LIBV4L=ON \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D BUILD_TIFF=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/zkhy/opencv-4.6.0/opencv_contrib/modules/ ..
这一过程出现错误:
CUDA: OpenCV requires enabled ‘cudev‘ module from ‘opencv_contrib‘
找到解决办法为:将opencv_contrib中的modules中的cudev文件夹复制到opencv/modules里,之后再cmake就没这个问题了。
但是貌似又有新的问题,只是问题分别在CMakeOutput.log和CMakeError.log文件中,看着十分复杂。
-- Python (for build): /usr/bin/python2.7
--
-- Java:
-- ant: NO
-- JNI: NO
-- Java wrappers: NO
-- Java tests: NO
--
-- Install to: /usr/local
-- -----------------------------------------------------------------
--
-- Configuring incomplete, errors occurred!
See also "/home/zkhy/opencv-4.6.0/build/CMakeFiles/CMakeOutput.log".
See also "/home/zkhy/opencv-4.6.0/build/CMakeFiles/CMakeError.log".
然而隔一段时间重启并再次进入目录cmake之后,变成其他错误了:
calib3d
core
-> cudev
dnn
features2d
flann
gapi
highgui
imgcodecs
imgproc
java
js
ml
objc
objdetect
photo
python
stitching
ts
video
videoio
world
alphamat
aruco
barcode
bgsegm
bioinspired
ccalib
cnn_3dobj
cudaarithm
cudabgsegm
cudacodec
cudafeatures2d
cudafilters
cudaimgproc
cudalegacy
cudaobjdetect
cudaoptflow
cudastereo
cudawarping
-> cudev
cvv
datasets
dnn_objdetect
dnn_superres
dpm
face
freetype
fuzzy
hdf
hfs
img_hash
intensity_transform
julia
line_descriptor
matlab
mcc
optflow
ovis
phase_unwrapping
plot
quality
rapid
reg
rgbd
saliency
sfm
shape
stereo
structured_light
superres
surface_matching
text
tracking
videostab
viz
wechat_qrcode
xfeatures2d
ximgproc
xobjdetect
xphoto
CMake Error at cmake/OpenCVModule.cmake:340 (message):
Duplicated modules NAMES has been found
Call Stack (most recent call first):
cmake/OpenCVModule.cmake:358 (_assert_uniqueness)
cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
CMakeLists.txt:931 (ocv_register_modules)
这下问题就很好解决了,在网上搜索到的解决方案是,opencv中modules文件夹中的一些模块和opencv_contrib的modules文件夹重复了,删掉contrib中的重复模块即可。现在再cmake生成makefiles文件,看样子应该是成功了。
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/zkhy/opencv-4.6.0/build
step6. 开始编译,继续在build目录下执行如下命令进行编译安装,安装到/usr/local目录下
make -j8
sudo make install
完美,安装成功!!!