LINPACK

LINPACKは、主に線形代数の数値計算を行うための機能を提供するソフトウェアライブラリです。行列やベクトルに関する多様な演算処理が実装されています。

概要と起源


このライブラリは、アメリカ合衆国のアルゴンヌ国立研究所において、FORTRAN言語で開発されました。MINPACKやEISPACKといった他の数値計算ライブラリ群と同様の流れを汲んでおり、ジャック・ドンガラ氏らによって開発が進められました。1970年代から1980年代初頭にかけてのスーパーコンピュータを対象として設計されましたが、その後、より高度で洗練された機能を持つLAPACKというライブラリに取って代わられました。LINPACK内部では、ベクトルや行列の基本的な演算処理を行うための基盤ライブラリであるBLAS(Basic Linear Algebra Subprograms)が活用されています。

後に広く知られることになるLINPACKベンチマークは、元々はLINPACKのユーザーマニュアルの一部として公表されたものです。

LINPACKベンチマーク


LINPACKベンチマークは、コンピュータシステムの浮動小数点演算能力を評価するために、LINPACKライブラリの機能をベースとして考案されました。開発者の一人であるジャック・ドンガラ氏が中心となって生み出されたこのベンチマークは、科学技術計算分野で頻繁に現れる形式である n×n の線形方程式系 Ax = b を解く速度を測定することで、システムの性能を数値化します。このベンチマークの最新版は、世界の高速なコンピュータの性能を比較するTOP500リストの作成において、主要な評価指標として利用されています。

このベンチマークの目的は、コンピュータが実際の科学・工学分野の問題を解決する際の性能に近い値を得ることにあります。しかし、一つの単純な測定値だけでコンピュータシステムの全ての側面を評価することは不可能であり、あくまで性能評価の一つの切り口に過ぎません。それでも、コンピュータメーカーが公表する理論上の最大性能値(ピーク性能)に対して、LINPACKベンチマークによる測定値は、より現実的な性能を推定するための有効な補正情報を提供します。ピーク性能は、プロセッサのクロック周波数やサイクルあたりの演算能力から算出される理想的な値であり、実際のアプリケーション実行時の性能は常にこれを下回ります。システムの性能は多岐にわたる要素が複雑に影響し合って決まるため、LINPACKベンチマークが測定する64ビット浮動小数点演算(主に加算と乗算)の1秒あたりの実行回数(FLOPS)は、あくまで特定の演算に限定された性能指標となります。したがって、実アプリケーションの実行性能は、LINPACKベンチマークで引き出せる最高性能よりも大幅に低くなる可能性がある点に留意が必要です。

ベンチマークの歴史的展開


LINPACKベンチマークは、1979年にLINPACKのユーザーマニュアルの付録として初めて公開されました。当初は、ユーザーがLINPACKパッケージを用いて計算を行う際に要する時間を予測する手助けとなることを意図して設計されました。初期のバージョンでは、当時のコンピュータのメモリ容量を考慮し、サイズ100の行列を用いた23種類の問題が用意されていました。これらの問題では、-1から1の範囲で無作為に生成された10000個の浮動小数点数からなる密係数行列に対して、部分ピボット選択を用いたLU分解を実行して解を求めました。

その後、コンピュータのハードウェア性能が向上し、行列やベクトル演算の実装が進化するにつれて、ベンチマークもそれに合わせて改訂されていきました。行列のサイズを300や1000に拡大したり、アルゴリズムの選択に関する制限を緩和したりすることで、新しいハードウェアアーキテクチャの最適化能力をより反映できるように進化しました。特に、行列サイズが1000の問題を扱うベンチマークは「LINPACK 1000」と呼ばれ、問題を解くアルゴリズムの変更がある程度許容されるようになりました。1991年には、ハードウェアの能力に合わせて任意のサイズの問題を解くことができるベンチマークが登場し、これによりスーパーコンピュータの極限的な性能をより正確に測定することが可能になりました。この発展が、その2年後に開始されるTOP500リストの基盤となりました。

主なベンチマーク形式


LINPACKベンチマークにはいくつかの形式が存在します。

LINPACK 100


1979年のオリジナル版に最も近い形式です。サイズ100の行列に対し、部分ピボット選択を伴うガウスの消去法を用いて解を求めます。この手法で必要な浮動小数点演算回数は、行列の次数を n とすると約 2/3n³ + 2n² 回(n=100の場合)となります。行列サイズが小さく、アルゴリズムの柔軟性も限られているため、多くの現代的なコンピュータではその最大性能を引き出すことは困難ですが、特定の計算中心のユーザープログラムの性能評価にはある程度の目安となります。

LINPACK 1000


問題の規模を拡大し、行列の次数を1000とした形式です。アルゴリズムの選択が一部可能になったことで、コンピュータの能力をより最大限に引き出すことが可能になりました。ただし、演算回数は約 2/3n³ + 2n² 回(n=1000の場合)であるという基本条件と、相対的な計算精度を維持するという条件は残されています。

HPLinpack (High-Performance LINPACK)


従来のベンチマークは、並列処理能力を持つ現代のスーパーコンピュータの性能測定には不向きでした。そこで、並列計算に特化した新しいベンチマークとして、Linpack’s Highly Parallel Computing benchmark、すなわちHPLinpackが考案されました。HPLinpackでは、測定対象となるマシンの最高性能を引き出せる最大の行列サイズ n を選択することが可能です。必要な演算回数はやはり約 2/3n³ + 2n² 回ですが、アルゴリズムの選択肢は広がっています(ただし、演算回数を大幅に削減するシュトラッセンのアルゴリズムなどは許容されません)。加えて、計算結果の精度に関して、マシンの持つ精度(ε)や問題サイズ(n)などを考慮した特定の誤差基準を満たすことが求められます。

HPLinpackの測定結果として、各システムについて以下の項目が報告されます:

Rmax: そのシステムで達成できた最大の性能値(GFLOPS単位)
Nmax: Rmaxを達成した際の問題サイズ
N1/2: Rmaxの半分の性能となる問題サイズ
Rpeak: そのシステムの理論上の最大性能値(GFLOPS単位)

これらの測定結果は、半年ごとに更新されるTOP500リストのランキングに反映されます。

実装


LINPACKベンチマークの基本的な規則に基づいたプログラムの実装は様々です。オリジナルはFORTRANで書かれていますが、C言語Javaなどで実装されたバージョンも存在します。

HPLは、HPLinpackのC言語による代表的な実装です。元々はベンチマーク実施のためのガイドラインを補足する形で開発されましたが、現在ではTOP500ランキングの測定で広く利用されています。HPLは、指定された次数の線形方程式系を生成し、部分ピボット選択を伴うLU分解によって解を求めます。実行には、分散メモリ並列処理のためのMPIライブラリと、基礎的な線形代数演算を行うためのBLASまたはVSIPLライブラリが必要となります。

HPLのアルゴリズムの主な特徴としては、データを2次元のグリッド状に分散配置する方式、先行読み出し(look-ahead)を取り入れたright-looking型のLU分解、パネル分解における再帰的手法、パネルのブロードキャストにおける複数の方式選択、通信帯域幅を効率的に利用するスワップ・ブロードキャスト手法、そして先行読み出しを伴う後退代入などが挙げられます。

評価と批判


LINPACKベンチマーク、特にHPLinpackがコンピュータ性能評価で広く受け入れられた要因として、そのスケーラビリティ(大規模システムへの対応能力)、単一の数値で性能を示すため比較が容易である点、そして長年にわたる測定結果の蓄積による歴史的データベースの存在が挙げられます。

しかし、その登場当初から、LINPACKベンチマークに対しては様々な批判が存在します。一つには、このベンチマークが高い性能を引き出すためには、特定のハードウェアに最適化された高度なプログラミング技術が要求され、その最適化が他の種類の計算問題や異なるアーキテクチャでは有効でない場合が多いという点です。また、ベンチマークが対象とする問題(密行列を用いた線形方程式系)が、科学技術計算全体を十分に代表しているわけではないという批判もあります。例えば、疎行列を扱う問題や、データ転送能力が性能を左右する問題など、LINPACKベンチマークでは適切に評価できない計算が多く存在します。

LINPACKベンチマークの推進者であるジャック・ドンガラ氏自身も、このベンチマークがCPUのピーク性能やコア数ばかりに注目しがちで、帯域幅やネットワーク性能への負荷が不十分である点を認めています。米国立スーパーコンピュータ応用研究所のトム・ダニング氏は、LINPACKベンチマークを「興味深い現象」と呼び、「ほとんど全ての関係者がその限界を理解しながらも、長年使われてきた『マインドシェア』から使用を続けている」と述べています。ドンガラ氏は、システム性能の多様な側面を明らかにする重要性を強調しており、TOP500の主催者もベンチマークの範囲を拡大する方法を積極的に模索しています。

代替または補完的なベンチマークとして検討されているものには、より多様な計算パターンを含むHPCチャレンジベンチマーク疎行列を用いた線形方程式を解くHPCG(High Performance Conjugate Gradients)、そして近年重要性を増しているグラフ構造の処理性能を評価するGraph500などがあります。

測定時間の課題


高性能なシステムでHPLinpackの高い性能値を得ようとすると、ベンチマークの実行にかかる時間が長くなる傾向にあります。ジャック・ドンガラ氏は2010年の会議で、将来的には測定に2日半もの時間を要するようになるだろうと予測しており、これは性能評価における新たな課題となっています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。