CPPLapackの導入
このページでは,CPPLAPACKの使い方を学ぶ紹介をします.
1.CPPLAPACKについて
cpplapackはC++で利用できる行列演算ライブラリのラッパーです.
もともとLapackはFortranで開発された行列演算ライブラリですが,CLapackとしてC言語から利用できるようになりました.
これをC++のクラスやメモリ管理の機構を加え,グッと利便性を増したのがcpplapackです.
オペレータ演算子のオーバーロードや,クラス実装により 数学的な記述がかのうになりました.
つまり,行列の足し算が
A = B + C ;
で済むという・・・.さらに,転置は
At = t(A) ;
で済みます.
少しでもforループを減らしたい私としては,また,若い頃からオブジェクト指向にドクされた私としては最早,これなしにはやっていけないのです.
2.基本参考サイト
以下のサイトで基本を学んでください.
一応,日本語版ドキュメントの本家
上島氏による,チュートリアルサイト.基本はまず,このチュートリアルに従って,やってみることで身につきます.
総本山? ここにClassのメンバー関数などが全て書いてあり,どんな関数があるのか知りたいときはここにいって,Class Listをみます.
3.インストール(使用できるようになるまで: Linux編)
まず,Linuxにlapackのライブラリを入れるひつようがあります.
Synapticパッケージマネージャを立ち上げて,lapackで検索してみてください.
Vine linux 4.2 なら lapack が, Ubuntu 7 なら例えばlapack3 が引っかかると思います.
あと, -devというのがついたやつも出てきたら,それもチェックしてインストールしちゃいましょう.
これで,ライブラリ自体は入ってくれます.Syapticの無い人は
apt-get install lapack
とかで行けるらしい.
次に,CPPLapackを入れます.この入れ方はCPPLapackチュートリアルに書いてあるのですが,一部間違っているので,再度書いておきます(引用).
- mkdir ~/local,mkdir ~local/libと入力し,ディレクトリ~/local/libを作成する.
- cd ~/local/libと入力する.
- http://sourceforge.net/projects/cpplapack/からCPPLapackの最新版cpplapack-XXXX_XX_XX.tar.gzをダウンロードする.
- tar xzf cpplapack-XXXX_XX_XX.tar.gzと入力し,CPPLapackを展開する.
- ln -s cpplapack-XXXX_XX_XX cpplapackと入力し,シンボリックリンクを作成する.
なぜか,チュートリアルでは5のln が luになってました.
この上で,プログラム中で
#include <cpplapack.h>
と呼び出せば,大概いけます.
4.主に使うもの
基本的に使うクラスは
dcovector
double の column (列) vector ということ.普通の列ベクトル.
drovector
double の row (行) vectorということ.普通の行ベクトル.時々使う.
dgematrix
double の general (一般) matrix(行列)ということ.非常によく使う.
使い方はとりあえず, CPPLapackチュートリアルで体感してください.
5.うまくいかない
Vine 4.2の場合,上記だけでは
/usr/bin/ld: cannot find -llapack
と,怒られる可能性があります.
これは,Vine でインストールした laplack, blas, g2cのlibファイルの名前が違うからの可能性があります.
su になって
> updatedb
として,
> locate liblapack
で,libの位置を特定
/usr/lib/liblapack.so.3.1.1
こんな場所を言ってくるので,これを /usr/lib/liblapack.so にコピーするなり,シンボリックリンクはるなりすればいけるはず.
同様のことが, blas と g2c にも言えるので,同じようにすること.
たにちゅー 2010-07-04 (sun)
新たに下記に,windowsとlinux環境での環境構築情報を
書きました.ご参照ください.
http://bit.ly/bnagb4