#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/」で定義されているから不要かもしれない};
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS