計算の一部をGPUに回して処理速度を向上させる. そのプログラムを作るのに、動かすのに必要なのがこのCUDAライブラリ
Compute Unified Device Architecture
CUDA自体はnvidia社からリリースされ、nvidia社製VGAカードにのみ有効である.
下記サイトからCUDAライブラリを入手します
https://developer.nvidia.com/cuda-downloads
インストール用ファイルは
と3種類ありますが、ここでは「rpm(local)」をいつも使用しています.
CUDAを機能させるためにはNVIDIAドライバが必要です。
これらインストール用ファイルには NVIDIAドライバ を含み一度でドライバとライブラリを入れれますが、NVIDIAドライバが古かったりします.
ここではNVIDIAのように、NVIDIAドライバのみを先行してインストールして、あとからCUDAライブラリを入れております.
「rpm(local)」の場合は、rpmファイルを取得して、localinstallでリポジトリのインストール、その後必要なパッケージをインストールしています
「必要なパッケージ」は「cuda-toolkit」です. この「cuda-toolkit」でnvccやcudaライブラリ(開発/実行)がインストールされます
dnf localinstall cuda-repo-rhel9-12-1-local-12.1.0_530.30.02-1.x86_64.rpm
dnf install cuda-toolkit-12-1
dnf remove cuda-repo-rhel9-12-1-local-12.1.0_530.30.02-1 <-- 「必要なパッケージ」のインストールが終わったらリポジトリを削除しますもし、実行ライブラリのみ必要だったら「cuda-libraries」のみを入れます. これでランタイムライブラリのみ入ります.
Gautomatch, GCTFにおいては、cuda-libraries-10-1があればいい
nvidiaドライバとcudaライブラリを一緒に入れてみる.
まずは nouveau を強制的に外して、multi-user.targetに切り替える
[root@centos7 ~]# vi /etc/default/grub
:
GRUB_CMDLINE_LINUX="rhgb quiet"
↓
GRUB_CMDLINE_LINUX="rhgb quiet nouveau.modeset=0 modprobe.blacklist=nouveau"
:
[root@centos7 ~]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
[root@centos7 ~]# systemctl set-default multi-user.target
[root@centos7 ~]# reboot
[root@centos7 ~]# yum install epel-release -y; yum install dkms -y
[root@centos7 ~]# bash /Public/cuda/cuda_12.1.0_530.30.02_linux.run --driver --kernelobjects --toolkit --no-opengl-libs --no-man-page --silent
[root@centos7 ~]# systemctl set-default graphical.target ; rebootconda経由で作れるcrYOLOやtopazにはcudaライブラリが必要ですが、別に/usr/local/cudaが必要なわけではない.
cudaの中で独自にcudaライブラリを用意するから. nvidiaドライバは必須ですけど.
なら必要な局面は?となるとrelionとか自らコンパイルするとか自作プログラムを作る際には/usr/local/cudaが必要となる
CUDAの動作モード.
cudaライブラリのパッケージから入れるか、nvidiaドライバを入れてからcudaのtoolkitのみを入れるかになる
前者は「Persistence Mode」のツールも入れてくれるが、後者は入らない。
後者の場合 https://download.nvidia.com/XFree86/nvidia-persistenced
にてnvidiaドライバと同じバージョンのツールを取得する
bash NVIDIA-Linux-x86_64-520.56.06.run --disable-nouveau --no-opengl-files --no-libglx-indirect
reboot
tar xf nvidia-persistenced-520.56.06.tar.bz2 <-- 取得したファイル
cd nvidia-persistenced-520.56.06
make
make install
cd init
make install <--- 「nvidia-persistenced.service」がインストールされるコンパイラ環境でもあるので modulefile を用意します
[root@rockylinux9 ~]# mkdir /apps/modulefiles/cuda
[root@rockylinux9 ~]# vi /apps/modulefiles/cuda/12.1
#%Module1.0
set cuda /usr/local/cuda-12.1
prepend-path PATH $cuda/bin
prepend-path LD_LIBRARY_PATH $cuda/lib64
prepend-path MANPATH $cuda/share/man
[root@rockylinux9 ~]#LD_LIBRARY_PATH は「/etc/ld.so.conf.d/」で定義されているから不要かもしれない