Conference Room SAD
[thread display] [new arrival display] [word search] [past log] [管理用]

Subject 線形代数ルーチンの高速化
Date: 2010/11/04(Thu) 15:43:38
ContributorAkio 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倍程度の改善が得られます


- 関連一覧ツリー (Click ▼ to display all articles in a thread.)