LINPACKは、主に線形代数の数値計算を行うための機能を提供するソフトウェア
ライブラリです。行列やベクトルに関する多様な演算処理が
実装されています。
概要と起源
この
ライブラリは、アメリカ合衆国のアルゴンヌ国立研究所において、FORTRAN言語で開発されました。MINPACKやEISPACKといった他の数値計算
ライブラリ群と同様の流れを汲んでおり、
ジャック・ドンガラ氏らによって開発が進められました。1970年代から1980年代初頭にかけての
スーパーコンピュータを対象として設計されましたが、その後、より高度で洗練された機能を持つ
LAPACKという
ライブラリに取って代わられました。LINPACK内部では、ベクトルや行列の基本的な演算処理を行うための基盤
ライブラリであるBLAS(
Basic Linear Algebra Subprograms)が活用されています。
後に広く知られることになる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: そのシステムで達成できた最大の性能値(G
FLOPS単位)
Nmax: Rmaxを達成した際の問題サイズ
N1/2: Rmaxの半分の性能となる問題サイズ
Rpeak: そのシステムの理論上の最大性能値(G
FLOPS単位)
これらの測定結果は、半年ごとに更新される
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日半もの時間を要するようになるだろうと予測しており、これは性能評価における新たな課題となっています。