*はじめに [#r8261ce7]
Mac Pro (2010 Mid)にGeForce GTX 1080を積んで、TensorFlowを動かすまでのメモです。
macOSではGeForce GTX 1080がまだサポートされていないので、UbuntuをインストールしてUbuntu上で動かします。
現在、TensorFlow 1.4, CUDA 9.0, cuDNN 7.0がリリースされていますが、この組み合わせでは動かなかったので、TensorFlow 1.3, CUDA 8.0, cuDNN 6.0の組み合わせで動かしています。
この記事の内容は、次の環境で確認しました。
-Ubuntu 17.10
-Nvidia Driver 384.90
-CUDA 8.0
-cuDNN 6.0.21
-TensorFlow 1.3
*用意したもの [#k794b74f]
-ASUS TURBO-GTX1080-8G
-Mini PCIe 6 pin to PCIe 6 pinケーブル
-PCIe 6 pin x 2 to PCIe 8 pinケーブル
-2TB 3.5inch SATA HDD
-16GB USBメモリー
HDDの容量はもっと小さくても構いません。
USBメモリーの容量は16GB以上必要です。
*Ubuntuインストール用USBメモリーを作成する [#z697fa7f]
次のページを参考にしました。
-[[OS X El CapitanとUbuntu 16.04 LTSのデュアルブート環境を構築する:http://ottan.xyz/el-capitan-ubuntu-dual-boot-4020/]]
+Ubuntu 16.04 LTSをダウンロードします。
+ディスクユーティリティを使って、USBメモリーを、MS-DOS (FAT)、GUIDパーティションで消去します。
+diskutilコマンドで、USBメモリーのデバイスを調べます。
#geshi(sh){{
$ diskutil list
}}
+調べたデバイスをアンマウントします。(これはデバイスが /dev/disk2 の時の例です。)
#geshi(sh){{
$ diskutil unmountDisk /dev/disk2
}}
+ダウンロードしたUbuntuのISOイメージをコピーします。
#geshi(sh){{
$ sudo dd if=ubuntu-16.04-desktop-amd64.iso of=/dev/rdisk2 bs=1m
}}
*Ubuntu用のHDDを用意する [#c5af21ac]
+macOSをシャットダウンし、HDDを増設します。
+macOSを起動し、ディスクユーティリティで増設したHDDを、MS-DOS (FAT)、GUIDパーティションで消去します。
スワップ領域を作りたい場合は2パーティションにすればいいと思いますが、今回のMac Proは32GBのメモリーを積んでいるので、スワップ領域はなしにしました。
*ブート・マネージャーを準備する [#bd50f679]
BootCampはUbuntuをサポートしていません。
そこで、rEFIndというブート・マネージャーを使います。
+rEFIndをダウンロードし、展開する。
+macOSをシャットダウンし、Command+Rを押しながら起動する。
+リカバリー・モードで起動したら、ターミナルを起動し、rEFIndを展開したフォルダーに移動する。
+rEFIndをインストールする。
#geshi(sh){{
# ./refind-install
}}
+macOSを再起動する。
*Ubuntuをインストールする [#kaf52356]
+Ubuntuインストール用のUSBメモリーを接続する。
+macOSをシャットダウンし、Optionを押しながら起動する。
+「EFI Boot」を選択する。
+「Try Ubuntu without installing」を選択し、USBメモリーからUbuntuを起動する。
+起動したUbuntuのデスクトップにある「Install Ubuntu 16.04 LTS」をダブルクリックする。
*Ubuntuをアップデートする [#p5669200]
最新版にアップデートします。
+「システム環境設定」の「ソフトウェアとアップグレード」の「アップデート」にあるUbuntuの新バージョンの通知を「全ての新バージョン」に変更する。
+ アップデートする
#geshi(sh){{
$ sudo apt update
$ sudo do-release-upgrade
$ sudo shutdown -r
$ sudo do-release-upgrade -d
$ sudo shutdown -r
}}
*UbuntuにSSHをインストールする [#o92c5b93]
リモートで作業できるように、sshdをインストールします。
+sshをインストールする。
#geshi(sh){{
$ sudo apt-get install openssh-server
}}
+sshが自動で起動するように設定する。
#geshi(sh){{
$ sudo systemctl enable ssh.service
}}
+ Ubuntuを再起動してリモートからsshでログインできるか確認する。
セキュリティのことを考えると、インターネットから見える環境では、rootでのログインはできないようにしておくべきです。
*UbuntuにNvidiaのドライバーをインストールする [#d92792ae]
次のページを参考にしました。
-[[Ubuntu14.04 LTS にGTX1080 をセットアップしたメモ:http://qiita.com/salty-vanilla/items/8ff76cd634f0640b77c7]]
+インストールの準備をする。
#geshi(sh){{
$ sudo add-apt-repository ppa:xorg-edgers/ppa
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
}}
+最新版のドライバーを調べる。
#geshi(sh){{
$ sudo apt-cache search 'nvidia-[0-9]+$'
}}
+最新版のドライバーをインストールする。
#geshi(sh){{
$ sudo apt-get install nvidia-384
$ sudo apt-get install mesa-common-dev
$ sudo apt-get install freeglut3-dev
}}
最新版を入れようとしたけど入らなかったので、384にしました。
*Mac ProにASUS TURBO-GTX1080-8Gを装着する [#nd42f38d]
Mac Pro (Mid 2010) には、GPU用の電源として、Mini PCIe 6pinのソケットが2つ付いています。
PCIe 6 pinケーブルは75 Wまでしか供給できません。
そこで、PCIe 6 pinケーブル2本をまとめてPCIe 8 pinに変換してくれるケーブルを使います。
PCIe 8 pinは150Wまで供給できます。
PCIeソケットから75W共有できるので、Mac Pro (Mid 2010)は全部で225Wまで供給できます。
GeForce GTX 1080を搭載したビデオカードはたくさん出ていますが、その多くがPCIe 8pin x 2やPCIe 8 pin + PCIe 6 pinだったりします。
ASUS TURBO-GTX1080-8Gは、最大消費電力が225Wで、かつ、補助電源がPCIe 8 pin 1本のみなので、Mac Pro (Mid 2010)でも使うことができます。
+Ubuntuをシャットダウンする。
+Mac Proから現在のビデオカードを外す
+Mini PCIe 6 pin to PCIe 6 pinケーブルを空いているソケットに接続する。
+2本のPCIe 6 pinケーブルをPCIe 6 pin x 2 to PCIe 8 pinケーブルに接続する。
+PICe 8 pinケーブルをASUS TURBO-GTX1080-8Gに接続する。
+ASUS TURBO-GTX1080-8GをMac Proに装着する。
+Ubuntuを起動し、画面が表示されることを確認する
*UbuntuにCuda 8.0をインストールする [#k3a0713c]
次のページを参考にしました。
-[[Ubuntu 16.04へのCUDAインストール方法:http://qiita.com/yukoba/items/3692f1cb677b2383c983]]
+Ubuntuを起動する。
+Cudaをダウンロードする(Linux, x86_64, Ubuntu, 16.04, dev(local)を選択して、Downloadボタンからリンクを取得します)。
パッチもダウンロードします。
#geshi(sh){{
$ wget https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
$ wget https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64.deb
}}
+Cudaをインストールする。
#geshi(sh){{
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-8-0-local-ga2/7fa2af80.pub
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda-8-0
}}
+.bashrcに以下の2行を追加する。
#geshi(txt){{
export PATH="/usr/local/cuda-8.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"
}}
+Ubuntuを再起動する。
#geshi(sh){{
$ sudo reboot
}}
+ログインして、動作確認する。
#geshi(sh){{
$ nvidia-smi
}}
*cuDNN 6.0をインストールする [#x1650804]
+NvidiaのAccelerated Computing Developer Programにメンバー登録する。
+cuDNN v6.0 library for Linuxをダウンロードする。
+ダウンロードしたファイルを展開してインストールする。
#geshi(sh){{
$ tar zxvf cudnn-8.0-linux-x64-v6.0.tgz
$ sudo cp -a cuda/lib64/* /usr/local/cuda-8.0/lib64/
$ sudo cp -a cuda/include/* /usr/local/include/
$ sudo cp -a cuda/include/* /usr/local/cuda-8.0/include/
$ sudo ldconfig
$ rm -R -f cuda cudnn-8.0-linux-x64-v6.0.tgz
}}
*LightDMを止める [#c044428a]
ディスプレイ・マネージャーのLightDMが動いているとGPUパワーを使ってしまうので、LightDMを止めます。
+/etc/default/grub の12行目を以下のように変更する。
#geshi(txt){{
GRUB_CMDLINE_LINUX="systemd.unit=multi-user.target"
}}
+設定を反映させて、Ubuntuを再起動する
#geshi(sh){{
$ sudo update-grub
$ sudo reboot
}}
画面が出なくなってしまったので、ここからは全てsshでリモート・ログインして作業します。
*TensorFlow 1.3をインストールする [#k1298b5e]
次のページを参考にしました。
-[[Installing TensorFlow on Ubuntu:https://www.tensorflow.org/install/install_linux]] - TensorFlow
TensorFlow 1.3.0 GPU版のURLは次のページで調べました。
-[[tensorflow-gpu 1.3.0:https://pypi.python.org/pypi/tensorflow-gpu/1.3.0]] - Python
+libcuptiをインストールする。
#geshi(sh){{
$ sudo apt-get install libcupti-dev
}}
+pip3とpython3とvirtualenvをインストールする。
#geshi(sh){{
$ sudo apt-get install python3-pip python3-dev python-virtualenv
}}
+virtualenvの環境を ~/tensorflow に構築する。
#geshi(sh){{
$ virtualenv --system-site-packages -p python3 ~/tensorflow
}}
+virtualenvをアクティベートする。
#geshi(sh){{
$ source ~/tensorflow/bin/activate
}}
+TensorFlow 1.3のGPU版をインストールする。
#geshi(sh){{
(tensor flow)$ pip3 install --upgrade https://pypi.python.org/packages/b8/16/14fbe414f2b3c39c5d01521e38e7aaec384f8fbf26eec021d247345260c3/tensorflow_gpu-1.3.0-cp36-cp36m-manylinux1_x86_64.whl#md5=7b694289e1fc977a47cd89f2876d3528
}}
+TensorFlowの動作を確認する。
#geshi(sh){{
(tensorflow) $ python3
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
}}