このサイトについて
このサイトは、もともとサイトの作者(工学系修士)が2010年頃に研究中にBLASの使い方についてのわかりやすい日本語ソースや複素数を扱うサンプルコードが殆どなかったことをきっかけとして、備忘録代わりに作成したものです。そのため、この
サイトの信憑性はその程度のものとして、自己責任でご利用をいただきますようお願い致します。このサイトは、その程度のレベルでしか記載されておりませんので、仮に誤りがあったことで損失などを被った場合においても一切の責任を負いません。
なお、作者はその後、
誤りを幾つか発見し、数年間放置するといったことも平気でやっておりますのでご注意ください。
この度、BLASの簡単な使い方公開12周年を記念して、2023年に順次リファインしております。その後、数値計算研究は趣味程度に実施しているものですので、この
サイトの信憑性はその程度のものとして、自己責任でご利用をいただきますようお願い致します。
余談ながら、このサイトは春から夏にかけてはアクセス数が少なく、
秋から急激に伸び始める傾向にあります。なお、筆者としては、実装等の実験は精神衛生上のためにも早期に着手されることを推奨するものです。また、企業様からのアクセスもありますが、企業様に置かれましてはリファレンスを参照してくださいお願いします。
BLASとは
BLASとは、Basic Linear Algebra Subprogramsの略です。難しく言うと、基本的な線形演算のライブラリ、簡単にいえば、
行列やベクトルの基本的な計算をやってくれる関数群です。例えば、行列の積とか、ベクトルのノルムの計算、などです。これらの計算を実装すること(車輪の再開発)はやめて、ライブラリを使い、効率よく効率のよいコーディングを行いましょう、というのが趣旨です。
なお、このサイトでは、C言語(かC++)からFORTRANのルーチンを直に呼び出す方法で記述していました。C言語用インターフェースCBLASについても解説します。ほとんど同じなので12年間同じでしょ、で放置していましたが、やはりハードルがあるようです。併せて、Pythonでもnumpyで利用することで計算の高速化を図ることが可能です。この点についても追記しています。
ちなみに、C++のライブラリboost::numeric::ublas (UBLAS) については、全くの別物です。
AboutBLAS
インストール
BLASにはいくつか種類があります。そのなかでも、高速に動作すると言われているのが、GotoBLASとATLASでした(2011年当時)。GotoBLASは開発が止まり、OpenBLASに変わっています。(一旦オープンソースに変わった後、開発を別の方が引き継いだ経緯があるようです)インストールについては以下リンク先を御覧ください
詳しいインストール方法
使い方概略
BLASはFORTRANで書かれております。ですので、ルーチンを呼び出すときに若干注意が必要になります。このサイトでは、C言語からFORTRANのルーチンを直に呼び出すやり方を書いていきますので、注意が必要です。具体的には、
全ての引数をポインタで渡さなくてはいけません。また、行列の並べ方の解釈が異なり、
行列を転置して扱っているかのように見えます。
CBLASはC言語向けのwrapperであることが基本ですが、実装によっては専用に作成されているようです。いずれにしてもCBLASの関数を直接呼べば事足りますので、こちらも記載します。2,023年度から順次追記しております。Pythonでの利用についても記載します。
使い方概略