Table of Contents
実行環境
項目 | |
---|---|
マシン | HP ENVY TE01-0xxx |
OS | ubuntu 20.04 LTS Focal Fossa |
CPU | Intel Core i7-9700 CPU 3.00 GHz |
RAM | 32.0 GB |
GPU | NVIDIA GeForce RTX 2060 SUPER |
解決したい問題
- デフォルトだとGPUのドライバがインストールされていないため、ディスプレイに表示される画面も解像度が低く、またこのままでは機械学習などの仕事をするときにGPUが使えない
- NVIDIA gpu driverをインストールする
方針と実行
基本方針は
- NDIVIA GPU repositoryの追加
- 推奨ドライバーの確認
- 推奨ドライバーのインストールとreboot
- CUDA toolkitのインストール & Compile test
apt repositoryの追加
オフィシャルリポジトリのNDIVIA GPU driverは古いバージョンしかない恐れがあるので、まずこちらのNDIVIA レポジトリを追加します.
1
2
3
% sudo apt update && sudo apt upgrade
% sudo add-apt-repository ppa:graphics-drivers/ppa
% sudo apt update
GPU driverのインストール
1
2
3
4
5
6
7
8
% ubuntu-drivers devices
vendor : NVIDIA Corporation
model : TU106 [GeForce RTX 2060 SUPER]
driver : nvidia-driver-460 - third-party non-free recommended
driver : nvidia-driver-460-server - distro non-free
driver : nvidia-driver-450-server - distro non-free
driver : nvidia-driver-465 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
nvidia-driver-460
がrecommended
となっているのでこれをインストールします. その後、再起動します.
1
2
% sudo apt install -y nvidia-driver-460
% reboot
再起動するとnvidia-smiコマンドが使えて、ドライバが機能します。その確認方法として nvidia-smi
コマンドがあります.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
% nvidia-smi
Mon Jun 14 21:54:28 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.84 Driver Version: 460.84 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GeForce RTX 206... Off | 00000000:01:00.0 On | N/A |
| 43% 43C P0 43W / 175W | 1296MiB / 7974MiB | 9% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A xxxx G /usr/lib/xorg/Xorg 77MiB |
| 0 N/A N/A xxxx G /usr/lib/xorg/Xorg 293MiB |
| 0 N/A N/A xxxx G /usr/bin/gnome-shell 110MiB |
| 0 N/A N/A xxxx G /usr/lib/firefox/firefox 765MiB |
| 0 N/A N/A xxxx G /usr/lib/firefox/firefox 3MiB |
| 0 N/A N/A xxxx G /usr/lib/firefox/firefox 3MiB |
| 0 N/A N/A xxxx G /usr/lib/firefox/firefox 3MiB |
| 0 N/A N/A xxxx G /usr/lib/firefox/firefox 3MiB |
+-----------------------------------------------------------------------------+
GPUの設定画面を開く
nvidia-settingsコマンドでGPUの設定画面を開くことができる
1
% nvidia-settings
CUDA toolkitのインストール
1
2
3
4
5
6
7
% sudo apt update
% sudo apt install nvidia-cuda-toolkit
% 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コードサンプルのCompile
以下のコードをhello.cu
というファイルで作成し, テストする.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#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);
}
Compile Test
1
2
3
% nvcc -o hello hello.cu
% ./hello
Max error: 0.000000
References
統計
Python
math
Linux
Ubuntu 20.04 LTS
Shell
English
git
方法論
Ubuntu 22.04 LTS
統計検定
競技プログラミング
フーリエ解析
前処理
SQL
coding
コミュニケーション
Network
ssh
将棋
Data visualization
Docker
Econometrics
VSCode
statistical inference
GitHub Pages
apt
development
システム管理
Coffee
cloud
数値計算
素数
Book
Font
Metrics
Poetry
Ubuntu 24.04 LTS
architecture
aws
shell
systemctl
テンプレート
データ構造
ポワソン分布
会計分析
文字コード
環境構築
論文
App
Bayesian
Dynamic Programming
Keyboard
Processing
R
Steam
filesystem
quarto
regex
(注意:GitHub Accountが必要となります)