(Translated by https://www.hiragana.jp/)
LINPACK - Wikipedia

LINPACK(リンパック)は、しゅとして線型せんけい代数だいすう数値すうち計算けいさん目的もくてきとした、行列ぎょうれつおよびベクトルの演算えんざん実装じっそうされているライブラリである。

LINPACK
作者さくしゃ ジャック・ドンガラ、ジム・バンチ、クリーブ・モラー、ギルバート・スチュアート
プログラミング
言語げんご
FORTRAN
種別しゅべつ ライブラリ
公式こうしきサイト www.netlib.org/linpack/
テンプレートを表示ひょうじ

概要がいよう

編集へんしゅう

MINPACKEISPACK同様どうよう米国べいこくアルゴンヌ国立こくりつ研究所けんきゅうじょFORTRANライブラリとして開発かいはつされた。実際じっさい開発かいはつおこなったのは ジャック・ドンガラ、ジム・バンチ、クリーブ・モラー、ギルバート・スチュアートである。1970年代ねんだいから1980年代ねんだい初期しょきスーパーコンピュータ対象たいしょうとして設計せっけいされ[1][2]、そのより洗練せんれんされたライブラリLAPACKってわられた。

LINPACK は BLAS(Basic Linear Algebra Subprograms基本きほん線形せんけい代数だいすうサブプログラムぐん)ライブラリを使つかってベクトル演算えんざん行列ぎょうれつ演算えんざんおこなう。

後述こうじゅつするLINPACKベンチマークは、LINPACKのユーザーズマニュアルの一部いちぶとして公開こうかいされたのが最初さいしょである。

ベンチマーク

編集へんしゅう
LINPACK benchmarks
作者さくしゃ ジャック・ドンガラ、ジム・バンチ、クリーブ・モラー、ギルバート・スチュアート
初版しょはん 1979ねん (1979)
公式こうしきサイト www.netlib.org/benchmark/performance.ps
テンプレートを表示ひょうじ

LINPACK ベンチマークは LINPACK にもとづいたベンチマークプログラムで、システムの浮動ふどう小数点しょうすうてん演算えんざん性能せいのう評価ひょうかする。ジャック・ドンガラ考案こうあんしたもので、理学りがく工学こうがく一般いっぱんてきn×n線型せんけい方程式ほうていしきけい[3] Ax = b速度そくど測定そくていする。このベンチマークの最新さいしんばんTOP500世界せかい高速こうそくなコンピュータの性能せいのうとしてランキングに使用しようされている[4]

コンピュータがじつ世界せかい問題もんだい性能せいのう近似きんじることを目的もくてきとしている。しかし、1つの測定そくていでコンピュータシステムのあらゆる性能せいのう代表だいひょうさせることは不可能ふかのうであり、あくまでも1つの単純たんじゅんである。それでも、メーカーが提供ていきょうするピーク性能せいのうたいしてLINPACKベンチマークがよい補正ほせい提供ていきょうしている。ピーク性能せいのうとは、そのコンピュータが理論りろんじょう達成たっせいしうるさい高性能こうせいのうであり、クロック周波数しゅうはすう、1秒間びょうかん命令めいれいサイクルすう、1サイクルで実行じっこう可能かのう演算えんざん回数かいすうなどから計算けいさんされる。実際じっさい性能せいのうつねにピーク性能せいのうよりもひく[5]。コンピュータの性能せいのう様々さまざま要素ようそ相互そうごからった複雑ふくざつ問題もんだいである。LINPACKベンチマークで測定そくていするのは、64ビット浮動ふどう小数点しょうすうてん演算えんざん通常つうじょう加算かさん乗算じょうざん)の1びょうあたりの実行じっこう回数かいすうFLOPS)である。しかし、じつアプリケーションを実行じっこうしたときの性能せいのうは、LINPACKベンチマークを適切てきせつ設定せっていして測定そくていしたときの最高さいこう性能せいのうよりずっとひくくなる可能かのうせいたか[6]

LINPACKベンチマークは1979ねん、LINPACKのユーザーズマニュアルの付録ふろくとして公開こうかいされたのが最初さいしょである[7]。LINPACKパッケージを使つかって問題もんだいさいにかかる時間じかんをユーザーが推定すいていするがかりをあたえることを目的もくてきとして設計せっけいされた。そのため、当初とうしょおおきさ100の行列ぎょうれつ問題もんだいを23種類しゅるい用意よういしていた。おおきさは当時とうじのメモリ容量ようりょう考慮こうりょして選択せんたくされた。-1 から 1 の範囲はんいない浮動ふどう小数点しょうすうてんすうを10000作為さくい生成せいせいみつ係数けいすう行列ぎょうれつつくる。そして、部分ぶぶんピボット選択せんたくによるLU分解ぶんかい使用しようする。その行列ぎょうれつおおきさを300や1000にしたり、制限せいげんゆるめるなどして、行列ぎょうれつやベクトルの演算えんざん実装じっそうするようになったハードウェアアーキテクチャによる最適さいてき役立やくだてられるようにしていった[8]。オーダー1000のおおきさの問題もんだい場合ばあい、そのベンチマークを LINPACK 1000 とび、問題もんだいくアルゴリズムを修正しゅうせい可能かのうである[5]。1991ねんには任意にんいおおきさの問題もんだいくベンチマークが登場とうじょうした[9]。これでスーパーコンピュータ極限きょくげん性能せいのうちかられるようになり、その2ねんTOP500リストが公開こうかいされるようになった。

具体ぐたいてきなベンチマーク

編集へんしゅう

1979ねん、LINPACKのユーザーズマニュアル[10]公表こうひょうされたオリジナルのベンチマークにほぼちかい。部分ぶぶんピボット選択せんたくによるガウスの消去しょうきょほう問題もんだいき、2/3n3 + 2n2 かい浮動ふどう小数点しょうすうてん演算えんざんおこなう。n は 100 で、問題もんだい定義ていぎする行列ぎょうれつ A次数じすうである。サイズがちいさく、ソフトウェアの柔軟じゅうなんせいけていたため、おおくの最新さいしんのコンピュータでは限界げんかい性能せいのうすことができない。しかし、計算けいさん中心ちゅうしんのユーザープログラムの性能せいのう見積みつもるのにはある程度ていど役立やくだ[5]

問題もんだいのサイズをおおきくして行列ぎょうれつ次数じすうを1000とし、アルゴリズムを変更へんこう可能かのうにしたため、コンピュータの限界げんかいちか性能せいのうせるようになった。のこっている制限せいげんは、相対そうたい精度せいどひくくしないというてんと、演算えんざん回数かいすうは 2/3n3 + 2n2 かい (n = 1000) だというてんである[5]

従来じゅうらいのベンチマークは並列へいれつコンピュータの性能せいのう測定そくていにはてきしていない[11]。そこで、並列へいれつコンピュータきのあらたなベンチマーク Linpack’s Highly Parallel Computing benchmark、または HPLinpack ベンチマークが考案こうあんされた。HPLinpackではサイズ n をそのマシンでの最高さいこう性能せいのうせるにまでおおきくできる。演算えんざん回数かいすうは 2/3n3 + 2n2 かいだがアルゴリズムは選択せんたく可能かのうである。シュトラッセンのアルゴリズム演算えんざん回数かいすうらしてしまうので使つかえない[12]精度せいどつぎしきつようになる必要ひつようがある。

 

ここで   はそのマシンの精度せいどn問題もんだいのサイズ[13] 行列ぎょうれつノルム O-記法きほうである。

かくシステムについて、つぎ数値すうち報告ほうこくする[5]

  • Rmax: そのマシンで最大さいだい問題もんだいについての性能せいのうGFLOPS
  • Nmax: そのマシンでの最大さいだい問題もんだいのサイズ
  • N1/2: Rmaxの半分はんぶん性能せいのうとなるときの問題もんだいのサイズ
  • Rpeak: そのマシンの理論りろんじょうのピーク性能せいのう(GFLOPS)

これらの結果けっか使つかって、TOP500リストがとしに2かい更新こうしんされる[4]

実装じっそう

編集へんしゅう

前節ぜんせつではベンチマークの基本きほんてき規則きそく解説かいせつしている。それら規則きそくもとづいたプログラムの実装じっそう様々さまざまであり、FORTRANによる実装じっそう[14]C言語げんごによる実装じっそう[15]Javaによる実装じっそう[16]などがある。

HPLはHPLinpackをC言語げんご実装じっそうしたもので、本来ほんらいはガイドラインとしてかれたものだが、TOP500でもひろ使つかわれている。なお、HPL以外いがいのテクノロジーやパッケージを使つかうことに問題もんだいはない。HPLはnつぎ線型せんけい方程式ほうていしきけい生成せいせいし、部分ぶぶんピボット選択せんたくによるLU分解ぶんかいでそれをく。使用しようするにはMPIBLASまたはVSIPLをインストールしておく必要ひつようがある[17]

おおまかにえば、このアルゴリズムにはつぎのような特徴とくちょうがある[18][19]

  • 2次元じげんブロックで周期しゅうきてきデータ配布はいふおこなう。
  • 様々さまざまふかさの先読さきよともなう right-looking ほう一種いっしゅ使つかったLU分解ぶんかい
  • 再帰さいきてきパネル分解ぶんかい
  • パネルブロードキャストには6種類しゅるい方式ほうしきがある。
  • 帯域たいいきはば低減ていげんするスワップ・ブロードキャスト・アルゴリズム
  • ふかさ1の先読さきよみをともな後退こうたい代入だいにゅう

LINPACKベンチマークが成功せいこうした要因よういんは、HPLinpackのスケーラビリティ[20]、1つの数値すうち生成せいせいするため比較ひかく容易よういであるという事実じじつ、それまでの測定そくてい蓄積ちくせきしたデータベースが存在そんざいすること[21]げられる。しかしリリース直後ちょくごからLINPACKベンチマークには地道じみち最適さいてきほどこすプログラマだけが達成たっせいできる性能せいのうレベルを提供ていきょうするもので、しかもその最適さいてきはそのマシンでしか意味いみいという批判ひはんびせられた[22]。また、いている問題もんだいみつ係数けいすう行列ぎょうれつ線型せんけい方程式ほうていしきけいであり、それが科学かがく技術ぎじゅつ計算けいさん全般ぜんぱん代表だいひょうするものではないという批判ひはんもある[23]。LINPACKベンチマークを推進すいしんしてきたジャック・ドンガラは、CPUのピーク性能せいのうとCPUすうだけが強調きょうちょうされており、帯域たいいきはばやネットワークへのストレスが十分じゅうぶんでないとべている[24]べい国立こくりつスーパーコンピュータ応用おうよう研究所けんきゅうじょのトム・ダニングはLINPACKベンチマークについて「興味深きょうみぶか現象げんしょうの1つだ。それをっているほとんど全員ぜんいんがそれをあざわらう。かれらはその限界げんかい理解りかいしているが、なんねんにもわたって我々われわれはその使つかってきたため、一種いっしゅのマインドシェアがしょうじている」とべた[25]。ドンガラによれば、「システムの性能せいのう様々さまざまめんからあきらかにすることは重要じゅうよう」なので「TOP500の主催しゅさいしゃはベンチマークの範囲はんい拡大かくだいする方法ほうほう積極せっきょくてき模索もさくしている」という[20]。TOP500のベンチマークの拡張かくちょうについて可能かのうせいたかいものとして、HPCチャレンジベンチマーク がある[26]に、倍精度ばいせいど浮動ふどう小数しょうすう要素ようそとする行列ぎょうれつ演算えんざんとく乗算じょうざん)を多用たようして、だい規模きぼ連立れんりついち方程式ほうていしきくというベンチマークであるてん共通きょうつうだが、みつではなくうと行列ぎょうれつ対象たいしょうとするHPCG(Conjugate Gradient、共役きょうやく勾配こうばいほう)や、そもそも数値すうち計算けいさんではない応用おうよう近年きんねん重要じゅうようせいしているネットワーク構造こうぞう(グラフ)の情報処理じょうほうしょり対象たいしょうとしたGraph500などがある。

測定そくていにかかる時間じかん問題もんだい

編集へんしゅう

ジャック・ドンガラによれば、HPLinpackでよい性能せいのうようとすると測定そくてい時間じかんがかかるようになってきているという。2010ねん開催かいさいされた会議かいぎで、かれは「すうねん以内いないに」測定そくていに2にちはんかかるようになるとの予想よそうおこなった[27]

脚注きゃくちゅう

編集へんしゅう
  1. ^ Matlis, Jan (2005ねん5がつ30にち). “Sidebar: The Linpack Benchmark”. ComputerWorld. http://www.computerworld.com/s/article/102050/Sidebar_The_Linpack_Benchmark 
  2. ^ Markoff, John (1991ねん9がつ22にち). “Technology; Measuring How Fast Computers Really Are”. New York Times. http://select.nytimes.com/gst/abstract.html?res=F20616FF39550C718EDDA00894D9494D81 
  3. ^ ただしみつ係数けいすう行列ぎょうれつ一般いっぱんに、差分さぶんほう有限ゆうげん要素ようそほうなどでかれるだい規模きぼ問題もんだいは、連結れんけつリストによって記述きじゅつされる参照さんしょう局所きょくしょせいひく疎行列そぎょうれつけいであり、キャッシュメモリ恩恵おんけいをほとんどけない。(つまりメモリバンドはばによって性能せいのうまる。)したがって、かならずしもじつアプリケーションの性能せいのうしめすものではなく、指標しひょうひとつとしてかんがえるのが妥当だとうであろう。
  4. ^ a b The Linpack Benchmark, TOP500 Supercomputing Sites”. 2012ねん1がつ11にち閲覧えつらん
  5. ^ a b c d e Dongarra, Jack J.; Luszczek, Piotr; Petitet, Antoine (2003), “The LINPACK Benchmark: past, present and future”, Concurrency and Computation: Practice and Experience (John Wiley & Sons, Ltd.): 803–820, http://www.netlib.org/utk/people/JackDongarra/PAPERS/hplpaper.pdf 
  6. ^ Jack Dongarra interview by Sander Olson, http://nextbigfuture.com/2010/06/jack-dongarra-interview-by-sander-olson.html 
  7. ^ Dongarra, J.J.; Moler, C.B.; Bunch, J.R.; Stewart, G.W. (1979), LINPACK: users' guide, SIAM, https://books.google.ch/books?id=AmSm1n3Vw0cC&lpg=PR5&ots=EDFdqJhr8x&dq=info%3Ahttp%3A%2F%2Fs3da3171290b34600.scholar.google.com%2F0&lr&pg=SL2-PA1#v=onepage&q&f=false 
  8. ^ Dongarra, Jack (1988), “The LINPACK benchmark: An explanation”, Supercomputing (Springer Berlin/Heidelberg): 456–474, http://www.netlib.org/utk/people/JackDongarra/PAPERS/The-LINPACK-Benchmark-An-Explanation.pdf 
  9. ^ High Performance Linpack Benchmark, http://icl.cs.utk.edu/graphics/posters/files/SC2010-HPL.pdf 2012ねん1がつ10日とおか閲覧えつらん 
  10. ^ LINPACK users' manual
  11. ^ Bailey, D.H.; Barszcz, E.; Barton, J.T.; Browning, D.S.; Carter, R.L.; Dagum, L.; Fatoohi, R.A.; Frederickson, P.O. et al. (1991), The NAS parallel benchmarks summary and preliminary results, “Supercomputing '91. Proceedings of the 1991 ACM/IEEE Conference”, Supercomputing: 158–165, http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5348941&isnumber=5348846 
  12. ^ LINPACK FAQ - Can I use Strassen’s Method when doing the matrix multiples in the HPL benchmark or for the Top500 run?”. 2012ねん1がつ12にち閲覧えつらん
  13. ^ LINPACK FAQ - To what accuracy must be the solution conform?”. 2012ねん1がつ12にち閲覧えつらん
  14. ^ Linpack benchmark program in Fortran”. 2012ねん1がつ12にち閲覧えつらん
  15. ^ Linpack benchmark program in C”. 2012ねん1がつ12にち閲覧えつらん
  16. ^ Linpack benchmark program in Java”. 2012ねん1がつ12にち閲覧えつらん
  17. ^ HPL - A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers”. 2012ねん1がつ12にち閲覧えつらん
  18. ^ HPL algorithm”. 2012ねん1がつ12にち閲覧えつらん
  19. ^ HPL overview”. 2012ねん1がつ12にち閲覧えつらん
  20. ^ a b Meuer, Martin (2002ねん5がつ24にち). “An interview with supercomputer legend Jack Dongarra”. 2012ねん1がつ13にち閲覧えつらん
  21. ^ Haigh, Thomas (2004), An interview with Jack J. Dongarra, http://history.siam.org/pdfs2/Dongarra_%20returned_SIAM_copy.pdf, "LINPACK is a benchmark that people often cite because there’s such a historical data base of information there, because it’s fairly easy to run, it’s fairly easy to understand, and it captures in some sense the best and worst of programming." 
  22. ^ Hammond, Steven (1995), Beyond Machoflops: Getting MPPs Into the Production Environment, http://nldr.library.ucar.edu/repository/collections/TECH-NOTE-000-000-000-227 
  23. ^ Gahvari, Hormozd; Hoemmen, Mark; Demmel, James; Yelick, Katherine (2006), “Benchmarking Sparse Matrix-Vector Multiply in Five Minutes”, SPEC Benchmark Workshop, http://bebop.cs.berkeley.edu/pubs/gahvari2007-spmvbench-spec.pdf 
  24. ^ Dongarra, Jack J. (2007), “The HPC Challenge Benchmark: A Candidate for Replacing Linpack in the Top500?”, SPEC Benchmark Workshop, http://www.spec.org/workshops/2007/austin/slides/Keynote_Jack_Dongarra.pdf 
  25. ^ Christopher Mims (2010ねん11月8にち). “Why China's New Supercomputer Is Only Technically the World's Fastest”. 2011ねん9がつ22にち閲覧えつらん
  26. ^ Luszczek, Piotr; Dongarra, Jack J.; Koester, David; Rabenseifner, Rolf; Lucas, Bob; Kepner, Jeremy; Mccalpin, John; Bailey, David et al. (2005), Introduction to the HPC Challenge Benchmark Suite, http://icl.cs.utk.edu/projectsfiles/hpcc/pubs/hpcc-challenge-benchmark05.pdf 
  27. ^ Dongarra, Jack J. (2010), “LINPACK Benchmark with Time Limits on Multicore & GPU Based Accelerators”, http://www.netlib.org/utk/people/JackDongarra/SLIDES/isc-talk-06102.pdf 

外部がいぶリンク

編集へんしゅう