Re: [itpass 969] ISPACKのインストール -「MPI」について-
2008年7月14日 3:27:21のメーリング リストでの、井谷さんの質問への森川さんのご返答の内容です。




井谷さん
森川です
MPIFC,MPIFFLAGS:
 Fortran77で書かれたMPIプログラムをコンパイルするためのコンパイラ名および, それに対応する最適化のオプションなどのフラグ.


と書いてあったので、Fortran77で書かれたものはg77としないとコンパイラできないのか、g95でもできるのか、さまざまに書き換えてみていました。今日も、もう一度試してみましたがどれもうまく実行されません。
さて, 「MPI」とはなんでしょう?? ググってみればいろいろ出てきますが, 簡単に (且ついい加減に) 説明すると, ある単一の数値計算を複数の CPU で 分散して行う (並列計算, と呼ばれます) ための規格または実装のことを指し ます. ISPACK はこの MPI に対応しているため, 複数の CPU を同時に使って 計算を行うことができるわけですね.

# 間違ってたら, 修正お願いします m(_ _)m -> 高橋さま, 佐々木さま, 村上さま

では次に, 井谷さんは
MPI を用いて並列計算をする
ことは必要ですか?? 情報実験機単体には一つの CPU しか積んでいませんか ら, 並列計算用ライブラリはとりあえず不要です. (4 台の情報実験機を同じ 計算に対して一度に使う, といったことをするなら別ですが).
従って, 並列計算用のプログラムがコンパイルされていなくても, おそらくは spmodel のサンプルプログラムを動作させるのは問題ないでしょう. 従って, 上記のエラーメッセージは今回の課題達成の致命的な障害ではない, といえる と思います. おそらくは, README にあるとおり, make の後に make static コマンドを入力することで, libisp.a ファイルが出来上がるのではないでしょ うか.

# なお, もう少しエレガント (?) にやる場合には, Mkinclude 内の DIRS 変 数に代入される値のうちから ****-mpi というものを削除すると良いでしょう.

結論としては, ずいぶん遠回りさせた挙句に「気にしなくていいよ」となって しまっていささか申し訳ない気分ではあります. しかしながら, ただ「エラー メッセージを読まない」のと, 「読んだ上でそれにどう対処するか考える (対 処を行わない, という対処法も含めて)」は全然違うことだと私は思っていま すので, 敢えて井谷さんにはちょっと遠回りをしてもらいました. 井谷さん が闇雲に作業を進めずに, エラーメッセージをちゃんと読んでくれたことも グッドだと思ってます.
もし可能であれば, せっかくちょっと調べた (?) こともありますので, ここ らへんのことをレポートに反映してもらうとうれしいなぁ, と思ったりする次 第です. ^^;
なお, もう一つの解 (?) としては,
MPI のライブラリをコンパイル/インストールして ISPACK の並列計算用ライブラリもコンパイルする
という直球勝負なものもあります. MPI ライブラリとしては, フリーで手に入 るものとして MPICH が利用 できるようです. もし気が向いたら試してみてもいいかも???

From:
Subject: [itpass 969] ISPACKのインストール
Date: Mon, 14 Jul 2008 00:57:44 +0900 (JST)
> 森川さん
>
> 井谷です。いつも夜遅くになってしまいすみません。
> アドバイスありがとうございます。
>
>
> > 1つめのメッセージについて調べようと fepack.fの中身を見てみました
> > が、何を変更すれば良いのかが見つけられず、
>
> については解決できました。ありがとうございます。
>  2つ目のコンパイラ名について、昨日もREADMEを見ながら作業していたのですが
>
>
> MPIFC,MPIFFLAGS:
>  Fortran77で書かれたMPIプログラムをコンパイルするためのコンパイラ名および, それに対応する最適化のオプションなどのフラグ.
>
>
> と書いてあったので、Fortran77で書かれたものはg77としないとコンパイラできないのか、g95でもできるのか、さまざまに書き換えてみていました。今日も、もう一度試してみましたがどれもうまく実行されません。
>
> MPIFC = g95 
>
> と書き換えたときだけは「コマンドが見つかりません」というメッセージではなく
>
> Error: Can't open included file 'mpif.h'
>
> のように表示されるため、やはり「MPI」用のコンパイラ名を入れないといけないのは分かるのですが…。
>
> ご返信よろしくお願いします。