解凍
- tar zxvf lis-1.2.62.tar.gz
導入
- cygwinだろうがlinuxだろうが./configure, make, make install でおk
- もしopenMP使いたい場合は./configure --enable-omp のオプションを付ける
- 詳しくはマニュアル
コンパイル&実行
$ gcc -c test.c
$ gcc -o test.exe test.o -L/usr/local/lib -llis
$ ./test.exe
$ gcc -c test.c
$ gcc -o test.out test.o -L/usr/local/lib -llis -lm
$ ./test.out
サンプルプログラム
IC(不完全コレスキー分解)使いたい
非定常計算したい->assembledがサポートされたので、これを使えばいい気がする
- そんなAPIない
- solveしたら行列がクリアされるのは仕様
- メモリ2倍つかってコピーしておくorソースコード解読するor中の人に期待
- crsならstructしない裏技はある(ワーニングがでる)
resultってなに?
- 各反復ステップごとに吐かれるresultと、Ax=b計算するごとに吐かれるresultがある
- 詳細は謎だが、後者が大きい場合は計算破たんしてる(時間刻み小さくする)
resultは絶対誤差?相対誤差?
お勧めの反復法
- 対称行列向けはcg,cr,minresしかない。cgがフツーに速い。crはそこそこ。minresは遅すぎる
- 非対称行列向けはいろいろあるから試してみる。ただし特定の解法でしか解けない場合は行列が間違ってる可能性あり
解けない・・・
- ILU(3)+CGとかmaxiterを大きくしたminresは強力
- 4倍精度もあり
並列計算したけど遅い
オリジナルのコマンドラインオプション(-aとか)使いたい
- Lisと干渉して使えない。$./a.exe 2 3 とかは使える
バグかもしれない
- MINRESの前処理が無視される->lis-1.2.62でサポート開始
- マシンのよって結果が異なる(-ffloat-storeだけでは一致しない)
- 付属のtest1は一致した結果を返すことがある(たぶんmakefileが環境差吸収してる)
- マルチスレッド(openMP)の動作不安定(windows7 64bit + cygwin)(lis-1.2.53)
- 非定常計算で連続で解く時に起きる. とりあえずシングル動作奨励.
最終更新:2012年06月29日 14:59