magma sparseのおかげで頭がウニになったので,cuSPARSE版のBiCGSTABを作成するトバ口を作ったところで終了。来週中に完成させて最終章以外のサンプルプログラム作りは終了させたいところ。
[進捗報告] magma_d_csr_mtx関数の挙動不審に悩む
magma_d_csr_mtx関数の挙動がおかしい(magma 1.6.0, 1.6.1は同じ症状)。mtxファイルの読み込みは正常にできているのだが,COO -> CSR変換でコケているらしく,まともに変換できない。が,testing_spmvとかtesting_dsolverは正常に動作しており,訳が分からない。コンパイルオプション,ヘッダファイル同一にしても一緒。
検索してみると,MAGMA掲示板のこの方も同様の症状。ただ,再現性があったりなかったりで,コンパイル条件に依存して決まるようだ。
ソースコードとにらめっこすると,magma_index_tがintなのにmagma_int_tはlong long intになっている。で,magma_index_tとmagma_int_tを混在させて使っていて,この辺りが原因かと疑って,magma_types.hの型宣言でmagma_int_tをintに統一してコンパイルしなおしてみたら無事動いた! ばっけやろぉ~,一日潰れちまったぞ!
つか,こんなおっかない状況でmagma sparseを入門書に紹介できないぞ! ・・・cuSPARSEで書き直したバージョンを使うしかないなぁ。
[進捗報告] COO, CSR対応Jacobi反復法,BiCGSTAB法完了
つまらんミスして動作のおかしかったBiCGSTAB法は修正,MTX -> COO -> CSRにコンバートするところも追加して,IMKLはCOO, CSR両対応のプログラム完成。
次はMAGMA,最後にcuSPARSEかな。明日中にMAGMAは何とかなるだろうが,cuSPARSEでJacobiとBiCGSTAB書き直すのがちと面倒。これは来週になりそう。
まーこれで最終章を除いてプログラムは完成するので,GW中の書き直し作業がどの程度進むか,頑張ろうっと。
[進捗報告] BiCGSTAB法,動作不良
完成はしたが,なんか変・・・もうちょっと見直しが必要なり。
[進捗報告] BiCGSTAB法の実装開始
さすがにGMRESをやりだすと収拾がつかなくなるので,手ごろなものをJacobi反復法と対比させながら解説したいと考え,BiCGSTABあたりがいいのではと書き出す。これ以上手を広げると収拾がつかなくなるので,今週中には終わらせて最終章以外は埋めておきたい。
GW前の一応の完成が見えてきたが,今度はNAS2015の原稿が・・・同時並行作業がつらいのう。