Super Matrix Solver 高速・高安定型マトリクス計算ライブラリ

高速・高安定型マトリクス計算ライブラリ
Super Matrix Solver

SMS-AMG Version 3 (2006年6月16日リリース開始)

動作環境:

・Linux IA32/IA64/AMD64(EM64T)
・Windows XP/2000

特長:

セットアップ情報を最大5つ保存可能
計算スピード向上
対称行列の場合、上三角行列のみで計算可能
対称行列の場合、残差切除法/CG法の選択可能

呼び出し方:

通常計算用セットアップの保存・再利用機能を使用した計算用と2種類のインタフェースを用意
■通常計算の場合、SMS-AMG Version 2の呼び出し形式の引数に2つ引数を追加
■セットアップの保存・再利用機能を使用した計算の場合、通常計算の引数に2つ引数を追加
■SMS-AMG Version 2で使用していた呼び出し形式(smsamgd、smsamd2d)はすべてサポート
■Version 2からのバージョンアップの場合、僅かなプログラム変更で使用可能
【注記】メジャーバージョンアップのため、バージョンアップは有償となります。

詳細資料:

カタログ/資料ダウンロードページから詳細資料(PDFファイル/509KB)をダウンロード可能です

セットアップ情報を最大5つ保存可能 => 計算時間短縮
●係数行列が同じ、あるいは類似(要素の位置が全く同じで値が異なる)で 右辺ベクトルのみ変化する場合、セットアッププロセス(疎グリッドの作成等)を省くことで計算時間を短縮可能です。

●複数のセットアップ情報を保存可能なため、 係数行列が数パターンある場合にも、対応可能です。


計算スピード向上 => 計算時間短縮
●ソースコードの最適化、コンパイラ・オプションの変更により 10~20%(Windowsの場合)、20~30%(Linux 32bitの場合)のスピード向上を実現しました。
●Windows版の性能例
[テスト環境] CPU: Pentium 4 2.8GHz, OS: Windows XP, 使用データ: 製品添付のサンプルデータ, EPS=1E-6
●Linux(IA32)版の性能例
[テスト環境] CPU: Pentium 4 2.8GHz, OS: Fedora Core 3, 使用データ: 製品添付のサンプルデータ, EPS=1E-6

対称行列の場合、上三角行列のみで計算可能 => 省メモリ
●対称行列の場合に、上三角行列のみで計算することにより、全体行列を引き渡す時に比べて、メモリ使用量を30~40%程度削減可能です。
メモリ使用量(アプリケーション(*1)全体)比較例 
  全マトリクス 上三角のみ メモリ削減率
DATA4 (186843元) 682.0MB 384.9MB 43.6%
DATA5 (56979元) 214.9MB 124.9MB 41.8%
DATA6 (12288元) 51.5MB 35.2MB 31.6%


(*1) 製品付属のサンプルプログラムで行列を1回解く単純なアプリケーション
【注記】 Intel Pentium 4(Prescott)より前の世代のCPU など、CPUのキャッシュサイズが1MBより小さい場合、上三角行列のみで計算すると、行列全体で計算する場合に比べて計算スピードが遅くなる場合があります。

対称行列の場合、残差切除法/CG法の選択可能 => ロバスト性向上
●Version 2では、解けなかった問題が、CG法の選択により解けるようになる場合があります。

SMS-AMG Version 3形式の呼び出し方法
通常計算時

rtc = smsamg3d(x,abrs,... smsamg2dの引数と同じ ...,m_fmt,method)

・新引数 m_fmt: alu等で渡すマトリクスのタイプ(全体/上三角)の指定
・新引数 method: 残差切除法/CG法の指定
セットアップの保存・再利用機能を使用した計算時

セットアップ・計算
rtc = smsamgd_save(x,abrs,... smsamgdの引数と同じ ...,loc_no,skip)
rtc = smsamg2d_save(x,abrs,... smsamg2dの引数と同じ ...,loc_no,skip)
rtc = smsamg3d_save(x,abrs,... smsamg3dの引数と同じ ...,loc_no,skip)
セットアップ情報開放
rtc = smsamgd_free(loc_no)
rtc = smsamg2d_free(loc_no)
rtc = smsamg3d_free(loc_no)

・新引数 loc_no: セットアップデータの保存場所を指定するインデックス番号
・新引数 skip: セットアップ処理をスキップするか否かのフラグ

バージョンアップ時に必要なプログラム修正
Version 2からVersion 3にバージョンアップする場合に必要なプログラム変更は以下の通りです。
Version 3 の特長とその利用のために必要なプログラム変更
  変更点
計算スピード向上 変更する必要なし(DLL/ライブラリを入れ換えるだけで、そのまま利用できます)
上三角行列のみで計算 ・smsamg2dをsmsamg3dに変更(引数2つ追加)
・alu、lnt、lnd(非対角要素関連の配列)に上三角のみを格納するように変更
RC/CGの選択 ・smsamg2dをsmsamg3dに変更(引数2つ追加)
セットアップ情報保存・再利用 ・smsamg2dをsmsamg2d_saveに変更(引数2つ追加)
・セットアップ情報を再利用するか否かの分岐処理追加

(注)本資料は性能を保証するものではありません。また仕様は無断で変更される場合があります。

ページの先頭へ