Xubuntu22.04+cuda+cudnn+etc
Pythonのreshapeが直感と合わないのが嫌でして、なんとなくMATLABのDeep Learning Toolboxで深層学習をするとどんな感じなのか気になりました。名工大は包括ライセンス契約をしていて使い放題ですし、せっかくなので一度使ってみたいと思います。調べつつ環境構築にトライした記録になります。これも気分ですが、Xubuntu上に構築しました。(基本的にUbuntuだと思えばよいはず。。。)
苦戦してインストールとアンインストールを繰り返しているので、この通りですんなりいくか保証はできません。
cudnnの方をaptで入れると実態がどこあるのか分からず困ってしまったので参考ページにしたがって、cudaはaptで入れて、cudnnはtarを解凍してcudaに置くというアプローチに落ち着きました。
MATLABではgpucoderSetupで動作チェックをしましたがCode Executionのところでエラーがでました。参考ページによるとMATLABの中で古いバージョンのlibstdc-so-6を自前で持っていてそれを優先的に読み出してエラーになってしまうようです。ファイル名を変更して、ヒットさせないようにして、ubunutu側で持っている新しいバージョンのものへパスを通します。
Xubuntu22.04(基本設定)
ブート可能USBを作成(rufus-4.3を使用)
手順通りにインストールを進める(サードパーティーにもチェック)
とりあえず更新。
sudo apt-get update
sudo apt-get upgrade
日本語名のディレクトリを英語にする
LANG=C xdg-user-dirs-gtk-update
sshサーバーを入れる
sudo apt-get install openssh-server
※最初12.3を入れて失敗してやり直しています。
GPUを認識しているかチェック( TITAN RTX を積んでいます)
lspci | grep -i nvidia
アーキテクチャのチェックをしておく(以後 x86_64 の前提で進みます)
lscpu
参考ページのほぼコピペですが、ちょっとだけ変更しています。
### If you have previous installation remove it first.
sudo apt-get purge '.*nvidia.*'
sudo apt remove '.*nvidia.*'
sudo rm /etc/apt/sources.list.d/cuda*
sudo apt autoremove -y && sudo apt autoclean -y
sudo rm -rf /usr/local/cuda*
# system update
sudo apt update && sudo apt upgrade -y
# install other import packages
sudo apt install g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev
# first get the PPA repository driver
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
# find recommended driver versions for you
ubuntu-drivers devices
# install nvidia driver with dependencies
sudo apt install libnvidia-common-535 libnvidia-gl-535 nvidia-driver-535 -y
# reboot
sudo reboot now
# verify that the following command works
nvidia-smi
sudo wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
# Update and upgrade
sudo apt update && sudo apt upgrade -y
# installing CUDA-11.8
sudo apt install cuda-11-8 -y
### ここで怒られが発生apt fix brokenなんたらをしろと言われる
sudo apt --fix-broken install
sudo reboot now
#再度,cudaに挑戦
sudo apt install cuda-11-8 -y
# setup your paths
echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
sudo ldconfig
# install cuDNN v11.8
# nvidiaに登録 https://developer.nvidia.com/developer-program/signup
# https://developer.nvidia.com/rdp/cudnn-archive へアクセス
# cuda 11.xに対応するところから Local Installer for Linux x86_64 (Tar) をクリックしてダウンロード
# 作業用フォルダにファイルを置いてターミナル上で見えるところにいく
# その後,実行したコマンドは以下
sudo tar -xvf cudnn-linux-x86_64-8.9.6.50_cuda11-archive.tar.xz
sudo mv cudnn-linux-x86_64-8.9.6.50_cuda11-archive cuda
# copy the following files into the cuda toolkit directory.
sudo cp -P cuda/include/cudnn.h /usr/local/cuda-11.8/include
sudo cp -P cuda/include/cudnn*.h /usr/local/cuda-11.8/include
sudo cp -P cuda/lib/libcudnn* /usr/local/cuda-11.8/lib64/
sudo chmod a+r /usr/local/cuda-11.8/lib64/libcudnn*
# Finally, to verify the installation, check
sudo reboot now
nvidia-smi
nvcc -V
MATLAB動作確認
まず、MATLABをインストール(すべてのToolboxを入れます)
古いバージョンのlibstdc++.so.6のファイル名を変更します。
cd /usr/local/MATLAB/R2023b/sys/os/glnxa64
sudo mv libstdc++.so.6 libstdc++.so.6.old
GLIBCXX_3.4.29があるかどうか確認します。
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
パスを通します。
export LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu/"
MATLABの参考ページにそって確認(tensorRTはなしで、cudnnを選択)
cuda, cudnnへのパスはどちらも /usr/local/cuda-11.8
VNTXへのパスは /usr/local/cuda-11.8/lib64
※一度エラーが出てアドオンパッケージを入れさせらると思います。