Ubuntu 14.04にCuda 6.5をインストール

# バージョン
適当にやると最新バージョンがインストールされてしまう．
また，Cuda 6.5はGCCが4.8.1以下でないといけないらしい．

## 各最新バージョンの状況
* Cuda 7.0
* Nvidia ドライバ 346
* GCC 4.9.2

## インストールしたいバージョン
* Cuda 6.5
* Nvidia ドライバ 340くらい？
* GCC 4.8.1以下

# 準備
## GCC 4.7をインストール
GCCの4.8.1が指定できなかった．GCC-4.8を指定してインストールすると4.8.4とかがインストールされてしまう．

古いバージョンのGCCインストールのため

```
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
```

Alternativesの削除．Alternativesとは，たぶんGCC実体へのリンク．

```
sudo update-alternatives --remove-all gcc 
sudo update-alternatives --remove-all g++
```

GCC-4.7のインストール

```
sudo apt-get install gcc-4.7
sudo apt-get install g++-4.7
```

GCC-4.7をリンク

```
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.7 20
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
```

そして一応

```
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade
```

本体を削除したい場合は以下．本体どれが入っているかは， ``ls /usr/bin | grep gcc`` で

```
sudo apt-get remove gcc
sudo apt-get remove g++
```


## 古いNvidia DriverとCudaの削除
### 確認

#### 普通にインストールした場合

```
dpkg -l | grep nvidia
dpkg -l | grep cuda
```

削除はnvidia driverから行う．cudaを先に削除しようとするとエラーがでる．

```
sudo apt-get --purge remove nvidia-*
sudo apt-get --purge remove cuda-*
```


#### .runでインストールした場合
[ここ](http://cordea.hatenadiary.com/entry/2015/01/20/164706)にあるみたいに ``cuda_6.5.14_linux_64.run`` でインストールしてしまったのの削除方法

```
/usr/bin/nvidia-uninstall
/usr/local/cuda-6.5/bin/uninstall
```

# Nvidia ドライバとCudaのインストール
``/etc/apt/sources.list.d/cuda.list`` を作成する

```:cuda.list
deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64 /
```

それから

```
sudo apt-get update
sudo apt-get install nvidia-340
```

なぜかnvidia-346入れてうまく行かなかったので，取り敢えず340入れます．

```
sudo apt-get install cuda-6-5
```

## 確認
確認してみます

```
dpkg -l | grep nvidia
dpkg -l | grep cuda
```

インストールできてるけど，何故かnvidia driver勝手に346になってましたが問題ないのでそのままで．

GCCのバージョンを確認するとなぜか4.9.2になってた．．．ので，最初の手順と同じようにして4.7に戻します．

```
gcc -V
```

```
sudo update-alternatives --remove-all gcc 
sudo update-alternatives --remove-all g++
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.7 20
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
```


## パスをとおす
``.bashrc`` の一番下の方に以下を追加して再読み込みする．

```:.bashrc
export PATH=/usr/local/cuda-6.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH
```

```
source .bashrc
echo $PATH
```

## 確認

```
dpkg -l | grep nvidia
dpkg -l | grep cuda
```

```
nvidia-smi
nvcc -V
```

```
cat /proc/driver/nvidia/version
```

``cuda-install-samples-6.5.sh`` はCudaをインストールしたときに入ってきていて，先ほどパスを通したところにあります．

```
cuda-install-samples-6.5.sh ~
cd ~/NVIDIA_CUDA-6.5_Samples
make
cd 1_Utilities/deviceQuery
./deviceQuery
```

# Reference
* [CUDA™ 6.5 開発環境をインストールする (Linux版）](https://www.softek.co.jp/SPG/Pgi/TIPS/public/accel/cuda65_install.html)
* [docker上のUbuntu 14.04にcaffeをinstall](http://cordea.hatenadiary.com/entry/2015/01/20/164706)
* [How do I install gcc 4.8.1 on Ubuntu 13.04?](http://askubuntu.com/questions/312620/how-do-i-install-gcc-4-8-1-on-ubuntu-13-04)
* [Ubuntu 14.04にNVIDIA CUDA 6.5 toolkitをインストールする](http://d.hatena.ne.jp/koiti_yano/20141201/p1)