CNSでベンチマークテストをしてみる  

今回Core i7を導入してみたのでこれを機にCNSでベンチマークテストをしてみました。環境によってはオーバークロックで遊んでいますが、電圧を盛ったりはしないようにしています(冷却を頑張ってないので・・・)
CNSは基本的にIntel CompilerでOpenMPを有効にしてコンパイルしました。時期によって多少バージョンが異なるかもしれません。

CNS 1.2  

やはり際だった速さのCorei7マシンと、値段通りのAtomマシンとくっきり分かれました。

プロセッサ型番クロック数スレッド数時間メモリM/BOSカーネルコンパイラArch
XeonX55702.93GHz8 1分39秒RHEL 52.6.1811.1.067x86_64
Core i79402.93GHz8 (HT) 2分02秒DDR3 3GBIntel DX58SOVine 4.22.6.1611.0.074i386
Core2 QuadQ96503.48GHz(OC)4 2分04秒DDR2 2GBASUS P5KPL-AM EPUVine 5.12.6.2711.1.072i386
Core2 QuadQ96503.00GHz4 2分21秒DDR2 4GBShuttle SG31G2Vine 5.02.6.2711.1.046i386
Core2 QuadQ66003.00GHz(OC)4 2分36秒DDR2 4GBAOpen EZ965Vine 4.22.6.1611.0.074i386
Core2 QuadQ66002.70GHz(OC)4 2分54秒DDR2 4GBAOpen EZ965Vine 4.22.6.1611.0.074i386
Core2 QuadQ66002.40GHz4 3分16秒2GBFedora 92.6.2511.0.074i386
Core2 DuoE64002.13GHz2 5分06秒DDR2 4GBDELL OptiPlex 745Vine 4.22.6.1611.0.074i386
Core2 Duo (VBox)E84003.00GHz1 5分18秒512MBVirtualBox 3.0.12Vine 5.12.6.2711.1.046x86_64
Pentium Dual-CoreE21601.80GHz2 6分08秒DDR2 4GBAOpen EZ965Vine 4.22.6.1611.0.074i386
Pentium4(Prescott)3.00GHz2 (HT)11分24秒DDR 1GBEPSON AT951Vine 5.12.6.2711.1.072i386
Atom3301.60GHz4 (HT)16分18秒DDR2 1GBShuttle X27DVine 4.22.6.1611.0.074i386
AMD GeodeLX800500MHz1210分58秒DRAM 256MBALIX.2D2Vine 4.22.6.26GCC 3.3.6i386
Marvell Kirkwood88F62811.20GHz1630分25秒DRAM 512MBSheevaPlugUbuntu 9.042.6.31.8GCC 4.2.1arm

これらの結果は私の環境で行った結果なので、あくまで参考値ということで(スレッド数のHTはハイパースレッディングのこと)。

2010-06-09 -- クラスタPCを使う機会がありましたので試してみました。1ノードのコアが最大が8だったのでスレッド数も最大8でした。さすがにHTより速くなりますね。

なお、Core2 Quadの2.7GHzはベースクロックを266MHz->300MHzに、3.0GHzは333MHzにオーバークロック動作したものです。頑張ればもっとオーバークロックできるという記事もあるのですが、私の環境ではこの辺りが限界みたいでした(366MHzの3.3GHz動作でLinuxは起動しましたが動作が不安定だったので確認できませんでした)。クロック数がそのまま実行時間に反映されていますが、2.7GHzに比べて3GHzは意外と伸びが悪いようです。また、同一クロックでもQ6600やQ9650よりもCore i7の方が速いという結果が出ました。

2010-09-06 -- 新たにマザーボードが手に入ったのでQ9650でオーバークロックを試してみました。400MHzオーバークロック動作(3.6GHz)では計算途中で止まってしまったので、386MHz動作(3.48GHz)で計算が完了しました。定格である3.0GHzに対して15%オーバークロックで、計算時間は12%ほど短縮されましたのでだいたいクロック数通りでした。それでようやくi7と同程度という結果でした。メモリクロックを667MHzにすれば動作800MHz以下になりメモリへの負担は軽減されますが、その際は4秒(3%)ほど計算時間が長くなりました。とりあえずはメモリクロック800MHzで927MHzの動作で常用してみようと思います(メモリが死ぬかも・・・)。

完全にお遊びですが、組込用であるx86互換のGeodeLXとARM互換のSheevaPlugでも処理を流してみました。GeodeはPCEngines社のALIXボードを使い、ビルドはg77installであっさりOK(まあx86互換なので)。SheevaPlugでのビルドはMakefileを多少書き換える程度(マシンの種類の認識をLinuxにした)で可能でした。クロック数の小さいALIXの方がSheevaPlugよりも速いという結果になりました。浮動小数点演算の違いでしょうか(よく知りません [huh])。ま、そもそも計算用途で使うものではありませんので。

また、WindowsXP上のVirtualBoxでも試してみました。E8400のPCで512MBメモリを割り当てた環境です。x86_64アーキテクチャで実行し、Intel CompilerもIntel64版を使用しています。E6400実機とほぼ同等の結果を出しているところはなかなか興味深いです。いずれ実機のIntel64環境でも試してみたいですね。

 

今回使ったPDBは非対称単位中に10分子のものなので多スレッドが有利だったのかもしれません。また、teeコマンドでログを書き出しながらだったのでディスクアクセス速度の速さも効いているものと思われます。なお、時間はrefine.log中の最後に出力される開始時刻と終了時刻から求めました。

このファイルはPDBより2DJWのPDBファイルと構造因子ファイルを取得し、CNSで使える形式にした物です。分解能が2.4Åな上にデータもあまり良くないのですが、まあいいでしょう [huh]。ベンチマークに適したPDBなどあれば教えてください [smile]
実行方法はファイルを展開し、refine.inpを流すだけです。

% tar jxvf bench-2djw.tar.bz2
% cd bench-2djw
% cns < refine.inp | tee refine.log

CNS 1.3  

2010-07-22にリリースされた1.3で同様のベンチマークを行いました。インプットファイルが異なるので1.3のrefine.inpを使いました。修正点はPDB、CV、分解能の部分のみです。詳しくは調べてませんが処理の内容等変わっているようで、計算時間が大幅に伸びています。なお、スレッド数が増えてもさほど効果が現れていないところが興味深いです。OpenMPによる計算が少なくなったのでしょうか。

プロセッサ型番クロック数スレッド数時間メモリM/BOSカーネルコンパイラArch
XeonX55702.93GHz8 5分10秒RHEL 52.6.1811.1.067x86_64
Core i79402.93GHz8 (HT) 6分33秒DDR3 16GBIntel DX58SOVine 5.12.6.2711.1.072i386
Core2 QuadQ96503.48GHz(OC)4 6分37秒DDR2 2GBASUS P5KPL-AM EPUVine 5.12.6.2711.1.072i386
Core2 QuadQ96503.00GHz4 7分29秒DDR2 4GBShuttle SG31G2Vine 5.12.6.2711.1.046i386

かなりマシンパワーが要求されますね・・・
これだけ時間がかかるとQ9650のオーバークロックも意味がありそうです [smile]

添付ファイル: filebench-2djw.tar.bz2 235件 [詳細]