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

cuda + cudnn(参考ページ

※最初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
※一度エラーが出てアドオンパッケージを入れさせらると思います。