2012年2月15日水曜日

sparsePOP のC++版を Ubuntu でコンパイル

sparsePOP の C++ 版を Ubuntu でコンパイルしたが、これが結構難しかった。
というのも、README に書いてある方法では、SDPA をコンパイルするときに同時にコンパイルされる MUMPS にリンクするようにしてあるのだが、MUMPS自体は apt-get でインストールしたものがあるので、これにリンクしようとしてライブラリ名がかみ合わずに失敗していた。

そもそも、MUMPS は single 版と並列計算用の parallel 版があって、single 版の場合には MPI のラッパーをかませることで基本的には対応している。
これが、Ubuntu だと libdmumps_seq.a にリンクすることになっており、標準的な libdmumps.a libpord.a は parallel 版のライブラリになっている。
つまり、libdmumps.a にリンクしてしまうと、MPI 関係のエラーが出て実行ができない。

このあたりは注意が必要なのだが、そもそも MUMPS を apt-get 由来のものにリンクするには configure.in を書き換えて autoreconf をかませる必要があって、ほとんどの人はこんなに面倒なことをしない。

今日の作業内容:sparsePOP のコンパイル 1h + SDPARA チェック 2h
今日のランチ:つかさ ヒラメのから揚げ
明日の予測作業時間:4h

0 件のコメント:

コメントを投稿