@IT|@IT自分戦略研究所|QA@IT|イベントカレンダー+ログ | ||
Loading
|
<< 最適なHPCシステム導入のためのテクノロジーセミナー 協力企業 >>
|
@IT > HPCユーザーによるベンチマークテスト結果、あのCPUの実力はどう判定されたか? |
企画・制作:アットマーク・アイティ
営業企画局 制作:アットマーク・アイティ 編集局 掲載内容有効期限:2004年4月16日 |
|
|
インテルとの共催でアットマーク・アイティが開催した「最適なHPCシステム導入のためのテクノロジーセミナー」では、インテルの64ビットプロセッサロードマップ、Intel® Itanium® Processor Familyアーキテクチャ向けの実践的な最適化テクニック、それにユーザー視点から見たIAプロセッサの実力など、密度の濃いセッションが行われた。東京・半蔵門のダイヤモンドホテルで行われたセミナーの様子をレポートすることにしよう。
最初のセッションを担当したのは、Intel® Itanium® Processor Familyのテクニカルマーケティグを長く務めているインテルのプロダクトマネージャ廣田洋一氏である。同氏は今後のIntel® Itanium® Processor Familyアーキテクチャのロードマップについて講演を行った。 従来のx86プロセッサとは異なる命令体系を定義し、まったく新しいアーキテクチャとしてスタートしたIntel® Itanium® Processor Familyだが、順調にユーザーへの浸透が進んでいることをアピールした。すでにフォーチュン500社のうち189社、その中のトップ10だけを見ても40%の企業が基幹業務にインテルアーキテクチャを導入している。このうちIntel® Itanium® Processor Familyを採用した企業は、昨年前半は19システムに過ぎなかったが、今年1月の段階で32システムと急速な伸びを示しているという。 「インテル対他社という構図とは別に、インテルシステムの中でのIA-32からIntel® Itanium® Processor Familyへの移行は急ピッチで進んでいる。この流れが止まることはない。ではインテル対他社という構図で見るとどうなのか? AMDが導入されているのはごく一部。IBMのPowerアーキテクチャもパフォーマンスは高いが、実際の導入件数は徐々に落ちている。その結果、われわれの市場が広がっているのが現状だ」(廣田氏) ■ サーバ分野と共に進みつつあるHPCへの応用 サーバ分野におけるIntel® Itanium® Processor Family化への流れと同様に進みつつあるのが、HPCへの応用である。Intel® Itanium® Processor Familyのパッケージや消費電力の低下などにより、高密度の超並列コンピュータへの応用も始まっている。米インテルが進めている「サンダープロジェクト」では、3840個のItanium®システムを接続した大規模なクラスタリングシステムを構築中で、ターゲットパフォーマンスはピーク値で20TFLOPSにもなる。 「大規模なHPCシステムへのItanium®の応用もまた、IA-32からIntel® Itanium® Processor Familyへと移り変わっている」(廣田氏)。 こうしたIntel® Itanium® Processor Familyプロセッサの応用範囲拡大、用途の多様化に向け、最初は巨大なカートリッジから始まったIntel® Itanium® Processor Familyプロセッサの歴史も、現在は大きく3つの製品ラインに分かれている。 1つは最大限のキャッシュ容量を内蔵させ、最高のパフォーマンスを目指したマルチプロセッサシステム(MP)向けItanium®2ライン。もう1つはキャッシュサイズを控えめにし、価格あたりのパフォーマンスを最大化したデュアルプロセッサ(DP)向けItanium®2ライン。そして高密度のコンピュータ配置を重視し、消費電力あたりのパフォーマンスでベストの製品となる低電圧版(LV)Itanium®2である。 ■ 製品ラインナップのバージョンアップでどう変わる? これらの製品ラインは、今年の中ごろに更新される見込みだ。MPラインとDPラインは、Madisonのコードネームで呼ばれるコアを、LVラインはDeerfieldのコードネームで知られているコアをそれぞれアップデート。MPラインの動作クロック周波数は1.5GHzを越え、3次キャッシュに9Mバイトを搭載する。しかしもちろん、こうした性能強化は一時的なものではない。廣田氏は「クロック周波数やキャッシュメモリ増量といったパフォーマンスアップには、各製品ラインごとに継続して取り組むと話した。 さらに2005年には、新しいアプローチでパフォーマンス向上を図ったMontecitoが投入される。Montecitoは1チップに2つのIntel® Itanium® Processor Familyコアを載せた製品。24Mバイトの共有3次キャッシュメモリ、ハイパースレッディング機能を搭載し、90ナノメートルプロセスで製造される製品だが、これまでのItanium®2と同じソケットにプロセッサを差し替えて利用することも可能だ。 こうした製品ロードマップによる製品強化の計画以外に、廣田氏はIntel® Itanium® Processor Familyの将来性を強調している。「Itanium®2はXeon®に比べ、半導体技術の進歩に対してのパフォーマンス向上幅が大きい。Xeonはムーアの法則の1.1倍で性能が増加しているが、Itanium®2は2倍のペース。アーキテクチャを一新し、性能向上の余裕があるためだ」と廣田氏。 今後はマルチスレッド化とマルチコア化の両面でアーキテクチャの改善を図り、キャッシュメモリ容量の増加、クロックの高速化、マイクロアーキテクチャの効率化、命令レベルの並列化、データ並列化、新機能の追加や新高速バスなどを、Intel® Itanium® Processor Familyに対して加えていく計画があるという。 また半導体業界全体が抱えている、製造プロセスの微細化に伴う消費電力増加(=リーク電流の増加)を抑える技術を開発していることにも言及。トランジスタを駆動する際のバイアス電圧を動作に合わせて動的に制御することでリーク電流を最小限に抑えられる技術を紹介した。
続いてインテルHPCシニアアーキテクトの池井満氏が、Itanium®2における最適化プログラミングの“ツボ”について講演を行った。従来のIA-32プロセッサと根本的にアーキテクチャが異なるItanium®2では、プログラミングやコンパイラオプションの設定方法のコツが異なるという。ポイントは「コンパイラに対して、最適化に際しての簡単な指示を与えてあげること」だという。 Itanium®2はVLIWを基礎としてさまざまな機能を積み上げたアーキテクチャであり、コンパイラによる並列化が速度向上の鍵となる。コンパイラが命令の並列実行が行えることを、プログラム中で指示することで大きく性能が上がる。 例えばコンパイルオプションは「-O2」がデフォルト値だが、この場合コンパイラは命令の実行順序を入れ替えない範囲でしか最適化を行わない。演算結果に微少な違いが出てくる可能性があるためだ。命令の並列度を上げるためには、演算順序の入れ替えを行う必要も出てくる。 streamというFortranプログラムの場合、O2のままでも、ピーク転送性能の1/3までは出るが、オプションを「-03」にすることでプリフェッチ、ロードペア、ソフトウェアパイプライン、ループアンローリングといったテクニックが有効になり、ほぼピーク性能まで労せずにパフォーマンスを高めることができる。 ■ プロセッサをオプティマイズするテクニックとは? これらオプティマイズの様子は、インテル製コンパイラの最適化レポート(-optreport)をオンにすると報告される情報からも読み取ることが可能だ。例えば、streamの場合、O2オプションでコンパイルしたときのバンドル個数は519個で、その中に命令が958個詰め込まれている。バンドルとはIntel® Itanium® Processor FamilyにおけるVLIW命令で、1バンドル中に最大3個の命令が入る。つまり理論最大値としては、バンドル数の3倍の命令数が入ることになる。 もう1つの重要なレポートは、ソフトウェア・パイプライニングのInitiation Interval(II)に関する情報だ。IIとはさまざまな処理におけるイニシエーションに必要なクロック数で“ある命令・処理のあと○○クロック後でなければ実行できない”ことを示している。 例えばIIが1ならば命令同士の依存性がなく、余分なウェイト(NOP)なくバンドルの実行が行えている状態だとコンパイラが判断していることになる。しかし小さなループ処理の中には、アルゴリズムによりバンドル間依存が発生してしまうなど、さまざまな要因で意図的なNOPの挿入が必要になる。 池井氏は「インテルのコンパイラはIntel® Itanium® Processor Familyでの性能を高めるため、長いIIが必要な部分でソフトウェアパイプラインを組む。しかし、実行結果に影響が出ない安全な範囲での最適化であるため、コンパイラに適切な指示を与えることが大切」と話す。 具体的には実行順序の入れ替えが許容できるアルゴリズムの場合に、pragma文(C言語の場合)で実行スワップが可能なことを示せば、コンパイラが適切なソフトウェアパイプラインを組む。このほか、IIには実行ユニット数の制限によるものなどもあり、これもコンパイラへの指示(ディレクティブ)の挿入で解決可能だ。 ■ 大幅に計算能力をアップさせる“技”の存在 また、コンパイル時に明示的な並列コードが出力できるIntel® Itanium® Processor Familyの場合、異なるプロシージャ間の最適化を指示するプロシージャ間最適化(IPO)や、実行プロファイルを元に最適化を行うプロファイル・ガイド最適化(PGO)が有効に働く場合が多い。 例えばこれらオプションを設定するだけで、gzipの性能はgccでコンパイルした時の最大5.4倍にまで向上する(ディレクティブは指定していない場合)。オプションなし時も4.1倍の性能となるが、オプション設定だけでさらにパフォーマンスが25%以上アップするのである。 池井氏はまとめとして次のように話した。 「コンパイラの最適化レポートにはソフトウェアパイプラインの可能性について重要な情報が含まれている。これを利用して、重要なループ部分のソフトウェアパイプライン化の状況を確認してほしい。Itanium®には、レジスタリネームでソフトウェアパイプラインを組むための特別な命令が用意されており、これを利用することで大幅に計算能力がアップする。 ディレクティブを指示したり、細かなコンパイルオプションを指示することで、コンパイラの最適化をサポートすることも非常に有効な手段だ。また、該当する処理がある場合、インテルパフォーマンスライブラリを利用してほしい。このライブラリはハンドオプティマイズでプロセッサのパフォーマンスを最大限に引き出す強力なライブラリで、単純に呼び出すだけで大幅な性能向上を図ることができる。 IPOとGPOは、特にIntel® Itanium® Processor Familyで有効な最適化手段であり、必ずテストして欲しい。過去にインテル製コンパイラを用い、IA-32上で有効でなかったプログラムに対しても、改めて試してみる価値がある」
セミナー最後のセッションを務めたのは、大阪大学レーザー核融合研究センターの堀越将司氏、けいはんな文化学術協会大規模データマネジメント研究会の上島豊氏の二人である。上島氏は長年、並列コンピュータのプログラミングに取り組んできた人物で、特定非営利活動法人のけいはんな文化学術協会で、大規模データマネジメントにおける並列コンピューティングの研究を行っている。 まず堀越氏が、プロセッサ単体のベンチマークを計測した結果を、ほかのプロセッサと比較しながら報告した。ベンチマークに利用したマシンは、表1の通り。ただしNEC SX-6、富士通 PRIMEPOWER、日立 SR8000は非占有環境で使用。またPentium®4は単精度と倍精度でピーク性能が異なる(SIMD命令で同時演算可能な数が倍精度で半分になる)ため、単精度時のパフォーマンスで有利になる。
■ あらゆるベンチマークで高い能力を発揮したItanium®2 ベンチマークに利用したコードは以下の4種類。
各ベンチマークのグラフは、下図を参照していただきたいが、いずれの場合もItanium®2が、ベクトルスーパーコンピュータのSX-6に迫る結果を残した。特に3種類の流体コードは、堀越氏自身がベクトルコンピュータ向けにチューニングを施したコード。さすがにベクトルコンピュータには劣るものの、スカラプロセッサとしては抜きんでて良い結果を出しているのが分かる。ピーク性能に対する実効性能という視点でも、Itanium®2はあらゆるベンチマークで平均して高い効率を実現した。
堀越氏によると「Itanium®2は標準の最適化オプションに加え、プロシージャ間最適化や実行プロファイルを利用した最適化を行うことで、劇的なパフォーマンスの向上が見られる。基本的にコンパイラ任せで、VLIWに命令を詰め込む処理が有効に働く」という。 またItanium®2はクロック周波数あたりの実効演算性能が高いことも特徴で「クロック周波数を向上させやすいアーキテクチャであるにもかかわらず、クロック周波数あたりの性能も高い。将来のクロック周波数向上に伴って、将来のパフォーマンスアップにも期待できるだろう」と堀越氏。 ■ プロセッサの演算性能に見合うネットワークの必要性
一方、上島氏は大規模計算機システムの問題点としてネットワーク速度の問題を指摘した。Itanium®2の単体演算性能は高く、SMP環境でもそれは同じだろう。しかしクラスタに使うネットワークのパフォーマンスが、大幅な性能低下を招く可能性があり、プロセッサパフォーマンスに見合うネットワークの構築が肝要だと話す。 「例えば180ノード720プロセッサのAlpha Serverで姫野ベンチXLサイズを実行させたところ、各ノードのプロセッサすべて(4個)をベンチマークプログラムに割り当てると、3個だけを割り当てた場合よりも性能が落ちてしまった。これはOSカーネルやクラスタ管理のミドルウェア、通信処理にかかわるオーバーヘッドプロセスなど計算をインタラプトするためだ」(上島氏) つまり高速なネットワークでクラスタを組んだからといって性能が向上するのではなく、ノード数増大や高速ネットワークによるオーバーヘッドプロセスの増加も加味し、本来の処理以外に使えるCPU時間を確保しなければならないということだ。 最も単純な解決策は、各ノードごと1プロセッサずつを余らせて実行するコードを作ることだ。そうすることにより、ミドルウェアやOSのプロセスが滞りなく実行可能になる。しかしこの場合、ノード数分のプロセッサの処理能力の大部分が無駄になる(180ノードの場合、180個のプロセッサが本来の演算処理を行わなくなる)。大量のノードで構成される大規模なクラスタシステムでは、各パーティションの先頭と最後尾のノードを、プログラム実行に利用しないようにすることで、演算処理に使われないプロセッサの数を最小化可能だ。 「またここまで演算性能が高速だと、それに見合う性能もネットワークに必要となり、システム全体におけるネットワークコストがかさんでしまう。言い換えればプロセッサ自身のコストはネットワークコストの高さにマスクされ、全体に対するプロセッサコストの割合が低下する。インテル製プロセッサの中にあって割高と言われるItanium®2も、性能の高さを考えれば十分にハイコストパフォーマンス」と上島氏。 「しかも1ノードあたりの性能が高いため、同じ計算能力を求めるならばPentium®4よりもItanium®2の方がノード数が少なくなる。これはネットワークパフォーマンスにも影響するため、中規模以上のシステムではIA-32よりもIntel®
Itanium® Processor Familyの方がコスト面でも有利と言える」(上島氏)と、HPC分野におけるItanium®2の優秀性を挙げた。
|
|