Message Passing Interface (MPI) 統合スレat TECH
Message Passing Interface (MPI) 統合スレ - 暇つぶし2ch2:デフォルトの名無しさん
04/11/07 18:26:35.net
MPIってなんだ? 

URLリンク(www.h7.dion.ne.jp)


3:デフォルトの名無しさん
04/11/07 18:29:00.net
MPI(Message Passing Interface)での並列計算
URLリンク(p-grp.nucleng.kyoto-u.ac.jp)

4:デフォルトの名無しさん
04/11/07 18:31:57.net
CORBAとかでできないの?

5:デフォルトの名無しさん
04/11/09 17:28:21.net
初心者ですが何かよい参考書はありませんか?

6:デフォルトの名無しさん
04/11/09 17:31:56.net
URLリンク(slashdot.jp)

7:デフォルトの名無しさん
04/11/09 18:32:22.net
>>6
高校生でもこれほどの環境を手に入れられる時代になったのですね。
素晴らしい。

8:デフォルトの名無しさん
04/11/14 01:07:13.net
LAM/MPI Parallel Computing
URLリンク(www.lam-mpi.org)

SMPP > PCクラスタ超入門
URLリンク(mikilab.doshisha.ac.jp)

「スカラー・チューニング講習会」 「並列プログラミング(MPI)講習会」で配布したテキスト
URLリンク(accc.riken.jp)

OOMPI
URLリンク(www.osl.iu.edu)


9:デフォルトの名無しさん
04/11/22 16:29:37.net


10:デフォルトの名無しさん
04/11/25 13:28:07.net
例とかが載っているサイトとかがあったら教えてください

11:デフォルトの名無しさん
04/11/25 13:58:06.net
>>10
とりあえず9までにいくつかある


12:デフォルトの名無しさん
04/11/25 19:55:03.net
MPIは使い方は簡単だけど、問題はアルゴリズムの並列化だよね。
MPI自体はほんとに難しいことはないから、リンク先でも読めばすぐにわかるよ。

13:デフォルトの名無しさん
04/12/17 18:03:55.net
MPI始めたばかりなんですが
mpiccを実行した後、mpirunすると
0 - MPI_SEND : Invalid rank 2
p0_23956: p4_error: : 8262
[0] Aborting program !
[0] Aborting program!
パイプ破壊
とエラーがでてしまいます。
何がいけないのでしょうか?;;


14:デフォルトの名無しさん
04/12/17 18:15:19.net
>>13
他のMPIプログラムはちゃんと動いたの?
もし動いたのなら、今回動かなかったプログラムのソースは載せられる?

15:デフォルトの名無しさん
04/12/17 18:34:03.net
>>13
> 0 - MPI_SEND : Invalid rank 2
Invalid rankなんだから、"2" に対応するpeがMPI_Sendで使用したコミュニケー
タに無いんじゃないの?


16:13
04/12/17 19:54:48.net
早速のレスありがとうございます
>>14
他のプログラム(πの計算)などはできました。
今回のは↓にUPしました。
URLリンク(www.geocities.jp)

>>15
ちょっと

17:13
04/12/17 20:01:13.net
うわ・・書いてる途中で
>>15
知識が足りなくて理解できない…
本でも買って出直してきます;;

18:デフォルトの名無しさん
04/12/18 00:03:34.net
>>16
for(source=1;source<mb;source++){
多分ここでしょ。でもmbをpに直しても間違いのような・・・
突っ込みどころたくさんあるんだけど、もうちょい勉強してみて。


19:デフォルトの名無しさん
04/12/18 00:41:44.net
>>16
これでも読んでください。
同志社大学の人が授業で使っている講義資料かな?
あそこは設備があるしね。。
URLリンク(mikilab.doshisha.ac.jp)

20:13
04/12/18 01:40:26.net
>>16,17
ありがとうございます。
周りに聞ける人いなくて助かりましたー
勉強してがんばります!

21:13
04/12/18 01:41:56.net
>>18,19でした…ミスばかりですみません;;

22:13
04/12/19 19:09:57.net
同志社の資料はわかりやすいですね。
「MPI並列プログラミング」(P.パチェコ著)も買ってみたんですが
結構難しくてちゃんと理解できるか不安に・・・。



23:デフォルトの名無しさん
04/12/20 16:49:59.net
KNOPPIX クラスタ 情報交換会
日時:12月28日 13:30-
場所:同志社大学 京田辺校地 香知館 3F会議場
URLリンク(www.is.doshisha.ac.jp)


24:デフォルトの名無しさん
05/01/06 16:45:54.net
む~んエラーばっかだ
かなり行き詰まってきた;;
<NO ERROR MESSAGE> : Internal MPI error! Attribute in commun
icator is not a valid attribute
Special bit pattern 0 in attribute is incorrect.
[0] Aborting program !
[0] Aborting program!

25:デフォルトの名無しさん
05/01/12 16:14:33.net
プロセス数2以外でやると止まってしまうんですが
原因がわかりません…ご教授のほどを

他のプログラムはプロセス数に限らず動いたんだけどなぁ

26:デフォルトの名無しさん
05/01/13 23:07:13.net
print文を入れてどこで止まってるか調べたら?
多分MPIの通信ルーチンの所だと思うけどね。

27:デフォルトの名無しさん
05/02/15 02:50:23 .net
>>25
どういう状況でとまるのか書かないとわかりにくいッす。
愚考ながら、1のときと3のときでは止まる原因が違う、ということも。

ところで、MPICHのWIN版設定ってやってるページ少ないですね。
GUIのmpirunは接続異常は表示しないし…


28:デフォルトの名無しさん
05/02/18 03:07:35 .net
ちょいとお尋ねしますが。
MPICHって、GlobalArrays実装してますか?
英文必死こいて読んで見たけど、らしき記述が見当たらないのです。
・・・いや、職場で異様に自信満々で「共有メモリ使える」と逝ってる香具師がいるもんで。
そもそも分散型プロセス通信の為の規格っつーか仕様ですよね?>MPI

29:デフォルトの名無しさん
05/02/18 11:13:13 .net
>>28
まさか「共有メモリ」なんて無いですよ。MPIって "Message Passing Interface" ですもん。
プロセッサ間のやりとりはすべてメッセージの送受信ですよ。

> ・・・いや、職場で異様に自信満々で「共有メモリ使える」と逝ってる香具師がいるもんで。
ずいぶんと不幸な職場環境ですね……


30:28
05/02/18 21:09:43 .net
>>29
・・・やっぱり?
おかしいとは思ったんですわ。
まあ、もうちょっと読み進めては見ますがせっかくだし。

それはそれとして、RMAのある実装って何かありますか?
MPICHにはないようで。
うまく使えばかなりおいしそうなんで、いじってみたい・・・

31:デフォルトの名無しさん
05/02/22 10:09:38 .net
パソコンにインストールしたいのだけどどこから手をつけていいかわからん

32:デフォルトの名無しさん
05/02/24 03:22:52 .net
とりあえず、
ハード的にはネットワークの使えるパソコン数台と、ルーター
ソフト系は上のほうの紹介サイトぐるっと回ってライブラリをとってくる。
あとはメインのプログラムの開発環境、これぐらい?

33:デフォルトの名無しさん
05/03/09 17:16:27 .net
bcc32で使える?

34:デフォルトの名無しさん
05/03/28 08:43:19 .net
拡張子が.cの場合は問題ないのに、.cppにすると下記のようなエラーが出ます。
何がいけないのでしょうか?解決方法を教えてください。
/tmp/ccGU5ztX.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

35:デフォルトの名無しさん
05/03/28 08:45:49 .net
拡張子を.cにする。


36:デフォルトの名無しさん
05/03/28 08:57:36 .net
c++を使用したい場合は?

37:デフォルトの名無しさん
05/03/28 09:11:02 .net
>>36
g++でコンパイルやリンクしてる?

38:デフォルトの名無しさん
05/03/28 09:12:40 .net
mpiccです。


39:デフォルトの名無しさん
05/03/28 16:28:41 .net
MPIつかったプログラムを走らせた場合、すべてのプロセスは終わるときも同時に終わるのですか?

40:デフォルトの名無しさん
05/03/28 16:30:00 .net
同時に終わるようにプログラムしないと同時には終わらないよ


41:デフォルトの名無しさん
05/03/29 02:56:38 .net
プログラム中で、クラスを作成し、プログラム終了時に、ブロックから抜けることによって破棄されます。
このクラスのデストラクタがランク0以外働かないのですが、何故なのでしょうか?

42:デフォルトの名無しさん
05/03/29 10:25:22 .net
>38
mpiCCでいける

43:デフォルトの名無しさん
05/03/29 11:17:29 .net
受け取る側のプロセスがまだrecv関数に到達していないときに、送信側がsendを送った場合、メッセージは破棄されてしまうのでしょうか?

44:デフォルトの名無しさん
05/03/29 11:53:30 .net
>>43
まずはMPIの仕様書を読もうよ


45:デフォルトの名無しさん
05/03/31 07:23:49 .net
MPIはC++には対応しているの?

46:デフォルトの名無しさん
05/04/06 14:28:48 .net
G77などのフリーソフトでMPI関数で書かれたプログラム文を
コンパイルする詳しい方法分かりますか?

47:46
05/04/06 14:40:00 .net
OSはwindowsXPです。
include 'mpif.h'で定義ファイルを読み込むんですよね?

48:デフォルトの名無しさん
05/04/06 15:41:26 .net
>>47
Unixは使えないのですか?

49:46
05/04/06 16:07:03 .net
>>48
使えないです。unixでないとできませんか?

50:デフォルトの名無しさん
05/04/06 16:30:58 .net
G77ってgnuのfortran?

51:46
05/04/06 16:33:04 .net
そうです。無理ですか?

52:デフォルトの名無しさん
05/04/06 22:37:29 .net
Windows上でのfortranコンパイラは何使ってるの?

53:46
05/04/06 23:35:21 .net
主にG77でコンパイルしています。

54:デフォルトの名無しさん
05/04/07 14:03:18 .net
MPIを使ってPDEを解きたいのですが、データはそれぞれのノードがデータの一部分を持つのでしょうか?
threadを使ったプログラムは経験があるのですが、MPIでの作成方法がよくわかりません。


55:デフォルトの名無しさん
05/04/11 00:23:11 .net
MPICH2使った人いる?MPICHは普通に動くのだけれどMIPCH2が全然機能してくれない。


56:デフォルトの名無しさん
05/04/16 01:49:10 .net
mpichについていたπの計算するプログラムが理解できません。
なんでwhile(!done){}あたりのギミックが必要なの?


57:デフォルトの名無しさん
05/04/16 13:14:57 .net
   _、 _ ∩
 ( ∀`) 彡 >>56 教えてやってもいいが
((≡O  ⊃
  |   |   おまい!左腕を上下 右腕を前後
  し⌒J   同時にやってみろ!話はそれからだ!

58:デフォルトの名無しさん
05/04/16 13:52:56 .net
CPUは別々に稼動してるだろ。CPU1個が処理終わったからといって
他のn個のCPUが処理が完全同期で終わる保証はどこにもないだろ。
だったら全部の処理が終わるまで待つのは当たり前だろ。
 それともそんなことすら解らないのか?プログラム組むの辞めろ。お前は
もう、日本から出て行け

59:デフォルトの名無しさん
05/04/16 16:24:45 .net
>>56
> なんでwhile(!done){}あたりのギミックが必要なの?
単にコードの書き方がまずいだけと思われ。
この内容ならもっと見やすくシンプルにできるよね。

60:デフォルトの名無しさん
05/04/16 21:35:10 .net
56です。
なんかわかったような気がする。
コメントアウトの部分のソースを無視していました。
頭悪くてすみませんでした。

>>58さん
MPI_Reduce()で全プロセスが終わるの待ってるのかと思ってたんですけど
違うんですか?


61:デフォルトの名無しさん
05/04/30 18:49:38 .net
CPUが空いているマシンから優先的にジョブを割り当てるにはどうしたらよいのでしょうか?


62:デフォルトの名無しさん
05/05/01 01:56:36 .net
エラーもなくコンパイルが終わり、プログラムを実行すると、ある時点で

p5_30033:  p4_error: interrupt SIGSEGV: 11
Broken pipe
Broken pipe

というエラーが出ます。これは何がいけないのでしょうか?
個人的には、ファイルアクセスで問題が起きていると思っているのですが、エラーの原因が未だつかめません。

63:デフォルトの名無しさん
05/05/01 02:18:46 .net
>>60
 >>58 そいつ、単なるバカだから相手にすんな

64:デフォルトの名無しさん
05/05/03 11:48:06 .net
>>62
配列の範囲外にアクセスしているとか
MPI以外のエラーを疑え

65:デフォルトの名無しさん
05/05/05 11:48:10 .net
gccのバージョンの違うコンパイラでmakeしたMPIを別のバージョンgccでコンパイルするCプログラムで利用しても問題ないですか?
問題ないと思っていたのですが、gcc4にアップデートして以来、原因不明で0番プロセス以外が実行中に落ちます。

66:デフォルトの名無しさん
05/05/07 03:33:52 .net
x86 向け gcc4 はまだバグありで危険じゃないのかな。
gcc3 を使ってた方が安全だよ。

67:デフォルトの名無しさん
05/08/19 18:09:30 .net
MPICH2をインストールするのにちょっと苦戦してるんですが
mpd.confにsecretwordを書いた後どうすればいいかちょっと分かりません
教えてもらえないでしょうか?

68:デフォルトの名無しさん
05/08/19 18:42:55 .net
× 教えてもらえないでしょうか?
○ ちょっと教えてもらえないでしょうか?

69:デフォルトの名無しさん
05/08/22 05:24:37 .net
これがちょっち?

70:デフォルトの名無しさん
05/09/09 19:38:13 .net
SCore使って上げてヽ(;´Д`)ノ

71:デフォルトの名無しさん
05/09/12 22:52:56 .net
ググってみましたが、情報が少ないですね。
C++でサーバアプリで計算しながら、クライアントアプリにソケット通信するようなシステムに
適用できますか?
サーバー側は1000件/分ぐらいのトランザクションで、クライアント側はサマリー情報を
半リアルで表示させるだけといったかんじです。

72:デフォルトの名無しさん
05/09/13 07:18:44 .net
余裕


73:デフォルトの名無しさん
05/11/06 16:40:07 .net
mpiプログラミングの前にmpiの勉強をした方が(w

74:デフォルトの名無しさん
05/11/17 11:20:42 .net
実行時に使用するコンピュータを指定することは出来ないのでしょうか?


75:デフォルトの名無しさん
05/11/17 13:12:49 .net
できますよ

76:デフォルトの名無しさん
05/11/17 16:19:52 .net
やり方を教えてください

77:デフォルトの名無しさん
05/11/17 16:56:14 .net
方法はMPIの実装に依る


78:デフォルトの名無しさん
05/12/21 23:26:52 .net
>>67
URLリンク(www-lab.imr.tohoku.ac.jp)

79:デフォルトの名無しさん
06/01/12 23:20:44 .net
お客さんの16CPUマシン(8node, SMP 2way)向けにC言語でMPIプログラムを書いています。単純に差分法で計算するプログラムです。でも私の開発環境は、Pen4の1CPU、fedora3マシンなのです。その1CPUマシンで

mpirun -c 16 myprog.exe

で実行すると、16個のプロセスが動き始めるのですが、問題があります。
それは、プログラムを実行すると、データファイルを読み込んで、処理が始まるのですが、データファイルはいくつかの大きさのものを用意しているのですが、
あるデータファイルでは、正しく計算が完了するのですが、あるデータファイルでは
計算開始直後にエラーで終了してしまいます。調べたところ、MPI_Bcast()で
エラーしていました。
また、正しく計算できるデータファイルを使って、
mpirun -c 8 myprog.exe
のように変えるとエラーする場合もあります。
そこで教えていただきたいのですが、そもそも1CPUマシンで、このような並列計算を
実行することは、何か問題がありますでしょうか?
よろしく。

80:デフォルトの名無しさん
06/01/13 06:41:19 .net
基本的に動かないとまずい。
メモリ不足とかじゃなきゃ、プログラムのバグだろうね


81:デフォルトの名無しさん
06/01/13 11:50:49 .net
アドバイスありがとうございます。
>基本的に動かないとまずい。
>メモリ不足とかじゃなきゃ、プログラムのバグだろうね
やはりそうですか。
実際、プログラムを単純化して、単に16プロセスでMPI_Bcast()するだけというプログラムでは、問題なく動きます。
16以外のどんな数字でも問題ありません。なので、プログラムのバグの可能性が高いのですが、一つ気になる点は、
エラーするケースでも、エラーしないケースでも、いずれの場合でもプロセスをps -ef などでモニタしていると、
実行中に16プロセスそれぞれの親プロセスIDがころころ変わっているのが確認できるのですが、何かそのあたり
に関係しているのではと思うのですが、どなたか詳しい方、ヒントなどお願いします。


82:デフォルトの名無しさん
06/01/15 08:59:30 .net
mpichでもlamでも、実機でもなるってんだったら、
プログラムのバグ。
MPI_Barrier()で、きちんと同期とって
MPI_Bcast()で起こってるなら
MPI実装を疑ってもいい。

まあ、なんだ。
漏れには「FedoraのMPIでエラー終了」じゃ、
どのMPI環境なのかも
どんな異常終了かもサパーリですよ。


83:デフォルトの名無しさん
06/01/15 14:56:36 .net
>実際プログラムを単純化して、単に16プロセスでMPI_Bcast()するだけというプログラムでは、問題なく動きます

(1) 単純化したプログラムと、エラーが起こる実プログラムで、
送信データの大きさは同じですか?

(2)どういうエラーメッセージが出ますか?

(3)mpi_bcastの前後にprintfでランクの値を書き出した場合、
どうなりますか?
(全プロセスがmpi_bcast前しか表示しないのか、
それともプロセスによってはmpi_bcast後も表示するのか)

(4)エラーが起こるデータファイルで、プロセス数が16より少ないときは
どうなりますか?

84:デフォルトの名無しさん
06/01/16 00:57:31 .net
皆さん、アドバイスありがとうございます。
>(1) 単純化したプログラムと、エラーが起こる実プログラムで、
>送信データの大きさは同じですか?
はい。MPI_INTを一個です。

>(2)どういうエラーメッセージが出ますか?
今自宅なので、正確には覚えていませんが、英語のメッセージで、
『どれかのプロセスでエラーしました』とか言う感じだったと思います。

>(3)mpi_bcastの前後にprintfでランクの値を書き出した場合、
>どうなりますか?
正しく、自分のランク値が表示されます。

>(全プロセスがmpi_bcast前しか表示しないのか、
>それともプロセスによってはmpi_bcast後も表示するのか)
全プロセスで、MPI_Bcast前に正しいランク値が表示されますが、
MPI_Bcast後には、どのプロセスも何も表示されません。


85:デフォルトの名無しさん
06/01/16 00:58:31 .net
>(4)エラーが起こるデータファイルで、プロセス数が16より少ないときは
>どうなりますか?
ええっと、その後、いろいろ試してみたら以下のようになりました。
分割数    大きいデータ  小さいデータ
2       OK       エラー
4       OK       OK
5       エラー     エラー
6       エラー     エラー
7       エラー     エラー
8       エラー     OK
9       エラー     OK
10       エラー     OK
11       エラー     OK
12       OK      OK
13       エラー     OK
14       OK      OK
15       エラー     OK
16       エラー     OK
20       エラー     OK
というわけで、よく分かりません。
ちなみに、MPI_Barrier同期は、まったく問題なく動きます。
今のところ、MPI_Bcastを使うのをやめて、MPI_Send/MPI_Recvで同等の処理を
することで、エラーを回避できたようなのですが、MPI_Bcastがエラーする
原因が分からないので、ちょっと気がかりです。

86:デフォルトの名無しさん
06/01/16 04:45:45 .net
(5)
>はい。MPI_INTを一個です。
確認ですが、一個というのは、下記の2つ目の引数が1という意味ですか?
MPI_Bcast(a,1,MPI_INT,~);

(6) 上記MPI_BCASTの4つ目の引数(送信元プロセスのランク値)は、
全プロセスで同じ値になっていますか?
また、2,3つ目の引数(送受信バッファーの個数と型)も
全プロセスで同じ値になっていますか?

(7)下記の表の意味ですが、1CPUで2プロセス(mpirun -np 2)で実行し、
小さいデータを入力させた場合でもエラーになるという意味ですか?
またこれは何度やっても同じ結果ですか?
(つまり同じケースでもOKになったりエラーになったりすることはないか)

分割数    大きいデータ  小さいデータ
2       OK       エラー



87:デフォルトの名無しさん
06/01/16 04:50:20 .net
(8) 問題のMPI_Bcastに到達する前に、MPIの他の通信は行っていますか?

(9) 実プログラムが下記のような構成になっているとして
(a)の部分をすべてコメントにすれば、
  (単純化したプログラムではうまくいくとのことなので)
  うまく動くと思いますが、
  その後で、(a)の部分を前半から少しずつ
  コメントをはずしてはテストしを繰り返せば、
  どこかで再びエラーとなるはずです。
  それによって、エラーの原因となっている個所が特定できるかもしれません。

あるいは逆に、(b)と同等の通信を(送信バッファーの中身は空でも可)
  まず(a)の直前で行い、うまくいったら、
  (a)内を少しずつ後ろへずらしていっても同じテストができます。

MPI_Init();
(a) 入力ファイルの読み込み等
(b) MPI_Bcast(a,1,MPI_INT,~);
(c) 計算
MPI_Finalize();

88:デフォルトの名無しさん
06/01/16 05:13:37 .net
(5)の訂正

>はい。MPI_INTを一個です。
確認ですが、一個というのは、下記の2つ目の引数が1という意味ですか?
MPI_Bcast(a,1,MPI_INT,~);
また、下記の大きいデータの場合も小さいデータの場合も1ですか?

分割数    大きいデータ  小さいデータ
2       OK       エラー


89:デフォルトの名無しさん
06/01/16 18:19:54 .net
長文のアドバイスありがとうございます。
>(5)の訂正
>確認ですが、一個というのは、下記の2つ目の引数が1という意味ですか?
>MPI_Bcast(a,1,MPI_INT,~);
はい、そうです。
>また、下記の大きいデータの場合も小さいデータの場合も1ですか?
>分割数    大きいデータ  小さいデータ
>2       OK       エラー
はい。
>(6) 上記MPI_BCASTの4つ目の引数(送信元プロセスのランク値)は、
>全プロセスで同じ値になっていますか?
はい、そうなっています。printfで確認しました。
>また、2,3つ目の引数(送受信バッファーの個数と型)も
>全プロセスで同じ値になっていますか?
はい、同じです。
>(7)下記の表の意味ですが、1CPUで2プロセス(mpirun -np 2)で実行し、
>小さいデータを入力させた場合でもエラーになるという意味ですか?
はいそうです。
>またこれは何度やっても同じ結果ですか?
>(つまり同じケースでもOKになったりエラーになったりすることはないか)
再現されます。同じデータ、同じ分割数で、数回実験しましたが、その時は再現しました。
でも、何十回も同じ条件でテストしたわけではありません。
>(8) 問題のMPI_Bcastに到達する前に、MPIの他の通信は行っていますか?
他に行っているのは、MPI_Barrierのみです。同期をたくさん入れれば問題が解決するんじゃあ
ないかと思って、たくさん入れました。
>(9) 実プログラムが下記のような構成になっているとして
>(a)の部分をすべてコメントにすれば、
これらのテスト結果の報告は、後日させていただきます。

90:sage
06/01/19 03:41:50 .net
mpichをインストールをしたいのですがconfigureで指定しなければならない
オプションをちょっと教えていただけないでしょうか?
osはfedora core4  コンパイラーにintel fortran compilar 9.0
mpich-1.2.7p1 を使用しています。
よろしくおねがいします。



91:デフォルトの名無しさん
06/01/19 17:54:06 .net
こんなふうに、実数型と整数型を一緒にするとエラーがでます。
if ( myid .eq. 0 ) then
call MPI_IRecv(retunum,90,MPI_REAL8,1,itag(myid+2),MPI_COMM_WORLD,ireq2,ierr)
elseif ( myid .eq. 1 ) then
call MPI_ISend(retunum,60,MPI_REAL8,0,itag(myid+1),MPI_COMM_WORLD,ireq2,ierr)
end if
if ( myid .eq. 0 ) then
call MPI_IRecv(iretunum,90,MPI_INTEGER,1,itag(myid+2),MPI_COMM_WORLD,istaus,ierr)
elseif ( myid .eq. 1 ) then
call MPI_ISend(iretunum,60,MPI_INTEGER,0,itag(myid+1),MPI_COMM_WORLD,ierr)
end if
以下のように、何故ですか?わかる人教えて下さい。
test-calcul2.f:99: warning:
call MPI_IRecv(retunum,90,MPI_REAL8,
1
test-calcul2.f:106: (continued):
call MPI_IRecv(iretunum,90,MPI_INTEGER,
2
Argument #1 of `mpi_irecv' is one type at (2) but is some other type at (1) [info -f g77 M GLOBALS]

92:デフォルトの名無しさん
06/01/19 17:56:58 .net
あ、タイプミスだ。
> if ( myid .eq. 0 ) then
> call MPI_IRecv(iretunum,90,MPI_INTEGER,1,itag(myid+2),MPI_COMM_WORLD,istaus,ierr)
> elseif ( myid .eq. 1 ) then
> call MPI_ISend(iretunum,60,MPI_INTEGER,0,itag(myid+1),MPI_COMM_WORLD,ierr)
> end if
if ( myid .eq. 0 ) then
call MPI_IRecv(iretunum,90,MPI_INTEGER,1,itag(myid+2),MPI_COMM_WORLD,ireq2,ierr)
elseif ( myid .eq. 1 ) then
call MPI_ISend(iretunum,60,MPI_INTEGER,0,itag(myid+1),MPI_COMM_WORLD,ireq2,ierr)
end if
です。

93:デフォルトの名無しさん
06/01/20 00:14:20 .net
下記のプログラムでも同じエラーが出ますか?
もし同じエラーが出たとしたら、
同じサブルーチンの同じ引数に異なる型を指定しているという
警告で、MPIとは関係ないと思います。

program test
call sub(a)
call sub(i)
end
subroutine sub(a)
a=1
end

94:デフォルトの名無しさん
06/01/20 00:21:15 .net
それから念のため補足ですが
-2つのif文を1つにまとめた方がすっきりすると思います。
-例えばランク0プロセスが同じireq2を(mpi_waitする前に)2回使うのはまずいです。
片方を例えばireq1にしてください。
また2回のcall mpi_xxxの後でmpi_waitが2回必要となります。
あるいはmpi_sendrecvを使う手もあります。

95:91
06/01/23 16:20:18 .net
>>93
まさにそれでした。
>>94
なるほど、了解です。
ところで、送信バッファーに3次元の配列を持たせたいのですが
送受信がうまくいきません。何故かわかる方いますか?
if ( myid .eq. 0 ) then
call MPI_Recv(test(i,j,1),3,MPI_REAL8,1,itag,
& MPI_COMM_WORLD,istaus,ierr)
else
call MPI_Send(test(i,j,1),3,MPI_REAL8,0,itag,
& MPI_COMM_WORLD,ierr)
endif
test(1~50,1~100,1~3)です。



96:デフォルトの名無しさん
06/01/23 18:40:47 .net
(1) test(i,j,1)のiとjには何が指定されてますか?
(2) 送る要素数は3個ですか?
(3) istatusは大きさmpi_status_sizeで配列宣言してますか?
(4) itagには何が指定されてますか?
(5) 実行するとどういうエラーになりますか?

97:91
06/01/24 11:15:33 .net
>>96
(1) test(i,j,1)のiとjには何が指定されてますか?
i=1,100とj=1,300です。DOループで指定されます。
(2) 送る要素数は3個ですか?
はい、南北方向・東西方向・上下方向の意味なので、3個です。
(3) istatusは大きさmpi_status_sizeで配列宣言してますか?
integer istatus(MPI_STATUS_SIZE)で宣言しています。
(4) itagには何が指定されてますか?
itag=1です。
(5) 実行するとどういうエラーになりますか?
テストプログラムで行った結果、エラー文は出ませんでしたが
入っているはずの値が入っていませんでした。
たとえば、10.5が入るはずなのに、0.0のままであったりします。



98:デフォルトの名無しさん
06/01/24 18:43:50 .net
動かない並列プログラムを無料でデバッグしてくれるスレはここですか?

99:デフォルトの名無しさん
06/01/24 18:46:04 .net
例えばi=1,j=1のとき、送りたいデータは以下(A)(B)のどちらですか?
(Fortranの場合は(A)が送られます。)

(A)
test(1,1,1)
test(2,1,1)
test(3,1,1)

(B)
test(1,1,1)
test(1,1,2)
test(1,1,3)

余談ですが、通信回数が多いと通信時間がかかるので、
普通は送りたいデータをまとめて1回で送るようにします。
従ってループ内で通信を行うということはあまりしません。

100:デフォルトの名無しさん
06/01/26 13:56:53 .net
MPIf77でコンパイルできても
MPIf90でコンパイルできねー!!
↓こんな感じのエラーしかでねー!!
IPO Error: unresolved : mpi_type_dup_fn_
Referenced in newfile.o
IPO Error: unresolved : mpi_win_dup_fn_
Referenced in newfile.o
newfile.o(.text+0x20): In function `MAIN__':
: undefined reference to `mpi_init_'
newfile.o(.text+0x34): In function `MAIN__':
: undefined reference to `mpi_comm_rank_'
MPIのインストールの時おかしな事したのか?おれ


101:デフォルトの名無しさん
06/01/31 15:53:13 .net
age

102:デフォルトの名無しさん
06/01/31 19:28:15 .net
こんなエラーがでるんだが誰れか原因解かりますか?
[root@clust-gri00 test]# mpif90 -o testfile testfile.f
/usr/local/mpich-1.2.6/lib/libmpich.a(farg.o)(.text+0x7): In function `mpir_iargc__':
: undefined reference to `f__xargc'


103:デフォルトの名無しさん
06/02/01 06:24:47 .net
まあせめて中のコンパイラぐらい書こうな

104:デフォルトの名無しさん
06/02/01 08:24:55 .net
あと大学名と担当教官名も

105:デフォルトの名無しさん
06/02/01 18:04:38 .net
Intel Fortran Compiler 8.1 から Intel Fortran Compiler 9.0に入れ換えたらこんなのがでるようになった.
glibcのヴァージョンが古いのか?動くっちゃ動くし結果も間違っていないが、何か気持ちわるい。
誰れか改善方法しりませんか?
/opt/intel/fc/9.0/lib/libifcore.a(for_open_proc.o)(.text+0xc14): In function `for__compute_filename.':
: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/local/mpich-1.2.6/lib/libmpich.a(p4_secure.o)(.text+0x87): In function `start_slave':
: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/local/mpich-1.2.6/lib/libmpich.a(chnodename.o)(.text+0x29): In function `MPID_Node_name':
: warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking


106:デフォルトの名無しさん
06/02/02 04:11:56 .net
めっせーじぱっしんぐってなあに?

107:デフォルトの名無しさん
06/02/02 04:29:29 .net
読んで字の如く

108:デフォルトの名無しさん
06/02/02 05:39:40 .net
いじわる><

109:デフォルトの名無しさん
06/02/02 19:20:57 .net
>>105
>103-104

110:デフォルトの名無しさん
06/02/06 13:03:09 .net
>>109

何が言いたいの?日本語わかる?
せめて会話くらいしろよ。キチガイ

111:デフォルトの名無しさん
06/02/09 13:02:07 .net
age

112:デフォルトの名無しさん
06/02/09 14:40:46 .net
MPICH2のC++バインドのクラス一覧が載ってるサイト知りませんか?
ユーザーガイドにも載ってないし。


113:デフォルトの名無しさん
06/03/01 11:53:27 .net
>>105
インテルのサイトにも書いた?
URLリンク(softwareforums.intel.com)

114:デフォルトの名無しさん
06/03/02 23:48:55 .net
MPI初心者なんですけど、
MPICHダウンロードして、一緒についてきたサンプルプログラムを
MPICH Configurationで参加するノードを設定してから実行すると

Failed to launch the root process:
"C:\Documents and Settings\XXXXX\cpi"
LaunchProcess failed, LogonUser failed, ログオン失敗: ユーザー名を認識できないか
、またはパスワードが間違っています。

というエラーが返ってきます。
設定しなければローカルで動くんだけど、何でだろう?



115:デフォルトの名無しさん
06/03/03 10:12:08 .net
URLリンク(www-unix.mcs.anl.gov)

Q. Why do I get this error, "Logon failure: unknown user name or bad password"?

Q. Why do I get this error, "LaunchProcess failed, CreateProcessAsUser failed, The system cannot find the file specified."?


116:114
06/03/03 17:57:11 .net
>>115
ありがとう!
やってみるね!


117:デフォルトの名無しさん
06/03/07 16:00:54 .net
独学でisend bcastなどの基本的な関数は一通り使い方がわかったのですが、
なんか練習問題みたいなのはないですか?

そんな大規模演算をする機会もないし、
練習用に何かお勧めなものはありますか?

118:デフォルトの名無しさん
06/03/07 17:20:48 .net
sendとrecvだけでbcast,scatter,gather,allgatherと同じ機能を作る
ヤコビ法の並列化
LU分解の並列化
2次元FFTの並列化

119:デフォルトの名無しさん
06/03/07 17:27:38 .net
π計算の並列化
e計算の並列化

120:デフォルトの名無しさん
06/03/07 19:24:56 .net
実用的なのは、

コマンド1
コマンド2
.
.
.
コマンドN
という独立したジョブが書いてあるテキストファイルを読み込んで、
P個のプロセッサで実行させるプログラム。
コマンドに依存関係つけるとなおよし。


121:デフォルトの名無しさん
06/03/12 16:05:09 .net
MPI_Sendで送る際、相手が受け取るまでプログラムの実行を停止するにはどうしたらよいのでしょうか?

122:デフォルトの名無しさん
06/03/12 16:09:32 .net
synchronous sendにすりゃいいのと違う?

123:デフォルトの名無しさん
06/03/12 21:03:03 .net
MPI_Sendだと送信バッファにコピーした状態で戻る実装が多いっぽいね。
↓にモードの説明が。
URLリンク(www.mpi-forum.org)

MPI_Ssendがない実装もあるようだし、返答をMPI_RecvかMPI_Barrierするのが確実じゃない?
バンド幅を測るとかの場合、受信が完全に終了したのを確認するにはこれしか方法がなさげ。


124:http://www.vector.co.jp/soft/win95/util/se072729.html
06/03/18 21:10:21 .net
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

そういや64bitにネイティブ対応している2chブラウザてありましたっけ?





125:デフォルトの名無しさん
06/03/19 11:52:28 .net
C++BuilderでMPIを使うにはどうしたらよいのでしょうか?

126:デフォルトの名無しさん
06/03/24 20:00:53 .net
MPICH2のWindows版を使っているのですが、
以下のようなプログラムでも時間が3秒かかります。(VC++、IntelC++とも)
MPI_Finalizeの終了処理に時間がかかっているようですけど
対策をご存知の方いっらいしゃますすか。

#include "mpi.h"
int main(int argc, char **argv) {
MPI_Init(&argc, &argv);
MPI_Finalize();
return 0;
}

127:デフォルトの名無しさん
06/04/13 06:48:21 .net
ノンブロッキング通信というのは、簡単に言うとどういうものなのでしょうか?

128:デフォルトの名無しさん
06/04/13 08:13:11 .net
バックグラウンドで通信処理をさせることで
一度に複数の相手と通信したり、
通信中に別の計算させたりするもの


129:デフォルトの名無しさん
06/05/08 21:15:20 .net
ほしゅしゅ

130:デフォルトの名無しさん
06/05/11 15:37:35 .net
hoshu

131:デフォルトの名無しさん
06/06/02 08:31:40 .net
あまり大きなサイズで一度に通信しようとすると、デッドロックするのは仕様ですか?

132:デフォルトの名無しさん
06/06/03 01:56:38 .net
実装によるだろ
そんな仕様はない

133:デフォルトの名無しさん
06/07/30 21:08:39 .net
ちょ・・・こんな有益なスレがあったなんて。。
明日からmpi使うらしいんで勉強してきます

134:・∀・)っ-○◎● ◆R.I.S.K.0.
06/07/30 22:45:31 .net
John the RipperのMPI対応版出たけど
アレって単にプロセス間通信やるだけよね?

プロセスレベルマルチタスクであってスレッドレベルマルチタスクじゃないよね?


135:デフォルトの名無しさん
06/09/05 22:49:52 .net
Linuxにmpich-1.2.3を突っ込んで
int main(int argc, char **argv){
int procs, id;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &id);
MPI_Comm_size(MPI_COMM_WORLD, &procs);
printf("#### %d, %d ####\n", id, procs);
MPI_Finalize();
return 0;
}
なmain.cソースファイルを生成し,
mpicc main.c
mpirun -np 1 a.out
したところ
0 - <NO ERROR MESSAGE> : Could not convert index 1140850688 into a pointer
The index may be an incorrect argument.
Possible sources of this problem are a missing "include 'mpif.h'",
a misspelled MPI object (e.g., MPI_COM_WORLD instead of MPI_COMM_WORLD)
or a misspelled user variable for an MPI object (e.g.,
com instead of comm).
[0] Aborting program !
[0] Aborting program!
p0_11706: p4_error: : 9039
と言われてしまいました.
fortranプログラムでもないし,COMMをCOMと打ち間違えてもいないし……というわけで,原因・解決方法をご存知の方おりましたらご教授くださいませ.

136:135
06/09/05 23:46:15 .net
mpich-1.2.7拾ってきてぶっこんだら動きました.
吊ってきます.

137:デフォルトの名無しさん
06/10/25 11:29:00 .net
保守党

138:デフォルトの名無しさん
06/11/16 01:19:10 .net
MPICH2をFedora Core3にて実行しようとしています。
mpdはローカルであれば、正常に起動してicpiなどきちんつ動いているのですが、
ネットワーク越しのリモートで分散させようとすると(mpdboot, rshに書き換え済み)
動作しません。

failed to ping mpd ...といったエラーがでます。

ちなみにrshは単体ではパスワードなしで動作しています。

Fedoreの設定はファイヤーウォールはインストールしていますが、
「ファイヤーウォールは無効」でやっています。

むしろmpdというよりもFedoraの設定のような気がしますが、同様な症状を
経験された方はおられますでしょうか?

139:デフォルトの名無しさん
06/11/28 16:48:25 .net
WindowsXPのVC環境で、3次元空間内におけるある種のシミュレーションプログラムを作って、
それをLinux fedora3のgccとMPI環境で並列化しました。
いまのところWin1CPU版とFedoraMPI版は同じ結果を出してくれるので、いいのですが、
ソースをメン�


140:eナンスするときに、まず1CPU版で試して、それをMPI版に移植する作業 が結構わずらわしいので困っています。 MPI版はシミュレーション空間をn分割(n≧2)する仕様になっているので、n=1として Windows上で動かすことはできません。 そこで思ったのですが、DUAL COREのWindowsマシンならば、そこにMPICH2をインストールして、 n=2で動かせば、CPUも2個使えるし、今後、MPI版のみメンテナンスすれば、fedoraでも Windowsでもソースを共通化できるので、楽になると思ったのですが、この作戦、 どうでしょうか?何か注意すべき点などありましたら、アドバイス御願いします。



141:デフォルトの名無しさん
06/11/29 18:55:13 .net
>>139
mpi詳しくないけど
CPU二個とnode二個はぜんぜん違うからできないんじゃないの?

142:デフォルトの名無しさん
06/11/29 20:04:15 .net
例え、1CPUでもたいがいのMPI実装は2プロセスで並列実行できる

143:デフォルトの名無しさん
06/11/30 10:50:29 .net
>141
ありがとございます。やってみます。

ところで、MPIプログラムのデバッグって、皆さんどういうふうにやっていますか?
私にはとても難しいです。というのは、エラー発生しても、どこかのnodeでエラーが
起こった程度のことしかわからないので、怪しげなところにprintfを沢山いれて探し
出すという泥臭い方法でやっています。
一方WindowsのVCの環境だとDebuggerでSTEPで一行ずつ実行できるので、便利なのですが、
MPIプログラム開発でも、でも何かそういう統合的な開発環境や高性能なDebuggerって
あるのでしょうか?

144:デフォルトの名無しさん
06/12/01 00:13:29 .net
VCってMPIサポートしてたよね?確か

145:デフォルトの名無しさん
06/12/02 21:56:05 .net
>143
ほんまかいな?

146:・∀・)っ-○◎● ◆DanGorION6
06/12/02 22:26:17 .net
MPICH2のWin32バイナリってVC++で使えるんじゃなかったっけ

147:デフォルトの名無しさん
06/12/03 19:00:27 .net
Windows Compute Cluster Server 2003
MS MPI
あたりでぐぐりぇ


148:・∀・)っ-○◎● ◆R.I.S.K.0.
06/12/03 19:07:05 .net
38度の熱が出てるのに俺元気だよなwwww

149:・∀・)っ-○◎● ◆R.I.S.K.0.
06/12/03 19:07:20 .net
誤爆しますた><

150:デフォルトの名無しさん
06/12/04 11:56:46 .net
>146
>Windows Compute Cluster Server 2003
これを買わないとWindowsXPでMPIはできないの?

151:デフォルトの名無しさん
06/12/04 15:24:37 .net
mpiCCでHUGE_VALがあると、

huge-test.cpp(11): warning #1188: floating-point value cannot be represented exactly
double a=HUGE_VAL;

とワーニングが出るんだけど、どうしたらいいかな??

152:デフォルトの名無しさん
06/12/24 01:09:15 .net
関数の引数として自分のタスクIDを渡して、その関数の中で受け取ったIDによって
判別して処理を書き換えるという方法に問題はあるでしょうか?
また一般的ですか?
それとも処理ごとに書き換えた関数を用意して、
呼び出す側でIDによって呼び出す関数を変えた方が良いのでしょうか?

ご回答よろしくお願いします。

153:デフォルトの名無しさん
06/12/24 14:18:16 .net
>>151
スレタイ嫁


154:デフォルトの名無しさん
07/01/03 16:11:55 .net
Mac OS X LAM-MPIの詳しい解説サイトない?

155:デフォルトの名無しさん
07/01/14 01:14:46 .net
MPICH 1.2.5 でWindowsマシン2台でプログラムを動かそうとしたのですが、
以下のようなエラーを吐いてしまいました。
どなたか原因がわかる方いませんでしょうか。
pingでお互いのホストは認識されています。

>ERROR: The root process on "hostname" has unexpectedly exited. Exit code = -1073741515

156:デフォルトの名無しさん
07/01/14 13:35:32 .net
>>154
[hostname]ユーザーが登録されてるクラスタのプロセスがおかしいって言ってるね
もうちょっと構成とか詳しく

157:デフォルトの名無しさん
07/01/14 16:33:20 .net
>>155
レスありがとうございます。
大学の研究室のマシン(XP)で、お互い同じワークグループに入っているようです。
構成についてもっと詳しく書きたいのですが、
どのように調べてどういった情報を書けばいいのか教えていただけますか?
よろしくお願いします。

158:154
07/01/15 19:54:35 .net
154です。
調べたのですがやはりよくわかりません。
>>156で同じワークグループだと書きましたが、それは関係ないみたいですね。
研究室のマシンがどのようにつながっているのか良くわからないのですが、
共有フォルダで互いのファイルを参照できたり同じワークグループに入って
いたりしたので、MPICHも問題なく動くものだと勘違いしていました。
WindowsでMPIを使う場合の構成の仕方が載ってるサイトの情報でも
とてもありがたいので、どなたかご教示願いいたします。

159:155
07/01/15 22:07:54 .net
>>157
URLリンク(www.google.co.jp)
googleでpdf検索すればどう設定すればいいか結構でてくるよ
あとMPIプログラミングやるなら虎の巻は読んどいた方がいいね、まあ健闘を祈る!
ところでCPUは何使ってる?

160:154
07/01/16 00:20:12 .net
>>155
レスありがとうございます。
リンクのトップに出てくるサイトで設定をしていてできなかったのです。
で、いじくってて気づいたのですが、ユーザーズガイドのシステム要件を見たら、
WindowsのHOME EDITIONは使えないのですね・・・
これはMPICH2を使えばいいのでしょうか。
MPICH2のほうのユーザーズガイドみたら特にPROに限るような記述はなかったので
HOMEでもいけるのですかね?

あと、CPUですがPentium4を使っています。

161:デフォルトの名無しさん
07/01/16 02:37:19 .net
>>159
Homeか・・・そりゃ無理だ
デュアルブートでLinux入れる気無い?何に使うかわからんがWindows環境を捨てるのも
一つの手だよ、ただMPIを動かしたいんならKnoppix MPIとか使うと簡単に起動できる
URLリンク(kagakububuturi.hp.infoseek.co.jp)
・・・つーかこれ高校生が作ったにしちゃあよくできてるよな
後Knoppix-MPIで使ってるMPIはLAM-MPIのほうだからMPICH使いたいならあわないかも
URLリンク(www20.atwiki.jp)
適当ですまん (;´Д`)/

162:154
07/01/23 03:52:37 .net
>>160
レス遅れてごめんなさい。
実はあれからMPICH2でやってみたところ、WindowsHomeでも動かすことができました!
たくさん相談にのっていただきありがとうございました。
ただ、今回4台で並列化行う予定なんですけど、
1台だけうまくいかないマシンがあってまた困っています。
他のマシンで2台でやってみると正常に実行できるのに、そのマシンを入れて行うと
"abort: Unable to connect to <hostname>"と出てしまいます。
設定は他のマシンと同じようにしてるつもりなのですが。
ようやくできるようになったと思ったのに、色々問題出てきますね・・・

163:デフォルトの名無しさん
07/01/23 15:13:21 .net
>>161
WinのMPICH2は使った事無いが<hostname>って言うノードが登録されてないんじゃないか?
URLリンク(www.imslab.co.jp)
上のページの一番下が原因かも
あとMPI組んだならHPL(Linpack)ベンチマーク走らせて結果うp!

164:154
07/01/24 02:08:24 .net
>>162
レスありがとうございます!
ご指摘のとおり、アカウント名が原因でした。
あとベンチマークですが、、、余裕があったらやってみます、スミマセン^^;

165:デフォルトの名無しさん
07/01/30 17:50:05 .net
あるプロセッサが持っている行列内の1列をまとめて別のプロセッサに送りたいんですが
どのような関数を使えばいいでしょうか?

166:デフォルトの名無しさん
07/01/30 22:47:50 .net
Parallel Virtual Machine (PVM) 統合スレ
スレリンク(tech板)


167:デフォルトの名無しさん
07/01/31 15:24:23 .net
共有変数を用意したいのですがどうすればいいですか?

168:デフォルトの名無しさん
07/02/02 19:26:04 .net
>>166
つ ny

169:デフォルトの名無しさん
07/02/05 09:33:01 .net
MPICH2でwindowsを2台動かそうとしているんですが、
wmpiconfig.exeでapplyボタンを押しても

<ホスト名>
Credentials for <アカウント名> rejected connecting to <ホスト名>
Aborting: Unable to connect to <ホスト名>

と表示されて設定できません。
アカウント名とパスワードは2台とも同じものを設定していて、
ファイアーウォールも切っています。
pingでもお互いを認識しています。
どなたか原因分かる方よろしくおねがいしますm(_ _ )m

マシン構成は
winXP HOME PEN4 1.6GHz
winXP PRO PENIII 800MHz
です

170:デフォルトの名無しさん
07/02/26 22:15:01 .net
MPI_Finalizeを呼んだら制御が返ってこなくなったんですが、
何か原因に心当たりのある方はおられませんか。

printf("before\n");
MPI_Finalize();
printf("after\n");
これをやったらbeforeしか表示されません。

ちなみにmpich-1.2.7@SUSELinux10.2です。

171:デフォルトの名無しさん
07/02/27 01:07:31 .net
設定がうまくいってないんだろ?

172:169
07/02/27 03:48:13 .net
NFSで共有していないファイルから問題設定を読んでいて、
PC毎にパラメタが変わってこけていたという罠。

吊ってきます
Λ||Λ

173:デフォルトの名無しさん
07/03/13 00:51:59 .net
並列計算に興味あるのですが、単に処理するデータを分割、各PCで計算、最後に統合するのでは
なく、PC毎に別のデータを別の処理方法で行っていて、あるPCの処理結果が別の処理中のPCの処
理に割り込んで処理方法を変えるなどということは出来るのでしょうか?

174:デフォルトの名無しさん
07/03/20 23:06:11 .net
自作のC++プログラムの並列化をしています。
MPI_Finalizeを呼ぶタイミングについて疑問があります。

MPI_Finalizeをmainの末尾で呼べば無事に終わるのですが、
Singletonクラスのデストラクタの中で呼んだら落ちてしまいました。

main を抜けた後に呼んではいけないでんしょうか?
環境は、MPICH2、Win XP SP2、Visual Studio 2005 です。


175:デフォルトの名無しさん
07/05/06 03:28:13 .net
MPI_Gatherなどで、転送するデータタイプはMPI_DOUBLEなどで指定しますが、
データタイプがテンプレートに指定されたデータタイプによって変わる場合、
どのように設定したらよいのでしょうか?


176:デフォルトの名無しさん
07/05/19 08:51:23 .net
平凡な方法ですが、
template<typename T> class MpiConst{};
template<double> struct MpiConst
{
  static const int TYPE = MPI_DOUBLE;
};

と特殊化をしておいてから、目的の template を作る
のは、どうでしょう。

これは、MpiConstを隠蔽する改良案です。
class Base
{
protected:
  Base();
  ~Base();

  static const int TYPE = MPI_DOUBLE;
   // 以下、MpiConst の定義・特殊化
};

template<typename T> TargetClass: protected Base
{ ... };



177:デフォルトの名無しさん
07/05/19 09:14:10 .net
↑すみません。class Base の中の
static const ... の行を消し忘れました。

178:デフォルトの名無しさん
07/05/21 07:56:54 .net
openmpの場合、#ifdef _OPENMPでopenmpを使ってコンパイルしている
場合とそうでない場合に別々のコードを書くことができますが、
MPIの場合はどのようにしたらよいのでしょうか?


179:デフォルトの名無しさん
07/06/09 16:58:36 .net
このスレではPCクラスタのシステム障害(とくにハード)について経験ある方も
少なくないと思うので、お尋ねします。

1年前に構築した16ノードクラスタ(ディスクはNFS共有、ギザイーサ)が、
最近頻繁にp4_errorを起こすようになりました。
とりあえず疑わしいところからパーツを取り替えまくったのですが、全く改善しません。
特定ノードというより全体的にパラパラと障害が発生してるので、もしやネットワークかな
と思ったのですが、ネットワークに問題があるなら、rloginやsshのセッションやNFS
の読み書きにも障害が出ると思うのですが、特に問題は出ていないようです。
MPIで並列したときに限って発生します。
これからネットワークの交換を検討していますが、何かアドバイス頂けいたら幸いです。

ちなみに1年間はほぼ問題なく使えており、他の計算機でも実績があるので
プログラム側の問題ではないです。

180:デフォルトの名無しさん
07/06/22 11:04:41 .net
MPI_Finalizeを行わずに終了した場合、どのような問題が起きる可能性がありますか?

181:デフォルトの名無しさん
07/06/23 23:33:50 .net
MPI_Finalize のソース読んだらいいんじゃね??


182:デフォルトの名無しさん
07/06/24 14:51:42 .net
>>178
今頃気付いたが、ギザイーサワロス
巨大王墓間を高速インターコネクトで結んで世界の七不思議にでも入れたいノケ?

183:デフォルトの名無しさん
07/06/24 15:17:25 .net
デッドロックを発生させない定石のようなものはありますか?

184:デフォルトの名無しさん
07/06/26 08:00:52 .net
>>181
中川しょ(ry

185:デフォルトの名無しさん
07/06/27 15:30:14 .net
>>181
日本語でおk

186:デフォルトの名無しさん
07/06/27 23:51:22 .net
巨大王墓=ピラミッド

187:デフォルトの名無しさん
07/06/28 02:15:45 .net
わかんねーよハゲwww

188:デフォルトの名無しさん
07/06/28 22:45:57 .net
世界の七不思議=ギザのピラミッド他

189:・∀・)っ-○◎●
07/06/29 02:42:04 .net
ギザかわゆすwwwwwww

190:デフォルトの名無しさん
07/07/02 16:57:33 .net
現在boostのuBlasを使って逆行列を解いています。
MPIを使ってさらに大規模な行列を計算させたいのですが、お薦めのライブラリを教えてください

191:デフォルトの名無しさん
07/08/12 20:42:39 .net
どなたかPS3でmpich2やってるひといません?

fedora5でひととおりmpich2をインストール、設定後に実行するとこんなんで
て困ってます。

# mpirun -n 1 date
mpiexec_ps3slave1 (send_dict_msg 632):send_dict_msg: sock= errmsg=:(32, 'Broken pipe'):
mpdtb:
/usr/local/bin/mpdlib.py, 632, send_dict_msg
/usr/local/bin/mpirun, 250, mpiexec
/usr/local/bin/mpirun, 1399, ?

mpiexec_ps3slave1: mpd_uncaught_except_tb handling:
exceptions.KeyError: 'cmd'
/usr/local/bin/mpirun 255 mpiexec
elif msg['cmd'] != 'response_get_mpdrun_values':
/usr/local/bin/mpirun 1399 ?
mpiexec()

どなたか御力をおかしください。

192:190
07/09/03 22:06:14 .net
自己解決しました。Fedoroa 6を入れなおして、mpich2を入れなおしたら
いけました。

他にps3でクラスタやってる人の例をネットなどでみていると、結構Fedora 5で
やってる人がいるから、OSの違いでうまくいったというよりも、初回のmpiの
インストール時の設定に問題があったのかもしれません。以上。

193:デフォルトの名無しさん
07/09/10 01:30:38 .net
MPIでJUnitみないなテストできんの?
知ってるひといたら教えてくれい

194:デフォルトの名無しさん
07/09/12 04:50:40 .net
>>192
こんなのあった
自分は使ったことないが

URLリンク(sourceforge.jp)

195:デフォルトの名無しさん
07/09/23 03:05:43 .net
>>193
つかってみたぞ
いがいとべんりだった


196:デフォルトの名無しさん
07/09/24 00:57:56 .net
誰かまともなチュートリアル書いてくれよ

197:デフォルトの名無しさん
07/09/26 16:47:33 .net
>>195
チュートリアル書きたいが
どんな機能があるのがよくわからん

198:デフォルトの名無しさん
07/09/27 00:30:55 .net
>>195
虎の巻じゃだめかね

199:デフォルトの名無しさん
07/09/27 01:59:38 .net
>>197
虎の巻をたのむ


200:デフォルトの名無しさん
07/09/27 09:50:27 .net
>>198
URLリンク(accc.riken.jp)

201:デフォルトの名無しさん
07/09/27 15:07:25 .net
>>199
すまねえ
193の虎の巻がほしかったんだ


202:デフォルトの名無しさん
07/09/30 00:21:40 .net
>>200
パッケージの中にあるじゃん


203:デフォルトの名無しさん
07/09/30 12:28:39 .net
>>201
あるけどわかりにくくない?


204:デフォルトの名無しさん
07/09/30 21:15:53 .net
>>200

URLリンク(sourceforge.jp)

205:デフォルトの名無しさん
07/09/30 21:37:27 .net
もっぺん書くけどさ、

ま と も な

チュートリアルが欲しいんだよ。


206:デフォルトの名無しさん
07/10/01 03:36:48 .net
>>204
作者に直で言うしかないな


207:デフォルトの名無しさん
07/10/01 23:01:28 .net
みんなここで勉強したのかえ?

208:デフォルトの名無しさん
07/10/04 21:05:22 .net
203のチュートリアルを直そうと思うんだけどここにはっていいよね?
どうせLGPLだし

204氏はどんなチュートリアルが欲しいんだい?


209:デフォルトの名無しさん
07/10/05 12:19:32 .net
boostにmpi入るからそれでいいじゃん

210:デフォルトの名無しさん
07/10/11 00:03:40 .net
だれか>>193使った人いる?


211:デフォルトの名無しさん
07/10/17 09:58:07 .net
>>209
使ってるよ
プログラミングの効率が上がった


212:デフォルトの名無しさん
07/10/20 20:55:50 .net
作者は岩手大学の学生か?


213:デフォルトの名無しさん
07/10/26 21:09:07 .net
AUTHORSにそう書いてあるね


214:デフォルトの名無しさん
07/11/02 21:07:27 .net
CentOS5.0にrpmで入ってたOpenMPIを使ってます。

$ rpm -qa |grep mpi
openmpi-devel-1.1.1-5.el5
openmpi-libs-1.1.1-5.el5
openmpi-libs-1.1.1-5.el5
openmpi-1.1.1-5.el5
openmpi-devel-1.1.1-5.el5

手元にX86_64のPCが2台とi386のPCがあるのですが、

異種アーキテクチャのバイナリの自動選択はどうやってするのでしょうか?

全部i386で揃えろって意見もあるかもしれませんが、64bit整数演算をする
ので64bitで動かしたいんですよね。

mpichは出来るみたいですね。

URLリンク(enrico.phys.cmu.edu)

というかOpenMPIはman マニュアル無くて悲しい。

215:デフォルトの名無しさん
07/11/04 15:00:58 .net
Debian 4.0 etch AMD64のマシンを2台用意してMPICHで環境を整えようとしています。
2台ともデュアルコアなので、

/etc/mpich/machines.LINUX   に
cluster1:2
cluster2:2

と記述しています。
テストを行おうと
mpirun -np 4 cpi
をしてみたのですが、1分以上待ってもプロンプトが帰ってきません。しかし
mpirun -np 3 cpi
とするとcluster1に2スレッド、cluster2に1スレッド割り当てられ計算結果がすぐ返ってきます?

4コア使い切るためにはどうしたら良いでしょうか?


216:213
07/11/07 00:40:14 .net
色々試したが諦めた。次はPVMを試そうと思う。

217:デフォルトの名無しさん
07/11/07 11:28:47 .net
SuSE Linux9.3
mpich-1.2.7p1
gcc, pgi 7.1
を使用していますが、emacsでmpiデバッグできませんかね。
gdbとpgdbgを使ってデバッグできますが、
pgdbgは使いにくいし、gdb単体も使いにくいので、できれば
emacsからgdbを起動したいなと。


218:デフォルトの名無しさん
07/11/07 13:26:16 .net
PVMってまだ使われてるの?

219:213
07/11/07 14:06:12 .net
>>217
しらんけど、CentOSに標準でパッケージが入ってたよ。


220:デフォルトの名無しさん
07/11/07 15:42:53 .net
>>213
ローカルマシンに同じ名前のディレクトリを作る。
そこに機種毎のバイナリを置く。
これで桶。

221:デフォルトの名無しさん
07/11/07 15:44:35 .net
>>219
補足。
機種毎のバイナリは同じ名前で作っておく。

mpirunはデフォでは同じ名前のユーザーの同じ名前のディレクトリにある
同じ名前のコマンドを実行するだけなので。

222:デフォルトの名無しさん
07/11/07 15:59:06 .net
>>218
標準で入ってるんだ
昔はPVMが主流だったそうだけど、今はほとんどがMPIだよね

223:213
07/11/08 00:36:34 .net
>>219
ありがとう。しかしPVMのマニュアルをせっかく読み始めたので
こっちで行ってみます。MPIは出鼻をくじかれたので気に入らない。

224:214
07/11/10 21:37:30 .net
/etc/mpich/machines.LINUX   の
localhost:2
cluster2:2

となっていたのを

cluster1:2
cluster2:2

にしたらいけました。3スレッドはできるので machines.LINUXは悪くないと決め付けてました。



225:デフォルトの名無しさん
07/12/12 06:13:16 .net
MPIの並列計算で困っています。アドバイスお願いいたします。

・4CPU/共有メモリの計算機でMPIによる並列計算を行っています。
しかし
・この計算機の場合、計算実時間が1CPUで計算している場合よりも
大幅に増えてしまいます。
(大学の大型計算機等で計算した場合、計算実時間は4CPUの場合、
1CPUの1/3.4ぐらいに短縮されますのでプログラム的には問題ないと考えています。)
・top コマンドで計算状況を監視していると、使用CPUが変動し、しばしば
同じCPUを2つのスレッドで競合しているようです。
・使用CPUの数をいろいろと変えてみましたが必ず競合してしまうようです。
・従って時間計測コマンドでCPU時間を測定すると、
下記のようにCPU時間は短縮されているが、実時間は増えてしまうという結果になるようです。
real time 1000.0
user time 250.0
・計算機を納品した会社(H○C systems)に質問したところ、
設定は問題はない。プログラムの問題、あるいは通信時間がかかってしまうので
実時間が増える、といういい加減な返答しかきません。

似たような症状を経験したことのある方、対処法をご存知でしたら
教えてもらえないでしょうか。

226:デフォルトの名無しさん
07/12/13 07:08:53 .net
sched_setaffinity(2) を使うと幸せになれるかも。

227:デフォルトの名無しさん
07/12/27 14:48:26 .net
>>224
MPICHならconfigure時に --mem=shared を付けて構築すべし
通信が共有メモリを介したものになる(異ノード間は当然sshやrsh経由)。
実行時に ps -x してsshやrshでプロセスが起動してたら、わざわざ同一計算機内でTCP/IP通信しちゃってるので損。
OSやコンパイラに付属のMPICHはsharedで構築されていない例が多いので自分で構築してみよう。


228:デフォルトの名無しさん
07/12/27 14:59:25 .net
4CPU/共有メモリって、いわゆる普通のマルチプロセッサのことだよね
今時シングルコアはないから、2コアの2CPUなんだろう

229:デフォルトの名無しさん
07/12/28 20:38:39 .net
みなさまご助言ありがとうございます。
>>225
検索すると状況としてはこれが当てはまる感じなのですが、
私には使い方がよく分かりません。
詳しいサイト等ありましたら教えてもらえないでしょうか。

>>226
確かにps x コマンドで確認すると(ノード内の場合でも)
rsh が動いていました。
このコンピュータはMPIのインストール及び設定済みのものを
購入したのですが、業者がいいかげんということなのでしょうか?
複数ノード構成なのですが、この場合はどうなのでしょうか
業者の説明では例えば、machinefile に
node00:2 とすればSMPとなるとのことでした。
node00 node00 とすれば通信が発生するとのことでした。

>>227
シングルコアのItanium2:4CPUx4ノードの構成です。
(年度でわけて増設して購入したのでちょっと古いCPUになっています)
納品されたのは1年以上前なのですが、不具合ばかりです。

230:225
07/12/29 00:39:48 .net
こんな感じ。

#include <mpi.h>
#include <sched.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
  int rank;
  cpu_set_t mask;
  double t;

  MPI_Init(&argc, &argv);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  __CPU_ZERO(&mask);
  __CPU_SET(rank, &mask);
  if (sched_setaffinity(0, sizeof(mask), &mask) == -1) {
    perror("Failed to set CPU affinity");
    goto error;
  }
  t = MPI_Wtime();
  while (MPI_Wtime() - t < 10 + rank * 5)
    ;
  MPI_Finalize();
  return 0;

 error:
  MPI_Finalize();
  return -1;
}

231:225
07/12/29 00:46:50 .net
>>229のプログラムは各プロセスが (10 + rank * 5) 秒後に終了する。
sar コマンドを使って、例えば

> sar -P ALL 1 1000

とやると各プロセスがランクと同じ番号の CPU で走り続けてランク順に終了していく様子が観察できる。

参考にしたページ:URLリンク(d.hatena.ne.jp)

232:デフォルトの名無しさん
08/01/08 18:31:33 .net
>>226
の書き込み見て、--with-comm=shared というオプションをつけてMPICHを
コンパイルしてみたんだけど、逆に遅くなりました。共有メモリのほうが早く
なると思うんですけど、どうしてだろう?
CPUは Core 2 Quad 2.4GHz を使っています。

233:デフォルトの名無しさん
08/01/09 01:43:00 .net
GridMPIについて、質問です。

GridMPIのMPI関数は、通信先によって、リモートノードなら、IMPI、
自ノードなら自ノード内のMPI(ベンダMPIなど)を呼び出して通信
するはずですが、GridMPIが提供しているMPI関数と(自ノードの)
ベンダMPIの関数のシンボルが重複しないのはなぜでしょう?

(最初は、GridMPIから発行するベンダMPIの関数は、MPI関数では
なく、PMPI関数と思っていましたが、これは違いますよね・・・)


234:デフォルトの名無しさん
08/01/10 00:07:05 .net
MPICH1.2.5について質問です。
MPICHのブロードキャストはTCPを用いて行われているようなのですが、
UDPによるブロードキャストを使用することはできるのでしょうか?
ご存知の方がいらっしゃれば、よろしくお願いします。

235:デフォルトの名無しさん
08/01/11 10:27:42 .net
普段はPVMでプログラミングをしているのですが、MPIでは

1.スレーブ(MPIでもこういう表現するんですかね)のマシンに
 計算領域を割り当てて計算させる

2.マスタに計算結果を返す

1と2を繰り返す

という流れはどういう風にソース上で実現させているのでしょうか。


236:デフォルトの名無しさん
08/01/11 20:48:46 .net
>>234
スレーブとか言いません。
全く同じプログラムが複数走ります。
主従はなく、皆平等です。

MPI_Comm_rank関数を呼び出すと自分のノード番号がわかるので、
その番号に応じた振舞いをするようにプログラムを書きます。
たとえば、0から100までの足し算を2台の計算機でするときに、
ノード番号0なら0から49まで、ノード番号1なら50から100まで計算するようにしておきます。
通信は送信したいノード番号に向けて送信し、受信したいノード番号を指定して受信します。


237:デフォルトの名無しさん
08/01/12 20:56:17 .net
WindowsCCSでHPLのベンチ取りたいんだけど参考になるwebとかありませんか?

238:デフォルトの名無しさん
08/01/13 11:21:47 .net
>>235
そうやるんですか

PVMで同じようにする方法がさっぱりわからんもんで
参考になるかな、とは考えたのですが・・・

239:デフォルトの名無しさん
08/01/16 23:13:34 .net
PVMってまだ使われてるのか?

240:デフォルトの名無しさん
08/02/07 17:31:34 .net
おーい、このスレ生きてますか?

質問です。

class base {
...
};

class derived1: base{
...
};

class derived2: base{
...
};

があって、
vector<base*> v;
にノード0で
v.push_back(new derived1());
v.push_back(new derived2());
...
などとして配列を作ります。
で、作った物を他のノードに配信したいのですが、どうやれば良いでしょうか?
newで生成したderived1などのオブジェクトも一緒に配信したいわけで、単純にvのバイト列を送れば良いというわけには行かないわけで。
実際にはderived1等にもnewしたオブジェクトのポインタが存在して、それも他のノードで再現したいわけで...

241:デフォルトの名無しさん
08/02/07 18:19:40 .net
死んでます

242:239
08/02/07 20:05:46 .net
死んでるのかよ!

って、まあ置いといて、STLのstringなんかもオブジェクトのバイナリ丸コピじゃだめなんだよな。
ヒープからバッファ取ってるから。
となると、シリアライズして送信、受信側で再構築なんだろうけど、正直面倒臭いな。


243:デフォルトの名無しさん
08/03/01 05:39:37 .net
MPI_File_xxでテキストファイルは扱えないのでしょうか?

244:デフォルトの名無しさん
08/03/06 23:33:27 .net
学科の演習用端末更新終わった~

Linux / Cele 420 / MEM 2GB / 26台 /hdd less

という構成なんだが、手軽に遊ばせるMPIのサンプルないかな?

ちなみに、午後6時に強制shutdownの設定になってるので、
長くても8時間程度のジョブの奴を頼む。

245:デフォルトの名無しさん
08/03/18 08:12:50 .net
MPIプログラムによってネットワークがどのくらい使用されているかは、どのようにしてわかりますか?
環境はFedora8+Intel C++ 10です。

246:デフォルトの名無しさん
08/03/29 13:32:00 .net
Windows用のものはありませんか?

247:デフォルトの名無しさん
08/04/05 15:00:58 .net
MPICHにWindows版があるyp!

248:デフォルトの名無しさん
08/04/17 17:12:34 .net
プログラムをコンパイルし実行するとsignal 6というエラーが出るのですが、これはどのようなエラーなのでしょうか?

249:デフォルトの名無しさん
08/04/17 18:43:41 .net
どっかでabort()してるんじゃないの

250:デフォルトの名無しさん
08/04/18 21:06:07 .net
MPIにおけるシグナルの使い方は実装依存なのじゃ。
同じエラーが出るミニプログラムを作ってうp汁

251:デフォルトの名無しさん
08/04/22 00:04:00 .net
NPACI Rocksつこうてる人おる?
どこのスレいけばいいか解らんくて
迷子してる

252:デフォルトの名無しさん
08/05/21 23:38:11 .net
計算の進行状況をファイルに書いてたのだが、
ファイルがバッファリングされる関係で
リアルタイムで更新されないので、fflushを
つっこんだら、計算時間が倍になったぞ。

こういうのは難しいなぁ。


253:デフォルトの名無しさん
08/05/22 06:37:45 .net
>>251
NFSとかSambaでリモートのファイルシステムに書いてない?
ローカルの /tmp あたりに書くようにすると速くなるかも。

254:デフォルトの名無しさん
08/05/22 09:17:59 .net
というか、頻繁に確認しない限りそんな遅くならないんじゃないの?

255:251
08/05/23 00:45:22 .net
>>252
リモートファイルシステムです。
多分それで速くなると思いますが/tmpとか勝手に
使ったら怒られそう。大学共同利用のシステムなんで。

>>253
かなり頻繁に更新してますた。数秒に1回ぐらい。

進行状況を書いてただけなので、flush頻度を1/100
にしたら速度がだいたい元に戻りました。

256:デフォルトの名無しさん
08/05/23 01:30:25 .net
>>254
普通の大学の計算機センターならローカルディスクぐらい用意してるよ。
聞いてみな

257:251
08/05/24 18:29:49 .net
計算の進行状況をlogに書くってのも一歩間違うと大変な事になるな。

計算で64bit Intetgerを使って、桁あふれ(2^64)が起きたら
「SKIPしますた」とlogファイルに書いて次ぎのデータ処理に入る
ようにしてたんだ。

今まで深さ4の処理をしてたんだが桁あふれが起きてなかった。

次に深さ5の処理に入ったんだ。とたんに桁あふれが増えて
「SKIPしますた。」でdisk使用制限が超えそうになっちまった。

テラヤバスで、20時間実行したjobを強制停止…

>>255
いや、他大学システムなんで、あまりくだらない質問したく
なくて。利用料金も私が出したんじゃなくて、教授のだし。

258:デフォルトの名無しさん
08/05/26 19:24:36 .net
MPICHのMPI_Finalizeって常時ポーリングしてんのかな?
処理が終ってFinalize待ちのプロセッサの負荷が100%になってやがる。
割り込み使ってくだちゃい。

259:デフォルトの名無しさん
08/05/27 21:52:46 .net
負荷100%といえば、

rank=0のタスクをjobのマネージメントだけにつかって
rank=1以降を計算に使うプログラムを書いた。

rank=0とrank=1以降でも大してCPU使用率がかわらん
かった。rank=0のタスクはMPI_RECVで待機してただけ
なんだがな。

260:デフォルトの名無しさん
08/06/20 22:58:08 .net
MPIで複数のCPUを使って計算させたときに、計算の速さ(結果)を秒数などで表示する
何か良いプログラムは無いでしょうか?

姫野ベンチやHPLだと、結果がFLOPSでしかでないので分かりにくいと言われ
体感的(秒数なもの)にわかるものにしてほしいと(´・ω・`)

思いつく簡単なベンチマークを例であげると、例えばスーパーπの104万桁を2つのCPUで
計算した場合は○○秒かかったけど、4つだと○秒だったよ!という感じです。(ベンチマーク
じゃなくてもいいです。)

よろしくお願いします。

261:デフォルトの名無しさん
08/06/20 23:17:57 .net
>>259
自分で秒数に戻せばいい。そもそも計算速度(flop/sec)というのは

 計算速度=計算量÷計算時間

として求めている。
計算量(浮動小数点演算の回数)はプログラムによって決まる。
ベンチマークプログラムなら解説文書に計算量が書いてあるはず。
計算量と計算速度が分かれば当然ながら

 計算時間=計算量÷計算速度

で秒数が分かる。

262:デフォルトの名無しさん
08/06/21 01:48:01 .net
>>260

アドバイスありがとうございます!
なるほど!
そういう風に求めるのですね。

助かりましたm(__)m

263:デフォルトの名無しさん
08/06/21 10:55:46 .net
time mpirun -np 3 aho &
でいいじゃん。
各ノードごとの時間を知りたければ
mpirun -np 3 time aho &
でできるぜ

264:259
08/06/26 17:15:29 .net
>>262

timeを使えば計算時間分かりますね!
アドバイスありがとうございますm(__)m

すいません。色々アドバイスを頂いたのですが何かオープンキャンパスで
高校生の方たちにクラスタを使ってもらうらしく姫野ベンチとかだと流体
の計算なので何を計算しているのかイメージが付きにくいんじゃないか?
と、言われまして何かイメージが付きやすいプログラムというのは無い
でしょうかね・・・?

すいません、変な質問をして(汗

265:デフォルトの名無しさん
08/06/26 22:30:47 .net
>>263
計算結果を可視化するところまでやるとか。
でも見た目が楽しい計算結果でないと訴求力がないだろうねえ。

あるいは利用ノード数(並列度)を変えて実行時間の変化をグラフにして
並列度の高いクラスタのありがたみ(速度向上)を訴えるとか。

266:デフォルトの名無しさん
08/06/27 01:51:51 .net
>>263
迷路。

ノードごとに探索経路を色分けすればぐー

267:259
08/06/27 11:53:25 .net
>>264

>計算結果を可視化するところまでやるとか。
>でも見た目が楽しい計算結果でないと訴求力がないだろうねえ。

そうなんですよね~
分子力学のプログラムで計算結果を可視化できるものがあったんですが
リンク切れとソースの名前をググっても出てこなかったので諦めました・・・。

>あるいは利用ノード数(並列度)を変えて実行時間の変化をグラフにして
>並列度の高いクラスタのありがたみ(速度向上)を訴えるとか。

なるほど。理想値と実際に計算にかかった時間をグラフに書いてもらえば
オーバーヘッドの事や何倍速く計算できたかと言う事が分かりやすいですね!
アドバイスありがとうございますm(__)m

>>265

>迷路。

すいません。
迷路というのは迷路を解くと言う事でしょうか?

268:デフォルトの名無しさん
08/08/22 20:08:51 .net
すいません MPI初心者です。
windowsでMPIを実行しようとしているんですけどエラーがでて困っています。
インクルドのパスは切っています。
error C2653: 'MPI' : 識別子がクラス名でも名前空間名でもありません。
error C3861: 'Init': 識別子が見つかりませんでした
というエラーがでます。
なんで何でしょう。いきなり初期設定でつまずいて恥ずかしいのですが
だれかアドバイスしていただけないでしょうか。

269:デフォルトの名無しさん
08/08/23 08:45:51 .net
>>267
それで他人になにか状況が伝わるとでも?

270:デフォルトの名無しさん
08/08/23 18:49:31 .net
C:Program Files\MPICH2\lib
C:Program Files\MPICH2\include
を追加する。
最低これでエラーはなくなるはずのに認識できない。
メッセージは同様。
error C2653: 'MPI' : 識別子がクラス名でも名前空間名でもありません。
error C3861: 'Init': 識別子が見つかりませんでした
絶対windowsで同様なエラーが出ている人がいるはず。
MPICH2はwindowsでは無理なのか?


271:デフォルトの名無しさん
08/08/23 21:20:54 .net
>>269
それで他人になにか状況が伝わるとでも?


ソースくらい出せ。
コンパイルオプションくらい出せ

272:デフォルトの名無しさん
08/08/23 21:22:39 .net
windowsでMPICH2は「余裕で」動いてる。

273:デフォルトの名無しさん
08/08/24 14:46:18 .net
わかりました。
ウィザードで作った雛形をつかってコピしていたからみたいです。
空のディレクトリをしてしてファイル追加してみるとできました。
ご声援ありがとうございました。何の役にもたたなかったけど(w

274:デフォルトの名無しさん
08/08/24 20:32:38 .net
>>272
何の役にも立たないのは、お前がなんら情報を出さないからだろ。
自分の低能を棚上げしてイヤミで〆か。
新打法がいいね。

275:デフォルトの名無しさん
08/08/25 17:29:10 .net
>>273
野球していたが打てなかったので1本足打法に変えました。
するとよく打てるようになりました。
そして解説者に言われました。
新打法がいいね。

276:デフォルトの名無しさん
08/08/25 23:55:04 .net
自分の考えを人間にすら伝えられないバカは
自分の考えをコンピュータに伝えられるわけがない。
プログラムなんてやめた方がいいよ。

277:デフォルトの名無しさん
08/09/16 08:21:40 .net
OpenMPIってVistaじゃ使えないの?

278:デフォルトの名無しさん
08/09/17 03:03:50 .net
なんか荒れてる…w
MPICH2いれてBoostのMPI使おうかと思ったが
うまくいかね

using mpi ; をusr-config.jamに書いたが
パスが通ってないと言われる…

いい解説サイト知っていたら教えてくださいませ

279:デフォルトの名無しさん
08/11/01 04:35:50 .net
MPI対応のFFTで、2次元の場合はタイル状に、3次元の場合はブロック状に、
データ分割可能なもの知りませんか?

fftwやFFTEのMPI版は短冊形(z方向分割)にしか対応していません。

280:デフォルトの名無しさん
08/12/01 12:33:58 .net
ちょっと質問なんですが
MPI_Sendrecvってペアじゃないと使えないですかね?

片方がMPI_Sendrecv

もう一方がMPI_SendだけとかMPI_Recvだけとか。

わかる方いたらご教授願いたいのですが。


281:デフォルトの名無しさん
08/12/04 16:33:04 .net
シングルノードWinXP-Proの環境で、MPICH2に付属ので例題cpi.exeを実行してみたら動きませんでした。
エラーメッセージは特になく、タスクマネージャで確認するとCPUコア数分のcpi.exeが実行中であるのが
確認できるのでが、強制終了する以外コントロールできない状況です。MPICH1ではうまくゆくのですが。
どなたかご教示のほうよろしくお願いします。



282:デフォルトの名無しさん
09/01/13 08:26:39 .net
MPI初心者です。MPICH2をMacOSXにインストールしました。
とりあえず以下のコードを実行しました。
$ mpicc test.c
$ mpiexec -n 3 ./a.out

#include <stdio.h>
#include "mpi.h"
int main(int argc, char **argv){
int nprocs;
int mype;
int proc_name_len;
char proc_name[40];

MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &mype);
MPI_Get_processor_name(proc_name, &proc_name_len);
printf("My name is : %s\n", proc_name);
MPI_Finalize();
}
すると、結果は
My name is : tetsuya-sato-macbook.local
My name is : tetsuya-sato-macbook.local
My name is : tetsuya-sato-macbook.local
となりました。全処理が自分の端末で実行されてしまっているということでしょうか。環境設定がうまくいっていないのでしょうか。
一応、自分の端末からssh経由でログイン出来るLinux端末が10台あるので、自分の端末のホームディレクトリ配下に
mpd.hostsファイルを作成してそれら10台のマシンのホスト名を記述しました。次に、自分の端末で
$ cd ~/.ssh
$ ssh-keygen -t rsa
$ cp ida_rsa.pub authorized_keys2
としました。それから、このauthorized_keys2ファイルをsshでログイン出来るLinux端末10台の
~/.ssh/配下にSCPにてコピーしました。この先、何をやればよいでしょうか?

283:デフォルトの名無しさん
09/01/14 00:08:03 .net
machinefile または hosts でいけるんじゃないか
mpiexec -machinefile mpd.hosts -n 3 a.out
URLリンク(www.mcs.anl.gov)

284:281
09/01/15 03:39:43 .net
>>282
有り難うございます。出来ました。
別の質問なのですが、以下のコードを実行すると、結果は順不同で出力されます。
#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"
int main(int argc, char **argv){
int nprocs;
int mype;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &mype);
printf("proc番号は : %d\n", mype);
MPI_Finalize();
}
<結果>
proc番号は : 0
proc番号は : 2
proc番号は : 1
これを必ず昇順の0、1、2のランクの順に出力したい場合はどう修正すればよいでしょうか?

285:デフォルトの名無しさん
09/01/15 10:36:11 .net
>>283
別々のプロセスが勝手に出力を出しているのでそうなる。
ノード0 出力が終わったらノード1に何か情報を送る
ノード1 ノード0空の受信を待った後、画面に出力。その後ノード2に情報を送信
・・・
という感じにするか、あるいはノード0に角ノードが出力したい情報を送りつけて、出力は全部ノード0でやるか。


286:デフォルトの名無しさん
09/01/15 14:13:53 .net
最初の頃に買った本紹介しとくよ
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)

287:281
09/01/16 09:59:35 .net
>>285
どっちか一冊買ってみます。
>>284
こんな感じにしたのですが、順番に出力されません。書き方、まずいでしょうか?
#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"
int main(int argc, char **argv){
int nprocs;
int mype;
int dummy;
int i;
int tag=0;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &mype);
for(i=0; i<nprocs-1; i++) {
if(mype==i) {
printf("My proc is : %d\n", mype);
MPI_Send(&mype, 1, MPI_INT, i+1, tag, MPI_COMM_WORLD);}
if(mype==i+1) {
MPI_Recv(&dummy, 1, MPI_INT, i, tag, MPI_COMM_WORLD, &status);}
}
if(mype==(nprocs-1)) {
printf("My proc is : %d\n", mype);}
MPI_Finalize();}
<実行>
mpirun -np 5 -machinefile mpd.hosts ./a.out

288:デフォルトの名無しさん
09/01/16 11:11:50 .net
>>286
それ、最終ノードが受信してなくね?
printf後にfflushするといいかも

それとループするより素直に
ノード0
 表示
 送信
ノード 1...n-1
 受信
 表示
 送信
ノード n
 受信
 表示

でバラして書いた方が見やすいと思う。
同じコードをたくさん書きたくなければ、受信、送信のところを条件分けで囲ったものの間に共通の表示処理を入れるか。

289:デフォルトの名無しさん
09/01/30 11:49:31 .net
One of the processes started by mpirun has exited with a nonzero exit
code. This typically indicates that the process finished in error.
If your process did not finish in error, be sure to include a "return
0" or "exit(0)" in your C code before exiting the application.

PID 13373 failed on node n0 (1**.1**.**.10) due to signal 9.

とエラーが出ます。

パック、アンパックを利用して、何度も送受信出来ているんですけど、
5000回程度繰り返したところでエラーがでます。

考えれる原因などありますか?

290:デフォルトの名無しさん
09/01/30 20:45:55 .net
>>288
プログラムのどっかでreturn 0かexit(0)してんだろ

291:デフォルトの名無しさん
09/01/30 22:40:48 .net
質問

コンパイルすると"libmpi_c.so.0"なり"libmpi_cxx.so.0"が
No such fileって言われるんだけどこれはどう解決すればいいですか?

292:デフォルトの名無しさん
09/01/30 23:51:35 .net
MPIみたいな、少なくとも大学院クラスの人間が数値解析で使うもののスレにしては
エスパーを要請する質問が多いな。
そんな表現能力じゃ論文もかけないだろ。

293:デフォルトの名無しさん
09/02/02 21:48:5


294:6 .net



295:デフォルトの名無しさん
09/02/02 21:52:31 .net
>>292
signal9だからSIGKILLだ。
自分で殺してないんだったら、誰かにプロセス殺されてるんじゃないのか。
時間貸しのスパコンとかだったら、一定時間来たらプロセス殺されるぞ。

296:デフォルトの名無しさん
09/02/03 13:14:23 .net
どうせおまえさんんが書いたコードのバグだと思うけど
とりあえずソースさらしなよ
それで解決するかどうかは分からんけど、
少なくとも>>289みたいなアホは湧かなくなるよ

297:.
09/02/03 16:56:38 .net
>>294
>>288から得られる情報は>>289くらいしかないだろう、実際。


298:デフォルトの名無しさん
09/02/04 21:26:54 .net
>>290
エスパー回答だが、コンパイル時にmpiccを使ってないとか?


299:デフォルトの名無しさん
09/02/04 21:43:21 .net
スパコンのバッチファイルって、QUEUEに投入後書き換えても
反映されるのかな? ちょいスクリプトのタイポして、書き換えたい
のだが… 64CPUなのにSIZEの所に8と書いてしまった…

今の時期、QUEUEに順番待ちが多くて、再投入すると多分一週間後
になるんだ。

---------
cd ${QSUB_WORKDIR}

SIZE=64
C=1
while [ ${C} -lt 10 ]; do
echo -n STEP${C}: ; date
mpiexec -n ${SIZE} ./a.out ${C}
let C=C+1
done
echo -n DONE: ; date
----------

300:294
09/02/05 10:25:41 .net
みなさん、丁寧にありがとうございます。

2chにソースはあげたくないので、メール頂けると助かります。

301:デフォルトの名無しさん
09/02/05 13:19:21 .net
>>298
いくら払うんだ?

302:デフォルトの名無しさん
09/02/05 22:34:17 .net
>>298
どうせ卒論だろ。研究室の先輩に聞けよ。

303:デフォルトの名無しさん
09/02/22 17:59:18 .net
マスタープロセスの処理内でMPI_Bcastしたいのですが、無理でしょうか?例えば以下のようなコードがあった場合(あまり意味がないコードですが)、
マスタが"TERMINATE"をタグにつけて送るまでの間、スレーブは無限ループでメッセージを受信し続ける。その間、一定の処理毎にマスターとスレーブの
プロセス間で同期を取らせたい。しかし、同期を取らせたい処理はマスタープロセスのif文内にあるので、実行しても効果はない。(つまり、(1)でBcastをやっても反映されない。勿論(2)は反映される)何かいい方法はありますか?
(コードは途中省略)
MPI_Datatype newtype;
MPI_Type_contiguous(sizeof(struct abc), MPI_BYTE, &newtype);
MPI_Type_commit(&newtype);
int k, j, r;
srand((unsigned)time(NULL));
r=rand()%10+1;
if(mype==0) {
for(j=0; j<100; j++) {
for(k=0; k<r; k++) {
MPI_Send(&kp[0], 1, newtype, 1, CONTINUE, MPI_COMM_WORLD);
}
//(1) MPI_Bcast(kp, 3, newtype, 0, MPI_COMM_WORLD);
}
MPI_Send(&kp[0], 1, newtype, 1, TERMINATE, MPI_COMM_WORLD);
} if(mype==1) {
do {
MPI_Probe(0, MPI_ANY_TAG, MPI_COMM_WORLD, &stat);
if(stat.MPI_TAG==CONTINUE) {
MPI_Recv(&kp[0], 1, newtype, 0, CONTINUE, MPI_COMM_WORLD, &stat);
}
} while(stat.MPI_TAG==CONTINUE);
}
//(2) MPI_Bcast(kp, 3, newtype, 0, MPI_COMM_WORLD);

304:デフォルトの名無しさん
09/03/11 02:46:50 .net
URLリンク(arkouji.cocolog-nifty.com)

概ね、ここに書いてあるようにやりました。
(使いたいのはfortranなのでfortranの設定は別にやっときました)
ここの一番下のサンプルコードをビルドしようとすると以下のエラーが出ます。

warning C4627: '#include "mpi.h"': プリコンパイル済みヘッダーの使用を検索中にスキップされました 行;1
warning C4627: '#include <iostream>': プリコンパイル済みヘッダーの使用を検索中にスキップされました 行;2
fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?  行:18

また、fortranのコードを自分で書いてビルドしようとすると、以下のようなエラーが出ます。

fatal error LNK1181: 入力ファイル 'mpilib.obj' を開けません。

どこが間違ってるんでしょうか?環境はvisual studio2008とvisual fortran11です。

305:302
09/03/11 02:59:26 .net
アドレス間違えました。こっちです。
URLリンク(ums.futene.net)

306:デフォルトの名無しさん
09/03/12 02:12:20 .net
> 使いたいのはfortran

> #include <iostream>

> int main(int argc,char **argv)

これのどこがFortran…

307:デフォルトの名無しさん
09/03/12 18:40:57 .net
>>304
いや、すみません、上はCのサンプルコードをビルドしようとしたときのことです。
「また、fortranの…」以降が自分で書いたfortranのコードをビルドしようとしたときです。
分かりにくくて申し訳ないです。

308:デフォルトの名無しさん
09/03/12 19:24:10 .net
>>302
プロジェクトのプロパティの
Configuration Properties → C/C++ → Precompiled Headers → Create/Use Precompiled Header
を Not Using Precompiled Headers にすればいいと思われ。
(VC++ で C のプログラムをコンパイルするときによくハマる罠です。)
これは英語版の VC++ 2008 の表記だけど日本語版にも該当する項目があるはず。


309:302
09/03/12 20:45:54 .net
>>306
Cの方は出来ました!ありがとうございます。

310:デフォルトの名無しさん
09/03/12 21:26:09 .net
正直、Linux入れてmpif77とかmpiccとかのラッピングされたコマンド使ったほうが楽だろ。
ライブラリが足りないとかそんな次元が自己解決できないようなら。
KNOPPIXに入ってたりするからとりあえずそれで試してみれば。

311:デフォルトの名無しさん
09/03/12 23:17:29 .net
>>307
動いて良かったね。Fortran の方は俺は使ったことないので単なる予想だけど
mpi.lib の点(ピリオド)が抜けてて mpilib → mpilib.obj と解釈されてるのでは。
あと mpi.lib と一緒に fmpich2.lib も要るかも。

>>308
普段 Windows で暮らしていると実行してデバッグできる MPICH2 for Win32 は
とっても便利ですよー。多少苦労しても使う価値があると思います。Windows
マシンはありふれているので手近の PC をかき集めて“なんちゃってクラスタ”を
作るといったことも案外簡単にできます。


312:デフォルトの名無しさん
09/03/13 07:00:15 .net
>>308
もともと、リモートにlinuxが入っててmpiが使える計算機はあるんですが、ちょっと楽して
開発したかったので。情けない話ですがCUIは苦手なんで出来る限り避けてます…
と言おうと思ったらKNOPPIXってGUIなんですね。そんなのもあったんですね。

>>309
全ておっしゃるとおりでした。お恥ずかしいです。
後から僕のようなレベルの人がここに来た場合のために経過を書いときます。

mpi.libに直したところ、未解決のシンボル云々というエラーが出てきたので、
fmpich2.libを追加したらビルドが成功しました。その後、実行しようとすると、
mpiexec.exeが見つかりません、と出ました。C:\Program Files\MPICH2\bin\への
パスは通っているので、プロジェクトのプロパティ→コマンド のところにはmpiexec.exe
とだけ書いておいたんですが、念のためC:\Program Files\MPICH2\bin\mpiexec.exeと
フルパスにするとちゃんと動きました。パスが通ってても上の指定じゃだめなんですね。

ちなみにデバッグ無しで実行すると問題なく出来るけど、デバッグ開始を選択すると
デバッグ情報が見つからないか、または一致しませんってエラーが出ました。
要するにブレークポイントとか関数ウオッチとかあのあたりが使えないってことですかね。
もはやmpiの質問でも無さそうなんで、も少し調べてみることにします。

ところで参考までにお聞きしたいんですが、309さんはどういう環境で使ってらっしゃるんでしょうか?

313:302
09/03/13 07:02:25 .net
というかマニュアルに思い切りfortranの場合fmpich2.libを追加してね、と
書いてあったんですよね。まるっきり見落としてました。ほんとに申し訳ない。

314:デフォルトの名無しさん
09/03/13 10:23:00 .net
>>310
309ですが使っている環境は何の変哲もないですよ。
Windows XP に MPICH2 と Visual Studio 2008 Express Edition を入れてます(あと MinGW も)。
用途は数値シミュレーションで、Windows PC で小さな問題サイズで実行できるところまで作って、
Linux クラスタに移して大きな問題サイズで実行、実験データを採るというパタンが多いです。
クラスタの計算ノードはマルチコアなので OpenMP も併用しています。

最近書いたコードは、逐次、OpenMP 並列、MPI 並列、OpenMP + MPI ハイブリッド並列の
4つのバージョンを同じソースから条件コンパイルで生成できるようにしました。
VS 2008 EE では OpenMP をサポートしているので、MPICH2 と組み合わせることで
複数の並列化の方法を実際に試して性能のいいものを選ぶという芸当が Windows 上でもできます。(^^)

ああ、そうだ、Windows 上で実行できることのメリットを1つ思い出しました。
上述のコードは逐次プログラムとしてコンパイルしたときにはデバッグ用の GUI を表示して
操作できるようにしました。同じことは Linux クラスタから X の窓を飛ばすことで実現できますが
クラスタの計算ノードに X ライブラリが入っていなかったり Windows 側に X サーバが必要だったりで
何かと面倒です。かかる手間が少ないという点で Windows で実行できることに意味があると思いました。


315:デフォルトの名無しさん
09/03/13 19:04:32 .net
MPI2のMPI_Put/MPI_Getを使いたいので早速簡単なコードを書いたのですが、思うように
動作しません。日本語の文献が極端に少ないので英語のサイトを見ながらやっているのですが、
サンプルコードが難しいものが多く理解出来ていません。まずはシンプルに、プロセス1の変数aを単純にプロセス0
の変数aにコピーしたいだけなのですが、MPI_Send/MPI_Recvを使わずにMPI_Getを使うにはどのように書けばいいでしょうか?
下のコードのどこがおかしいのかご指摘下さい。
URLリンク(www.dotup.org)

316:313
09/03/14 05:12:50 .net
他んとこに聞いてみます

317:302
09/03/14 18:05:44 .net
>>312
ありがとうございます。
あー、その環境だと完全にタダで構築できるってことですよね。自宅のPCはそれでチャレンジしてみようかな…
OpenMP+MPIって性能出ます?先生に相談したら最初からMPIで書いた方がいいよ、と言われて鵜呑みに
してたんですけど。今まで基本的に学校で用意されてる環境をそのまま使うだけというぬるま湯に使ってきたんで
これからは多少そのへんも自分で勉強してみます。

318:デフォルトの名無しさん
09/03/14 19:15:30 .net
>>314
312に書いたアプリの場合は、実環境で試したところ OpenMP+MPI は素の MPI よりわずかに
遅いかほとんど同じという結果でした。

もっとも、どちらの性能がいいかは問題、ハードウェア、ソフトウェアなどに依存しますし、
最終的にはやってみないと分かりませんので、可能性があると思ったら試す価値があります。

ハイブリッド並列化に興味があるのでしたら次の記事が参考になると思います。

T2Kオープンスパコン(東大)チューニング連載講座(その5)
OpenMPによる並列化のテクニック:Hybrid並列化に向けて
URLリンク(www.cc.u-tokyo.ac.jp)


319:デフォルトの名無しさん
09/03/14 19:17:51 .net
レス番号をまちがえました。316は>>315宛てです。


320:デフォルトの名無しさん
09/03/21 22:47:30 .net
VS 2008 のExpress EditionはOpen MP非対応じゃなかたか。

321:デフォルトの名無しさん
09/03/22 05:57:00 .net
>>318
Windows SDK for Windows Server 2008 and .NET Framework 3.5 を一緒に入れると使えます。
参考:URLリンク(tech.ckme.co.jp)


322:デフォルトの名無しさん
09/04/02 20:54:42 .net
初めまして、MPIを勉強中の者で、使用言語はGFORTRANを使っています。
メイン又はサブにMPI_INIT~MPI_FINALIZE及び計算式を一括して含む場合は
問題なくプログラムは動きますが、メインにMPI_INIT~MPI_SIZEを
サブにMPI_SEND、MPI_RECV、MPI_BCAST等と計算式を分離した場合、
リンクはできますが、実行時OSがエラーを発行し動きません。
そこで’MPI_COMM_WORLD’をメインでラベルつきCOMMONで確保し
サブに渡すと、OSからのエラーメッセージはなく実行は出来ますが、
今度は’MPI_COMM_WORLD’からINVARID DATA TYPEが発行され、
値が上手く通信できません。ご指導願います。



323:デフォルトの名無しさん
09/04/03 03:39:48 .net
質問です。1~300の分子のうち今、rank0が分子を1~100個目、rank1が101~205個目、
rank2が205~300個目の速度の計算を受け持ったとします。で、計算が終わった後、
自分が受け持った分の分子の速度をそれぞれ別の全てのプロセスに渡したいとします。
ちなみにそれぞれのプロセスが受け持つ個数も総数も計算中に変動するので、
それぞれのプロセスの最初の分子の番号をista_mol、もってる個数をnum_mol
n個目の分子の速度をvel_mol(n)として、

do n=1,3
CALL MPI_BCAST(vel_mol(ista_mol),num_mol,MPI_REAL8,n,MPI_COMM_WORLD,IERR)
end do

とやらかすと、それぞれのプロセスが持っているista_mol,num_molの値が違うので絵
受信側と送信側のアドレスと要素数がずれて困ったことになりますね。
この場合、ista_mol(n),num_mol(n)とでもしてそれぞれ別の値として持たせて、
(ista_mol(1)にrank0の値を、ista_mol(2)にrank1の値を…)

do n=1,3
CALL MPI_BCAST(vel_mol(ista_mol(n)),num_mol(n),MPI_REAL8,n,MPI_COMM_WORLD,IERR)
end do

とでもしないとダメなんでしょうか?どう考えてももっとスマートなやりかたが
ありそうなんですがどうなんでしょうか?どなたか教えていただけませんか?



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch