旨在使用Nvidia的JetPack(NVIDIA SDK Manager)轻松安装OpenCv和Cuda


旨在使用Nvidia

的JetPack(NVIDIA SDK Manager)轻松安装OpenCv和Cuda

スクリーンショット 2020-06-19 21.43.27.png

使用Nividia GPU

准备机器

Nividia GPU需要安装一台PC

1
$ apt-cache search "^nvidia-[0-9]{3}$"

找出可以使用apt-cache在该PC上安装哪些Nvidia驱动程序。
20191106123629.png
20191106125506.png

已为NVIDIA SDK Manager安装了Cuda 10.0。将安装超过410个NVIDIA驱动程序。
请使用支持NVIDIA驱动程序410或更高版本的Windows计算机,或使用Jatson。
如果不支持NVIDIA驱动程序,请放弃NVIDIA SDK Manager,降低Cuda的版本并手动安装

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
Cuda 10.0不起作用,因为用于较旧PC的Gpu驱动程序为410或更小

使用虚拟环境软件

Parallels Desktop,VMWare等。
在这里,我们使用parallels-desktop
后记:Geforce驱动程序无法在虚拟环境中识别
如果是Mac,则是通过拨号启动还是使用Windows 来启动Linux。
转移到外部Jetson Nano并安装
(#1)

安装Ubuntu

日语版Ubuntu发行站点
スクリーンショット 2020-06-19 19.53.39.png

与Ctrk alt一起释放光标
Parallels Tool CD将被安装并且应该与它一起安装。

1
2
3
#更新する
sudo apt-get update
sudo apt-get upgrade

NVIDIA图形驱动程序和Cuda版本之间的关系

NVIDIA SDK Manager的Cuda版本为10.0。它不适用于旧版PC Gpu和旧版Nivida驱动程序。放弃NVIDIA SDK Manager的自动安装,或者通过降低Cuda的版本或更新新PC来切换为手动安装

检查GPU是否为Nvidia

1
2
3
4
sudo lshw -C display

仮想環境上だとVirtual Video Adapterとでる
仮想環境ではNivideドライバーはインストールできないので、ホストPC(Linux or Windows)上でNivideドライバをインストールする必要がある

检查Ubuntu是否可以识别GPU

1
$ sudo ubuntu-drivers devices

Nvidia驱动程序安装方法1

参考

检查Ubuntu是否可以识别GPU

1
$ sudo ubuntu-drivers devices

当GPU型号正确显示时,执行以下命令以安装驱动程序

1
$ sudo ubuntu-drivers autoinstall
1
2
3
4
5
# マシンにインストール済みのNVIDIAドライバを一覧表示
$ dpkg -l | grep nvidia

# apt-getでインストールできるNVIDIAドライバの一覧表示
$ apt-cache search "^nvidia-[0-9]{3}$"

使用nvidia-smi命令

检查驱动程序版本和GPU详细信息是否显示

1
$ nvidia-smi

如果正确显示,请继续安装Cuda

运行nvidia-smi时出现错误

1
2
3
$ nvidia-smi 
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
nvidia-smiはnvidiaのドライバを確認することができなかった.最新のドライバが入ってるかどうか確認してね.

在这种情况下,可以通过禁用Nouveau来解决。首先,创建/etc/modprobe.d/blacklist-nouveau.conf并进行如下编辑。

1
$ sudo vim /etc/modprobe.d/blacklist-nouveau.conf

填写以下内容

1
2
blacklist nouveau
options nouveau modeset=0

接下来,执行以下命令以重新加载内核模块。

1
2
3
4
5
$ sudo update-initramfs -u

$ sudo reboot

$ nvidia-smi

参考

如果可以执行nvidia-smi,请重新启动PC并继续安装CUDA。

Nvidia驱动程序安装方法2

下载Nvidia驱动程序
スクリーンショット 2020-06-30 14.18.07.png

选择已安装的GPU驱动程序,然后下载并安装运行格式文件

1
2
$ chmod +x GPUドライバ名.run
$ sudo sh GPUドライバ名.run

使用nvidia-smi命令

检查驱动程序版本和GPU详细信息是否显示

1
$ nvidia-smi
重新安装时的注意事项

如果我首先安装了NVIDIA SDK Manager,则安装了最新的NVIDIA图形驱动程序,然后当我尝试安装计算机上的旧图形驱动程序时,发生了错误,无法安装。我尝试使用依赖性解析命令aptitude重新安装,但是它卡在了桌面屏幕上。

请注意,机器已挂起
sudo aptitude安装libnvidia-encode-418
参考

最好卸载并重新安装

1
2
sudo apt-get --purge remove nvidia-*
sudo apt-get --purge remove cuda-*

安装Cuda和OpenCv

安装NVIDIA SDK Manager
除非已连接到Internet,否则无法安装。
スクリーンショット 2020-06-19 19.51.55.png

下载,解压缩并安装JetPack存档。
您需要创建一个Nvidia帐户
スクリーンショット 2020-06-19 20.01.18.png

选择Host Machien。
选择JetPack 4.3。

参考文章
スクリーンショット 2020-06-19 20.05.24.png

确保在底部的下载位置检查安装后的安装
请务必检查它,因为如果在下载过程中安装它,可能会发生错误。
需要约30G的容量

安装完成

スクリーンショット 2020-06-20 19.09.20.png

OpenCv和Cuda已自动安装。

Jetson组件中的JetPack 4.3:

1
2
3
4
5
6
7
8
9
10
11
L4T R32.3.1 (K4.9)
Ubuntu 18.04 LTS aarch64
CUDA 10.0
cuDNN 7.6.3
TensorRT 6.0.1
VisionWorks 1.6
OpenCV 4.1 (4.1.1)
Nsight Systems 2019.6
Nsight Graphics 2019.5
Nsight Compute 2019.3
SDK Manager 1.0.0

CUDA位置

1
2
/usr/local/cuda
/usr/local/cuda-10.0

如何检查opencv

1
2
3
$ sudo apt-get install python3-pip

$ sudo pip3 install numpy
1
2
3
4
5
$ python3
>>> import cv2
>>> print(cv2)
>>> cv2.__version__
4.1.1

如何安装官方CUDA

官方cuda描述

添加路径设置

1
$ sudo apt install vim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# vimをアップデートする
sudo apt install vim

# xとyにバージョン数字を入れる
$ sudo vim ~/.bashrc

## CUDA and cuDNN paths
export PATH=/usr/local/cuda-x.y/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-x.y/lib64:${LD_LIBRARY_PATH}
# 環境変数$LD_LIBRARY_PATHにNVIDIAドライバのパスを追加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia-番号

#保存する
$ source ~/.bashrc

# 確認する
$ nvcc -V

# CUDA Toolkitの場所の確認
$ which nvcc

#/usr/local/cuda-10.0/bin/nvcc

参考
参考

cuDNN

运行时的安装和操作检查

cudnn-archive
スクリーンショット 2020-06-30 13.27.00.png

Ubuntuh的cuDNN运行时库
适用于Ubuntuh的cuDNN开发人员库
适用于Ubuntu的cuDNN代码示例和用户指南
下载并双击以安装

参考

cuDNN

的运行检查

检查路径是否在cuda-10.0 / bin中
如果通过,则可以运行cuda-install-samples-10.0.sh
在您的主目录中运行它。在参数中输入文件夹名称。运行cuda-install-samples-10.0.sh将在您的主目录中创建一个示例文件夹。我有一个制作文件,所以我会制作。
将在bin文件夹中生成一个示例文件,因此请尝试运行它。
执行deviceQuery检查cuda设备是否有效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ cd /usr/local/cuda-10.0/bin

# /usr/local/cuda-10.0/bin/cuda-install-samples-10.0.sh

# ホームディレクトリにサンプルコードのあるディレクトリをコピー
$ cuda-install-samples-10.0.sh フォルダ名

$ cd フォルダ名/NVIDIA_CUDA-10.0_Samples
$ make
$ cd NVIDIA_CUDA-10.0_Samples/bin/x86_64/linux/release

$ ./deviceQuery

$ ./bandwidthTest

$ ./volumeRender

参考

cuDNN安装确认

使用

dpkg -l命令列出已安装的软件包。

1
2
# マシンにインストール済みのcuDNNパッケージを一覧表示
$ dpkg -l | grep cudnn

cuDNN

的存放位置

1
2
# debパッケージが保存されているディレクトリを確認(-Lオプション)
$ dpkg -L libcudnn7

安装Yolo

1
2
3
4
5
6
7
8
9
$ sudo apt install git
$ git clone https://github.com/AlexeyAB/darknet.git
$ cd darknet
darknet$ vim Makefile
GPU=1
CUDNN=1
OPENCV=1

darknet$ make

-lcuda找不到错误

查找libcuda.so在哪里

1
2
3
4
5
6
# libcuda.soがどこにあるか検索する
$ locate libcuda.so

# libcuda.soの場所がヒットする
/usr/local/cuda-10.0/targets/x86_64-linux/lib/stubs/libcuda.so
/usr/loca/cuda-10.0/targets/aarch64-linux/lib/stubs/libcuda.so

找到

libcuda.so文件后,在x86_64-linux-gnu文件夹中创建它。通过在x86_64-linux文件夹

中建立libcuda.so.1的符号链接来找到好的文章。

1
2
3
4
sudo ln -s /usr/local/cuda-10.0/targets/x86_64-linux/lib/stubs/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so.1

# libcuda.so.1とlibcuda.so 両方のシンボリックリンクが必要
sudo ln -s /usr/local/cuda-10.0/targets/x86_64-linux/lib/stubs/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so

参考

1
2
3
#再びmake
$ make clean
$ make

它说cudnn.h文件不存在。复制cudnn.h文件

cudnn安装官方

cudnn-archive
スクリーンショット 2020-06-26 17.41.06.png

下载适用于Linux的cuDNN库

1
2
3
4
5
6
7
#cuDNNパッケージを解凍する。Finderからでも解凍可能

$ tar -xzvf cudnn-x.x-linux-x64-v8.x.x.x.tgz

$ sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
$ sudo cp cuda/lib/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

没有错误时未找到

cudnn.h

与cudnn相关的

1
2
3
4
5
libcudnn.so.7.0.1以外のlibcudnn.soファイルを削除する
/usr/local/cuda/lib64 $ sudo rm -rf libcudnn.so libcudnn.so.7
再生する
sudo ln -s libcudnn.so.7.0.1 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so
1
2
make clean
make

Darknet / obj无法写入

darknet / obj更改权限

1
$ sudo chmod 777 ホームパス/darknet/obj ホームパス/darknet/backup

再次使

1
2
$ make clean
$ make

下载重量

从pjreddie下载,因为它不包含在Alexey AB版本中

1
$ wget https://pjreddie.com/media/files/yolov3.weights

尝试运行Yolo

1
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

Yolo运行时错误

未使用OpenCV进行编译,而是保存到projections.png而不是

DarkNet Makefile openCv不是1

1
2
$ vim Makefile
  OPENCV=1

CUDA驱动程序版本不足以用于CUDA运行时版本

CUDA驱动程序版本不足以提供CUDA运行时版本:否这样的文件或目录

按住
参考
如果未安装NVIDIA图形驱动程序,会出来吗?正在调查中

1
2
cudaを更新もする
sudo apt-get install cuda

未检测到具有CUDA功能的设备

未检测到CUDA兼容设备
因为它无法在虚拟环境中识别Nvidia的GPU。停止虚拟环境,然后在主机PC

上重新安装OS

CUDA和NVIDIA驱动程序(/ usr / lib / nvidia-***)的PATH检查

输出是否包含" / usr / local / cuda-10.0 / lib64"和" / usr / lib / nvidia-number"?

1
$ echo $LD_LIBRARY_PATH

CUDA和nvcc命令的PATH检查

输出是" /usr/local/cuda-10.0/bin/nvcc"吗?

1
2
$ which nvcc            
/usr/local/cuda-10.0/bin/nvcc

nvidia-smi命令PATH检查

输出是" / usr / bin / nvidia-smi"吗?

1
2
 $ which nvidia-smi
/usr/bin/nvidia-smi

如何卸载

1
2
3
4
5
6
7
# xにバージョンを入れる
sudo apt remove cuda-x-y
sudo apt autoremove
sudo apt remove libcudnnx libcudnnx-dev libcudnnx-doc
rm -rfv ~/NVIDIA_CUDA-x.y_Samples/ # サンプルコードを消す。
# ~/.bashrcに追加されたPATHの設定をテキストエディタなどで消す。
# ログアウトしてPATHの設定の変更を反映

使用Nvidia GPU准备计算机
Nvidia图形驱动程序无法安装在虚拟环境中
Nividia Sdk Maneger Cuda是10.0,因此它不适用于Nividia较老的驾驶员。使用可运行Cuda 10.0的Nvidia驱动程序
解压缩cuDNN包,然后将指定的文件(cudnn * .h)复制到指定的位置
通过找到libcuda.so找到libcuda.so的位置。将符号链接放在/ usr / lib / x86_64-linux-gnu
用vim编辑.bashrc之后,除非将其另存为source?/ .bashrc

,否则它将不应用。

结论

使用Jetson nano时,最好使用Nividia Sdk Maneger。与cuda10和Nividia驱动程序兼容
在PC上安装时,请检查GPU,如果Nvidia驱动程序支持410或更高版本,请尝试使用Nividia SDK;如果不支持410以下,请放弃该SDK并手动进行操作

参考站点

灵感博客
它写得很详细

Coda linux官方安装信息

在Docker上使用NVIDIA SDK Manager获得舒适的Jetson生活

Jetson TX2的JetPack设置步骤

https://pysource.com/2019/08/29/yolo-v3-install-and-run-yolo-on-nvidia-jetson-nano-with-gpu/

(#1)
WSL2上的CUDA
如果使用WSL2,则似乎可以在Windows上构建Linux并使用Windows的GPU驱动程序。