Windows11 WSL2 Ubuntu Python
Numpy を GPU で動作させる
NVIDIA GPU では CUDA ソフトウェアを用いて GPGPU(GPU による汎用計算)が可能です。
CuPy はこの CUDA と Python の橋渡しをしてくれます。
Numpy の多くの関数をサポートしているので、それとほとんど変わらない書き方で GPGPU が実現できます。
GPU 上で計算するためには、NVIDIAが提供している「CUDA」が必要になります。
現在(20230719)までに,Cupy が CUDA12.1 に対応できておらず、CUDA12.0までの対応になっていることに
留意する必要があります。
Cupyのインストール・環境構築[Windows10]
numpyを使ったプログラムをGPUで動かす方法
Conda-Forge から CuPy をインストールする
が参考になります。
まずは Cupy のインストールファイルを探します。
yasuhiro@ysenba:~$ conda search -c conda-forge cupy Loading channels: done # Name Version Build Channel cupy 4.0.0 py27he3f55b6_0 pkgs/main ・・・・ ・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・ cupy 10.4.0 py39hc3c280e_0 conda-forge cupy 10.5.0 py310h036c549_0 conda-forge cupy 10.5.0 py310h036c549_1 conda-forge cupy 10.5.0 py310h5a5d52f_0 conda-forge cupy 10.5.0 py310h5a5d52f_1 conda-forge cupy 10.5.0 py310h9130c2b_0 conda-forge cupy 10.5.0 py310h9130c2b_1 conda-forge cupy 10.5.0 py310h9216885_0 conda-forge cupy 10.5.0 py310h9216885_1 conda-forge cupy 10.5.0 py37h0c11245_0 conda-forge cupy 10.5.0 py37h0c11245_1 conda-forge cupy 10.5.0 py37h17e6d27_0 conda-forge cupy 10.5.0 py37h17e6d27_1 conda-forge ・・・・ ・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・ cupy 11.3.0 py310h036c549_0 conda-forge cupy 11.3.0 py310h036c549_1 conda-forge cupy 11.3.0 py310h5a5d52f_0 conda-forge cupy 11.3.0 py310h5a5d52f_1 conda-forge cupy 11.3.0 py310h9130c2b_0 conda-forge cupy 11.3.0 py310h9130c2b_1 conda-forge cupy 11.3.0 py310h9216885_0 conda-forge cupy 11.3.0 py310h9216885_1 conda-forge cupy 11.3.0 py311h2ee233c_1 conda-forge cupy 11.3.0 py311ha38b01b_1 conda-forge cupy 11.3.0 py311hb8138a5_1 conda-forge cupy 11.3.0 py311hfac1e59_1 conda-forge cupy 11.3.0 py38h405e1b6_0 conda-forge cupy 11.3.0 py38h405e1b6_1 conda-forge cupy 11.3.0 py38h69964f1_0 conda-forge cupy 11.3.0 py38h69964f1_1 conda-forge cupy 11.3.0 py38ha04ee3d_0 conda-forge cupy 11.3.0 py38ha04ee3d_1 conda-forge cupy 11.3.0 py38heb07aac_0 conda-forge cupy 11.3.0 py38heb07aac_1 conda-forge cupy 11.3.0 py39h3d061b5_0 conda-forge cupy 11.3.0 py39h3d061b5_1 conda-forge cupy 11.3.0 py39h3da55b9_0 conda-forge cupy 11.3.0 py39h3da55b9_1 conda-forge cupy 11.3.0 py39h505621e_0 conda-forge cupy 11.3.0 py39h505621e_1 conda-forge cupy 11.3.0 py39hc3c280e_0 conda-forge cupy 11.3.0 py39hc3c280e_1 conda-forge cupy 11.4.0 py310h036c549_0 conda-forge ・・・・ ・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・ cupy 12.0.0 py39hc3c280e_0 conda-forge cupy 12.0.0 py39hc3c280e_1 conda-forge cupy 12.0.0 py39hc3c280e_2 conda-forge cupy 12.0.0 py39hc3c280e_3 conda-forge cupy 12.0.0 py39hc3c280e_4 conda-forge cupy 12.1.0 py310h3181149_0 conda-forge cupy 12.1.0 py310h4a36445_0 conda-forge cupy 12.1.0 py310h53f8385_0 conda-forge cupy 12.1.0 py310h86dfe5f_0 conda-forge cupy 12.1.0 py310hfc31588_0 conda-forge cupy 12.1.0 py311h04b4b91_0 conda-forge cupy 12.1.0 py311h287edf0_0 conda-forge cupy 12.1.0 py311h2bc1b5c_0 conda-forge cupy 12.1.0 py311ha81f1d1_0 conda-forge cupy 12.1.0 py311hce4a69c_0 conda-forge cupy 12.1.0 py38h1a8ea90_0 conda-forge cupy 12.1.0 py38hb15ac9a_0 conda-forge cupy 12.1.0 py38hc5c2c28_0 conda-forge cupy 12.1.0 py38hcae7217_0 conda-forge cupy 12.1.0 py38hee744ae_0 conda-forge cupy 12.1.0 py39h1cb1add_0 conda-forge cupy 12.1.0 py39h468c05e_0 conda-forge cupy 12.1.0 py39h5eb9bd4_0 conda-forge cupy 12.1.0 py39h98de0c3_0 conda-forge cupy 12.1.0 py39hc7c1505_0 conda-forge
私のconda 環境インストールされている python3 の版数は
Python 3.10.6
でしたので、py310 に着目します。
ルート領域にインストールされている cuda は
cuda 12.2
これにはどうもに対応していない様子。
一方、私の conda 環境にインストールされているのは
cudatoolkit 11.3.1
これにはどうも
cupy 11.3.0 py310h9216885_1 conda-forge
が対応しているようです。
Cupy インストール
とりあえずバージョン指定なしで copy をインストールします。
yamada@yama:~$ conda install -c conda-forge cupy=11.3.0 py310h9216885_1
yamada@yama:~$ conda install cupy
は使わず、
yamada@yama:~$ conda update conda
yamada@yama:~$ conda install -c conda-forge cupy
とします。
30分ぐらい時間がかかります。
どうもバージョン指定しないとインストールに時間がかかるようです。
最適版数を探すのに時間がかかるようです。
インストールバージョンが分かる場合はバージョン指定をしましょう。
これで python 版数に見合った cupy が conda 仮想環境にインストールされます。
ただ、TensorFlow GPU と CuPy の CUDA の適応バージョンが違う場合、低いバージョンに揃えられてしまうようです。
$ conda list
でインストール結果を確認してみました。
yamada@yama:~$ conda list # packages in environment at /home/yamada/miniconda3: # # Name Version Build Channel _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 2_kmp_llvm conda-forge _tflow_select 2.1.0 gpu ・・・・・・・・・・・・・ ・・・・・・ ・・・・・・・・・・・ ・・・・・ conda 23.7.2 py310hff52083_0 conda-forge conda-content-trust 0.1.3 py310h06a4308_0 conda-package-handling 2.2.0 py310h06a4308_0 conda-package-streaming 0.9.0 py310h06a4308_0 contourpy 1.0.5 py310hdb19cb5_0 cryptography 39.0.1 py310h9ce1e76_0 cudatoolkit 11.3.1 h2bc3f7f_2 cudnn 8.2.1.32 h86fa8c9_0 conda-forge cupti 11.3.1 0 cupy 10.5.0 py310h9216885_0 conda-forge cycler 0.11.0 pyhd3eb1b0_0 dbus 1.13.18 hb2f20db_0 expat 2.4.9 h6a678d5_0 fastrlock 0.8 py310hd8f1fbe_3 conda-forge flatbuffers 2.0.0 h2531618_0 ・・・・・・・・・・・・・ ・・・・・・ ・・・・・・・・・・・ ・・・・・
cupy 11.3.0 がインストールされるのかと思っていましたが、
cupy 10.5.0 py310h9216885_0 conda-forge
がインストールされました。
バージョン指定しないで良かったです。
また、
cudatoolkit 11.3.1
cudnn 8.2.1.32
は変化なしでした。
引き続き cupy がうまくインストールされたか動作確認します。