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

今回Core i7を導入してみたのでこれを機にCNSでベンチマークテストをしてみました。環境によってはオーバークロックで遊んでいますが、電圧を盛ったりはしないようにしています(冷却を頑張ってないので・・・)。特に注釈がない限り、常用可能なオーバークロックのセットアップにしています。
CNSは基本的にIntel CompilerでOpenMPを有効にしてコンパイルしました。テストした時期によってコンパイラやカーネルのバージョンが異なります。

CNS 1.21 OpenMP  

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

プロセッサ型番クロック数スレッド数時間メモリM/BOSカーネルコンパイラArch
XeonX56803.33GHz12 1分20秒96GBDell Z800SL 5.42.6.1813.0.1x86_64
XeonE5-26702.60GHz16 1分21秒128GBHPCent 6.52.6.3213.0.1x86_64
XeonX55702.93GHz8 1分39秒RHEL 52.6.1811.1.067x86_64
Opteron6282SE2.6GHz16(*) 1分57秒128GBDell R815RHEL 6.42.6.3213.0.1x86_64
Opteron6282SE2.6GHz8(*) 2分00秒128GBDell R815RHEL 6.42.6.3213.0.1x86_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
Xeon(KVM)E5-26092.40GHz4 2分12秒24GBDell DL160 Gen8Cent 6.52.6.3213.1.117x86_64
Core2 QuadQ96503.00GHz4 2分15秒DDR2 4GBShuttle SG31G2Vine 5.12.6.2712.0.084i386
Core2 QuadQ96503.00GHz4 2分21秒DDR2 4GBShuttle SG31G2Vine 5.02.6.2711.1.046i386
Core2 QuadQ66003.30GHz(OC)4 2分32秒DDR2 2GBMSI MS-7360Cent 5.52.6.1811.1.072i386
Core2 QuadQ66003.00GHz(OC)4 2分36秒DDR2 4GBAOpen EZ965Vine 4.22.6.1611.0.074i386
Opteron6282SE2.6GHz32 2分42秒128GBDell R815RHEL 6.42.6.3213.0.1x86_64
Core2 QuadQ66002.70GHz(OC)4 2分54秒DDR2 4GBAOpen EZ965Vine 4.22.6.1611.0.074i386
Core2 QuadQ66002.40GHz4 3分16秒DDR2 2GBMSI MS-7360Fedora 92.6.2511.0.074i386
Core2 Quad (VBox)Q96503.00GHz2 3分57秒512MBVBox 4.1.2(Linux)Vine 5.22.6.2711.1.072i386
Xeon(QEMU)X56753.07GHz1 4分28秒2GBさくらのクラウドVine 5.22.6.2711.1.072i386
Core2 Duo(QEMU)T77002.40GHz2 4分43秒512MBさくらのVPS 512Vine 5.22.6.2711.1.072i386
Core2 DuoE64002.13GHz2 5分06秒DDR2 4GBDELL OptiPlex 745Vine 4.22.6.1611.0.074i386
Core2 Duo (VBox)E84003.00GHz1 5分18秒512MBVBox 3.0.12(Win)Vine 5.12.6.2711.1.046x86_64
Core2 Quad (VBox)Q96503.00GHz4 5分45秒1GBVBox 4.1.2(Linux)Vine 5.22.6.2711.1.072i386
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はハイパースレッディング、VBoxはVirtualBox)。

2013-08-23 -- Opteronサーバを触る機会がありましたので、実機でベンチマーク。BIOS設定をHPC Enabledにして実行しています。Intel Compilerとx86-Open64で比較しましたが、CNSに関してはIntel Compilerの方が圧倒的に速かったのでOpen64の結果は割愛します。スレッド数が8を超えてもパフォーマンス上昇は見られず、32コアはむしろ遅いという結果になりました。カーネルは2.6.32-358.114.1.openstack。

2013-08-22 -- Xeon 12コアPCのセットアップを行う機会がありましたので久しぶりに試してみました。8スレッドを超えてくるとスレッド増による伸びしろが減ってきている気がします。X5570とX5680を比較するとクロック数の差プラスアルファぐらいの差しかありません。アムダールの法則による限界が近いのかもしれません。カーネルは2.6.18-164。

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

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の方が速いという結果が出ました。

完全にお遊びですが、組込用である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 2987件 [詳細]