現在とにかく計算スピードが速いサーバが欲しい状況です。
計算速度の差を考えるとインストールするOSも慎重に選択する必要が出てくる。
今までは、そこまで計算スピードが必要になることはなかったので、とりあえず不具合の少なそうな32bit OSをインストールしていたが64bitの方も試してみる価値はあると思い実験。
ベンチマークソフトに何を使用するかですが、ソースコードを自分でコンパイルして利用できるものでないとさがわかりにくいということで、ソースコードのあるものを探してみた。
スーパーπ(super pi)はlinux用バイナリはおいてあるがソースコードが見つからなかったので却下。
そして見つかったのが姫野ベンチマーク(Himeno benchmark)。
"非圧縮流体解析コードの性能評価のために考えたものでポアッソン方程式解法をヤコビの反復法で解く場合に主要なループの処理速度を計るもの" で、実測速度(何 MFLOPS) を算出してくれるらしい。
使用ベンチマークソフトのソースコードは、ダウンロードページにある
ソースコード(C, static allocate version)のM(256 x 128 x 128)。
スコアに出てくるFLOPSという単位ですが、よくスーパーコンピューターの計算速度の単位などにでてきますが、wikiによると"1秒間に浮動小数点数演算が何回できるかという能力を理論的/実際的(実験的)に表したもののこと"。つまり、大きい方が性能が計算スピードが速いということになります。
この姫野ベンチマークに加えて、今回高速なサーバが必要になった原因でもある実際に使用するプログラムの一部をベンチマークとして使用することにした。
ハードウェア構成はまったく同じものを使用。
[32bit 環境]
OS: ubuntu9.04 server 32bit
CPU: Intel Core2Quad Q9650 3Ghz
Mem: DDR2 PC2-6400 ECC 8GB(2GBx4)
gcc,g++ version: 4.3.3
[64bit 環境]
OS: ubuntu9.04 server 32bit
CPU: Intel Core2Quad Q9650 3Ghz
Mem: DDR2 PC2-6400 ECC 8GB(2GBx4)
gcc,g++ version: 4.3.3
以下結果です。
姫野ベンチ
(32bit)
Gosa : 9.408959e-04
MFLOPS measured : 1363.701759 cpu : 58.413127
Score based on Pentium III 600MHz : 16.630509
(64bit)
Loop executed for 871 times
Gosa : 8.044773e-04
MFLOPS measured : 2045.616201 cpu : 58.377800
Score based on Pentium III 600MHz : 24.946539
まずは姫野ベンチの結果から。gccでコンパイルオプションは何もつけずデフォルト状態でコンパイル。
予想以上の差がでました。なんと64bitの計算スピードの方が32bitよりも1.5倍速くなっています。
10%くらいの差はでるかと思っていましたが、驚きです。
次に、実際に使用するプログラムの一部を走らせてみて計算時間をベンチマークとして使用したものです。
計算時間だけの結果で物足りないですが、逆に直感てきで分かりやすいかも。
(32bit)
0m41.541s (compile オプションなし)
0m15.535s (compile オプション -O3)
(64bit)
0m28.809s (compile オプションなし)
0m8.579s (compile オプション -O3)
こちらはg++でコンパイル。オプションなしと-O3で最適化コンパイルを実施。
こちらも約1.5倍64bitの方が速いという結果に。。。
そして、-O3で最適化するとかなり速くなってます。この-O3を使用する時でも、32bitで使用した時よりも64bitで使用したときの方が効果的みたい。64bitの方では最適化することにより3倍以上のスピードになっています。
以上どちらを使用するかのベンチマークでしたが、サーバー用途でとにかく計算スピードが必要な場合は64bit環境を使用したほうが良さそうです。
グラフィック性能、メモリアクセス(アドレス指定の情報が多く必要だから等)回りになると違った結果になってくるかも。
しかし、今回は計算スピード重視なので、もちろん64bitの採用決定。
計算速度の差を考えるとインストールするOSも慎重に選択する必要が出てくる。
今までは、そこまで計算スピードが必要になることはなかったので、とりあえず不具合の少なそうな32bit OSをインストールしていたが64bitの方も試してみる価値はあると思い実験。
ベンチマークソフトに何を使用するかですが、ソースコードを自分でコンパイルして利用できるものでないとさがわかりにくいということで、ソースコードのあるものを探してみた。
スーパーπ(super pi)はlinux用バイナリはおいてあるがソースコードが見つからなかったので却下。
そして見つかったのが姫野ベンチマーク(Himeno benchmark)。
"非圧縮流体解析コードの性能評価のために考えたものでポアッソン方程式解法をヤコビの反復法で解く場合に主要なループの処理速度を計るもの" で、実測速度(何 MFLOPS) を算出してくれるらしい。
使用ベンチマークソフトのソースコードは、ダウンロードページにある
ソースコード(C, static allocate version)のM(256 x 128 x 128)。
スコアに出てくるFLOPSという単位ですが、よくスーパーコンピューターの計算速度の単位などにでてきますが、wikiによると"1秒間に浮動小数点数演算が何回できるかという能力を理論的/実際的(実験的)に表したもののこと"。つまり、大きい方が性能が計算スピードが速いということになります。
この姫野ベンチマークに加えて、今回高速なサーバが必要になった原因でもある実際に使用するプログラムの一部をベンチマークとして使用することにした。
ハードウェア構成はまったく同じものを使用。
[32bit 環境]
OS: ubuntu9.04 server 32bit
CPU: Intel Core2Quad Q9650 3Ghz
Mem: DDR2 PC2-6400 ECC 8GB(2GBx4)
gcc,g++ version: 4.3.3
[64bit 環境]
OS: ubuntu9.04 server 32bit
CPU: Intel Core2Quad Q9650 3Ghz
Mem: DDR2 PC2-6400 ECC 8GB(2GBx4)
gcc,g++ version: 4.3.3
以下結果です。
姫野ベンチ
(32bit)
Gosa : 9.408959e-04
MFLOPS measured : 1363.701759 cpu : 58.413127
Score based on Pentium III 600MHz : 16.630509
(64bit)
Loop executed for 871 times
Gosa : 8.044773e-04
MFLOPS measured : 2045.616201 cpu : 58.377800
Score based on Pentium III 600MHz : 24.946539
まずは姫野ベンチの結果から。gccでコンパイルオプションは何もつけずデフォルト状態でコンパイル。
予想以上の差がでました。なんと64bitの計算スピードの方が32bitよりも1.5倍速くなっています。
10%くらいの差はでるかと思っていましたが、驚きです。
次に、実際に使用するプログラムの一部を走らせてみて計算時間をベンチマークとして使用したものです。
計算時間だけの結果で物足りないですが、逆に直感てきで分かりやすいかも。
(32bit)
0m41.541s (compile オプションなし)
0m15.535s (compile オプション -O3)
(64bit)
0m28.809s (compile オプションなし)
0m8.579s (compile オプション -O3)
こちらはg++でコンパイル。オプションなしと-O3で最適化コンパイルを実施。
こちらも約1.5倍64bitの方が速いという結果に。。。
そして、-O3で最適化するとかなり速くなってます。この-O3を使用する時でも、32bitで使用した時よりも64bitで使用したときの方が効果的みたい。64bitの方では最適化することにより3倍以上のスピードになっています。
以上どちらを使用するかのベンチマークでしたが、サーバー用途でとにかく計算スピードが必要な場合は64bit環境を使用したほうが良さそうです。
グラフィック性能、メモリアクセス(アドレス指定の情報が多く必要だから等)回りになると違った結果になってくるかも。
しかし、今回は計算スピード重視なので、もちろん64bitの採用決定。