過去ページ CUDA210115

計算の一部をGPUに回して処理速度を向上させる. そのプログラムを作るのに、動かすのに必要なのがこのCUDAライブラリ
Compute Unified Device Architecture
CUDA自体はnvidia社からリリースされ、nvidia社製VGAカードにのみ有効である.

負荷テスト

persistence mode

nvidia-smiと実行してしばらくして結果が表示される. これは nvidia ドライバーがロードされてなく、nvidia-smiの実行で呼び込まれたからワンテンポ遅れて表示されるそうな
・・・でもlsmodでみるとnvidia.koはkernelに組み込まれている. それとは違った所での「ロード」なのだろうか?まぁそれはいいとして、
っでこの「ワンテンポ遅れる」のをさせず即座に応答させるには「persistence mode」なる状態にするといいみたい。
現在の状態はというと

[root@centos7 ~]# nvidia-smi -q | grep "Persistence Mode"
    Persistence Mode                      : Disabled
[root@centos7 ~]#

と「Disabled」と無効となっている。これを有効にするには「nvidia-smi -pm 1」と実行する

[root@centos7 ~]# nvidia-smi -pm 1
Enabled persistence mode for GPU 00000000:13:00.0.
All done.
[root@centos7 ~]# nvidia-smi -q | grep "Persistence Mode"
    Persistence Mode                      : Enabled
[root@centos7 ~]#

っがどうやらこの方法はレガシーな方法のようで、今はもっとエレガントらしい。
参照先https://download.nvidia.com/XFree86/Linux-x86_64/510.47.03/README/nvidia-persistenced.html
ここから下記の中でnvidiaドライバーと同じバージョンのソースを取得します
https://download.nvidia.com/XFree86/nvidia-persistenced/
ここでは

[root@centos7 ~]# nvidia-smi -q | grep "Driver Version"
Driver Version                            : 510.47.03
[root@centos7 ~]#

なので「nvidia-persistenced-510.47.03.tar.bz2」を取得します

[root@centos7 ~]# tar xf nvidia-persistenced-510.47.03.tar.bz2
[root@centos7 ~]# cd nvidia-persistenced-510.47.03/
 
[root@centos7 nvidia-persistenced-510.47.03]# 
[root@centos7 nvidia-persistenced-510.47.03]# make
   CC           command_server.c
   CC           nvidia-persistenced.c
   CC           options.c
   CC           nvidia-syslog-utils.c
   CC           nvpd_rpc_server.c
   CC           nvpd_rpc_xdr.c
   CC           nvidia-numa.c
   CC           common-utils/nvgetopt.c
   CC           common-utils/common-utils.c
   CC           common-utils/msg.c
   LINK         _out/Linux_x86_64/nvidia-persistenced.unstripped
   STRIP        _out/Linux_x86_64/nvidia-persistenced
   HOST_CC      gen-manpage-opts.c
   HOST_CC      common-utils/gen-manpage-opts-helper.c
   HOST_LINK    root/nvidia-persistenced-510.47.03/_out/Linux_x86_64/gen-manpage-opts
   M4           nvidia-persistenced.1.m4
gzip -9nf < _out/Linux_x86_64/nvidia-persistenced.1 > _out/Linux_x86_64/nvidia-persistenced.1.gz
rm _out/Linux_x86_64/nvidia-persistenced.unstripped
 
[root@centos7 nvidia-persistenced-510.47.03]# make install
mkdir -p /usr/local/bin
install -m 755 _out/Linux_x86_64/nvidia-persistenced /usr/local/bin/nvidia-persistenced
mkdir -p /usr/local/share/man/man1
install -m 755 _out/Linux_x86_64/nvidia-persistenced.1.gz /usr/local/share/man/man1/nvidia-persistenced.1.gz
 
[root@centos7 nvidia-persistenced-510.47.03]#

これで「nvidia-persistenced」さんなる新たなユーザが作られて

[root@centos7 ~]# systemctl list-unit-files | grep nvidia
nvidia-hibernate.service                      disabled
nvidia-persistenced.service                   disabled
nvidia-powerd.service                         disabled
nvidia-resume.service                         disabled
nvidia-suspend.service                        disabled
[root@centos7 ~]#

とご丁寧にdaemonが用意される。ここでは「nvidia-persistenced.service」を有効にして、起動時に動くようにします

[root@centos7 ~]# systemctl enable nvidia-persistenced.service
[root@centos7 ~]# systemctl restart nvidia-persistenced.service

CUDAバージョン

CUDAOSGCCICCHW
11.7.0RHEL8.5, RHEL7.9, ubuntu22.04, ubuntu20.04.4, ubuntu18.04.6gcc11まで対応
gcc6以上が推奨
20213.5 – 8.6
KeplerとMaxwellは非推奨, Pascal, Volta, Turing, Ampere
11.6.2RHEL8.5, RHEL7.9, ubuntu20.04.4, ubuntu18.04.6
11.6.1RHEL8.5, RHEL7.9, ubuntu20.04.3, ubuntu18.04.6
11.6.0
11.5.1
11.5.0RHEL8.4, RHEL7.9, ubuntu20.04.3, ubuntu18.04.5
11.4.3
11.4.2
11.4.1RHEL8.4, RHEL7.9, ubuntu20.04.2, ubuntu18.04.5
11.4.0gcc9 まで対応
gcc6以上が推奨
19.1
2020
3.5 – 8.6
KeplerとMaxwellは非推奨, Pascal, Volta, Turing, Ampere
11.3.1RHEL8.3, RHEL7.9, ubuntu20.04.1, ubuntu18.04.53.5 – 8.6
Kepler (in part), Maxwell, Pascal, Volta, Turing, Ampere
11.3.0gcc9 まで対応
gcc5以上が推奨*
19.1
2020
3.5 – 8.6
Kepler (in part), Maxwell, Pascal, Volta, Turing, Ampere
11.2.2
11.2.1
11.2.0
11.1.1RHEL8.2, RHEL7.8, ubuntu20.04.1, ubuntu18.04.5
11.1.0
10.2.89RHEL8.1, RHEL7.7, ubuntu18.04.3819.0
2018
3.0 – 7.5
Kepler, Maxwell, Pascal, Volta, Turing
10.1.243RHEL8.0, RHEL7.6, ubuntu18.04.3
10.0.130RHEL7.5, ubuntu18.04.1718.0
2017
9.2.148RHEL7.x, Ubuntu16.04.417.0
2016
3.0 – 7.2
Kepler, Maxwell, Pascal, Volta
9.1.85RHEL7.x, Ubuntu16.046
9.0.176
8.0RHEL7.x, Ubuntu16.045.316
2015
2.0 – 6.x
Fermi, Kepler, Maxwell, Pascal

*https://docs.nvidia.com/cuda/archive/11.0/cuda-installation-guide-linux/index.html

c++の各バージョンでの言語機能実装状況(c++11とかc++14、c++17、c++20など)
https://cpprefjp.github.io/implementation-status.html

あとCUDAのバージョンで適用できるOSも限定されているようで、もしOSに適合しないCUDAを入れた場合下記のようなメッセージが出る
実質はCUDAドライバーとOSの組み合わせと思うのだが...

[   10.253873] NVRM: The NVIDIA GPU 0000:13:00.0 (PCI ID: 10de:2531)
               NVRM: installed in this system is not supported by the
               NVRM: NVIDIA 465.19.01 driver release.
               NVRM: Please see 'Appendix A - Supported NVIDIA GPU Products'
               NVRM: in this release's README, available on the operating system
               NVRM: specific graphics driver download page at www.nvidia.com.
[   10.254137] nvidia: probe of 0000:13:00.0 failed with error -1
[   10.254150] NVRM: The NVIDIA probe routine failed for 1 device(s).

インストール

下記サイトからCUDAライブラリを入手します
https://developer.nvidia.com/cuda-downloads

取得ファイルは

  • runfile(local)
  • rpm(local)
  • rpm(network)

と3種類ありますが、ここでは「rpm(local)」をいつも使用しています.
ただ事前に開発環境とepelリポジトリで配布されているdkmsパッケージをインストールする必要があります

yum install epel-release
yum install dmks

これらの前提が整っているなら

yum localinstall cuda-repo-rhel7-11-2-local-11.2.0_460.27.04-1.x86_64.rpm
yum install cuda-11-2
yum remove cuda-repo-rhel7-11-2-local

最新版の11.2のインストールはこれでいいのですが、アプリによってはcudaのバージョンが指定されているものもあります.
その際は、そのバージョンのcudaをインストールする必要がありますが、実行ライブラリさえあれば良く、全てのインストールは不要です.

っで10.2なら

yum localinstall cuda-repo-rhel7-10-2-local-10.2.89-440.33.01-1.0-1.x86_64.rpm
 
yum install cuda-libraries-10-2
yum remove cuda-repo-rhel7-10-2-local

として、必要な分のみインストールします。
10.1も同様に

yum localinstall cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm
 
yum install cuda-libraries-10-1
yum remove cuda-repo-rhel7-10-1-local

IMODがCUDA8なので、これもインストールします

yum localinstall cuda-repo-rhel7-8-0-local-ga2-8.0.61-1.x86_64.rpm \
                 cuda-repo-rhel7-8-0-local-cublas-performance-update-8.0.61-1.x86_64.rpm
yum install cuda-cublas-8-0 \
            cuda-cudart-8-0 \
            cuda-cufft-8-0 \
            cuda-curand-8-0 \
            cuda-cusolver-8-0
yum remove cuda-repo-rhel7-8-0-local-ga2 \
           cuda-repo-rhel7-8-0-local-cublas-performance-update

場合によっては開発環境も必要な時もあるようでその際は

yum install cuda-libraries-dev-10-2 cuda-libraries-10-2 cuda-command-line-tools-10-2

とする.「CUDA nsight」は要らない. 「cuda-samples」も要らない.

cuda-11-2

cuda-11-2でrelionをコンパイルすると
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
と表記される.

Compute capabilityで言うところの3.5から5.0に該当する
次のcudaではKepler系とMaxwellの一部の製品のサポートが消えてるみたい.

Compute capabilitychipGeForceQuadro, NVSTesla
3.5KeplerGeForce GTX Titan Z, GeForce GTX Titan Black, GeForce GTX Titan, GeForce GTX 780 Ti, GeForce GTX 780, GeForce GT 640 (GDDR5), GeForce GT 630 v2, GeForce GT 730, GeForce GT 720, GeForce GT 710, GeForce GT 740M (64-bit, DDR3), GeForce GT 920MQuadro K6000, Quadro K5200Tesla K40, Tesla K20x, Tesla K20
3.7Tesla K80
5.0MaxwellGeForce GTX 750 Ti, GeForce GTX 750, GeForce GTX 960M, GeForce GTX 950M, GeForce 940M, GeForce 930M, GeForce GTX 860M, GeForce GTX 850M, GeForce 845M, GeForce 840M, GeForce 830MQuadro K1200, Quadro K2200, Quadro K620, Quadro M2000M, Quadro M1000M, Quadro M600M, Quadro K620M, NVS 810Tesla M10
5.2GeForce GTX Titan X, GeForce GTX 980 Ti, GeForce GTX 980, GeForce GTX 970, GeForce GTX 960, GeForce GTX 950, GeForce GTX 750 SE,GeForce GTX 980M, GeForce GTX 970M, GeForce GTX 965MQuadro M6000 24GB, Quadro M6000, Quadro M5000, Quadro M4000, Quadro M2000, Quadro M5500,Quadro M5000M, Quadro M4000M, Quadro M3000MTesla M4, Tesla M40, Tesla M6, Tesla M60

当方所有の「GeForce GT 710」はcuda-11.5のドライバー(495.29.05)で未対応となった.
そのため直前のcuda-11.4.3のドライバ(470.82.01)のままにして、cudaライブラリを上げるしかないみたい
cuda-11.5はドライバーが「>=450.80.02」の要求なので辛うじていけそう

yum localinstall cuda-repo-rhel7-11-5-local-11.5.0_495.29.05-1.x86_64.rpm
yum install cuda-toolkit-11-5
(cuda-libraries-devel-11-5やcuda-command-line-tools-11-5らがインストールされるが、nvidia-driver-latestは入らない)

でドライバーはインストールされない.

参照先https://en.wikipedia.org/wiki/CUDA


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-07-05 (火) 22:10:36 (81d)