2011年10月25日火曜日

10/25 原因

前回うまくいかなかった原因がわかった。
Brazosの設定時と違い、yumで拾ってこれるkernel sourceのバージョンが変わっていたからだ。
カーネルのバージョンが関わるものは、yumを信用せず直接rpmを取得すべきと学習した。

自分のインストールしたkernelと一致するバージョンのものを拾ってくれば解決する。

# uname -r
カーネルのバージョンを確認。

# yum install http://ftp1.scientificlinux.org/linux/scientific/6x/x86_64/os/Packages/kernel-devel-2.6.32-131.0.15.el6.x86_64.rpm
適切なカーネルソースをインストール。

以下の手順は前回までに試した方法でOK。

vendorsも忘れずに作る。
これを忘れるとOpenCLデバイスを認識できない。
# mkdir /etc/OpenCL
# mkdir /etc/OpenCL/vendors
# echo "libamdocl32.so" > /etc/OpenCL/vendors/amdocl32.icd
# echo "libamdocl64.so" > /etc/OpenCL/vendors/amdocl64.icd


AMDドライバの生成とインストールだが、gccやrpm-buildがなかったり、
カーネルソースのバージョンが違う場合でも見た目は生成が成功してしまうことに注意。
今まで何度もこのせいでハマってしまっている。

/usr/share/ati/fglrx-install.logにログが残されるのだが、
ドライバ生成時には生成成功みたいなメッセージしか絶対に残されない。

いざドライバをインストールすると、そのときになって初めてエラーがわかるというダメな仕様。
ログを見て失敗していた場合、同ディレクトリ以下にアンインストールスクリプトがあるのでこれを実効。

失敗時の例(カーネルソースのバージョンミスマッチ)
[Message] Kernel Module : Trying to install a precompiled kernel module.
[Message] Kernel Module : Precompiled kernel module version mismatched.
[Error] Kernel Module : Kernel module build environment not found - please consult readme.
[Reboot] Kernel Module : dracut
[Message] Driver : End of installation

アンインストールが成功したら、エラーが出ていた部分を修正して再生成・再インストールする。
あとは今まで書いたような内容に注意してやればきっとうまくいくはず。

ssh経由でGPUを叩く場合、runlevel 3にしてローカルでログイン・startxして、
sshからログイン後は$ export DISPLAY=:0とする必要がある。
ローカルでstartxしていないとGPUに繋げられないようだ。
このうち一つでも設定していないと強制的にCPU実行になってしまうので注意。

2011年10月20日木曜日

10/20 まだうまくいかない

先ほどの設定を経てもまだうまくいかない。

/etc/modprobe.d/以下のblacklistが悪いとかいうのを見たので、
radeonとかfglrxとか書かれているのをコメントアウトする。

具体的には、blacklist-fglrx.confとblacklist.conf。


うまくいかない。
よく見るとfglrxと衝突するから止めるとか書いてある。逆だったのか。
blacklist-fglrx.confのほうは再び有効に。

llano 環境整備

作業まとめ

・Oprofile
sudoがあると便利なので一緒にyumしておく。
vmlinuzを含めたプロファイルにはkernel-debuginfoも必要。
oprofileをyumすれば終わり。

yumではkernel-debuginfoが落とせないときがあるので、
その場合はkernelとかOSのバージョンとdebuginfoで適当にググると出てくる。
依存関係でkernel-debuginfo-commonもいる。
今回は山形大学のお世話になった。
http://ftp.yz.yamagata-u.ac.jp/pub/linux/scientific/6.1/archive/debuginfo/kernel-debuginfo-2.6.32-131.0.15.el6.x86_64.rpm
http://ftp.yz.yamagata-u.ac.jp/pub/linux/scientific/6.1/archive/debuginfo/kernel-debuginfo-common-x86_64-2.6.32-131.0.15.el6.x86_64.rpm

・ATI driver
runlevelが5だとドライバ生成が失敗する。
Xが起きているとまずいみたい。

/etc/inittabを編集。
id:5:initdefault:
上のような行があるので、5を3にする。
id:3:initdefault:

また、rpm-buildとkernel-develも必要なのでyumしておく。

ドライバを生成するスクリプトをAMDから落として起動。
# wget http://www2.ati.com/drivers/linux/ati-driver-installer-11-9-x86.x86_64.run
# ./ati-driver-installer-11-9-x86.x86_64.run
色々聞かれるが、自分のOSとbit数を当てればいいだけ。
ディレクトリはそのまま/のままでよい。

こうするとrpmが生成されるので、これをインストール。
/usr/share/ati以下や/root以下のlogに変なことが書かれていなければOK。
成功するとamdcccleなどが使えるようになる。

OpenCLを使うのはだいぶ前に書いた/etc/OpenCL/vendorsもいるので注意。
前回からの転載。

/etc/OpenCL/vendors/amdocl32.icd
中身↓
libamdocl32.so

/etc/OpenCL/vendors/amdocl64.icd
中身↓
libamdocl64.so

これでデバイスが認識できてOpenCLのコードが動く。
ただし、このままではCPUしか利用できない。
SSH経由でGPUを叩くには、ホストマシンでXにログインが必要。
rootでなくとも自分のユーザ名で可。(login後、startxすればよい)

その後、
$ export DISPLAY=:0
としてローカルのXに繋ぐ。
こうしないとGPUを認識してくれない模様。

以上でOpenCLが使えるようになる。


<10/20 17:49 追記>
APUの内蔵GPUをOpenCLデバイスとして正しく認識するには、
runlevelをもう一度5に戻して再起動する必要がある。注意。


(以前設定したままなのでSDKの導入、パスの設定は省略した)

2011年10月19日水曜日

10/19 vs Atheros

とうとううまくいった。
方法は先ほどの投稿でほとんど間違いないが、
/etc/modprobe.d/以下に適当な名前のファイル(atheros.confなど)を作り、
「alias eth0 atl1e」と書くだけでよい。
あとは再起動すると普通に/etc/sysconfig/network-script/ifcfg-eth0が出来ている。
面倒なのでsystem-config-network-tuiで一括設定すれば完了。

elrepoのkmod-atl1e-1.0.1.14-1.el6.elrepo.x86_64.rpmを拾ってくるまでは正しかった。

一応手順を再記述する。

# cp SOMEWHERE/kmod-atl1e-1.0.1.14-1.el6.elrepo.x86_64.rpm .
# rpm -Uvh kmod-atl1e-1.0.1.14-1.el6.elrepo.x86_64.rpm
# modprobe atl1e
# echo "alias eth0 atl1e" > /etc/modprobe.d/atheros.conf
# reboot

たぶんこれでうまくいく。
CentOS 6.xやScientific Linux 6.xの利用者で、Atheros L1Eに苦しめられている方は是非。


今日中にOpenCL環境を作るつもりだったが、疲れたし空腹なので今日はもう退散する。
明日は本気出す。


<<<10/22 追記>>>
他にも書くべき項目があった。
/etc/sysconfig/network-scripts/ifcfg-eth0に、
> DEVICE=eth0
> ONBOOT=yes
の追記が必要。

もしかしたら/etc/sysconfig/networkにもいるかも。
> NETWORKING=yes

これでrebootすればeth0が動く。

10/19 Llano

LlanoノードにScientific LinuxやOpenCL環境を昨日からインストールしている。
Windows環境はM/B付属のCDを使えば簡単に終わるのだが、
Linuxのほうは一筋縄ではいかない。
原因は全てAtherosのGbEにある。

elrepoから対応するrpm(kmod-atl1e)を拾ってきてmodprobeしたまではいいが、
(http://elrepo.org/linux/elrepo/el6/x86_64/RPMS/)
そこからの操作がよくわからない。

どうすればよいのだろうか。

2011年10月12日水曜日

10\12 今後の仕事

研究会での発表が無事終わった。

今後の作業
・Llanoでの再測定
FELIX SST, VWAP, Microbenchmarks
・白幡君の実装の移植
・APUの予測
・ポスターの作成


現状のAPUのスペックは悪いが、今後はこちらが主流になるので調査が必要
しかし、今日のBulldozarアーキテクチャのベンチマークは驚いた。
AMDは滅んだ。

10/12 XwindowをWindows上で表示する

・Putty + Xming
Cygwinを使うのが一般的だが、リモートでXを表示するだけならXmingのほうが軽くて楽で環境を汚さない

XmingとXming-fontsは自分のWindowsに対応するものをインストールすればよい
Puttyでの設定は、「接続->SSH->X11」の「X11フォワーディングを有効にする」をONにし、「Xディスプレイの場所」に「localhost:0」を入力

あとはXmingを起動し、いつも通りPuttyで接続すればXのアプリケーションがWindows上で表示できる!便利!