渡米生活。(日記)

渡米生活。本家から切り離しました。あまり渡米生活に関係のないプログラムネタや音楽ネタなど。

Scientific Linux 6.3インストールログ2:NVidia GEForce GTX 660 & 750Tiを挿す

使用マシン:DELL PowerEdge T410, T420

ビデオカードを追加インストールする方法。
本当は、最初からカードさしておいてシステムをインストールすればいいのかもしれないが、諸事情であとから付け加える方法が必要なので、そのメモ。

※ちなみに、ビデオカードを積んだのはゲームのためではなく、バリバリ計算プログラムを動かすためです。

1)ハードをそろえる。

うちのプログラムで動作実績があり、そこそこパフォーマンスがよくて、Dell T410の電源でもなんとかなりそうなのは、GEForce GTX 660だ、ということでこれを購入。
メーカーは、これも既にPowerEdge T640などで動作実績があった、EVGAの製品。

http://jp.evga.com/articles/00700/

※フツーにグラフィック用に使いたい人は、このカードをDell PowerEdge T410と一緒に使うのはおすすめしません。

T410の場合、予備の電源口がSATAに1つしか空いていないので、SATA電源 - VGA 6Pin変換ケーブルも購入。

2014/5/21追記
今度はPowerEdge T420にGEForce GTX 750Tiを差すことになったので、それも購入。750Tiは消費電力が少なく、補助電源がいらないのが有り難い。
コア数は660より少ないが、ブレードサーバまで買う余裕がないけど、研究室に500W程度の電源のついたタワーサーバがあるので遊ばせておくのは惜しい、という場合には使えるかも。

購入したカードは、やはりEVGA。なんでかというと、アメリカではこれが安くて、うちのグループで動作実績があって、しかもSuper Clockで速いから(しかし日本では結構高いな…)

EVGA NVIDIA GTX 750Ti SC 1176MHz (Boost 1255MHz) 5400MHz 2GB 128-bit GDDR5 HDMI DVI-I DP PCI-E Graphics Card

2)カードを挿す。

まず、BiosでプライマリのグラフィックアダプタがPCIになっていると、カード挿すと何も映らなくなるので、カードを挿す前にプライマリのグラフィックアダプタををオンボードに変えておくこと。

さて、いざやってみると、デフォルトでは物理的に刺さらない(爆)。
というか、PowerEdge T410って、それなりに拡張もある、と思って買ったのだけど、実は後から自分で足すにはかなり融通きかない、と実感(PCIe x4が4ポート、PICe x8が1ポートあるのに!)

まず、グラフィックカードなので場所は2つ分とるわけだけど、この2つのインターフェース部分の幅が会わない。
ただ、インターフェース部の化粧板をはずすと、なんとか無理矢理刺さります。
ただし、このためホントにインターフェース部分だけでカードの重さを支えることになるし、ビスで固定する場所もないので、ケーブルを抜き差ししなければならない用途では実質使用不可。(だからこれにモニタをつないで……という用途には向かない)。

内部で計算だけできりゃいいや、という人にはこれでもなんとかいけるでしょう。
コンピュータを動かしたら、その度にカードが外れてないか、確かめた方がいいかも。

それから、ヒートフロー制御ための黒いカバーも一部改造が必要です。
PCIe x8が1個しかないので、そこに挿すしかないわけですが、そこにでかいグラフィックカードを差してしまうと、このヒートフローカバーとぶつかる……。
というわけで、無理矢理ぶつかる部分を除去。

さらに、このヒートフローカバーを押さえるアーム(黒いプラスチック)も取り外さないと、今度はもとからついてきたSerial ATA用のカードが刺さりません。


T420 と GTX750ti の組み合わせは、何も無理せずに刺さりました。
ただし、カードはスロット3に刺さないと認識しない(優先順位が3、5の順番のため)。折角x16のgen3が2ポートあるんだから、と思いましたが、2つ目はCPUを二個積んでいないと認識しないようです。
こんな感じ。

image

image

3)NVidia のドライバをインストール。

以下のリンクからドライバをダウンロード。
http://www.nvidia.com/Download/index.aspx?lang=en-us

以下、インストールの参考にしたページです。


1)必要なもののインストール

# yum install kernel-devel
# yum install gcc

2)カーネルのバージョンを固定する

# vi /etc/yum.conf

exclude=kernel*

という行を追加する。


3)nouveauを無効化する

# cd /boot
# mv initramfs-$(uname -r).img initramfs-$(uname -r).img.nouveau
# dracut --omit-drivers nouveau /boot/initramfs-$(uname -r).img $(uname -r)

これで、新しい.imgファイルができる。

nouveauをブラックリスト

# cp /etc/modprobe.d/blacklist.conf /etc/modprobe.d/blacklist.conf.old
# vi /etc/modprobe.d/blacklist.conf



最後に以下を追加

blacklist nouveau
options nouveau modeset=0

更に

# cp /boot/grub/grub.conf /boot/grub/grub.conf.old
# vi /boot/grub/grub.conf

kernel=で始まる行の最後に以下を追加

rdblacklist=nouveau

CentOS7 の場合、以下の2つのファイルを変更(なければ作る)
Smiling Life : CentOS7におけるNVIDIAドライバのインストール方法

># vi /etc/modprobe.d/modprobe.conf

#
# /etc/modprobe.d/modprobe.conf (to omit nouveau driver)
#
blacklist nouveau

># vi /etc/modprobe.d/nouveau_blacklist.conf

blacklist nouveau


4)ランレベルを変更して再起動

# vi /etc/inittab

id:5:initdefault: を id:3:initdefault: に書き換える.

# shutdown -r now

5)ダウンロードしてきたrunファイルを実行する

カーネルのバージョンをチェック
# uname -r
2.6.32-279.el6.x86_64

この値を使って次のコマンドを実行
# sh NVIDIA-Linux-x86_64-290.10.run --kernel-source-path='/usr/src/kernels/2.6.32-279.el6.x86_64' --kernel-name='2.6.32-279.el6'

karnel-source-path等のオプションなしでもインストール成功することもある(多分一度もカーネルをアップデートしていない場合?)、コケることもある。
その場合は、上に書いた通り--オプションをつけて実行。

質問には全てyesで答えてインストールして良い(最後のxorg.confについてはNoでも良い)
ちなみにアンインストールは -uninstallをつければ良い。

6)xorg.conf をリネーム

…と、インストールは成功したけど、どうにもモニタが映らない。
計算機として使いたいだけなので、モニタはデフォルトのモニタを使うことにする。xorg.confをリネームしてXを起動すればデフォルトのモニタに戻る。

# mv /etc/X11/xorg.conf /etc/X11/xorg.conf.nvidia

7)ランレベルを戻したい場合は再度編集。
ランレベル3でもログイン直後にstartxと打てばランレベル5と変わらないので、メンテ用にこのままにしておいても良い。

# vi /etc/inittab

id:3:initdefault: を id:5:initdefault: に書き換える.

8)再起動

# shutdown -r now

CUDA tool kit インストール

CUDA開発環境(CUDA tool kit)をインストールすると、実は上でインストールしたNVidia開発環境を一度削除することになります。
まあ、CUDAのインストールスクリプト(.run)が勝手にドライバを削除するので問題はないですが、どうも消されるドライバーも先にいれておかないと駄目っぽいです。
以下にこまかく方法がかいてあります。

NVIDIA CUDA Getting Started Guide for Linux

rpmは使わない方が良い。.runは全部ひとつのディレクトリにかためてくれるので、アンインストールも楽。

cudaのドライバをとってくる。rpm版はlibvdpauのバージョンが合わないと怒られたので、.runファイルをダウンロードする。
https://developer.nvidia.com/cuda-downloads

以下、ランレベル3で実行。

# sh cuda_5.5.22_linux_64.run または
# sh cuda_6.0.37_linux_64.run (コケることもあり)

とにかく全部Yesでインストール。

インストールが終わると、/root/NVIDIA_CUDA-6.0_Samples というディレクトリが出来ている。

環境変数を設定してコンパイル

# export PATH=/usr/local/cuda-6.0/bin:$PATH
# export LD_LIBRARY_PATH=/usr/local/cuda-6.0/lib64:$LD_LIBRARY_PATH
# cd /root/NVIDIA_CUDA-6.0_Samples
# make

結構makeは時間がかかる。
/root/NVIDIA_CUDA-6.0_Samples/bin の下に大量に実行ファイルができるので、とりあえず以下の二つのコマンドを探して実行、PASSするかどうかを見る。

# /root/NVIDIA_CUDA-6.0_Samples/bin/..../deviceQuery
# /root/NVIDIA_CUDA-6.0_Samples/bin/..../bandwidthTest
cat /proc/driver/nvidia/version #バージョン確認

あとは出来たバイナリを色々実行してみて、動いているか確認。