数年前に買ったノートPCにUbuntu 16.04をインストールし、プロプライエタリなNVIDIAのドライバーをインストールして、「最新」CUDAをインストールして、そこそこハマッタので、メモを残しておく。
Ubuntu 16.04をインストール後、プロプライエタリなNVIDIAのドライバーをインストールしたら、ブートしなくなった(頭が痛い…)
Ctl+Alt+F1で仮想コンソールに移行し、
$ sudo apt purge "インストしたドライバーパッケージ”
で何とか回復した。あるいは
再起動後、GRUBメニューでUbuntuを選択した状態で'e'キーを押し、起動オプションをいじる。'quiet splash'と書いてあるところの直後に'text 3'を追加してF10キーを押す。するとランレベル3でCUIログインになりpurgeできるようになる、という、どこかに出ていた技を使ったかも。(までに何度、Ubuntuを再インストしたことやら…)
どうも私のノートPCは、NVIDIA Optimusとか言って、GPUがNVIDIAのものと、インテルのものが2つ入っているのが原因らしい。で、この場合、bumblebeeを使った方法が紹介されているページがチラホラあったが、さらに調べてみると、bumblebeeは2013年から開発が止まっていて、ubuntu 16.04からはdeprecatedになっているらしい。そこでnvidia-primeを使う。参照したページをメモし忘れた(オイオイ…)
まず、プロプライエタリなNVIDIAのドライバーのバージョンを決める。
$ sudo apt-cache search 'nvidia-[0-9]+$'
で、出てきたもので選ぶ。私は”nvidia-384”を選択した。その理由は忘れた。(オイオイ、そこが肝心だろ…)確か、NVIDIAのサイトで、私のGPUに対応したLinux 64用のドライバーのバージョンを調べて、それか、それ以下のものにした記憶がある。次に、
$ sudo apt install nvidia-384 nvidia-prime nvidia-settings
で、リブート後、Dashから”Nvidia X Server Settings"を起動する。PRIMEのプロファイルがメニューにあるはずだから、それをクリックすると、「NVIDIAのGPUを使う」「インテルのGPUを使う」の2択ができる。Windowsのように、自動的に切り替えはできない。
次にCUDAのインストールである。何も考えずに最新の9.1をインストールしたら動かない(またまた頭が痛い…) 色々調べてみたら、まず、私のノートPCについているGPUが古い。以下のページでどのGPUがどのCompute Capability なのか調べることが出来る。
私のGPUは Compute Capability 2.1である。一方、なかなかわからなかったのだが、
によれば、
- CUDA SDK 8.0 support for compute capability 2.0 – 6.x (Fermi, Kepler, Maxwell, Pascal), last version with support for Compute Capability 2.x (Fermi)
- CUDA SDK 9.0/9.1 support for compute capability 3.0 – 7.x (Kepler, Maxwell, Pascal, Volta)
古すぎて9.0以降、サポートされていない。しょうがないのでCUDA 8.0を再インストールする。なんか、CUDAの中に、ドライバーのバージョンがハードコーディングされてるところがあったかなんかで、インストール中にエラーが出る。エラーが出たソースのディレクトリーにある、findgllib.mkの中のUBUNTU_PKG_NAME = "nvidia-390" とかを、自分が実際使ってるドライバーのパッケージ名に書き換えた、ような気がした。(ちょっと前だったのでもう忘れ始めている)
CUDAインストール後、.bashrcに以下の行を加える。
## CUDA and cuDNN paths
export PATH=/usr/local/cuda-8.0/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:${LD_LIBRARY_PATH}
で、テスト。(どっかのページからのコピペだが、参照元を忘れてしまった。失礼)
$echo $PATH # 出力に"/usr/local/cuda-8.0/bin"が含まれているか?
$echo $LD_LIBRARY_PATH # 出力に"/usr/local/cuda-8.0/lib64"が含まれているか?$
$which nvcc # 出力が"/usr/local/cuda-8.0/bin/nvcc"になっているか?
$nvidia-smi # nvidiaのGPUの情報が表示されているか?
$cuda-install-samples-8.0.sh ~ # ホームディレクトリにサンプルコードをコピー。
$cd ~/NVIDIA_CUDA-8.0_Samples/
$make
$cd 2_Graphics/volumeRender # サンプルの実行ファイルがあるディレクトリに移動。
$./volumeRender
コメント
コメントを投稿