約40GBの比較的大きなスクラッチファイルを必要とするtest178によるCCSD計算を最新Xeon (Nehalem) で動作させた結果が寄せられました。
単体コアのCPU性能はuser timeとして示されます。2世代前のXeon 3.0GHzからは約40%の高速化が確認できます。しかし、これはGaussianのバイナリが更新されたことの影響が大きく、既に1世代前のXeonでも高速化しています。
搭載メモリの容量が24GBと12GBの場合での、シリアル処理の実行時間を調べてみました。するとidle time (ディスクI/O待ちでCPUが遊んでいる時間) が2918秒から861秒へと大きく減少しています。最大スクラッチファイルサイズは40GBですから、完全にメモリ上にキャッシングされているわけではなさそうですが、それでも大容量メモリの効果は絶大でした。
他のベンチマークテストで明らかなように、Gaussianなどの「CPU性能律速型アプリケーション」では、Nehalemのメモリ帯域は十分な余裕があるため、メモリの動作クロック速度に神経質になる必要は小さいと考えられます。それよりも十分なメモリ容量を搭載し、スクラッチディスクのI/O時間の短縮を考えた方が良いようです。
並列処理の効果が小さいとされる大規模計算ですが、8並列処理でにて56%もの経過時間の高速化が確認されていました。また、idle timeも861秒が142秒へと大きな短縮が確認されました。
| 実行計算機 | 並列度 | 結果 (sec) | ||||||
| 基本構成部 | メモリ | スクラッチ ディスク |
user | system | g03 cpu time (user + system に近い値) |
elapsed | idle time (elapsedから job cpu timeを 引いた値) |
|
| HPC-ProServerDPeR610 Q/C Xeon 5570 2.93GHz SysHDD: 73GB SAS 2.5inch 15krpm G03 E01 バイナリ版 |
DDR3 1333MHz 12GB |
SAS
2.5inch 15krpm 73GB XFS |
1 | 7813 | 788 | 8600 | 11518 | 2918 |
| DDR3 1333MHz 24GB |
1 | 7817 | 727 | 8542 | 9403 | 861 | ||
| 8 | 38274 (4784) |
788 (99) |
4898 | 5040 | 142 | |||
| HPC-ProServerDPr490 Q/C Xeon 5160 3.0GHz Sys. HDD: 250GB ext3 G03 D02 PGIビルド |
DDR2 667MHz 8GB |
SATA 7.2krpm 250GB XFS |
1 | 13474 | 2164 | 15637 | 24851 | 9214 |
| SAS 10k 300GB XFS |
1 | 13539 | 2218 | 15756 | 21671 | 5915 | ||
| SAS 10k
300GBx2 RAID0 XFS |
1 | 13576 | 2285 | 15859 | 18455 | 2596 | ||
ジョブが使用したCPU時間。並列ジョブをマルチコア上で動作させると、各コアのCPU時間の合計値が表示されるので、実際の経過時間を知るためには並列数で割る必要があります。
ジョブが使用したシステム側の時間。ディスクI/Oなどでシステム側にも負荷がかかると時間が加算されてゆきます。Gaussianでディスクを使用すとsystem timeが増えます。また並列ジョブをマルチコア上で動作させると、各コアのシステム時間の合計値が表示されるので、実際の経過時間を知るためには並列数で割る必要があります。
Gaussianの出力ファイルに記載されるCPU利用時間。シリアル計算の場合は、user timeとsystem timeの合計値にほぼ等しい。並列処理では出力された時間を並列数で割った値が実際の時間となります。
ファイルI/O負荷が小さい場合はelapsed timeと近い時間となります。 ところが、I/O負荷が高い計算では、I/O待ちのためCPUが空費される時間が多くなり、この時間はJob cpu timeには反映されません。そのため、Job cpu timeは実時間とは大きく異なるケースがあります。上記の表ではidleと表記した時間がこれに該当します。
ジョブの投入から終了までの実時間。実際の計算時間を考える場合には、この時間が重要です。
elapsed timeからgaussian job cpu timeを引いた値です。スクラッチファイルサイズが大きくファイルI/O時間が長いジョブの場合は、CPUがI/O待ちのため遊ぶことになります。これがidle timeです。ディスクの速度を高速化するとidle timeも比例して短縮します。主メモリのサイズが大きくなると、メモリがディスクキャッシュとして機能し急激な時間短縮が起こります。