#author("2025-08-05T16:31:51+00:00","default:sysosa","sysosa") #author("2025-08-05T17:33:29+00:00","default:sysosa","sysosa") 計算の一部をGPUに回して処理速度を向上させる. そのプログラムを作るのに、動かすのに必要なのがこのCUDAライブラリ Compute Unified Device Architecture CUDA自体はnvidia社からリリースされ、nvidia社製VGAカードにのみ有効である. 特定のcudaライブラリでコンパイルされたアプリは 相応する nvidia driver 以上が必要みたい |BGCOLOR(YELLOW):CUDA version|BGCOLOR(YELLOW):nvidia driver| |13.0.0 | >=580.65.06 | |12.9.1 | >=575.57.08 | |12.9.0 | >=575.51.03 | |12.8.1 | >=570.124.06 | |12.8.0 | >=570.26 | |12.4.1 | >=550.54.15 | |12.4.0 | >=550.54.14 | |12.2.2 | >=535.104.05 | |12.2.1 | >=535.86.09 | |12.2.0 | >=535.54.03 | |12.0.1 | >=525.85.12 | |12.0.0 | >=525.60.13 | |11.8.0 | >=520.61.05 | 11.8.0で作られたcudaアプリは nvidia driver 520.61.05 以上を持つマシンなら動く けど、13.0.0 で作られた cudaアプリは nvidia 520.61.05 なマシンでは動かない. 備わっている nvidia driver に応じて インストールするcudaライブラリが決められるともいえる. conda install/pip installで用意される cuda アプリには要注意. インストールされる際に連携してcudaライブラリも入るでしょうが、そのversionがnvidiaドライバーに対応しているか要注意な点でしょうか. [[負荷テスト>CUDA/gpu-burn]] ***インストール [#a908ef2d] 下記サイトからCUDAライブラリを入手します [[https://developer.nvidia.com/cuda-downloads>+https://developer.nvidia.com/cuda-downloads]] インストール用ファイルは -runfile(local) -rpm(local) -rpm(network) と3種類ありますが、ここでは「rpm(local)」をいつも使用しています. CUDAを機能させるためにはNVIDIAドライバが必要です。 これらインストール用ファイルには NVIDIAドライバ を含み一度でドライバとライブラリを入れれますが、NVIDIAドライバが古かったりします. ここでは[[NVIDIA]]のように、NVIDIAドライバのみを先行してインストールして、あとからCUDAライブラリを入れております. 「rpm(local)」の場合は、rpmファイルを取得して、localinstallでリポジトリのインストール、その後必要なパッケージをインストールしています 「必要なパッケージ」は「cuda-toolkit」です. この「cuda-toolkit」でnvccやcudaライブラリ(開発/実行)がインストールされます #code(nonumber){{ 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」のみを入れます. これでランタイムライブラリのみ入ります. &size(10){Gautomatch, GCTFにおいては、cuda-libraries-10-1があればいい}; ***インストール runfileで [#s29cb99f] nvidiaドライバとcudaライブラリを一緒に入れてみる. まずは nouveau を強制的に外して、multi-user.targetに切り替える #code(nonumber){{ [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 ; reboot }} ***conda [#r56891e6] conda経由で作れるcrYOLOやtopazにはcudaライブラリが必要ですが、別に/usr/local/cudaが必要なわけではない. cudaの中で独自にcudaライブラリを用意するから. nvidiaドライバは必須ですけど. なら必要な局面は?となるとrelionとか自らコンパイルするとか自作プログラムを作る際には/usr/local/cudaが必要となる ***nvidia-persistenced [#ef2a2272] CUDAの動作モード. cudaライブラリのパッケージから入れるか、nvidiaドライバを入れてからcudaのtoolkitのみを入れるかになる 前者は「Persistence Mode」のツールも入れてくれるが、後者は入らない。 後者の場合 [[https://download.nvidia.com/XFree86/nvidia-persistenced>+https://download.nvidia.com/XFree86/nvidia-persistenced]]にてnvidiaドライバと同じバージョンのツールを取得する #code(nonumber){{ 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」がインストールされる }} ***EnvironmentModules [#cce2ccea] コンパイラ環境でもあるので modulefile を用意します #code(nonumber){{ [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 ~]# }} &size(10){LD_LIBRARY_PATH は「/etc/ld.so.conf.d/」で定義されているから不要かもしれない};