NVIDIA Driverおよび CUDA のインストール


Chromeで見ると画像の色合いが変なのでSafariやFirefoxで見てください。


本ページは

- [Ubuntu14.04にcuda 7.5をインストール](http://qiita.com/shinya_ohtani/items/f374ed0dd51737087369)
- [Ubuntu14.04 ServerでCUDA 6.5.14の環境を整える](http://nonbiri-tereka.hatenablog.com/entry/2015/02/12/160811)

をベースに少しだけ内容を編集して書いています。全体の流れとしては

- 既存のグラフィックドライバーの無効化
- K520用のグラフィックドライバーのマニュアルインストール
- CUDA環境のインストール
- サンプルファイルによる動作確認

です。

0. 前提条件
=================

- [g2.2xlargeのインスタンスにログインしていること。リージョンはどこでもOK](http://qiita.com/daikumatan/items/58daff99250d4698d659)




1. 事前準備
=================


1.1 パッケージの更新・開発ツールのインストール
-----------------------------------------

```bash:パッケージの更新と必要なパッケージのインストール
sudo apt-get update -y
sudo apt-get install -y build-essential
sudo apt-get install jq
sudo apt-get install -y linux-image-extra-virtual
sudo apt-get install -y linux-source
```


2. NVIDIA ドライバーのインストール
=============================




2.1 デフォルトグラフィックボードの停止
-----------------------------

すでにLinux上のnouveauグラフィックスドライバが有効になっているため、このまますすめるとNVIDIAドライバのインストールに失敗してしまいます。そのため、このnouveauを無効にします。




```bash:/etc/modprobe.d/blacklist-nouveau.confの作成
sudo sh -c "cat << ETX > /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
ETX" && cat /etc/modprobe.d/blacklist-nouveau.conf
```

```bash:/etc/modprobe.d/nouveau-kms.confの作成
sudo sh -c "echo 'options nouveau modeset=0' > /etc/modprobe.d/nouveau-kms.conf" && cat /etc/modprobe.d/nouveau-kms.conf
```

initramfsの更新

```bash:/bootにある既存のInitramfsの更新
sudo update-initramfs -u
```

```bash:result-example
update-initramfs: Generating /boot/initrd.img-3.13.0-85-generic
```

```bash:command
sudo reboot
```

<!--
initramfsに関して馴染みの無い人は[(1)](http://www.slideshare.net/znzjp/initramfs), [(2)](http://gihyo.jp/admin/serial/01/ubuntu-recipe/0384), [(3)](http://www.gcd.org/blog/2007/09/129/) がわかりやすいです。
-->


2.2 Download NVIDIA Driver
----------------------


### Coppy the URL of "Agree & Download"

[NVIDIA Driver Downloadsのページ](http://www.nvidia.com/Download/index.aspx?lang=en-us)へアクセスし、セレクトメニューを下記のように選択後、SEARCHのボタンをクリックします。

![Kobito.TqGQmk.png](https://qiita-image-store.s3.amazonaws.com/0/73207/2be76a4c-0869-13f5-5e36-08e7b8fe001b.png "Kobito.TqGQmk.png")


DOWNLOADのボタンをクリックします。
その後、下記の画面より "AGREE & DOWNLOAD" のボタンのリンクをコピーします。

![Kobito.gnqpJC.png](https://qiita-image-store.s3.amazonaws.com/0/73207/5bb26d9a-decd-013c-db3a-3db79c1c3bb7.png "Kobito.gnqpJC.png")


linux-headersは、上記の再起動後にインストールすることがポイントです。

### ドライバーのインストールに必要なパッケージのインストール

```bash:ドライバーのインストールに必要なパッケージのインストール
sudo apt-get install -y linux-headers-`uname -r`
```

```bash:パッケージの確認
dpkg -l linux-headers-`uname -r`
```

### Download NVIDIA Driver

ここからは手元のマシンではなく、g2.2xlargeからCLIで直接ファイルをDownloadします。

もう一度、リブートしたg2.2xlargeへログインしてください。
変数は各自コピーしたURLをいれてください。

```bash:コピーしたURLを変数に格納
K520_DRIVER_URL='http://us.download.nvidia.com/XFree86/Linux-x86_64/XXX.XX/NVIDIA-Linux-x86_64-XXX.XXrun'
```

```bash:ドライバーのダウンロード
wget ${K520_DRIVER_URL}
```



2.3 Install NVIDIA driver
----------------------

```bash:変数確認
cat << ETX

LOCAL FILE : ${K520_DRIVER_URL##*/}

ETX
```

```bash:ドライバーのインストール
sudo sh ${K520_DRIVER_URL##*/} -a --disable-nouveau
```

対話形式のインストールが始まります。下記のように進めてください。
(下記画像はChromeブラウザーを使うと画像が正しく表示されないので、FirefoxかSafariなどで見てください)

![Kobito.Jbpm66.png](https://qiita-image-store.s3.amazonaws.com/0/73207/83b69ea0-ea33-a853-06ae-6487f516c6bf.png "Kobito.Jbpm66.png")


![Kobito.ZncESn.png](https://qiita-image-store.s3.amazonaws.com/0/73207/7bd742f4-41d4-136d-8847-9979915fcbb7.png "Kobito.ZncESn.png")

![Kobito.hHC690.png](https://qiita-image-store.s3.amazonaws.com/0/73207/c4b2c24d-0df5-95c6-60db-e09508232b3e.png "Kobito.hHC690.png")

![Kobito.nK4wzW.png](https://qiita-image-store.s3.amazonaws.com/0/73207/83d2decb-9020-bc8f-bdb3-ddcfe52d6c80.png "Kobito.nK4wzW.png")

![Kobito.2BJC34.png](https://qiita-image-store.s3.amazonaws.com/0/73207/cc8e74cf-ad7a-9bc0-7aa7-6bfee9d27d81.png "Kobito.2BJC34.png")

![Kobito.AMWZps.png](https://qiita-image-store.s3.amazonaws.com/0/73207/0f432747-8359-5476-44a5-808b025b866f.png "Kobito.AMWZps.png")


再起動します。

```bash:g2.2xlargeの再起動
sudo reboot
```



2.4 ドライバーのインストール確認
--------------------------

```bash:command
sudo modprobe nvidia
```

```bash:result
(何も表示されなければOK)
```

3. CUDAのインストール
===============

3.1 CUDAのダウンロード
--------------------

下記にアクセスします
https://developer.nvidia.com/cuda-downloads

![Kobito.3tVnVA.png](https://qiita-image-store.s3.amazonaws.com/0/73207/73e31d73-3a50-340d-3bd1-d40aa476135c.png "Kobito.3tVnVA.png")

コピーしたリンクを貼り付けます

```bash:変数の決定
CUDA_URL=http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
```

```bash:download
wget ${CUDA_URL}
```

3.2 CUDAのインストール
---------------


```bash:変数の確認
cat << ETX

LOCAL FILE : ${CUDA_URL##*/}

ETX
```

```bash:cudaのパッケージをインストールする
sudo dpkg -i ${CUDA_URL##*/}
sudo apt-get update  
sudo apt-get install cuda
```

3.3 環境変数の設定
-------------

```
cat << ETX >> ${HOME}/.bashrc
export PATH=/usr/local/cuda/bin:\$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:\$LD_LIBRARY_PATH
ETX
source .bashrc
```


3.4 インストール確認
------------------

```bash:確認
nvcc -V
```

```bash:result
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17
```

4. サンプルファイルによるCUDAのテスト(必須ではない。コンパイルに時間がかかります)
======================================================================

alignedTypes というサンプルアプリでテストします。

cudaのバージョンによって適宜読み替えてください。
コンパイルにはしばらく時間がかかります。

```bash:サンプルファイルのコンパイル
cuda-install-samples-7.5.sh ./
cd NVIDIA_CUDA-7.5_Samples
make
```

```bash:alignedTypesの実行
cd bin/x86_64/linux/release
./alignedTypes 
```

```bash:result
[./alignedTypes] - Starting...
GPU Device 0: "GRID K520" with compute capability 3.0

[GRID K520] has 8 MP(s) x 192 (Cores/MP) = 1536 (Cores)
> Compute scaling value = 1.00
> Memory Size = 49999872
Allocating memory...
Generating host input data array...
Uploading input data to GPU memory...
Testing misaligned types...
uint8...
Avg. time: 2.025906 ms / Copy throughput: 22.985273 GB/s.
	TEST OK
uint16...
Avg. time: 1.157250 ms / Copy throughput: 40.238503 GB/s.
	TEST OK
RGBA8_misaligned...
Avg. time: 1.109531 ms / Copy throughput: 41.969082 GB/s.
	TEST OK
LA32_misaligned...
Avg. time: 0.913219 ms / Copy throughput: 50.991080 GB/s.
	TEST OK
RGB32_misaligned...
Avg. time: 1.011594 ms / Copy throughput: 46.032325 GB/s.
	TEST OK
RGBA32_misaligned...
Avg. time: 1.110656 ms / Copy throughput: 41.926572 GB/s.
	TEST OK
Testing aligned types...
RGBA8...
Avg. time: 0.917500 ms / Copy throughput: 50.753143 GB/s.
	TEST OK
I32...
Avg. time: 0.916875 ms / Copy throughput: 50.787740 GB/s.
	TEST OK
LA32...
Avg. time: 0.882969 ms / Copy throughput: 52.738006 GB/s.
	TEST OK
RGB32...
Avg. time: 1.049188 ms / Copy throughput: 44.382923 GB/s.
	TEST OK
RGBA32...
Avg. time: 0.917813 ms / Copy throughput: 50.735862 GB/s.
	TEST OK
RGBA32_2...
Avg. time: 1.017781 ms / Copy throughput: 45.752473 GB/s.
	TEST OK

[alignedTypes] -> Test Results: 0 Failures
Shutting down...
Test passed
```



------

__このQiitaの情報は、おいらがプライベートで作っているもので、NVIDIAとは無関係です。個人責任でお試しください。インスタンス等の消し忘れ等ご注意ください。__