Subject | : 線形代数ルーチンの高速化 |
Date | : 2010/11/04(Thu) 15:43:38 |
Contributor | : Akio Morita |
BLAS & LAPACKを使った線形代数ルーチンの高速化を目的とした extension module Math/LAPACKが一応完成しました 高速化されるのは、 * LinearSolve[] * Inverse[] * SingularValues[] * Eigensystem[] の4関数(Inverse[]はLinearSolve[]で実装されているので実質3関数)です 使い方 1. システムに BLAS & LAPACKをインストール ATLASや GotoBLAS等の最適化BLASを推奨します 2. LAPACK extension moduleをダウンロードして make & make install システムにインストールされている BLAS & LAPACKに応じて * USE_BLAS変数を設定する * LDOPT_ADD変数にリンクする BLAS & LAPACKライブラリを指定する とうの設定作業が必要です 3. SADScript上で Library@Require["Math/LAPACK"] 以上の手順で `Lapack' プレフィックスの付いた線形代数ルーチンの高速版が 使用可能になります。(Ex. LapackLinearSolve[]) SAD coreの提供する関数を完全に置き換える場合は、Makefile中の ``COPT_ADD=-DUSE_LAPACK_PREFIX''をコメントアウトしてください 動作環境は、SAD amorita branch revision 3407以降です 動作速度は、扱う行列サイズやBLASの最適化の程度に影響されますが、 良く最適化された BLASを使った場合、ある程度大きな行列では SAD coreのものに対して、約5倍から10倍程度の改善が得られます