OpenMPIのインストール

職場のLinuxベースのクラスタマシンはすでに6年選手でボロボロですが,それでもだましだまし使っています。OSも古いRedHat Linuxなのでライブラリの類も古くて新しいコードをコンパイルするのに問題があったりします。あるコードをインストールするにあたって,OpenMPIとgfortranのバージョンが古くて実行時にリンクすべきライブラリが存在しない,というエラーに見舞われました。

しょうがないので新しいOpenMPIのインストールをしようとしたのですが,当然のようにいろいろな依存関係があってワナにはまりました。久しぶり,というよりももう十数年ぶりにソースからインストールをはじめたのでさすがにヘロヘロでした。忘れないようにそのメモを。

openmpi-3.1.3のインストールには新しいgccが必要そうなのですが,なんか途中からどうでもよくなってコンパイルできてしまいました。いずれにしても,gcc-7.4.0をインストールすることにしました。ところが,これにはgmp, mpfr, mpcなどたくさんの依存関係があります。というわけで,gmpのインストールからはじめました。

gmp-6.1.2をダウンロードしてきて展開後,ソースのトップディレクトリに移動して,
./configure
make
make check
とします。suしてからmake installです。

~/.cshrcのLD_LIBRARY_PATHに/usr/local/libを追加してrehashしておきます。

次に,mpfr-4.0.1をダウンロードしてきて展開後,ソースのトップディレクトリに移動して,
./configure
make
make check
とします。ところがmake checkで
libmpfr.so: undefined reference to `__gmpn_com'
というエラーがでて止まります。よくわからないので見なかったことにしてsuしてからmake installしてしまいます。

次は,mpc-1.1.0をダウンロードしてきてこれまでと同様にソースのトップディレクトリで
./configure --with-mpfr=/usr/local/
とします。なぜかオプションをつけないとmpfrのライブラリを発見できませんでした。
make
make check
とすると最後まで完走するので,suして
make install
します。

次はisl-0.2.0です。
./configure
make
make check
make install
です。

これでいよいよgccのコンパイルに取り掛かります。gcc-7.4.0をダウンロードしてきてソースのトップディレクトリでconfigureをするとエラーでひっかかります。メッセージにしたがって
./configure --disable-multilib
とするととりあえずconfigureが最後まで進むので
make
します。なぜか,makeがconfigureを呼んでcrt1.oがない,というエラーで止まります。結局,解決できずに目をつぶってOpenMPIのコンパイルに進んでしまいます(全然,だめじゃん...)。

gccのコンパイルに挫折してopenmpi-3.1.3をインストールするってのはどうなの,と思いますが,なぜか,configureもコンパイルも通ってしまいました。
./configure
make
make check
make install
です。これでいいのか,っていうとまるでダメな気もするのですが最後までいったのでよしとすることにしてしまいます。

他のユーザーのために/etc/ld.so.conf.d/use-local-lib.confというファイルを作ってそこへ
/usr/local/lib
/usr/lib64
と書き込んで
ldconfig
としておきます。

なんかいろいろやっているうちにgcc-7.4.0で
./configure --disable-multilib
make
とするとコンパイルがすすむようになりました。なぜできてるのか,なぜできてないのか,よくわからんようになってきました。

いずれにしても,全然解決してないような...
posted by MOR at 10:46Comment(0)Computer