2009年11月28日土曜日

ベンチマーク Amazon EC2 .vs. HPC

今回はHPCクラウドの最終回として、ベンチマークを報告しよう。
このベンチマークはテキサス大学TACC(Texas Advanced Computing Center)で、Fault-Tolerant Distributed SystemsやHPC Programming Languagesで活躍するEdward Walker博士のチームによって行われたものである。
以下、博士の承認のもと、要約を試みた。


◆ベンチマーク・ハードウェア仕様 Amazon EC2 .vs. HPC

こ のベンチマークで利用するAWS(Amazon Web Service)EC2は最大インスタンスの「High-CPU Extra Large Instance」 。AWSの説明曰く、High-CPU Extra Large Instance 7 GB of memory, 20 EC2 Compute Units (8 virtual cores with 2.5 EC2 Compute Units each), 1690 GB of instance storage, 64-bit platformだという。つ まり、64ビット版2.5コア相当の8個の仮想CPU(合計20 EC2コンピュート・ユニット)に7GBメモリー、内臓ストレージは1960GBを持つ。ネットワーク・インターコネクト(ノード接続)は、EC2は高速 (High I/O Performance)接続だが詳細は不明、NCSAのHPCはInfiniBand。


ただ、これでは抽象的でベンチマークには不十分であるのでLinuxカーネル内の/proc/cpuinfoから、Amazonはクワッド(4コア)の Intel Xeon(2.33 GHz)であることを確認。ノード当たりはデュアルソケットに2プロセッサーで8コア、メモリー(7GB)とストレージ(1960GB)の構成となり、一 方のHPCはSun Ranger機で同様のクワッドCPUのノード構成で8GBメモリー、73GBストレージの構成である。(上図参考)

◆ ベンチマークツールNPBと並列プログラミング(MPI & OpenMPI、OpenMP)

さてベンチマークは、ここシリコンバレーにあるNASA Ames Research Centerが開発したNAS Parallel Benchmarks(NPB)を基本とし、大所高所から、幾つかの
ア プローチを試みている。NPBはHPCのベンチマーク用に仕様が開発されたもので、下図のように、5つのパラレルカーネル(Parallel Kernel Benchmarks)と、3つのシュミレーテッドアプリケーション(Parallel CFD-Computational Fluid Dynamics-Application Benchmarks)から構成されている。NPBは、さらにオリジナル仕様のNPB 1と、MPI(Message Passing Interface)を適用したNPB 2、OpenMPを適用したNPB 3に分かれている。ここでMPIとは、メッセージパッシング(受け渡し)型の並列プログラミング規格であり、MPIライブラリーとのインターフェースが定められている。
一般にグリッドやHPCのように分散メモリー型並列コンピュータでは、計算結果を相互に授受しながら処理を進める。このための役割がMPIであり、CとFortran 77がある。
また、MPIの延長にあるOpenMPIでは、テネシー大学のFT-MPIや、国立ロスアラモス研究所のLA-MPI、インディアナ大学のLAM/MPIなど各種のメッセージングを取り込んだMPI-2規格となっている。次に、共有メモリ型並列コンピュータ用に開発されたOpenMPが ある。MPIでは明示的にメッセージの交換をプログラム内に書かなければならないが、OpenMPでは、OpenMPが使用できない環境において、無視さ れるディレクティブを挿入する。この仕組みによって、並列環境と非並列環境でほぼ同一のコードを使用できる。その他の並行処理技術にはHPF(High Performance Fortran)やJavaなどがある。

◆ NPB OpenMPベンチマーク

さ て、最初のベンチマークは並列/非並列のどちらにも適用できるOpenMP。正式にはNPB (NPB3.3-OMP) Class Bという。つまり、NBPにOpenMPを適用したNPB 3の一種である。これをNCSAクラスターとAmazon EC2の各々8コアノー ドに適用。 ベンチマークに当たっては、8コアに満遍なく各々のベンチマークプログラムを走らせるパラレルスレッドとして実行した。NCSAとEC2上でのコンパイル は、Intel製コンパイラーでオプションは、“-openmp -O3.”を設定。結果は左図の通り。全般的にみて、Ec2がNCSAよりランタイムにおいて、7%~21%遅いことが解る。Walker博士によると、 この差は、かなりの驚きであったという。


◆ NPB MPIベンチマーク

2番目のベンチマークはMPIを用いたもの。
この場合も正式にはNPB (NPB3.3-MPI) Class Bという。ベンチマークにあたって、4つのEC2 High-CPU Extra Large Instanceをクラスターとしてプロビジョニング、つまり32 コア(4x8)となる。各々、前述同様にIntelコンパイラーでオプションは"O3."とした。実際に利用したライブラリーはEc2がMPICH2 MPI library (1.0.7)、NCSAはMVAPICH2 MPI library (0.9.8p2)。ベンチマークプログラムのBTとSPは16コアで、他の6つは全て32コアで実行。結果は、EC2がNCSAより40%~1000% 遅い。200%以上の差があるプログラムはCG、FT、IS、IU、MGの5つ。そして驚くことに、EC2上のEPでは、メッセージの授受が計算の間に実 行されず、全体的にメッセージングだけで約50%の差があった。

◆ MPIパフォーマンス・ベンチマーク

2つのベンチ マーク結果から、Walker博士チームはノード接続のInfiniBandが大きな効果を挙げているのではないかと仮定し、それを証明しようと試みた。 つまり、計算能力は同じ筈なので、メッセージ受け渡しの能力差がランタイムの大きな違いとなるのではないかと考えた。ノード接続は、NCSAのクラスター がInfiniBandのファブリック接続であるのに対し、EC2は高速だが簡単な仕組みである。そこで以下の計測のためにOpenMP仕様にあ る"mpptest"ベンチマークを利用した。以下の結果から解るように、バンド幅(Bandwidth)と呼び出し時間(Latency)は、EC2と HPCのクラスターで2分割されたような異なる状態を示し、明らかにEC2が劣っている。テストで使われたジョブは"32-CPU MPI"、メッセージ長は0~1024。従って、これらの接続性能を反映したHPCクラスターではランタイムが大きく短縮されることとなった。












◆ 結論

今 日、Amazon EC2の「High-CPU Extra Large Instance」のように、HPC向けアプリケーションサービスが始まったことは画期的であり、これまでの大型専門コンピュータ崇拝に区切りがつく可能 性を示した。しかしながら、本稿のベンチマークで、まだ商用クラウドはその性能に達していないことがはっきりした。2つのクラスター間のギャップは、分散 メモリー型並列コンピュータでは著しく、共有メモリー型並列コンピュータでもかなりの差が見られる。商用クラウドは高計算処理を伴う科学演算コミュニ ティーにも大いに魅力的であり、今後のプロバイダーの努力に期待したい。