反復解法ライブラリLisをWin32上でビルドする

2016/09/23
2015/06/20, 2015/06/27 暫定

Lis (Library of Iterative Solvers for linear systems) は純国産、C言語実装(一部特殊機能のみFortran実装)、3条項BSDライセンスの疎行列計算ライブラリです。対称・非対称の各種解法を実装してあるそうです。

lis-1.5.55.zip を Microsoft Visual C++ (Visual Studio 2010, 2013) でのビルドを試みました。Cコンパイラだけでも大半の機能が使えるライブラリを生成できるようです。


付属のWindows用Makefileを使うコマンドラインビルド

Version 1.6.11からVersion 1.6.12にかけて、MS-VC++における Makefile.in と configure.bat の不具合が修正されたようです。めでたし。(→http://www.ssisc.org/lis/ChangeLog.txt

ユーザガイド「2.3 Windowsシステムへの導入」において、win ディレクトリで configure と書いてあるのは、unix系OS用シェルスクリプトではなく、win ディレクトリ内にあるバッチファイル configure.bat を動かせということですのでお間違え無きよう。

以下は lis-1.5.55.zip 当時の古い記述です。


公式サイトのユーザガイドには「configure と nmake を動かせ」としか書いていない。書庫を展開しても、ルートディレクトリのREADMEにはunixに関することしか書いていない。nmake はわかるが、Windowsで configure shell script とは如何に? ハテ、どうしたものか? と思いきや、winディレクトリ内にあるバッチファイル configure.bat を使えば良いのでした。

バッチファイルの基本コマンドだけで configure shell script にほぼ対応する処理をさせてしまう実装には感服しました。こんなの初めてです。

ということで、winディレクトリ内の README に書いてあることに従えば、一応あっさりビルドできることはできるのですが、実は落とし穴がたくさんあります。注意点と対処を以下に示します。

ということで、上記のいくらかを改善すべく勝手にいじった configure.bat と Makefile.in を置いておきます。正直なところ、事務的にやっただけで中身はまったく理解していません。自己責任でどうぞ。

言うまでもなく、この Makefile.in は GCC(MingwおよびCygwin)では使えません。MSVC の流儀に合わせたものですし、configure.bat なるバッチファイルでやっている以上しかたありません。 GCCの場合はオリジナルのunix用 configure とMSYSあるいはCygwinか何かで対処することになるのでしょう。


--enable-omp は、MSVCの場合、CPU負荷を増やすだけで、あまり効果がないみたいです。


Visual Studio IDEを使うビルド

to be continued...


雑感

この文書が誰か・何かの役に立てば幸いです。さらに願わくば、この文書の公開(並びに SuperLU / Eigen / MUMPS の各事例)が、日本における数値計算ライブラリ利用裾野を広げ、日本全体の底上げにつながることを、静かに期待します。


略歴


トップページ / 計算機関係の雑多なこと / LisをWin32上でビルドする
このサイトについて・著者連絡先