2017年3月15日水曜日

CentOS7にCUDAをインストール

深層学習を行うとき、処理時間がかかります。そこで、GPUを使って処理の高速化を図ります。主要なGPUメーカはNVIDIAですが、そのNVIDIAはCUDAという並列処理用プログラミング統合環境を提供しています。ここでは、NVIDIA GeForce GTX 670が組み込まれたマシンのCentOS7に、CUDAを導入します。
(参照:http://qiita.com/dyoshiha/items/5214d1076f92c9c4646f)

$ lspci | grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce GTX 670] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GK104 HDMI Audio Controller (rev a1)
03:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce GTX 670] (rev a1)
03:00.1 Audio device: NVIDIA Corporation GK104 HDMI Audio Controller (rev a1)

カーネルのバージョンを確認します。
$ uname -r
3.10.0-514.10.2.el7.x86_64

GCCのバージョンを確認します。
$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

kernelと同じversionのkernel-developmentとkernel-headersが必要とのこと。両パッケージをインストールします。

$ sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
 
$ yum list installed | grep kernel
abrt-addon-kerneloops.x86_64           2.1.11-45.el7.centos            @base   
kernel.x86_64                          3.10.0-514.10.2.el7             @updates
kernel-devel.x86_64                    3.10.0-514.10.2.el7             @updates
kernel-headers.x86_64                  3.10.0-514.10.2.el7             @updates
kernel-tools.x86_64                    3.10.0-514.10.2.el7             @updates
kernel-tools-libs.x86_64               3.10.0-514.10.2.el7             @updates

cuda_8.0.44_linux.runをダウンロードします。
$ wget https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda_8.0.44_linux-run

通常、NVIDIAのビデオカード用ドライバNouveauが導入されています。これを無効化した後、ランレベルを下げてからインストールします。

Nouveauの無効化
$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf
として、以下を書き込みます。
blacklist nouveau
options nouveau modeset=0


文字入力のときは、"i"を入力してから文字を打ちこみます。
ファイルを保存して終了するときは、"Esc"キーを押しながら、":"キーを押します。その上で、"wq"と打ちこみます。これで、blacklist-nouveau.confというファイルの中に上記内容が書き込まれました。

$ cat /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0

ここで一回、再起動します。

以下のコマンドで、ランレベルを下げます。
$ systemctl set-default multi-user.target

CUDAをインストールします。
$ sudo sh cuda_8.0.44_linux.run

ランレベルを戻します。
$ systemctl set-default graphical.target

再起動します。
$ sudu reboot

PATHの設定を追加します。.bash_profileに以下を追加します。

CUDA_ROOT_DIR="/usr/local/cuda-8.0"
export CUDA_ROOT_DIR
PATH=$PATH:${CUDA_ROOT_DIR}/bin
export PATH
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CUDA_ROOT_DIR}/lib64/
export LD_LIBRARY_PATH

上記編集を加たら、以下のコマンドで有効にします。
$ source .bash_profile

CUDAのサンプルプログラムをコンパイルし、実行して、CUDAがインストールされていることを確認します。まず、freeglutをインストールします。
$ sudo yum install freeglut freeglut-devel
$ cd ~/NVIDIA_CUDA-8.0_Samples/
$ make
$ bin/x86_64/linux/release/deviceQuery
これで、GPUの情報を取得できればOKのはずです。


0 件のコメント:

コメントを投稿