【CUDA】WSL Ubuntu で GPGPU プログラミング

  • 2022年8月1日
  • 2022年8月4日
  • CUDA, IDE
  • 18View
  • 0件

WSL への CUDA 導入

環境

Windows 11 WSL にて、20.04 の Ubuntu で試しました。

事前準備

Windows

ご利用の GPU に応じて Windows のドライバをインストールします。
URL:NVIDIA ドライバダウンロード

WSL に CUDA をインストールする場合は、Windows 用のドライバが必要です。
Linux 用のドライバは不要です。

なお、CUDA のコンパイラをインストールするためには、NVIDIA 製の GPU を利用している必要があります。

WSL

パッケージをアップデートしておきます。

sudo apt update
sudo apt upgrade

これで事前準備完了です。

CUDA Toolkit のインストール

2通りのインストール方法がありますので、どちらかを選んで実施します。
バージョンにこだわりがなければ手順①がお勧めです。(②はすんなりいかなかったので)

  • 手順①:Ubuntu リポジトリからお手軽にインストール
  • 手順②:NVIDIA 公式リポジトリからインストール

手段①:Ubuntu レポジトリからお手軽にインストール

CUDA Toolkit インストール

apt install のコマンドでサクッとインストール可能です。

sudo apt install nvidia-cuda-toolkit
gcc/g++ インストール

Ubuntu リポジトリからインストールする場合は、gcc と g++ が自動的にはインストールされません。
次のコマンドで追加でインストールします。(g++ からの依存で gcc もインストールされます)

sudo apt install g++
バージョン確認

Ubuntu リポジトリからインストールした場合は、10.1 とやや古いバージョンの nvcc がインストールされます。

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

手段②:NVIDIA 公式リポジトリからインストール

CUDA Toolkit インストール

最新バージョンの CUDA Toolkit を利用したい場合は、NVIDIA 公式リポジトリからインストールします。

バージョンに合わせてコマンドに変化があると思いますので、基本的には公式ドキュメントを参照するのが良いと思います。
公式ドキュメントを参照しつつ、次のコマンドでインストールしました。

sudo apt-key del 7fa2af80

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb

sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-B81839D3-keyring.gpg /usr/share/keyrings/

sudo apt-get update
sudo apt-get -y install cuda

参考:【NVIDIA】 Getting Started with CUDA on WSL 2

公式ドキュメント通りだと apt update で GPG Key エラーが発生してしまいましたので、cp コマンドでの gpg ファイルコピーを付け加えています。

パス設定

このインストール方法では、cuda は /usr/local/cuda 配下にインストールされます。
~/.bashrc に以下を付け加えます。

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
バージョン確認

再ログインなどで PATH を有効にすると nvcc が実行できるようになります。
11.7 の最新バージョンがインストールできました。

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_May__3_18:49:52_PDT_2022
Cuda compilation tools, release 11.7, V11.7.64
Build cuda_11.7.r11.7/compiler.31294372_0

コンパイルと実行

サンプルコードをコンパイルして実行します。

#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, g++ のインストールが漏れている場合は、nvcc 実行時に次のようなエラーが発生します。

エラー:
gcc: No such file or directory
gcc: fatal error: cannot execute ‘cc1plus’: execvp: No such file or directory

パッケージを追加でインストールしましょう。

sudo apt install g++