[CUDA][WSL] Ubuntu で GPGPU プログラミング

  • 2022年8月1日
  • 2022年9月18日
  • CUDA
  • 202View
  • 0件

WSL への CUDA 導入

環境

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

事前準備

Windows

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

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

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

WSL

WSL ディストリビューションの複製

お試しで実行する場合は Ubuntu イメージを複製しておくのがお勧めです。
本手順は必須ではありません。

パッケージのアップデート

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

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++