高速計算ライブラリ

かっこいい言葉で言えばHPC: High Performance Computingのためのライブラリのうち,とりあえずNetlibに置いてあるものについて.

Netlibとは何でしょう? そこでFAQ(大した中身はない)を読む.

The Netlib repository contains freely available software, documents, and databases of interest to the numerical, scientific computing, and other communities. The repository is maintained by AT&T Bell Laboratories, the University of Tennessee and Oak Ridge National Laboratory, and by colleagues world-wide. The collection is replicated at several sites around the world, automatically synchronized, to provide reliable and network efficient service to the global community.

(訳)
Netlibリポジトリの中身は,数値計算,科学計算等のコミュニティが関心を持つような, 自由に使えるソフトウェア,文書及びデータベースです. リポジトリAT&T Bell研,Tennessee大学及びOak Ridge国立研究所, さらには世界中の仲間によって維持管理されています. 地球規模のコミュニティに確実でネットワーク効率のよいサービスを提供するため, コレクションは世界中の複数のサイトでコピーされ,自動的に同期が取られています.

要するに多数の数値計算用ライブラリを配布しているのだ.

BLAS

まずはBLAS: Basic Linear Algebra Subprograms http://phase.hpcc.jp/mirrors/netlib/blas/ から.

The BLAS (Basic Linear Algebra Subprograms) are high quality "building block" routines for performing basic vector and matrix operations. Level 1 BLAS do vector-vector operations, Level 2 BLAS do matrix-vector operations, and Level 3 BLAS do matrix-matrix operations. Because the BLAS are efficient, portable, and widely available, they're commonly used in the development of high quality linear algebra software, LINPACK and LAPACK for example.
A Fortran77 reference implementation of the BLAS is located in the blas directory of Netlib.

(訳)
BLASはベクトルや行列の基本的な演算をするための高性能な「組み立てブロック」ルーチンです. Level 1 BLASはベクトル同士の演算を,Level 2 BLASは行列とベクトルの演算を, そしてLevel 3 BLASは行列同士の演算をするためのものです. BLASは効率がよく,可搬性に優れ,広く使われているので, LINPACKLAPACK等の 高性能な線形代数ソフトウェアの開発によく使われています.
Fortran77によるBLASの参照実装はNetlibblasディレクトリに置いてあります.

という訳で,あんまりプリミティブなのでこれだけでは意味のあるプログラムは書けそうにない.後述のLAPACK等はこれを使って実装されてるんだけどね.しかも「参照実装」という言葉に注意:あくまでも上のBLASサイトで配布されているのは「処理内容の具体的説明」程度のコードで,大して効率よくないようだ.BLASはインタフェイスと言うか共通規格と言うか,そういうものとして捉えるのがよい.
現在ではBLAS APIを完全に実装したATLAS: Automatically Tuned Linear Algebra Softwareという便利なライブラリがあり,主にこちらを使う.これについては後述.

または計算機ヴェンダやサードパーティ*1各社が同様にBLAS APIを実装したライブラリを配布している.もちろん売り物なのだろうけど,個人利用なら無料でお試し版がダウンロードできる場合が多い.その辺りの情報はBLAS FAQのWhere can I find vendor supplied BLAS?から辿れる.例えばIntelのもの(単なるBLASよりずっと高度)は次のところにある.

*1:ISV: Independent System Vendorという言葉が使われることもある.