Ubuntu 20.04 Focal Fossa LinuxにCUDAをインストールする方法
Nvidia CUDAツールキットは、GPUの並列計算プラットフォームおよびプログラミングモデルの拡張です。Nvidia CUDAのインストールは、公式のNvidia CUDAリポジトリの追加、その後関連するメタパッケージのインストール、および実行可能なCUDAバイナリへのパスの設定で構成されています。このチュートリアルでは、Ubuntu 20.04 Focal Fossa LinuxにCUDAをインストールする方法を紹介します。これにより、最新のドライバーとソフトウェアを使用してビデオグラフィックスを実行できるようになります。
下記の方法では、デフォルトのUbuntuリポジトリまたは(やや更新された)CUDAリポジトリからCUDAをインストールする方法をカバーします。最後に、インストールをテストするためにCUDA Cプログラムの例をコンパイルする方法も紹介します。
このチュートリアルでは、あなたは学びます:
- UbuntuリポジトリからCUDAツールキットをインストールする方法
- CUDAリポジトリからCUDAツールキットをインストールする方法
- CUDA Cコードの例をコンパイルしてプログラムを実行する方法
- CUDAのバージョンを確認する方法
ソフトウェアの要件と使用される規約
Ubuntu 20.04にCUDAをインストールするための手順
UbuntuリポジトリからCUDAツールキットをインストールする方法
最新のCUDAツールキットバージョンが手に入らないかもしれませんが、Ubuntu 20.04にCUDAをインストールする最も簡単な方法は、Ubuntuの標準リポジトリからインストールを行うことです。CUDAをインストールするには、次のコマンドを実行してください:
sudo apt update sudo apt install nvidia-cuda-toolkitすべて準備が整ったはずです。CUDAのバージョンを確認してください:
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注意
最新の最新のCUDAバージョンをインストールするには、下記のCUDAリポジトリからCUDAツールキットをインストールする方法セクションを参照してください。- サンプルCUDA CコードのコンパイルによってCUDAツールキットのインストールを確認します。以下の サンプルCUDAコードのコンパイル セクションを参照してください。
CUDAリポジトリからCUDAツールキットをインストールする方法
- まだ行っていない場合は、VGA用のNvdiaドライバーがインストールされていることを確認してください。そのためには、「Ubuntu 20.04 Focal Fossa LinuxにNVIDIAドライバーをインストールする方法」のガイドに従ってください。
NVIDIA CUDAリポジトリをセットアップします。次のコマンドを実行してCUDAリポジトリを有効にしてください。
sudo wget -O /etc/apt/preferences.d/cuda-repository-pin-600 https://developer.download.nvidia.com/compute/cuda/repos/ubunt4/x86_64/cuda-ubunt4.pin sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubunt4/x86_64/7fa2af80.pub sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubunt4/x86_64/ /"この段階では、すべてがCUDAをインストールする準備が整っているはずです。次の2つの
aptコマンドを実行してください:sudo apt update sudo apt install cuda準備ができたら、CUDAバイナリへのパスを設定してください:
echo 'export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}' >> ~/.bashrcインストールを確認するためにCUDAのバージョンを確認します:
nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2019 NVIDIA Corporation Built on Wed_Oct_23_19:24:38_PDT_2019 Cuda compilation tools, release 10.2, V10.2.89
サンプルCUDAコードをコンパイルする
次のCUDA Cコードの例をコンパイルしてインストールを確認してください。以下のコードをhello.cuという名前のファイルに保存してください:
#include <stdio.h>
__global__
void saxpy(int n, float a, float *x, float *y)
{
int i = blockIdx.x*blockDim.x + threadIdx.x;
if (i < n) y[i] = a*x[i] + y[i];
}
int main(void)
{
int N = 1<<20;
float *x, *y, *d_x, *d_y;
x = (float*)malloc(N*sizeof(float));
y = (float*)malloc(N*sizeof(float));
cudaMalloc(&d_x, N*sizeof(float));
cudaMalloc(&d_y, N*sizeof(float));
for (int i = 0; i < N; i++) {
x[i] = 1.0f;
y[i] = 2.0f;
}
cudaMemcpy(d_x, x, N*sizeof(float), cudaMemcpyHostToDevice);
cudaMemcpy(d_y, y, N*sizeof(float), cudaMemcpyHostToDevice);
// Perform SAXPY on 1M elements
saxpy<<<(N+255)/256, 256>>>(N, 2.0f, d_x, d_y);
cudaMemcpy(y, d_y, N*sizeof(float), cudaMemcpyDeviceToHost);
float maxError = 0.0f;
for (int i = 0; i < N; i++)
maxError = max(maxError, abs(y[i]-4.0f));
printf("Max error: %f\n", maxError);
cudaFree(d_x);
cudaFree(d_y);
free(x);
free(y);
}
次に、nvcc を使って Nvidia CUDA コンパイラでコードをコンパイルし、新しくコンパイルされたバイナリを実行します:
nvcc -o hello hello.cu
./hello
Max error: 0.000000
Ubuntu 20.04 フォーカルフォッサLinux上のCUDA
トラブルシューティング
現在、CUDAはCUDA Ubuntu 18.04のソースからインストールした場合、バージョン8よりも高いGCCコンパイラをサポートしていません。そのため、Nvidia CUDAコンパイラでコードをコンパイルすると、次のようなエラーが発生する可能性があります。
In file included from /usr/local/cuda-10.2/bin/../targets/x86_64-linux/include/cuda_runtime.h:83,
from :
/usr/local/cuda-10.2/bin/../targets/x86_64-linux/include/crt/host_config.h:138:2: error: #error -- unsupported GNU version! gcc versions later than 8 are not supported!
138 | #error -- unsupported GNU version! gcc versions later than 8 are not supported!
| ^~~~~
CUDAコンパイラーの要件に従うために、デフォルトのGCCコンパイラーをバージョン8以下に切り替えてください。
締めくくりの考え
このチュートリアルでは、Ubuntu 20.04 Focal Fossa LinuxにCUDAをインストールする方法を見ました。CUDAツールキットは、いくつかの異なる方法でインストールすることができ、ここではそれを示しました。最も最新のCUDAソフトウェアはPPAからインストールできますが、最も便利なインストール方法は公式パッケージマネージャーからのダウンロードです。

