amd64 dual core 対応

by syoyo

これからの CPU のマルチコア化、64bit 化の流れを見据え、
lucille の開発環境に AMD のデュアルコア CPU を追加しました。

特に外部 GPU を利用する必要もないので、
今回は内臓グラフィックスを持つ、キューブベアボーンである ST20G5 に、
最近のお気に入りである debian(64bit の amd64 版)をインストールしました。

http://www.debian.org/ports/amd64/index.ja.html

現在リリースされているインストーラでは、ネットワークをうまく認識してくれなかったので、
daily のインストーラを利用しました。


http://cdimage.debian.org/pub/cdimage-testing/daily/amd64/current/

それでも、ACPI 関連ではカーネルパニックに、フレームバッファ関連では
ウィンドウの表示に失敗したので、起動オプションに以下を指定して回避させました。

# install acpi=off debian-installer/framebuffer=false
 
現在の linux では、kernel 2.6.12 以上でないと、AMD のデュアルコア CPU を、

CPU が二つあると認識してくれないようです。
(cat /proc/cpuinfo で processor が 2 個出てくると認識されていることになる)

64bit バイナリとして luculle をコンパイルしてみましたが、今のところ 64bit-ize しても
問題なく動いているようです。
その昔に G5 の 64bit モードで動くように、コードをコントリビュートしていただいた
ことがありましたので、それがまだまだ効いているのでしょう。

基本的には、64bit 化するときには、sizeof(void *) != sizeof(int) であることに
注意してコーディングしていれば OK だと思います。

パフォーマンス測定

chrysler シーンを、
o AMD X2 3800+(2.0GHz) 64bit + 2 threads(デュアルコアをフルに使う)
o AMD X2 3800+(2.0GHz) 64bit + single
thread(デュアルコアの片側のコアだけつかう)
o 既存の P4 32bit 2.4 GHz(シングルスレッド、ハイパースレッド非搭載)

でレンダリングした結果です。

o AMD DualCore 2.0GHz 2 threads: 49.7 sec
o AMD DualCore 2.0GHz single thread: 68.7 sec
o P4 2.4 GHz single thread: 112.55 sec

2 threads では、 single thread の約 38 % の高速化となりました。
理論値では処理速度は 2 倍が期待できますが、実際は 80 % の向上が見込めれば
十分だと思います。今はまだそれの半分の効率ですね。並列処理の部分は
まだまだアルゴリズムの改良、チューニングの余地がありそうです。

Advertisements