LAPACK
LAPACK( ” L inear A lgebra Pack age”)は、数値線形代数の標準ソフトウェアライブラリです。これは、線形方程式と線形最小二乗法、固有値問題、および特異値分解のシステムを解くためのルーチンを提供します。また、 LU、QR、コレスキー分解、シュール分解などの関連する行列因数分解を実装するためのルーチンも含まれています。 LAPACKはもともとFORTRAN 77ですが、バージョン3.2(2008)でFortran90に移行しました。ルーチンは、単精度と倍精度の両方で実数行列と複素数行列の両方を処理します。LAPACKは、基盤となるBLAS実装に依存して、ルーチンに効率的でポータブルな計算ビルディングブロックを提供します。 : 「移植性の鍵としてのBLAS」
LAPACK(Netlibリファレンス実装)
初回リリース
1992 ; 30年前 (1992)
安定リリース
3.10.1 /2022年4月12日 ; 2ヶ月前 (2022年4月12日)
リポジトリ
github .com / Reference-LAPACK / lapack
で書かれている Fortran 90 タイプ
ソフトウェアライブラリ
ライセンス
BSD-新しい
Webサイト
www .netlib .org / lapack /
LAPACKは、 LINPACKの線形方程式と線形最小二乗ルーチンおよびEISPACKの固有値ルーチンの後継として設計されました。1970年代と1980年代に作成されたLINPACKは、共有メモリを備えた当時の最新のベクトルコンピュータで実行するように設計されました。対照的に、LAPACKは、最新のキャッシュベースのアーキテクチャのキャッシュと最新のスーパースカラープロセッサの命令レベルの並列性を効果的に活用するように設計されています : 「パフォーマンスに影響を与える要因」。よく調整されたBLAS実装があれば、そのようなマシン。 : 「移植性の鍵としてのBLAS」 LAPACKも拡張され、 ScaLAPACKやPLAPACKなどの後のパッケージの分散メモリシステムで実行できるようになりました。
Netlib LAPACKは、3条項のBSDスタイルのライセンスの下でライセンスされています。これは、制限の少ない寛容な自由ソフトウェアライセンスです。
コンテンツ
1 命名スキーム
2 他のプログラミング言語やライブラリで使用する
3 実装
3.1 同様のプロジェクト
4 も参照してください
5 参考文献
6 外部リンク
命名スキーム
LAPACKのサブルーチンには、識別子を非常にコンパクトにする命名規則がこれが必要だったのは、最初のFortran標準では最大6文字の識別子しかサポートされていなかったため、この制限に収まるように名前を短縮する必要があったからです。 : 「ネーミングスキーム」
LAPACKサブルーチン名は、次の形式pmmaaaです。
p使用される数値定数のタイプを示す1文字のコードです。S、はそれぞれ単精度と倍精度Dの実際の浮動小数点演算Cを表し、とはそれぞれ単精度と倍精度Zの複素数演算を表します。新しいバージョンのLAPACK95は、データ型を明示的に指定する必要性を克服するために、汎用サブルーチンを使用します。
mmは、アルゴリズムで期待される行列の種類を示す2文字のコードです。さまざまな種類のマトリックスのコードを以下に報告します。実際のデータは、特定の種類に応じて異なる形式で保存されます。たとえば、コードが指定された場合、サブルーチンは対角線上の要素を含むDI長さのベクトルを期待しますが、コードが指定された場合、サブルーチンは行列のエントリを含むn × n配列を期待します。nGE
aaaは、サブルーチンに実装されている実際のアルゴリズムを説明する1〜3文字のコードです。たとえば、線形システムSVを解くためのサブルーチンを示し、ランク1の更新を示します。R
たとえば、実際の倍精度演算を使用して一般的な(非構造化)行列で線形システムを解くためのサブルーチンは、と呼ばれDGESVます。 : 「線形方程式」
LAPACK命名スキームのマトリックスタイプ
名前
説明 BD 二重対角行列 DI 対角行列 GB 一般的な帯行列 GE 一般的な行列(つまり、非対称、場合によっては長方形) GG 一般的な行列、一般化された問題(つまり、一般的な行列のペア) GT 一般的な三重対角行列 HB (複素数)エルミート 帯行列 彼 (複素数)エルミート行列 HG 上部ヘッセンベルグ行列、一般化された問題(つまり、ヘッセンベルグ行列と三角行列) HP (複雑)エルミート、パック格納形式行列 HS 上部ヘッセンベルグ行列 OP (実数)直交行列、圧縮格納形式行列
また(実数)直交行列 PB 対称行列またはエルミート行列の 正定値帯 PO 対称行列またはエルミート行列 正定値 PP 対称行列またはエルミート行列 正定値、圧縮格納行列 PT 対称行列またはエルミート行列 正定 三重対角行列 SB (実数)対称 帯行列 SP 対称のパック格納形式行列 ST (実数)対称行列 三重対角行列 SY 対称行列 TB 三角 帯行列 TG 三角行列、一般化された問題(つまり、三角行列のペア) TP 三角形の圧縮格納形式 TR 三角行列(または場合によっては準三角行列) TZ 台形行列
国連(複素)ユニタリ行列 上 (複雑な)単一のパック格納形式行列
他のプログラミング言語やライブラリで使用する
今日の多くのプログラミング環境では、Cバインディングを使用したライブラリの使用がサポートされており、いくつかの制限が守られている限り、LAPACKルーチンを直接使用できます。さらに、 R、 MATLAB、、SciPyなど、科学および数値計算用の他の多くのソフトウェアライブラリとツールがLAPACK上に構築されています。
いくつかの代替言語バインディングも利用できます。
C++用アルマジロ
C++用のIT++
LAPACK ++ for C ++
Lacaml for OCaml C用CLapack SciPy for Python
Gonum for Go
NLapack for .NET
実装
BLASと同様に、LAPACKは、特定のシステムでより良いパフォーマンスを提供するために、フォークまたは書き直されることがいくつかの実装は次のとおりです。
加速する
MacOSおよび
iOS用のAppleのフレームワーク
。これには、 BLASおよびLAPACK
の調整されたバージョンが含まれます
。 Netlib LAPACK 公式LAPACK。Netlib ScaLAPACK BLAS
上に構築されたスケーラブルな(マルチコア)LAPACK インテル®MKL
x86CPU用のIntelの数学ルーチン。 OpenBLAS BLASとLAPACKのオープンソースの再実装。 Gonum LAPACK 部分的なネイティブ
Goの実装。
LAPACKは通常、基礎となるBLASルーチンを呼び出して計算の大部分を実行するため、より適切に調整されたBLAS実装にリンクするだけで、パフォーマンスを大幅に向上させることができます。その結果、LAPACKはBLASほど頻繁に再実装されません。
同様のプロジェクト
参照:
基本線形代数サブプログラム§同様のライブラリ(BLASと互換性がありません)
これらのプロジェクトはLAPACKと同様の機能を提供しますが、メインインターフェイスはLAPACKとは異なります。 Libflame 密な線形代数ライブラリ。LAPACK互換のラッパーがBLISが推奨される実装ですが、
任意のBLASで使用できます 。 エイゲン
線形代数のヘッダーライブラリ。互換性のためにBLASと部分的なLAPACK実装が
マグマ
GPUおよびマルチコアアーキテクチャ上の行列代数(MAGMA)プロジェクトは、LAPACKと同様の高密度線形代数ライブラリを開発しますが、
GPGPUで高速化されたマルチコアシステムを含む異種およびハイブリッドアーキテクチャ用です。
プラズマ
スケーラブルマルチコアアーキテクチャ用の並列線形代数(PLASMA)プロジェクトは、マルチコアアーキテクチャ用のLAPACKの最新の代替品です。PLASMAは、非同期操作を開発するためのソフトウェアフレームワークであり、有向非巡回グラフで依存関係を表現する任意のコードに使用できるQUARKと呼ばれるランタイムスケジューラを使用した順不同のスケジューリング機能を備えてい
も参照してください
無料のオープンソースソフトウェアポータル
数値ライブラリのリスト
マスカーネルライブラリ(MKL)
NAG数値ライブラリ
SLATEC、数学および統計ルーチンのFORTRAN77ライブラリ
QUADPACK、数値積分用のFORTRAN77ライブラリ
参考文献
^ 「LAPACK3.10.1」。
^ Anderson、E .; Bai、Z .; Bischof、C .; ブラックフォード、S .; デメル、J .; ドンガラ、J .; Du Croz、J .; Greenbaum、A .; ハマーリング、S .; マッケニー、A .; Sorensen、D.(1999)。LAPACKユーザーズガイド(第3版)。ペンシルバニア州フィラデルフィア:Society for Industrial andAppliedMathematics。ISBN 0-89871-447-8。
^ 「LAPACK3.2リリースノート」。2008年11月16日。
^ 「PLAPACK:並列線形代数パッケージ」。www.cs.utexas.edu。テキサス大学オースティン校。2007年6月12日。
^ “”LICENSE.txt””。Netlib 。
^ 「R:LAPACKライブラリ」。stat.ethz.ch。_ 2022-03-19を取得。
^ 「MATLABのLAPACK」。Mathworksヘルプセンター。
^ 「低レベルのLAPACK関数」。SciPyv1.8.1マニュアル。
^ 「ガイドとサンプルコード」。developer.apple.com 。
^ 「ガイドとサンプルコード」。developer.apple.com 。
^ “”amd / libflame:DLA計算用の高性能オブジェクトベースライブラリ””。GitHub。AMD。2020年8月25日。
^ 「ICL」。icl.eecs.utk.edu 。
外部リンク
公式ウェブサイト
“