2011年8月7日日曜日

8/6 CentOS 6.0許すべからず

6だとインストーラが色々変わっていてややこしかった。
テキストインストーラの指定方法を調べるのが面倒でGUIでやったが失敗だった。
やはりGUIインストーラはいらない。

・CentOS 6.0でSystem S
デスクトップのパッケージのみを選択した場合、yumするやつが余分に必要。
yum install -y boost gcc libstdc++-devel gcc-c++ boost-devel libicu-devel zlib-devel libxml2-devel binutils-devel libsepol-devel keyutils-libs-devel e2fsprogs-devel krb5-devel openssl-devel libidn-devel perl-Digest-SHA1 perl-XML-Parser perl-XML-Simple curl-devel libstdc++.so.5 perl-libwww-perl.noarch compat-libstdc++-33 libltdl.so.3
yum install -y libtool-ltdl perl-Digest-SHA1 perl-XML-Simple perl-XML-SAX gcc-c++ boost-devel libicu-devel libxml2-devel binutils-devel curl-devel libltdl.so.3
yum install libXaw
yum install compat-expat1
yum install libstdc++.so.5
yum install libperl.so
(複数のスクリプトからのコピペなので重複があります)

しかしlibltdl.so.3はlibtool-ltdlがあるにも関わらず解決しない。
graphvizがインストールできないが、無視した。

libperl.soがないとか怒られてデーモンが起動できない。
さすがに眠いので今日はここまで。


・atiのドライバ
# yum install kernel-devel rpm-build
して前のドライバをDLして実行。
GenerationでRHEL6のAMD64を選んで生成。
これで後は生成されたRPMをインストールするだけ。

しかしインストールされているはずのライブラリがないとか言い出す。
さすがにキれた。System Sも動かんし。
CentOS6はRHクローンを名乗るに値しないのではないか。
許し難いのでScientific Linuxに鞍替えすることを決定。

もうダメだ。9月初旬に間に合う気がしない。
眠すぎるしやる気がゼロ。明日の晩また頑張る。

2011年8月6日土曜日

8/6

Forumに別のポストがあったので試してみる。

/etc/inittabでRunlevelを3から5に変えるといいようだ。
あと、
# aticonfig --adapter=all --initial
も必要?
これはマルチカードのときのみかもしれない。


しかしダメだった。
atigetlogみたいな感じのコマンドでログを見てみると、
どうやらカーネルソースが古すぎてカーネルモジュールの作成に失敗している。
これが原因か。

CentOS 6をまずは試してみるか・・・。

2011年8月5日金曜日

8/5

色々手を尽くしたつもりだが、結果は散々だ。
Linuxの管理運営はここ数年でかなり習得できたつもりだっだが、
Xには手も足も出ず、認識の甘さを思い知らされた。

このままCentOSに固執するのは愚行のような気がしてきた。
フォーラムなどを見ても他のOSの例しかない。
CentOSも5.6ではなく6にするか、debian, ubuntu,
RHEL, Scientific Linux, Gentooあたりに逃げるかもしれない。

とりあえずisoは落としたので、色々検討してみる予定。

2011年8月3日水曜日

8/3 実はまだ動いていなかった

昨日からの続き。
どうも標準のXorgのやつだとうまくいかない。
もう一度ドライバを生成してみる。

最初に前のドライバを消すのも大事。
# /usr/share/ati/amd-uninstall.sh

カーネルソースがなかったのが原因の一つのようなので、
# yum install kernel-devel
そりゃ失敗するわけだ。

前と同じようにやると、fglrx64_p_i_c-8.872-1.x86_64.rpmや
fglrx_p_i_c-8.872-1.i386.rpmやicd-registration.tgzが生成される。
icd-registration.tgzはここで生成されるのか・・・。

普通に
# rpm -ivh fglrx64_p_i_c-8.872-1.x86_64.rpm
してやる。

初期化。
# aticonfig --initial -f

実機でstartxしてドライバをfglrxにする。


しかしやっぱりうまくいかない・・・。
このままではヤバイ。

2011年8月1日月曜日

8/1 Linux + OpenCLの続き 作業ログ

うまくいったような気がしたが、それは嘘だった。
サンプルプログラムのコンパイルは成功しているが、実行ができない。

例)
# cd /usr/global/AMD-APP-SDK-v2.4-lnx64/samples/opencl/bin/x86_64/
# ./HelloCL
HelloCL!
Getting Platform Information
Platform::get() failed (-1001)

エラーです。お疲れ様です。


色々原因を探ってみる。
aticonfigとかamdcccleなど、AMDのドライバ系のツールがある。

# aticonfig --lsa
* 0. 00:01.0 AMD Radeon HD 6300 series Graphics

* - Default adapter

と、なるのでとりあえずAPUは認識されている。
VNC経由で、
# aticonfig --initial
として初期化もやってみる。

しかしうまくいかない。

# amdcccle
は壮大なエラーを吐いて停止する。
何か、AMDのGPUドライバが入ってないとか言われる。マジか。
もう一度インストールしてみた。
その前にrpm-buildもyum installしておく。
(一回これがないためにドライバのビルドが失敗しているよう)

# ./ati-driver-installer-11-7-x86.x86_64.run
今度は「Generate Distribution Specific Driver Package」してみた。
CentOS 5.6 AMD64なので、「RedHat/RHEL5_64a」と「RedHat/RHEL5」を選択。

インストールは成功したが、うまくいかない。
さらに調べたが、/etc/OpenCL/vendorsが悪いみたい。
これがATI系の名前のままだと失敗する。

中身を見るとただのテキストファイルなので、自分で書いたほうがよさそう。

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

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

こんなやつを作ればOK。
パーミッションはリードオンリーでOK。

ようやく動いた。
たぶんドライバは関係ない。
vendorsが悪い。


ここまで到着するのに3時間くらい消費した。
疲れた。肉食いたい。


成功パターンも一応記載してみる。
# ./HelloCL
HelloCL!
Getting Platform Information
Creating a context AMD platform
Getting device info
Loading and compiling CL source
Running CL program
Done
Passed!

8/1 中間発表終了 & Linux + OpenCL

中間発表が完了。
スライドをしっかり見ていただいていたお陰で、特にハプニングもなく坦々と終わった。
観客が他の研究室の先生お一人と学生一人だったのもあるが・・・。
一箇所、APUがCPUとGPUのギャップを埋めるデバイスであることを述べ忘れたが、
先生にフォローしていただいたので一応大丈夫だった。


次の実装に向けて環境をLinuxに移行する。
既存のコードがLinux + System S用だと
M研究室のNさんにアドバイスをいただいたのもある。

CnetOS 5.6にAMD APUドライバとAMD APP SDK(OepnCL 1.1)を導入する。


以下作業ログ。
・ドライバインストール
# wget http://www2.ati.com/drivers/linux/ati-driver-installer-11-7-x86.x86_64.run
# ./ati-driver-installer-11-7-x86.x86_64.run
(Xは提示されたX.ORG6.9を普通に選択。全部一番の選択肢でOK)

・SDKインストール
# yum install mesa-libGLU-devel.x86_64
(/usr\include/GL以下のglu.hやgl.hのために必要。もしかしたら他のでもいいかも。)

・icd-registration.tgz
これも必要な模様。AMD APP SDKの過去のアーカイブからゲット。
リンクが深いので注意。

# wget http://download2-developer.amd.com/amd/Stream20GA/icd-registration.tgz
# tar zxvf icd-registration.tgz -C /

インクルードパスなどを.bashrcに追加してsourceする。
export AMDAPPSDKROOT=/root/AMD-APP-SDK-v2.4-lnx64
export AMDAPPSDKSAMPLESROOT=/root/AMD-APP-SDK-v2.4-lnx64/samples
export ATISTREAMSDKROOT=$AMDAPPSDKROOT
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AMDAPPSDKROOT/lib/x86_64
export LIBRARY_PATH=$LIBRARY_PATH:$AMDAPPSDKROOT/lib/x86_64
export C_INCLUDE_PATH=$C_INCLUDE_PATH:$AMDAPPSDKROOT/include/

# wget http://download2-developer.amd.com/amd/APPSDK/AMD-APP-SDK-v2.4-lnx64.tgz
# tar zxvf AMD-APP-SDK-v2.4-lnx64.tgz
# cd AMD-APP-SDK-v2.4-lnx64
# make

最後にディレクトリ全体を/usr/globalに移動させ、パスなどを書き換えて終了。
これでOpenCL実行・開発環境が完成。

最終的な.bashrcの追加内容は以下の通り。
export AMDAPPSDKROOT=/usr/global/AMD-APP-SDK-v2.4-lnx64
export AMDAPPSDKSAMPLESROOT=$AMDAPPSDKROOT/samples
export ATISTREAMSDKROOT=$AMDAPPSDKROOT

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AMDAPPSDKROOT/lib/x86_64
export LIBRARY_PATH=$LIBRARY_PATH:$AMDAPPSDKROOT/lib/x86_64
export C_INCLUDE_PATH=$C_INCLUDE_PATH:$AMDAPPSDKROOT/include/



## 環境 ##
CentOS 5.6 AMD64
Catalyst 11.7
AMD APP SDK 2.4

2011年7月27日水曜日

7/27 LlanoはZacateよりマシな模様

APU + OpenCLのレイテンシなどを計測している方のページ。
Llanoではだいぶ改善されている模様。

http://d.hatena.ne.jp/w_o/201107