| 安定リリース | 3.11.0 / 2022年11月11日 |
|---|---|
| 書かれた | 実装次第 |
| プラットフォーム | クロスプラットフォーム |
| タイプ | 図書館 |
| Webサイト | このサイトについて |
基本線形代数サブプログラム( BLAS ) は、ベクトル加算、スカラー乗算、ドット積、線形結合、行列乗算などの一般的な線形代数演算を実行するための一連の低レベル ルーチンを規定する仕様です。これらは線形代数ライブラリのデファクト スタンダード低レベル ルーチンです。ルーチンには、 C (「CBLAS インターフェイス」) とFortran (「BLAS インターフェイス」)の両方のバインディングがあります。BLAS 仕様は一般的ですが、BLAS 実装は特定のマシンの速度に合わせて最適化されることが多く、BLAS を使用するとパフォーマンスが大幅に向上します。BLAS 実装では、ベクトル レジスタやSIMD命令 などの特殊な浮動小数点ハードウェアを利用します。
これは1979年にFortranライブラリとして始まり[1]、そのインターフェースはBLAS Technical (BLAST) Forumによって標準化されました。同フォーラムの最新のBLASレポートはnetlibのウェブサイトで見ることができます。[2]このFortranライブラリはリファレンス実装( BLASライブラリと呼ばれることもあります)として知られており、速度は最適化されていませんがパブリックドメインです。[3] [4]
線形代数ルーチンを提供するほとんどのライブラリは BLAS インターフェースに準拠しているため、ライブラリ ユーザーは使用されている BLAS ライブラリに依存しないプログラムを開発できます。
さまざまなハードウェア プラットフォームを対象に、多くの BLAS ライブラリが開発されています。例としては、cuBLAS (NVIDIA GPU、GPGPU )、rocBLAS (AMD GPU)、OpenBLASなどがあります。CPU ベースの BLAS ライブラリ ブランチの例には、OpenBLAS、BLIS (BLAS のようなライブラリ インスタンス化ソフトウェア)、Arm Performance Libraries、[5] ATLAS、Intel Math Kernel Library (iMKL) などがあります。AMD は、AMDプラットフォーム用に最適化された BLIS のフォークを維持しています。[6] ATLAS は、任意のアーキテクチャに合わせて自動的に最適化されるポータブル ライブラリです。iMKL は、Intelプロセッサのパフォーマンスを重視して x86 および x86-64 用に最適化されたフリーウェア[7]およびプロプライエタリ[8]ベンダー ライブラリです。[9] OpenBLAS は、多くの一般的なアーキテクチャに合わせて手動で最適化されたオープン ソース ライブラリです。LINPACKベンチマークは、パフォーマンス測定にBLAS ルーチンに大きく依存しています。
gemm
多くの数値ソフトウェアアプリケーションは、LAPACK、LINPACK、Armadillo、GNU Octave、Mathematica、[10] MATLAB、[11] NumPy、[12] R、Julia、Lisp-Statなど、BLAS互換ライブラリを使用して線形代数計算を行います。
背景
数値プログラミングの出現により、洗練されたサブルーチン ライブラリが役立つようになりました。これらのライブラリには、根の探索、行列の反転、連立方程式の解法など、一般的な高レベルの数学演算用のサブルーチンが含まれています。選択された言語はFORTRANでした。最も有名な数値プログラミング ライブラリは、IBMの Scientific Subroutine Package (SSP) でした。[13] これらのサブルーチン ライブラリにより、プログラマーは特定の問題に集中でき、よく知られているアルゴリズムを再実装する必要がなくなりました。ライブラリ ルーチンは平均的な実装よりも優れており、たとえば、行列アルゴリズムでは、数値精度を向上させるためにフル ピボットが使用される場合があります。ライブラリ ルーチンには、より効率的なルーチンも含まれています。たとえば、ライブラリには上三角行列を解くプログラムが含まれる場合があります。ライブラリには、一部のアルゴリズムの単精度バージョンと倍精度バージョンが含まれます。
当初、これらのサブルーチンは、低レベル操作にハードコードされたループを使用していました。たとえば、サブルーチンで行列の乗算を実行する必要がある場合、サブルーチンには3つのネストされたループがあります。線形代数プログラムには、多くの一般的な低レベル操作(オペレーティングシステムに関連しない、いわゆる「カーネル」操作)があります。[14] 1973年から1977年の間に、これらのカーネル操作がいくつか特定されました。[15] これらのカーネル操作は、数学ライブラリが呼び出すことができる定義済みサブルーチンになりました。カーネル呼び出しには、ハードコードされたループよりも優れた点がありました。ライブラリルーチンは読みやすく、バグの可能性が少なくなり、カーネル実装を速度に合わせて最適化できました。スカラーとベクトルを使用するこれらのカーネル操作の仕様であるレベル1基本線形代数サブルーチン(BLAS)は、1979年に公開されました。 [16] BLASは、線形代数サブルーチンライブラリLINPACKの実装に使用されました。
BLAS 抽象化により、カスタマイズが可能になり、パフォーマンスが向上します。たとえば、LINPACK は、変更せずにさまざまなマシンで使用できる汎用ライブラリです。LINPACK は、BLAS の汎用バージョンを使用できます。パフォーマンスを向上させるために、さまざまなマシンで BLAS のカスタマイズされたバージョンを使用する場合があります。コンピュータ アーキテクチャがさらに高度化すると、ベクター マシンが登場しました。ベクター マシンの BLAS では、マシンの高速ベクター操作を使用できます。(ベクター プロセッサは最終的に人気がなくなりましたが、最新の CPU のベクトル命令は、BLAS ルーチンで最適なパフォーマンスを得るために不可欠です。)
他のマシン機能が利用可能になり、活用できるようになりました。その結果、BLAS は 1984 年から 1986 年にかけて、ベクトル行列演算に関するレベル 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
ここで、AとB はルーチン内でオプションで転置またはエルミート共役にすることができ、3 つの行列すべてをストライドすることができます。通常の行列乗算AB は、 α を1 に設定し、C を適切なサイズのすべてのゼロの行列に 設定することで実行できます。
レベル3には、計算ルーチンも含まれています。
ここで、T は他の機能の中でも三角行列です。
行列乗算は、レベル 3 BLAS の残りの部分の実装を含む多くの科学的アプリケーションで広く使用されているため、[21]また、行列ベクトル乗算の明らかな繰り返しを超えるより高速なアルゴリズムが存在するため、gemmBLAS 実装者にとって最適化の主なターゲットとなっています。たとえば、A、Bのいずれかまたは両方をブロック行列に分解することにより、を再帰的に実装gemmできます。これが、βパラメータを含める理由の 1 つです[疑わしい–議論]。これにより、前のブロックの結果を累積できます。この分解では、多くの実装が最適化する特殊なケースβ = 1 が必要であるため、 Cの値ごとに 1 つの乗算が不要になることに注意してください。この分解により、製品で使用されるデータの参照の空間的および時間的局所性が向上します。これにより、システムのキャッシュを活用できます。 [22]複数レベルのキャッシュを備えたシステムでは、計算でブロックが使用される順序に 2 回目のブロッキングを適用できます。これら2つのレベルの最適化は、ATLASなどの実装で使用されています。最近では、後藤一成による実装では、 L2キャッシュのみをブロックし、連続したメモリへのコピーを慎重に償却してTLBミスを減らすと、ATLASよりも優れていることが示されました。[23]これらのアイデアに基づいて高度に調整された実装は、GotoBLAS、OpenBLAS、BLISの一部です。
の一般的なバリエーションgemmはでありgemm3m、これは「従来の4つの実数行列の乗算と2つの実数行列の加算の代わりに、3つの実数行列の乗算と5つの実数行列の加算」を使用して複素積を計算します。これは、ピーター・ウンガーによって最初に説明されたシュトラッセンのアルゴリズムに似ています。[24]
実装
- 加速する
- AppleのmacOSとiOS向けのフレームワークで、 BLASとLAPACKの調整されたバージョンが含まれています。[25] [26]
- Armパフォーマンスライブラリ
- Arm 64ビットAArch64ベースのプロセッサをサポートするArmパフォーマンスライブラリは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 ライブラリで、x86、x86-64、ARM ( NEON ) 、およびPowerPCアーキテクチャをサポートします。
- エッセル
- AIXおよびLinux上でPowerPCアーキテクチャをサポートするIBMのエンジニアリングおよび科学サブルーチンライブラリ。[35]
- ゴトBLAS
- 後藤一成氏によるBSDライセンスのBLAS実装。特にIntel Nehalem / Atom、VIA Nanoprocessor、AMD Opteron向けに調整されている。[36]
- GNU 科学ライブラリ
- 多数の数値ルーチンのマルチプラットフォーム実装。CBLAS インターフェイスが含まれています。
- HP MLIB
- HP-UXおよびLinuxでIA-64、PA-RISC、x86、およびOpteronアーキテクチャをサポートするHPの Math ライブラリ。
- インテルMKL
- Intel Math Kernel Libraryは、x86 32ビットと64ビットをサポートし、Intelから無料で入手できます。 [ 7 ] Intel Pentium、Core、Intel Xeon CPU、Intel Xeon Phi向けの最適化が含まれており、 Linux、Windows、macOSをサポートしています。[37]
- 数学ケイサン
- NECの数学ライブラリ。SUPER -UXのNEC SXアーキテクチャとLinuxのItaniumをサポート[38]
- ネットリブBLAS
- Netlibの公式リファレンス実装。Fortran 77で書かれています。[39]
- ネットリブCBLAS
- BLASへのCインターフェースを参照。CからFortran BLASを呼び出すことも可能(そして一般的)である。 [40]
- オープンBLAS
- GotoBLASをベースに最適化されたBLAS。x86 、 x86-64 、 MIPS 、 ARMプロセッサをサポート。[41]
- PDLIB/SX
- NEC SX-4システム用のNECパブリックドメイン数学ライブラリ。[42]
- ロックブラス
- ROCmを介してAMD GPU上で実行される実装。[43]
- SCSL
- SGIの科学計算ソフトウェアライブラリには、SGIのIrixワークステーション用のBLASおよびLAPACK実装が含まれています。[44]
- Sun パフォーマンス ライブラリ
- Solaris 8、9、10およびLinuxのSPARC、Core、AMD64アーキテクチャ向けに最適化された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 (Live Accelerated Math Applications) は、分散メモリシステム上のさまざまな種類のハードウェア ( CUDAまたはOpenCL経由のGPUなど)をターゲットとする数値ソルバーを作成するための C++ テンプレートライブラリであり、プログラム開発者からハードウェア固有のプログラミングを隠します。
- MT4 について
- マトリックステンプレート ライブラリバージョン 4 は、スパースおよびデンス BLAS 機能を提供する汎用C++テンプレート ライブラリです。MTL4 は、汎用プログラミングにより、直感的なインターフェイス ( MATLABに類似) と幅広い適用性を実現します。
スパースBLAS
ライブラリの歴史の中で、スパース行列を扱うためのBLASの拡張がいくつか提案されてきましたが、2002年にようやくスパース行列カーネルルーチンの小さなセットが標準化されました。 [51]
バッチBLAS
従来のBLAS関数は、 GPUなどの大量の並列処理をサポートするアーキテクチャにも移植されています。ここでは、従来のBLAS関数は、通常、大きな行列に対して優れたパフォーマンスを提供します。ただし、GEMMルーチンを使用して、たとえば多数の小さな行列の行列積を計算する場合、これらのアーキテクチャでは大幅なパフォーマンスの低下が見られます。この問題に対処するために、2017年にBLAS関数のバッチバージョンが指定されました。[52]
上記の GEMM ルーチンを例にとると、バッチ バージョンでは、多数の行列に対して同時に次の計算を実行します。
角括弧内のインデックスは、スタック内のすべての行列に対して演算が実行されることを示します。多くの場合、この演算は、すべての行列が配列、およびに連結されて続くストライド バッチ メモリ レイアウト用に実装されます。
バッチBLAS関数は多目的ツールであり、例えば、多くの時間ステップで長い積分期間を処理する指数積分器やマグナス積分器の高速実装を可能にする。 [53]ここで、積分のうち計算コストが高い部分である行列の累乗は、バッチBLAS関数を使用することですべての時間ステップで並列に実装することができる。
参照
- 数値ライブラリのリスト
- 数学カーネル ライブラリ、 Intelアーキテクチャ向けに最適化された数学ライブラリ。BLAS、LAPACK を含む。
- 数値線形代数、BLASが解く問題の種類
参考文献
- ^ ab * Lawson, CL; Hanson, RJ; Kincaid, D.; Krogh, FT (1979). 「FORTRAN で使用できる基本的な線形代数サブプログラム」. ACM Trans. Math. Softw . 5 (3): 308–323. doi :10.1145/355841.355847. hdl : 2060/19780018835 . S2CID 6585321. アルゴリズム 539.
- ^ 「BLAS 技術フォーラム」. netlib.org . 2017 年 7 月 7 日閲覧。
- ^ 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/) で公開されています。」[永久リンク切れ ]
- ^ Jack Dongarra、Gene Golub、Eric Grosse、Cleve Moler、Keith Moore。「Netlib と NA-Net: 科学計算コミュニティの構築」(PDF)。netlib.org。2016年 2 月 13 日閲覧。Netlib
ソフトウェア リポジトリは、科学計算で使用するパブリック ドメイン ソフトウェア ルーチンの迅速な配布を容易にするために 1984 年に作成されました。
- ^ ab 「Armパフォーマンスライブラリ」。Arm 。 2020年。 2020年12月16日閲覧。
- ^ 「BLASライブラリ」。
- ^ ab 「 Intel Math Kernel Library (MKL) の無償オプション、自分でサポート、ロイヤリティフリー」。Intel 2015 年8 月 31 日閲覧。
- ^ 「Intel Math Kernel Library (Intel MKL)」。Intel 2015年。 2015年8月25日閲覧。
- ^ 「最適化に関するお知らせ」。Intel 2012年。 2013年4月10日閲覧。
- ^ Douglas Quinney (2003). 「Mathematica 5.0 の新機能は何か?」(PDF) . MSOR Connections . 3 (4). The Higher Education Academy. 2013-10-29 のオリジナル(PDF)からアーカイブ。
- ^ Cleve Moler (2000). 「MATLAB に LAPACK が組み込まれる」. MathWorks . 2013 年 10 月 26 日閲覧。
- ^ 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 。
- ^ 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.
- ^ SSP(1966年頃に登場)にも、RADD(行の追加)、CADD(列の追加)、SRMA(行のスケールを変更して別の行に追加)、RINT(行の交換)などの基本的なルーチンがありました。これらのルーチンは、行列反転などの他のルーチンを実装するためのカーネル操作としては使用されなかったようです。IBM (1970)、System/360 Scientific Subroutine Package、バージョンIII、プログラマーズマニュアル(第5版)、International Business Machines、GH20-0205-4を参照してください。。
- ^ BLASTフォーラム2001、p.1。
- ^ ローソンら 1979年。
- ^ BLASTフォーラム2001、pp.1-2。
- ^ BLASTフォーラム2001、2ページ。
- ^ ab 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.
- ^ ab 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.
- ^ 後藤 一成; 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.
- ^ ゴルブ、ジーン H. ;ヴァン・ローン、チャールズ F. (1996)、マトリックス計算(第 3 版)、ジョンズ・ホプキンス、ISBN 978-0-8018-5414-9
- ^ 後藤 一成; van de Geijn, Robert 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]
- ^ 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.
- ^ 「ガイドとサンプルコード」。developer.apple.com 。 2017年7月7日閲覧。
- ^ 「ガイドとサンプルコード」。developer.apple.com 。 2017年7月7日閲覧。
- ^ 「自動調整線形代数ソフトウェア (ATLAS)」。math-atlas.sourceforge.net 。 2017年7月7日閲覧。
- ^ blis: BLAS のようなライブラリインスタンス化ソフトウェアフレームワーク、flame、2017-06-30、2017-07-07取得
- ^ BLIS GitHub リポジトリ、2021-10-15
- ^ 「C++ AMP BLAS ライブラリ」。CodePlex。2017年7 月 8 日時点のオリジナルよりアーカイブ。2017 年 7 月 7 日閲覧。
- ^ "cuBLAS". NVIDIA Developer . 2013-07-29 . 2017-07-07閲覧。
- ^ 「NVBLAS」。NVIDIA Developer。2018年5月15日。 2018年5月15日閲覧。[永久リンク切れ ]
- ^ clBLAS: OpenCL で記述された BLAS関数を含むソフトウェア ライブラリ、clMathLibraries、2017-07-03、2017-07-07取得
- ^ Nugteren、Cedric (2017-07-05)、CLBlast: Tuned OpenCL BLAS 、 2017-07-07取得
- ^ IBM Knowledge Centre: エンジニアリングおよび科学サブルーチン ライブラリ
- ^ Milfeld, Kent. 「GotoBLAS2」。Texas Advanced Computing Center。2020年3月23日時点のオリジナルよりアーカイブ。2024年3月17日閲覧。
- ^ 「Intel Math Kernel Library (Intel MKL) | Intel Software」。software.intel.com 。 2017年7月7日閲覧。
- ^ Mathkeisan、NEC。「MathKeisan」。www.mathkeisan.com 。 2017年7月7日閲覧。
- ^ 「BLAS (Basic Linear Algebra Subprograms)」。www.netlib.org 。2017年7月7日閲覧。
- ^ 「BLAS (Basic Linear Algebra Subprograms)」。www.netlib.org 。2017年7月7日閲覧。
- ^ 「OpenBLAS : 最適化された BLAS ライブラリ」www.openblas.net 。 2017 年 7 月 7 日閲覧。
- ^ 「PDLIB/SX: ビジネスソリューション | NEC」。2007年2月22日時点のオリジナルよりアーカイブ。2007年5月20日閲覧。
- ^ "rocBLAS". rocmdocs.amd.com . 2021年5月21日閲覧。
- ^ 「SGI - SCSL Scientific Library: Home Page」。2007年5月13日時点のオリジナルよりアーカイブ。2007年5月20日閲覧。
- ^ 「Oracle Developer Studio」。www.oracle.com 。 2017年7月7日閲覧。
- ^ 「Boost Basic Linear Algebra - 1.60.0」。www.boost.org 。 2017年7月7日閲覧。
- ^ 「Armadillo: C++ 線形代数ライブラリ」。arma.sourceforge.net 。2017 年 7 月 7 日閲覧。
- ^ 「Dlang 数値およびシステム ライブラリ」。GitHub。
- ^ 「Elemental: 分散メモリの密および疎直接線形代数と最適化 — Elemental」。libelemental.org 。 2017年7月7日閲覧。
- ^ 「HASEM」。SourceForge。2015年8月17日。2017年7月7日閲覧。
- ^ 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.
- ^ 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。
- ^ Herb, Konstantin; Welter , Pol (2022). 「バッチBLAS(基本線形代数サブプログラム)ルーチンを使用した並列時間積分」。Computer Physics Communications。270 : 108181。arXiv : 2108.07126。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. Softwarew.、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、IS Duff、および S. Hammarling、「レベル 3 基本線形代数サブプログラム セット」、ACM Trans. Math. Softw.、16 (1990)、pp. 1–17。
- JJ Dongarra、J. Du Croz、IS 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 クイック リファレンス ガイド
- Lawson 口述歴史 BLAS のオリジナル著者の 1 人が、口述歴史インタビューでその創設について語っています。 Charles L. Lawson 口述歴史インタビュー (Thomas Haigh による)、2004 年 11 月 6 日と 7 日、カリフォルニア州サンクレメンテ。 Society for Industrial and Applied Mathematics、ペンシルベニア州フィラデルフィア。
- ドンガラの口述歴史 口述歴史インタビューで、ジャック・ドンガラは、BLAS と LINPACK の初期の関連、新しいアーキテクチャ向けのより高レベルの BLAS バージョンの作成、および特定のマシン向けに BLAS を自動的に最適化する ATLAS システムに関するその後の取り組みについて語ります。ジャック・ドンガラ、トーマス・ヘイグによる口述歴史インタビュー、2005 年 4 月 26 日、テネシー大学、ノックスビル、テネシー州。工業および応用数学協会、フィラデルフィア、ペンシルバニア州
- BLAS はどのようにしてこのような優れたパフォーマンスを実現するのでしょうか? 10 回の単純な 1000×1000 行列乗算 (10 10浮動小数点乗算と加算) は 2.6 GHz プロセッサで 15.77 秒かかりますが、BLAS 実装では 1.32 秒かかります。
- スパース基本線形代数サブプログラムの概要:BLAS技術フォーラムからの新しい標準[2]
