基本的な線形代数サブプログラム

ブラス
安定版リリース
3.11.0 / 2022年11月11日 ( 2022-11-11 )
書かれた実装次第
プラットフォームクロスプラットフォーム
タイプ図書館
Webサイトwww.netlib.org/blas/

基本線形代数サブプログラムBLAS)は、ベクトル加算、スカラー乗算ドット積、線形結合、行列乗算などの一般的な線形代数演算を実行するための一連の低レベルルーチンを規定する仕様です。これらは線形代数ライブラリの事実上の標準低レベルルーチンであり、ルーチンにはC(「CBLASインターフェース」)とFortran (「BLASインターフェース」)の両方のバインディングがあります。BLAS仕様は汎用的ですが、BLAS実装は特定のマシンでの速度に最適化されていることが多く、BLASを使用するとパフォーマンスが大幅に向上します。BLAS実装では、ベクトルレジスタやSIMD命令などの特殊な浮動小数点ハードウェアを利用します。

これは1979年にFortranライブラリとして始まり[ 1 ]、そのインターフェースはBLAS技術フォーラム(BLAST)によって標準化されました。同フォーラムの最新のBLASレポートはnetlibのウェブサイトで見ることができます。[ 2 ]このFortranライブラリはリファレンス実装( BLASライブラリと呼ばれることもあります)として知られており、速度は最適化されていませんが、パブリックドメインです。[ 3 ] [ 4 ]

線形代数ルーチンを提供するほとんどのライブラリは BLAS インターフェースに準拠しているため、ライブラリ ユーザーは使用されている BLAS ライブラリに関係のないプログラムを開発できます。

さまざまな異なるハードウェア プラットフォームを対象に、多くの BLAS ライブラリが開発されています。例としては、cuBLAS (NVIDIA GPU、GPGPU )、rocBLAS (AMD GPU)、OpenBLASなどがあります。CPU ベースの BLAS ライブラリ ブランチの例には、OpenBLASBLIS (BLAS のようなライブラリ インスタンス化ソフトウェア)、Arm Performance Libraries、[ 5 ] ATLASIntel Math Kernel Library (iMKL) などがあります。AMD は、 AMDプラットフォーム用に最適化された BLIS のフォークを維持しています。[ 6 ] ATLAS は、任意のアーキテクチャ用に自動的に最適化されるポータブル ライブラリです。iMKL は、Intelプロセッサのパフォーマンスを重視して x86 および x86-64 用に最適化されたフリーウェア[ 7 ]およびプロプライエタリ[ 8 ]ベンダー ライブラリです。[ 9 ] OpenBLAS は、多くの一般的なアーキテクチャ用に手動で最適化されたオープン ソース ライブラリです。LINPACKベンチマークは、パフォーマンス測定をBLAS ルーチンに大きく依存しています。 gemm

多くの数値ソフトウェアアプリケーションは、 LAPACKLINPACKArmadilloGNU OctaveMathematica[ 10 ] MATLAB[ 11 ] NumPy[ 12 ] RJulia 、Lisp-Statなど、BLAS互換ライブラリを使用して線形代数計算を行います。

C++26で導入されたC ++std::linalgライブラリはBLAS に基づいています。

背景

数値計画法の出現により、洗練されたサブルーチン・ライブラリが有用となった。これらのライブラリには根を求める、行列の逆行列を求める、連立方程式を解くといった一般的な高水準の数学演算用のサブルーチンが収められていた。選ばれた言語はFORTRANであった。最も有名な数値計画法ライブラリはIBMScientific Subroutine Package (SSP)であった。[ 13 ] これらのサブルーチン・ライブラリにより、プログラマーは特定の問題に集中でき、よく知られたアルゴリズムを再実装する手間を省くことができた。ライブラリ・ルーチンは平均的な実装よりも優れており、例えば行列アルゴリズムでは完全なピボットを使ってより良い数値精度を得るといったことが可能である。ライブラリ・ルーチンにはより効率的なルーチンも含まれていた。例えば、ライブラリには上三角行列を解くプログラムが含まれる。ライブラリにはいくつかのアルゴリズムの単精度版と倍精度版が含まれる。

当初、これらのサブルーチンは低レベル演算にハードコードされたループを使用していました。例えば、サブルーチンが行列乗算を実行する必要がある場合、そのサブルーチンは3つのネストされたループを持つことになります。線形代数プログラムには、多くの一般的な低レベル演算(いわゆる「カーネル」演算、オペレーティングシステムとは関係ありません)があります。[ 14 ] 1973年から1977年の間に、これらのカーネル演算がいくつか特定されました。[ 15 ] これらのカーネル演算は、数学ライブラリが呼び出すことができる定義済みサブルーチンになりました。カーネル呼び出しには、ハードコードされたループに比べて利点がありました。ライブラリルーチンは読みやすく、バグの可能性が低く、カーネル実装は速度のために最適化できました。スカラーベクトルを使用したこれらのカーネル操作の仕様であるレベル1基本線形代数サブルーチン(BLAS)は1979年に公開されました。[ 16 ] BLASは線形代数サブルーチンライブラリLINPACKの実装に使用されました。

BLAS抽象化により、カスタマイズによる高性能化が可能になります。例えば、LINPACKは汎用ライブラリであり、変更を加えることなく様々なマシンで使用できます。LINPACKはBLASの汎用バージョンを使用できます。パフォーマンスを向上させるために、マシンごとにカスタマイズされたBLASバージョンを使用する場合もあります。コンピュータアーキテクチャがより高度化するにつれて、ベクターマシンが登場しました。ベクターマシン用のBLASは、マシンの高速なベクター演算を利用できます。(ベクタープロセッサは最終的に人気を失いましたが、現代のCPUではベクター命令がBLASルーチンの最適なパフォーマンスに不可欠です。)

他のマシン機能も利用可能になり、活用できるようになりました。その結果、1984年から1986年にかけて、BLASはベクトル行列演算に関するレベル2カーネル演算によって拡張されました。メモリ階層も活用すべきものとして認識されました。多くのコンピュータはメインメモリよりもはるかに高速なキャッシュメモリを搭載しており、行列操作を局所化することでキャッシュをより有効に活用できます。1987年と1988年には、行列間演算を行うレベル3 BLASが特定されました。レベル3 BLASはブロック分割アルゴリズムを推進しました。LAPACKライ​​ブラリはレベル3 BLASを使用しています。[ 17 ]

オリジナルのBLASは、密に格納されたベクトルと行列のみを対象としていました。BLASのさらなる拡張、例えば疎行列への対応などが検討されています。[ 18 ]

機能性

BLASの機能は、「レベル」と呼ばれる3つのルーチンセットに分類されます。レベルは定義と公開の時系列順と、アルゴリズムの複雑さにおける多項式の次数に対応しています。レベル1のBLAS演算は通常、線形時間( O ( n ))、レベル2の演算は2次時間、レベル3の演算は3次時間がかかります。[ 19 ]現代のBLAS実装では、通常、3つのレベルすべてが提供されています。

レベル1

このレベルは、BLAS(1979)のオリジナルのプレゼンテーションで説明されているすべてのルーチンで構成されており、[ 1 ]ストライド配列ベクトル演算のみを定義しています:ドット積ベクトルノルム、次の形式の一般化されたベクトル加算

(「axpy」、「ax プラス y」と呼ばれます) およびその他のいくつかの演算があります。

レベル2

このレベルには、一般化された行列ベクトル乗算などの行列ベクトル演算が含まれます。 gemv

線形方程式の xのソルバー

Tは三角形である。レベル2 BLASの設計は1984年に開始され、1988年に成果が発表された。[ 20 ]レベル2サブルーチンは、特にベクトルプロセッサ上でBLASを使用するプログラムのパフォーマンスを向上させることを目的としている。レベル1 BLASは「演算の行列-ベクトル特性をコンパイラから隠蔽するため」最適ではない。[ 20 ]

レベル3

このレベルは1990年に正式に出版され、[ 19 ]、次のような 「一般行列乗算」( )を含む行列-行列演算を含んでいる。gemm

ここで、ABはルーチン内で転置またはエルミート共役行列とすることができ、3つの行列すべてをストライドさせることができます。通常の行列乗算ABは、 αを1、Cを適切なサイズの全ゼロ行列に 設定することで実行できます。

レベル3には、計算ルーチンも含まれています。

ここで、Tは他の機能の中でも三角行列です。

レベル 3 BLAS の残りの部分の実装を含む多くの科学アプリケーションで行列乗算が広く使用されているため、[ 21 ]また、行列ベクトル乗算の明らかな繰り返しを超えるより高速なアルゴリズムが存在するため、gemmBLAS 実装者にとって最適化の主なターゲットとなっています。たとえば、ABの一方または両方をブロック行列に分解することにより、を再帰的に実装gemmできます。これが、前のブロックの結果を累積できるようにβパラメーターを含める理由の 1 つです。この分解では、多くの実装が最適化する特殊なケースβ = 1が必要であるため、 Cの値ごとに 1 つの乗算が削除されることに注意してください。この分解により、製品で使用されるデータの参照の局所性(空間と時間の両方) が向上します。これにより、システムのキャッシュを活用できます。 [ 22 ]複数レベルのキャッシュを備えたシステムでは、計算でブロックが使用される順序にブロッキングをもう一度適用できます。これらの両方のレベルの最適化は、 ATLASなどの実装で使用されています。最近では、後藤一成による実装により、 L2キャッシュのみをブロックし、連続メモリへのコピーを慎重に償却することでTLBミスを減らすことで、ATLASよりも優れていることが示されました。[ 23 ]これらのアイデアに基づいて高度に調整された実装は、GotoBLASOpenBLASBLISの一部です。

の一般的なバリエーションはgemmでありgemm3m、これは「従来の4回の実数行列乗算と2回の実数行列加算の代わりに、3回の実数行列乗算と5回の実数行列加算」を使用して複素積を計算します。これはピーター・ウンガーによって最初に説明されたシュトラッセンアルゴリズムに似たアルゴリズムです。[ 24 ]

実装

加速する
ApplemacOSiOS向けのフレームワークで、 BLASLAPACKの調整版が含まれています。[ 25 ] [ 26 ]
Armパフォーマンスライブラリ
ArmパフォーマンスライブラリはArm 64ビットAArch64ベースのプロセッサをサポートしており、 Armから入手可能です。[ 5 ]
アトラス
自動調整線形代数ソフトウェアCおよびFortran 77用のBLAS APIのオープンソース実装。[ 27 ]
ブリス
BLASに似たライブラリインスタンス化ソフトウェアフレームワーク。迅速なインスタンス化を実現します。ほとんどの最新CPUに最適化されています。BLISはGotoBLASの完全なリファクタリングであり、特定のプラットフォーム向けに記述する必要があるコード量を削減します。[ 28 ] [ 29 ]
C++ AMP BLAS
C ++ AMP BLASライブラリは、Visual C++用のMicrosoft AMP言語拡張用のBLASのオープンソース実装です。 [ 30 ]
キュブラス
NvidiaベースのGPUカード向けに最適化されたBLAS。追加のライブラリ呼び出しはほとんど必要ありません。[ 31 ]
NVBLAS
NvidiaベースのGPUカード向けに最適化されたBLASで、レベル3の機能のみを提供しますが、他のBLASライブラリの直接的な代替品として使用できます。[ 32 ]
clBLAS
AMDによるBLASのOpenCL実装。AMD Compute Librariesの一部。[ 33 ]
clBLAST
BLAS APIの大部分を調整したOpenCL実装。 [ 34 ]
固有BLAS
MPLライセンスのEigen ライブラリ上に実装された Fortran 77 および C BLAS ライブラリで、x86x86-64ARM ( NEON ) およびPowerPCアーキテクチャをサポートします。
エッセル
IBMのエンジニアリングおよび科学サブルーチンライブラリ。AIXおよびLinuxPowerPCアーキテクチャサポートしています。[ 35 ]
ゴトBLAS
後藤一成氏によるBSDライセンスのBLAS実装。特にIntel Nehalem / AtomVIA NanoprocessorAMD Opteron向けに最適化されている。[ 36 ]
GNU科学ライブラリ
多数の数値ルーチンをマルチプラットフォームで実装。CBLASインターフェースを含みます。
HP MLIB
HP-UXおよびLinuxでIA-64PA-RISCx86、およびOpteronアーキテクチャをサポートするHPの Math ライブラリ。
インテルMKL
インテルマスカーネルライブラリは、x86 32ビットおよび64ビットをサポートし、インテルから無料で入手できます。[ 7 ]インテルPentiumCore、インテルXeon CPU、インテルXeon Phi向けの最適化が含まれており、 LinuxWindowsmacOSをサポートしています。[ 37 ]
数学ケイサン
NECの数学ライブラリ。SUPER -UXNEC SXアーキテクチャLinuxItaniumをサポートしている[ 38 ]
ネットリブBLAS
Netlibの公式リファレンス実装。Fortran 77で書かれています。[ 39 ]
ネットライブラリ CBLAS
BLASへのCインターフェースを参照。C言語からFo​​rtran BLASを呼び出すことも可能であり、また一般的である。 [ 40 ]
オープンBLAS
GotoBLASをベースに最適化されたBLASで、x86x86-64MIPSARMRISC-Vプロセッサをサポートしています。[ 41 ]
PDLIB/SX
NEC SX-4システム用のNECパブリックドメイン数学ライブラリ。[ 42 ]
ロックブラス
ROCmを介してAMD GPU上で動作する実装。[ 43 ]
SCSL
SGIの科学計算ソフトウェアライブラリには、SGIのIrixワークステーション用のBLASとLAPACKの実装が含まれています。[ 44 ]
サンパフォーマンスライブラリ
Solaris 8、9、10およびLinuxのSPARCCoreAMD64アーキテクチャ向けに最適化されたBLASとLAPACK 。 [ 45 ]
uBLAS
BLAS機能を提供する汎用C++テンプレートクラスライブラリ。Boostライブラリの一部であり、統一された表記法で多くのハードウェアアクセラレーションライブラリへのバインディングを提供します。さらに、uBLASは高度なC++機能を用いてアルゴリズムの正確性を重視しています。[ 46 ]

BLASを使用するライブラリ

アルマジロ
Armadilloは、速度と使いやすさのバランスを追求するC++線形代数ライブラリです。テンプレートクラスを採用し、BLAS/ATLASおよびLAPACKへのオプションリンクを備えています。オーストラリアのNICTAがスポンサーとなり、フリーライセンスで提供されています。[ 47 ]
ラパック
LAPACKはBLASを基盤とした高水準線形代数ライブラリです。BLASと同様にリファレンス実装が存在しますが、libFlameやMKLといった代替ライブラリも数多く存在します。
ミール
D言語で書かれた、 LLVMアクセラレーションを利用した科学・機械学習向け汎用数値計算ライブラリ。汎用線形代数サブプログラム(GLAS)を提供する。CBLAS実装上に構築することもできる。[ 48 ]

類似ライブラリ(BLASとは互換性がありません)

エレメンタル
Elementalは分散メモリの稠密および疎直接線形代数と最適化のためのオープンソースソフトウェアです。 [ 49 ]
ハセム
はC++のテンプレートライブラリであり、線形方程式を解き、固有値を計算することができます。BSDライセンスの下でライセンスされています。[ 50 ]
ラマ
LAMA (加速数学アプリケーション用ライブラリ) は、分散メモリシステム上のさまざまなハードウェア ( CUDAまたはOpenCL経由のGPUなど)をターゲットとする数値ソルバーを作成するための C++ テンプレートライブラリであり、プログラム開発者からハードウェア固有のプログラミングを隠します。
MTL4
マトリックステンプレートライブラリバージョン4は、スパースBLASおよび稠密BLAS機能を提供する汎用C++テンプレートライブラリです。MTL4は、直感的なインターフェース(MATLABに類似)と、汎用プログラミングによる幅広い適用性を実現します。

スパースBLAS

ライブラリの歴史の中で、スパース行列を扱うためのBLASの拡張がいくつか提案されてきました。2002年には、スパース行列カーネルルーチンの小さなセットが最終的に標準化されました。 [ 51 ]

バッチBLAS

従来のBLAS関数は、 GPUなどの大規模並列処理をサポートするアーキテクチャにも移植されています。これらのアーキテクチャでは、従来のBLAS関数は大規模な行列に対して一般的に良好な性能を示します。しかし、例えばGEMMルーチンを用いて多数の小さな行列の行列積を計算する場合、これらのアーキテクチャでは著しい性能低下が見られます。この問題に対処するため、2017年にBLAS関数のバッチバージョンが仕様化されました。[ 52 ]

上記の GEMM ルーチンを例にとると、バッチ バージョンでは、多数の行列に対して同時に次の計算を実行します。

角括弧で囲まれたインデックスは、スタック内のすべての行列に対して演算が実行されることを示します。この演算は、すべての行列が配列、、に連結された状態で続く、ストライドされたバッチメモリレイアウトで実装されることがよくあります。

バッチBLAS関数は多用途のツールであり、例えば、多くの時間ステップで長い積分期間を扱う指数積分器マグナス積分器の高速実装を可能にする。 [ 53 ]ここで、積分の計算コストが高い部分である行列の累乗は、バッチBLAS関数を使用することで、すべての時間ステップで並列に実装することができる。

参照

参考文献

  1. ^ a b * Lawson, CL; Hanson, RJ; Kincaid, D.; Krogh, FT (1979). 「FORTRAN用基本線形代数サブプログラム」. ACM Trans. Math. Software . 5 (3): 308– 323. doi : 10.1145/355841.355847 . hdl : 2060/19780018835 . S2CID  6585321.アルゴリズム539.
  2. ^ 「BLAS技術フォーラム」 . netlib.org . 2017年7月7日閲覧
  3. ^ blaseman Archived 2016-10-12 at the Wayback Machine 「この製品は、パブリック ドメインの BLAS (Basic Linear Algebra Subprograms) および LAPACK (Linear Algebra PACKage) の実装であり、米国テネシー大学の Jack Dongarra 教授などのグループによって開発され、すべて WWW (URL: https://www.netlib.org/ ) で公開されています。」
  4. ^ Jack Dongarra、Gene Golub、Eric Grosse、Cleve Moler、Keith Moore。「NetlibとNA-Net:科学計算コミュニティの構築」(PDF) netlib.org 。 2016年2月13日閲覧。Netlibソフトウェアリポジトリは、科学計算に使用されるパブリックドメインソフトウェアルーチンの迅速な配布を容易にするために1984年に作成されました。
  5. ^ a b「Armパフォーマンスライブラリ」 Arm 2020年 2020年12月16日閲覧
  6. ^ 「BLASライブラリ」
  7. ^ a b「Intel Math Kernel Library (MKL) の無償オプション、ロイヤリティフリーでサポート」インテル2015年 2015年8月31日閲覧
  8. ^ 「Intel Math Kernel Library (Intel MKL)」 . Intel . 2015年. 2015年8月25日閲覧
  9. ^ 「最適化に関するお知らせ」 . Intel . 2012年. 2013年4月10日閲覧
  10. ^ Douglas Quinney (2003). 「Mathematica 5.0の新機能とは?」(PDF) . MSOR Connections . 3 (4). The Higher Education Academy. 2013年10月29日時点のオリジナル(PDF)からのアーカイブ。
  11. ^ Cleve Moler (2000). 「MATLAB Incorporates LAPACK」 . MathWorks . 2013年10月26日閲覧。
  12. ^ Stéfan van der Walt; S. Chris Colbert & Gaël Varoquaux (2011). 「NumPy配列:効率的な数値計算のための構造」. Computing in Science and Engineering . 13 (2): 22– 30. arXiv : 1102.1523 . Bibcode : 2011CSE....13b..22V . doi : 10.1109/MCSE.2011.37 . S2CID 16907816 . 
  13. ^ Boisvert, Ronald F. (2000). 「数学ソフトウェア:過去、現在、そして未来」.シミュレーションにおける数学とコンピュータ. 54 ( 4–5 ): 227–241 . arXiv : cs/0004004 . Bibcode : 2000cs........4004B . doi : 10.1016/S0378-4754(00)00185-3 . S2CID 15157725 . 
  14. ^ 1966年頃に登場したSSPでさえ、RADD(行の加算)、CADD(列の加算)、SRMA(行のスケールを変更して別の行に加算)、RINT(行の交換)といった基本ルーチンを備えていました。これらのルーチンは、逆行列演算などの他のルーチンを実装するためのカーネル演算としては使用されていなかったようです。IBM(1970年)『System/360 Scientific Subroutine Package, Version III, Programmer's Manual (5th ed.)』、International Business Machines、GH20-0205-4を参照。
  15. ^ BLASTフォーラム2001、p.1。
  16. ^ローソンら 1979 .
  17. ^ BLASTフォーラム2001、pp.1-2。
  18. ^ BLASTフォーラム2001、2ページ。
  19. ^ a b Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Duff, Iain S. (1990). 「レベル3基本線形代数サブプログラムセット」 . ACM Transactions on Mathematical Software . 16 (1): 1– 17. doi : 10.1145/77626.79170 . ISSN 0098-3500 . S2CID 52873593 .  
  20. ^ a b Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Hanson, Richard J. (1988). 「FORTRAN基本線形代数サブプログラムの拡張セット」. ACM Trans. Math. Softw . 14 : 1– 17. CiteSeerX 10.1.1.17.5421 . doi : 10.1145/42288.42291 . S2CID 3579623 .  
  21. ^後藤 一成; van de Geijn, Robert A. (2008). 「レベル3 BLAS の高性能実装」(PDF) . ACM Transactions on Mathematical Software . 35 (1): 1– 14. doi : 10.1145/1377603.1377607 . S2CID 14722514.オリジナル(PDF)から2017年7月6日にアーカイブ 
  22. ^ Golub, Gene H. ; Van Loan, Charles F. (1996) 『行列計算』(第3版)、ジョンズ・ホプキンス、ISBN 978-0-8018-5414-9
  23. ^後藤 一成;ロバート・A. ヴァン・デ・ガイエン(2008). 「高性能行列乗算の解剖学」. ACM Transactions on Mathematical Software . 34 (3): 12:1–12:25. CiteSeerX 10.1.1.111.3873 . doi : 10.1145/1356052.1356053 . ISSN 0098-3500 . S2CID 9359223 .   (25ページ)[1]
  24. ^ Van Zee, Field G.; Smith, Tyler M. (2017-07-24). 「3m法と4m法による高性能複素行列乗算の実装」. ACM Transactions on Mathematical Software . 44 (1): 1– 36. doi : 10.1145/3086466 . S2CID 25580883 . 
  25. ^ 「ガイドとサンプルコード」 . developer.apple.com . 2017年7月7日閲覧。
  26. ^ 「ガイドとサンプルコード」 . developer.apple.com . 2017年7月7日閲覧。
  27. ^ 「自動調整線形代数ソフトウェア(ATLAS)」 . math-atlas.sourceforge.net . 2017年7月7日閲覧
  28. ^ blis: BLAS のようなライブラリインスタンス化ソフトウェアフレームワーク、flame、2017年6月30日、 2017年7月7日取得
  29. ^ BLIS GitHubリポジトリ、2021年10月15日
  30. ^ 「C++ AMP BLASライブラリ」 . CodePlex . 2017年7月8日時点のオリジナルよりアーカイブ2017年7月7日閲覧。
  31. ^ "cuBLAS" . NVIDIA Developer . 2013年7月29日. 2017年7月7日閲覧
  32. ^ "NVBLAS" . NVIDIA Developer . 2018年5月15日. 2018年5月15日閲覧
  33. ^ clBLAS: OpenCLで書かれたBLAS関数を含むソフトウェアライブラリ、clMathLibraries、2017-07-03、2017-07-07取得
  34. ^ Nugteren、Cedric (2017-07-05)、CLBlast: Tuned OpenCL BLAS2017-07-07取得
  35. ^ IBM Knowledge Centre: エンジニアリングおよび科学サブルーチン・ライブラリー
  36. ^ミルフェルド、ケント、「GotoBLAS2」テキサス先端計算センター2020年3月23日時点のオリジナルよりアーカイブ2024年3月17日閲覧。
  37. ^ 「Intel Math Kernel Library (Intel MKL) | Intel Software」 . software.intel.com . 2017年7月7日閲覧
  38. ^ Mathkeisan, NEC. 「MathKeisan」 . www.mathkeisan.com . 2017年7月7日閲覧
  39. ^ 「BLAS(基本線形代数サブプログラム)」 www.netlib.org . 2017年7月7日閲覧
  40. ^ 「BLAS(基本線形代数サブプログラム)」 www.netlib.org . 2017年7月7日閲覧
  41. ^ 「OpenBLAS: 最適化されたBLASライブラリ」 www.openblas.net . 2017年7月7日閲覧
  42. ^ 「PDLIB/SX: ビジネスソリューション | NEC」2007年2月22日時点のオリジナルよりアーカイブ2007年5月20日閲覧。
  43. ^ "rocBLAS" . rocmdocs.amd.com . 2021年5月22日時点のオリジナルよりアーカイブ2021年5月21日閲覧。
  44. ^ 「SGI - SCSL Scientific Library: Home Page」2007年5月13日時点のオリジナルよりアーカイブ。 2007年5月20日閲覧
  45. ^ 「Oracle Developer Studio」 . www.oracle.com . 2017年7月7日閲覧
  46. ^ 「Boost Basic Linear Algebra - 1.60.0」www.boost.org . 2017年7月7日閲覧
  47. ^ 「Armadillo: C++線形代数ライブラリ」 . arma.sourceforge.net . 2017年7月7日閲覧
  48. ^ 「Dlang 数値およびシステムライブラリ。GitHub
  49. ^ 「Elemental: 分散メモリ型稠密およびスパース直接線形代数と最適化 — Elemental」libelemental.org . 2013年8月1日時点のオリジナルよりアーカイブ。 2017年7月7日閲覧
  50. ^ "HASEM" . SourceForge . 2015年8月17日. 2017年7月7日閲覧
  51. ^ Duff, Iain S.; Heroux, Michael A.; Pozo, Roldan (2002). 「スパース基本線形代数サブプログラムの概要:BLAS技術フォーラムの新標準」. ACM Transactions on Mathematical Software . 28 (2): 239– 267. doi : 10.1145/567806.567810 . S2CID 9411006 . 
  52. ^ Dongarra, Jack; Hammarling, Sven; Higham, Nicholas J.; Relton, Samuel D.; Valero-Lara, Pedro; Zounon, Mawussi (2017). 「現代の高性能コンピューティングシステムにおけるバッチBLASの設計と性能」 . Procedia Computer Science . 108 : 495– 504. doi : 10.1016/j.procs.2017.05.138 . hdl : 2117/106913 .
  53. ^ Herb, Konstantin; Welter, Pol (2022). 「バッチBLAS(基本線形代数サブプログラム)ルーチンを使用した並列時間積分」. Computer Physics Communications . 270 108181. arXiv : 2108.07126 . Bibcode : 2022CoPhC.27008181H . doi : 10.1016/j.cpc.2021.108181 . S2CID 237091802 . 

さらに読む

  • BLASTフォーラム(2001-08-21)、基本線形代数サブプログラム技術(BLAST)フォーラム標準、テネシー州ノックスビル:テネシー大学
  • Dodson, DS; Grimes, RG (1982)、「アルゴリズム539に関する注釈:Fortran用基本線形代数サブプログラム」、ACM Trans. Math. Software , 8 (4): 403– 404, doi : 10.1145/356012.356020 , S2CID  43081631
  • Dodson, DS (1983)、「訂正:「アルゴリズム539:FORTRAN用基本線形代数サブルーチン」に関するコメント」", ACM Trans. Math. Software , 9 : 140, doi : 10.1145/356022.356032 , S2CID  22163977
  • JJ Dongarra、J. Du Croz、S. Hammarling、および RJ Hanson、「アルゴリズム 656: FORTRAN 基本線形代数サブプログラムの拡張セット」、ACM Trans. Math. Softw.、14 (1988)、pp. 18–32。
  • JJ Dongarra、J. Du Croz、I.S. Duff、およびS. Hammarling、「レベル3基本線形代数サブプログラムのセット」、ACM Trans. Math. Softw.、16 (1990)、pp. 1–17。
  • JJ Dongarra、J. Du Croz、I.S. Duff、およびS. Hammarling、「アルゴリズム679:レベル3基本線形代数サブプログラムのセット」、ACM Trans. Math. Softw.、16 (1990)、pp. 18–28。
新しいBLAS
  • LS Blackford、J. Demmel、J. Dongarra、I. Duff、S. Hammarling、G. Henry、M. Heroux、L. Kaufman、A. Lumsdaine、A. Petitet、R. Pozo、K. Remington、RC Whaley、「基本線形代数サブプログラム (BLAS) の更新されたセット」、ACM Trans. Math. Softw.、28-2 (2002)、pp. 135–151。
  • J. Dongarra、「基本線形代数サブプログラム技術フォーラム標準」、International Journal of High Performance Applications and Supercomputing、16(1) (2002)、pp. 1–111、および International Journal of High Performance Applications and Supercomputing、16(2) (2002)、pp. 115–199。
  • Netlib.org のBLAS ホームページ
  • BLASに関するよくある質問
  • LAPACK ユーザーズガイドからのBLAS クイックリファレンスガイド
  • ローソン口述歴史BLAS の創始者の一人が、口述歴史インタビューでその創設について語ります。チャールズ・L・ローソン トーマス・ヘイによる口述歴史インタビュー、2004年11月6日および7日、カリフォルニア州サンクレメンテ。産業応用数学協会(ペンシルベニア州フィラデルフィア)。
  • ドンガラ・オーラ​​ル・ヒストリーオーラル・ヒストリー・インタビューで、ジャック・ドンガラはBLASとLINPACKの初期の関係、新しいアーキテクチャ向けの高水準BLASバージョンの作成、そして特定のマシン向けにBLASを自動的に最適化するATLASシステムの開発について語ります。ジャック・ドンガラ、トーマス・ヘイによるオーラル・ヒストリー・インタビュー、2005年4月26日、テネシー大学(テネシー州ノックスビル)。産業応用数学協会(ペンシルベニア州フィラデルフィア)
  • BLAS はどのようにしてこのような優れたパフォーマンスを実現するのでしょうか。単純な 1000×1000 行列乗算 10 回 (10 10浮動小数点乗算と加算) は 2.6 GHz プロセッサで 15.77 秒かかりますが、BLAS 実装では 1.32 秒かかります。
  • スパース基本線形代数サブプログラムの概要:BLAS技術フォーラムからの新しい標準[2]