Windows 11 の WSL に CUDA 開発環境をインストールする手順です。
Ubuntu-22.04 のディストリビューションで試行した例です。
事前準備
Windows
ご利用の GPU に応じて Windows のドライバをインストールします。
URL:NVIDIA ドライバダウンロード
WSL に CUDA をインストールする場合は、Windows 用のドライバが必要です。
Linux 用のドライバは不要です。
なお、CUDA のコンパイラをインストールするためには、NVIDIA 製の GPU を利用している必要があります。
WSL Ubuntu パッケージのアップデート
パッケージをアップデートしておきます。
$ sudo apt update
$ sudo apt upgrade
CUDA Toolkit のインストール
ここでは2通りのインストール方法を紹介します。
バージョンにこだわりがなければ、手順①の方が簡単です。
最新バージョンの CUDA が欲しい場合は手順②を実施することになります。
- 手順①:Ubuntu リポジトリからインストール
- 手順②:NVIDIA 公式リポジトリからインストール
手順①:Ubuntu リポジトリからインストール
CUDA Toolkit インストール
次のコマンドで Toolkit をインストールします。
$ sudo apt install nvidia-cuda-toolkit
gcc インストール
Ubuntu リポジトリからインストールする場合は、gcc/g++ が自動的にはインストールされません。
次のコマンドで追加でインストールします。
$ sudo apt install g++
バージョン確認
バージョン 11.5 の nvcc がインストールされました。
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0
手順②:NVIDIA 公式リポジトリからインストール
基本的には以下の手順にてインストールすることになります。
NVIDIA – CUDA Installation Guide for Linux – 3.9. WSL
ネットワークリポジトリをインストールする方式で以下にコマンド例を記載します。
GPG 公開鍵の削除
$ sudo apt-key del 7fa2af80
GPG 公開鍵の登録
$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
$ sudo dpkg -i cuda-keyring_1.1-1_all.deb
CUDA インストール
$ sudo apt update
$ sudo apt install cuda
パス設定
このインストール方法では、cuda は /usr/local/cuda
配下にインストールされます。~/.bashrc
の末尾に以下を付け加えます。
Filename: .bashrc
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
バージョン確認
$ exec bash
などで環境変数を再読み込みすることで、nvcc コマンドが利用可能になります。
2023-07-16 現在では、バージョン 12.2 の CUDA がインストールされました。
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Jun_13_19:16:58_PDT_2023
Cuda compilation tools, release 12.2, V12.2.91
Build cuda_12.2.r12.2/compiler.32965470_0
なお、こちらの例では gcc が自動でインストールされるので、個別の対処は不要です。
コンパイルと実行
サンプルコードをコンパイルして実行します。
#include <stdio.h>
__global__ void hello() {
printf("Hello World!\n");
}
int main() {
hello<<<1, 1>>>();
cudaDeviceReset();
return 0;
}
$ nvcc hello.cu -o hello && ./hello
Hello World!
Hello World が出力されました。
nvcc でエラーが発生する場合
Ubuntu リポジトリからインストールして gcc のインストールが漏れている場合は、nvcc
実行時に次のようなエラーが発生します。sudo apt install g++
で対処しましょう。
gcc: No such file or directory
nvcc fatal : Failed to preprocess host compiler properties.
手順①で構築する環境の問題点
Ubuntu 22.04 の環境にて、手順①でインストールした場合は問題があります。
thrust ライブラリを利用する状態でコンパイルすると、次のようなエラーが発生します。
#include <thrust/host_vector.h>
int main()
{
return 0;
}
$ nvcc main.cu
/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
435 | function(_Functor&& __f)
| ^
/usr/include/c++/11/bits/std_function.h:435:145: note: ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’:
530 | operator=(_Functor&& __f)
| ^
/usr/include/c++/11/bits/std_function.h:530:146: note:
g++ をダウングレードすることでも解決できるようですが、手順②で最新版をインストールすることをお勧めします。
コメント