はじめに
小さめのラップトップにCUDA環境が欲しかったので、Alienware 13inchにlinuxとNVIDIAドライバをいれました。その時の覚書です。
Alienwareは、スクリーンどころか、あろうことかキーボードやロゴ、電源スイッチ、そして電源接続部分からまでブルーライト発しまくりのナイスなラップトップです。
どのlinuxをいれるか?
windowsとdual bootでlinuxをいれたいが、どのディストリビューションを選択したらよいか、からわからなかった。
私は長らくmacユーザーで、つい最近linux mintをデスクトップに入れるまで、linuxに触るのはfedora 7以来だったからだ。うらしまたろうだ(SELinuxってどうなったんだろう?)。当面の問題として、
- wifiとか有線とかタッチパッドを認識してくれる
- 以下にのべるHybrid Graphicsの問題
あたりがクリアできるかどうかでディストリビューションを決めたい。まずDellのデスクトップにTitan Xを刺したものではうまく行ったlinux mintを試したが、wifiも有線も認識しないので挫折。archlinuxもなんかよくわからないので挫折。DVDが切れたのでPC Depotに走って買いに行く。
alienware13にUbuntu 14+CUDAのインストールを挫折した記事があったので不安だが、Ubuntu 16.04をためすことにした。Ubuntu 16.04はwifi、有線ともに認識。設定後 pon dsl-provider
でPPPOEも無事接続。
タッチパッド
タッチパッドはインストール直後は認識しない。マウスを繋いで、以下の処理をする。参考ページ
sudo su
echo 'blacklist i2c_hid' >> /etc/modprobe.d/blacklist.conf
depmod -a
update-initramfs -u
Hybrid Graphics
全然知りませんでしたが、最近のGPU Laptopは省電力用のIntegrated GPU (CPU一体のIntelで低性能省電力)とDiscrete GPU (NVIDIA GTX965M)のdual GPUにして電力消費を抑えているらしい。
Windows10では設定されてるのでいいけど、linuxでこれは結構問題らしい。ドライバ以前にGPUきりかえの問題がある。以下、資料
- https://mintguide.org/video/508-easily-switch-nvidia-hybrid-graphics-nvdia-intel.html
- https://help.ubuntu.com/community/HybridGraphics
- https://wiki.archlinux.org/index.php/hybrid_graphics
nvidia-settings
Intel+NVIDIAはnvidia-settingsで切り替えできるそうだ。
NVIDIAドライバ
- nvidia-settingsとnvidia-primeをapt-get install
- nvidia-3** (driver)をapt-get install (今回は361にした)
- ソフトウェアとアップデートの追加のドライバ
でそのドライバを選ぶ - reboot
- nvidia-settingsでできている事を確認する
- GPUの切り替えは、nvidia-settingsのPRIME Profilesでできる。
- もしくはコンソールで
sudo prime-select intel
sudo prime-select nvidia
でも切り替え可能。これはなにかnvidia関係で問題が起きてグラフィックスが立ち上がらなくなった時(実際そういうことがあった)、recovery mode + ALT-CTRL+F1で入って、INTEL側に切り替えたりする時に便利。
CUDAインストール
ここの通りにやるとできました。いまのところかなり快適です。
追記:pycudaのインストール
python2系列では問題がでなかったのですが、python3ではエラーがでたので対処法を追記
git clone --recursive http://git.tiker.net/trees/pycuda.git
python configure.py --cuda-root=/usr/local/cuda
sudo make install
でインストール。テストで
cd test/
python test_driver.py
とするが、python3(というかanaconda3の問題、C++ABIのバージョンっぽいですけど)の場合、
undefined symbol: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev
みたいなエラーを吐く。そこで
https://lists.tiker.net/pipermail/pycuda/2017-January/004993.html
を参考にmake cleanしてから、siteconf.py内に
CXXFLAGS = ['-D_GLIBCXX_USE_CXX11_ABI=0']
を追記して、もう一度インストールするとうまく行きました。なんでかはちゃんと調べてないです。