第3章 ハイエンドコンピューティング研究開発の動向
3.2.3 PCクラスタの現状と今後
久門 耕一 委員
1. はじめに(PCクラスタとCommodity部品)
HPC向の計算機システムとして、PCクラスタが急速に普及し始めている。PCクラスタを構成する要素は、クラスタのノードを構成するためのPCと、それらをつなぐためのインタコネクトネットワークである。ノードは一般的なPCであり、CPU、メモリ、ネットワークとの接続点である
NIC (Network Interface Card)から構成されている。PCクラスタが急激に普及し始めたのは、PCに用いられているIA(Intel
Architecture)プロセッサが、大量生産を武器に、量産効果による価格の低下、開発費の大量投入による高性能化の双方の優位性を兼ね備え、IAプロセッサが本来あまり性能面で重視してこなかった浮動小数演算を多用するHPCの分野で使用しても、満足出来る性能を得ることが出来るようになってきたためである。逆に、IA
プロセッサはビジネス計算分野、つまり整数系演算では十分高速である。IAプロセッサの命令セットはRISCでなくCISCであるため、RISCがコンパイラとアーキテクチャの双方の最適化技術で高速化を達成したのに比べ、IAアーキテクチャではコンパイラの性能に大きくは依存していなかった。このことは、高性能化を目指すためにIAプロセッサがその実装方式(マイクロアーキテクチャ)を変更してクロック周波数を向上させてきた場合でも、最適化コンパイルの手法に変更を必要とせず、結果的にほぼ予想された性能向上が得られる原因ともなってきた。
一方、PCクラスタ内を接続するインタコネクトネットワークに関しても、ネットワークの高速化技術によりCommodityネットワークはすでにGiga bit
Ether(GbE) ネットが普及品価格となっており、数年後には10 Giga bit Ether (10GbE) が簡単に入手できるだろうと推定される。
現在まで、このように汎用のCommodityを用いたPCクラスタが順調に性能を向上させてきた。しかし、最近の急速なCPUあるいはネットワークの性能向上を達成するために、Commodityが従来のように「汎用」ではなく、特別な目的のために専用化される傾向が現れてきた。以下に、CPU、ネットワークの順番で現在と今後の動きを評価する。
2. 汎用プロセッサとは言えなくなるIAプロセッサ
CPUによる実行時間は、
プログラムの動的命令数 * 1命令実行の平均クロック数 * クロック周期
で表され、後者の二つはそれぞれCPI(Clocks per Instructions)、τ(=クロック周波数(f)の逆数)と表される[1]。
命令セットが固定されると、プログラムの動的実行命令数は変わることがなくなり、プログラムの実行時間は、CPIとτ(=1/f) だけにより決まる。プロセッサの性能を向上させるため、クロック周期を短くする典型的な手法は、
である。
プロセスの微細化によるトランジスタの高速化は、プロセスの縮小と共にチップサイズを縮小しない場合には、プロセスの微細化にともなう配線抵抗の増大により高速化が得られないことが知られている。これが
DSM(Deep Sub-Micron)問題として知られている。
一方の、パイプラインピッチの縮小状況を、IntelのPentiumからPentium4までの違いで見てみる。IntelのP6アーキテクチャ(Pentium-PROからPentium-III
まで)で用いられているパイプラインは、およそ13段で、P6以前のPentiumでの5-6段のパイプラインに比べほぼ倍に段数が多くなっている[2]。さらに、P6の次の世代であるPentium4アーキテクチャでは、パイプライン段数は22段といわれ、単純に考えるとPentium4プロセッサはPentium3プロセッサのクロック周波数をほぼ2
倍近くにできることがわかる。
クロック周波数の伸びの状況は、95年にPentiumがほぼ100MHzで動作し、2000年にPentium4が1GHzを越えたことを考えると5年間に1桁以上CPUコア周波数が高速化してきたことになる。5年で10倍(年率1.58
倍)の周波数向上は、トランジスタ数の伸びを予測するムーアの法則の3年で4倍(年率1.59倍)と同じ伸び率となっている。
これに比べ、主記憶となるDRAMアクセス時間は、制御を行なうコントローラ込みで見たアクセスレイテンシは、95年当時すでに300ns以下であったし、現在でも100ns以上かかることから、高々2-3倍程度しか高速化されていない。一方、DRAMのデータスループットは、同期DRAMによるパイプライン処理、DRAM内のマルチバンク化、さらにDRAMアクセスインタフェースへの高速伝送路採用などで飛躍的に向上し、RAMBUS
DRAMではDRAMチップあたりのバンド幅は1GBを越えている。この結果5年間に1桁以上のDRAMスループット向上が得られている。
このように、CPUコア周波数の向上と、DRAMのスループット向上はほぼ歩調を合わせているが、DRAMのアクセスレイテンシはこれに追い付いていない。このため、システム全体の性能を向上させるには、DRAMのスループットの伸びを使いレイテンシを隠蔽する技術を採用せざるを得ない。Pentium4では、ハードウェアがCPUのメモリアクセスパタンを監視してプリフェッチを自動で行なうハードウェアプリフェッチ機構が導入され、この監視は同時に8箇所のストリームへのアクセスをプリフェッチ対象とする。実測によると、1.7GHzのPentium4とRDRAM
制御を行なうi860チップセットで作成されたシステムは、メモリの連続読み出しで2GB/s以上のメモリスループットが得られている。このように、製造技術の向上にともない、順調にシステム性能が向上してきているように見える。図1,2にSPEC
CPU2000をベンチマークとして整数/浮動小数性能を表した。
図1 各種IAプロセッサのSPEC CPU 2000の整数演算性能
図2 各種IAプロセッサのSPEC CPU2000の浮動小数演算性能
図2はIA32/IA64(Itanium)を用いたシステムの整数演算性能、図3は浮動小数演算性能を示す。双方のグラフとも、横軸はCPUのクロック周波数、縦軸はSPEC
値である。
この結果から、IA32のCPUがPentium3系列からPentium4系列に移行した際の性能の伸びが素直でないことがわかる。一般に、同じアーキテクチャでクロック周波数だけを向上させる場合、性能は向上する。図1を見ると、SPECの整数系ベンチマークではPentium3系列からPentium4系列に移行した際、同一のクロック周波数(例えば1400MHz近辺)で見比べると、Pentium4の速度が10-20%遅いことがわかる。つまり、アーキテクチャを変更したことにより遅くなっている。一方、図2を見るとSPECの浮動小数系ベンチマークでは逆にPentium4の方が10-20%高速になっていることがわかる。さらに、次世代のIAプロセッサの64ビットアーキテクチャCPUであるItaniumは、図1と図2で際だった違いを見せている。整数性能では同一クロックのIA32に及ばない性能だが、逆に浮動小数性能では2倍以上高速である。図3のグラフではPentium3とPentium4の双方の系列の性能が2段に分かれて見えるが、キャッシュサイズの違いでの性能差である。
SPECのようにコンパイラやCPU設計者が最適化対象の中心におくプログラムではなく、プログラムとしては浮動小数演算が主となる一般のエンジニアリング系のソフトウェアを実行した結果で評価したものが図3である。
このプログラムは、大きく分けて、入力データの前処理を行なう部分(pre)と、大規模な行列演算を行なう中間部分(MKL)、演算結果をユーザに表示するため、グラフィカル処理を行なうためのデータ作成処理などの処理(post)の3つに分かれている。このグラフから、Itaniumでは中間の処理(MKL)がとても速くなっているが、全体を通しての実行時間は、同一クロックのIA32よりも実行時間が長い。実は、中間部の処理のほとんどは、インテル社が提供している行列演算ライブラリの実行時間であり、ユーザが書いたコードが実行されているわけではない。このような実行時間の分布は、ベクトル計算機でよく見られる。すなわち、専用に作られたライブラリや、特定の計算方法(規則正しい配列アクセスなど)の場合にとても高速に実行するが、そうでない場合には性能が出ていない。VLIW構造をとるItaniumのコンパイラ依存の高速化が機能していないことを示している。
図3 エンジニアリング系アプリケーションでの実行時間
従来汎用プロセッサであったIAプロセッサが高速化を図る過程で特定の目的だけが高速化される結果になったことには、現在高速化を特に必要とするアプリケーションの主なものがマルチメディア処理、たとえばビデオストリーム処理、動画圧縮などHPC的な動作を要求するものであることが理由として考えられる。このことはPCクラスタがHPC向けに使用される場合には有効に働くと推定される。一方、SPEC INTのような挙動を示すプログラムでは、今後の性能の伸びは、クロック周波数の向上ほどではないことも同時にわかる。
3. インタコネクトとして使いにくいCommodityネットワーク
汎用のネットワークとしてEthernetが広く使われており、クラスタ内部のインタコネクトとしても100Mbps Ethernetから1Gbps Ethernetが使われている。クラスタ内の接続用の高性能ネットワークには、当初からMyrinetに代表されるproprietaryなネットワークが用いられてきた。しかしEthernetが1Gbpsの速度に達したため、Myrinetは高々2倍程度スループットが高いだけに過ぎず、ネットワークもCommodity使用に移行する傾向がある。そこで、クラスタシステムとしてSCoreを用いMPI上でPing-Pong性能を測定した結果を図4に示す。横軸は1回のPing-Pong転送のデータサイズ、縦軸はデータサイズを1往復する時間の半分で割ったもので、スループットである。Ethernetのネットワークインタフェースカード(NIC)としては、100Mbps用にRTL8139と言う廉価なカード、1Gbps用にはIntel社のEEPRO1000を用い、送受ノードの間はスイッチを経由せず直接ケーブル接続している。
図4 SCoreにより計ったネットワークのPing-Pong性能
データサイズが小さいときは、転送を起動するためのオーバヘッドの比率が大きいためスループットが得られないが、データサイズが大きくなるにつれ、ネットワークのスループット性能による限界へと近づいてゆく。クラスタインタコネクトとして設計されたcLanや、100MbpsのEthernetは素直な性能であることがわかる。一方、1GbpsのEthernetは、10Kbyteのデータサイズ近辺で急激に性能が劣化し、100Mbpsでの性能よりも劣る場合があることがわかる。これは、標準Ethernetのパケットサイズは1.5KBであるが、1Gbpsのスループットを有効に活用するためより大きなパケットである9KBのパケットに切り替わった時に、レイテンシが大幅に悪化したことが主因である。EEPRO10000では、1Gbpsのネットワーク処理を行なう時にNICからの頻繁な割り込みによるCPU負荷の増大を防ぐため、パケットがひとつ到着してもすぐには割り込みを出さず、複数のパケット処理を1回の割り込みで処理するInterrupt
Coalescingと言う最適化を行っている。ストリームのように次々とデータが到着する場合には、この最適化は有効であるが、パケットのPing-Pongのように1回データが来るとそのデータを処理しない限り後続のパケットが来ない場合には、パケット処理開始のレイテンシが大きくなってしまい、図のようにスループットの劣化を引き起こす。通常、TCP/IPの処理を行なう場合、100Mbpsのイーサネットを処理するには、概算で100MHzのCPUを100%使うことが必要と言われている。筆者が実際に測定した結果でも、この値はほぼ裏付けられている。これに対する対策のひとつが、複数パケットの一括処理である。このように、クラスタシステムを構成するためには単にインタコネクトネットワークの伝送速度が高速になるのでは不十分で、送信元ノードのメモリ空間にあるデータを、受信先ノードのメモリ空間に高速に転送することが必要である。このためには、ホストメモリのデータをインタコネクトネットワークに高速に送付する処理、とインタコネクトネットワークから送られてくるデータを指定されたホストメモリに高速に格納する処理が必要で、従来のNICではCPUに対する負荷を減らさずクラスタインタコネクトに必要な低レイテンシの達成はきわめて難しい。
CPUの性能向上がいわゆるムーアの法則に乗って18ヶ月で2倍の性能向上で推移してきたのに対し、ネットワークバンド幅の向上は、いわゆるギルダーの法則に従い、9ヶ月〜16か月で2倍の向上を達成し、CPUの性能向上率を上回っている[3]。このため、今後ますますインタコネクトネットワークの有効利用が困難になって行くと予想される。一方、MyrinetやcLanのようにクラスタインタコネクトを目的として作成されたインタコネクトシステムはパケット処理をNIC上のハードウェアにオフロードしているため、ホスト処理を重くせずレイテンシの短縮を図ることが可能である。しかし、Commodityネットワークが採用するTCP/IPプロトコルの標準API
であるsocketインタフェースではOSとNICの役割を分けることが難しくハードウェアオフロードが困難である。socketインタフェースを用いないTCP/IP実装として用途は異なるがiSCSIが実用化され始めており、クラスタインタコネクトにもsocketインタフェースに依存しない新規のAPI、たとえばRDMAインタフェースを用意し、NIC上にプロトコル処理のオフロードを行わなければネットワーク性能を十分に使用することが出来ないと考えられる。
4. 今後のPCクラスタと技術開発について
以上説明してきたとおり、従来PCクラスタはCommodityを組み合わせることにより低価格高性能を達成してきた。しかしムーアの法則やギルダーの法則に従いCPUやネットワークが高速化してゆくと、Commodityが現在のように「速い安い」を兼ね備え続けられる事は必ずしも自明ではない。しかしHPC専用に高性能なシステムを開発することは、従来のハイパフォーマンスコンピューティング市場が衰退してきたことから私企業に求めることは無理がある。そういう意味では、地球シミュレータのような大規模なHPCシステムを国家戦略として実現することに意味があるとも言える。しかし、ごく限られた研究者だけが高性能なHPCシステムを使う状況では社会へのインパクトが限られる。現時点での選択肢は2つある。
一つは限定された場所にある高性能なHPCシステムをどこからでも使用可能にする枠組みの作成、すなわちGrid Computingへの道。もう一つは、高性能なHPCシステムを大半をCommodity部品を使用し、少数のCommodity流用では賄えない部分を最小限開発する技術開発に投資することである。特にクラスタインタコネクトには、低レイテンシと低ホスト負荷が必要なため、ネットワークとホスト計算機との接続を担うNIC部分は、技術開発が必要な第一候補であると考える。
参考文献
[1] | "Computer Architecture: A Quantitative Approach" 2nd Edition, J.L.Hennessy, D.A. Patterson, Morgan Kaufman Publishers, Inc. 1996 |
[2] | "Pentium Pro Family Developer's Manual", Intel Corporation, 1996 |
[3] |
"Unleashing the POWER of Networks" |