WSL – CUDA 開発環境をインストールする

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-22.04 で環境構築する場合、手順①では thrust ライブラリの利用に問題があります。
詳細は記事の末尾に掲載しています。
手順②で最新版をインストールするのが良いかと思います。

手順①: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++ をダウングレードすることでも解決できるようですが、手順②で最新版をインストールすることをお勧めします。

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次