1 名前:デフォルトの名無しさん [04/11/07 18:25:56.net] MPIによる並列プログラミングについて話し合う統合スレッドです。 とりあえず本家 www-unix.mcs.anl.gov/mpi/
2 名前:デフォルトの名無しさん [04/11/07 18:26:35.net] MPIってなんだ? www.h7.dion.ne.jp/~matsu/pc_cluster/mpi/intro/intro.html
3 名前:デフォルトの名無しさん [04/11/07 18:29:00.net] MPI(Message Passing Interface)での並列計算 p-grp.nucleng.kyoto-u.ac.jp/~uchida/mpi/
4 名前:デフォルトの名無しさん mailto:sage [04/11/07 18:31:57.net] CORBAとかでできないの?
5 名前:デフォルトの名無しさん [04/11/09 17:28:21.net] 初心者ですが何かよい参考書はありませんか?
6 名前:デフォルトの名無しさん mailto:sage [04/11/09 17:31:56.net] slashdot.jp/articles/04/11/08/087207.shtml?topic=2
7 名前:デフォルトの名無しさん mailto:sage [04/11/09 18:32:22.net] >>6 高校生でもこれほどの環境を手に入れられる時代になったのですね。 素晴らしい。
8 名前:デフォルトの名無しさん mailto:sage [04/11/14 01:07:13.net] LAM/MPI Parallel Computing www.lam-mpi.org/ SMPP > PCクラスタ超入門 mikilab.doshisha.ac.jp/dia/smpp/ 「スカラー・チューニング講習会」 「並列プログラミング(MPI)講習会」で配布したテキスト accc.riken.jp/HPC/training/text.html OOMPI www.osl.iu.edu/research/oompi/
9 名前:デフォルトの名無しさん [04/11/22 16:29:37.net]
10 名前:デフォルトの名無しさん [04/11/25 13:28:07.net] 例とかが載っているサイトとかがあったら教えてください
11 名前:デフォルトの名無しさん mailto:sage [04/11/25 13:58:06.net] >>10 とりあえず9までにいくつかある
12 名前:デフォルトの名無しさん mailto:sage [04/11/25 19:55:03.net] MPIは使い方は簡単だけど、問題はアルゴリズムの並列化だよね。 MPI自体はほんとに難しいことはないから、リンク先でも読めばすぐにわかるよ。
13 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [04/12/17 18:15:19.net] >>13 他のMPIプログラムはちゃんと動いたの? もし動いたのなら、今回動かなかったプログラムのソースは載せられる?
15 名前:デフォルトの名無しさん mailto:sage [04/12/17 18:34:03.net] >>13 > 0 - MPI_SEND : Invalid rank 2 Invalid rankなんだから、"2" に対応するpeがMPI_Sendで使用したコミュニケー タに無いんじゃないの?
16 名前:13 mailto:sage [04/12/17 19:54:48.net] 早速のレスありがとうございます >>14 他のプログラム(πの計算)などはできました。 今回のは↓にUPしました。 www.geocities.jp/cirque55510/cellmpi.c >>15 ちょっと
17 名前:13 mailto:sage [04/12/17 20:01:13.net] うわ・・書いてる途中で >>15 知識が足りなくて理解できない… 本でも買って出直してきます;;
18 名前:デフォルトの名無しさん mailto:sage [04/12/18 00:03:34.net] >>16 for(source=1;source<mb;source++){ 多分ここでしょ。でもmbをpに直しても間違いのような・・・ 突っ込みどころたくさんあるんだけど、もうちょい勉強してみて。
19 名前:デフォルトの名無しさん mailto:sage [04/12/18 00:41:44.net] >>16 これでも読んでください。 同志社大学の人が授業で使っている講義資料かな? あそこは設備があるしね。。 mikilab.doshisha.ac.jp/dia/smpp/cluster2000/PDF/chapter02.pdf
20 名前:13 mailto:sage [04/12/18 01:40:26.net] >>16 ,17 ありがとうございます。 周りに聞ける人いなくて助かりましたー 勉強してがんばります!
21 名前:13 mailto:sage [04/12/18 01:41:56.net] >>18 ,19でした…ミスばかりですみません;;
22 名前:13 mailto:sage [04/12/19 19:09:57.net] 同志社の資料はわかりやすいですね。 「MPI並列プログラミング」(P.パチェコ著)も買ってみたんですが 結構難しくてちゃんと理解できるか不安に・・・。
23 名前:デフォルトの名無しさん [04/12/20 16:49:59.net] KNOPPIX クラスタ 情報交換会 日時:12月28日 13:30- 場所:同志社大学 京田辺校地 香知館 3F会議場 ttp://www.is.doshisha.ac.jp/SMPP/meetings/2004/041228.html
24 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [05/01/12 16:14:33.net] プロセス数2以外でやると止まってしまうんですが 原因がわかりません…ご教授のほどを 他のプログラムはプロセス数に限らず動いたんだけどなぁ
26 名前:デフォルトの名無しさん [05/01/13 23:07:13.net] print文を入れてどこで止まってるか調べたら? 多分MPIの通信ルーチンの所だと思うけどね。
27 名前:デフォルトの名無しさん mailto:sage [05/02/15 02:50:23 .net] >>25 どういう状況でとまるのか書かないとわかりにくいッす。 愚考ながら、1のときと3のときでは止まる原因が違う、ということも。 ところで、MPICHのWIN版設定ってやってるページ少ないですね。 GUIのmpirunは接続異常は表示しないし…
28 名前:デフォルトの名無しさん mailto:sage [05/02/18 03:07:35 .net] ちょいとお尋ねしますが。 MPICHって、GlobalArrays実装してますか? 英文必死こいて読んで見たけど、らしき記述が見当たらないのです。 ・・・いや、職場で異様に自信満々で「共有メモリ使える」と逝ってる香具師がいるもんで。 そもそも分散型プロセス通信の為の規格っつーか仕様ですよね?>MPI
29 名前:デフォルトの名無しさん mailto:sage [05/02/18 11:13:13 .net] >>28 まさか「共有メモリ」なんて無いですよ。MPIって "Message Passing Interface" ですもん。 プロセッサ間のやりとりはすべてメッセージの送受信ですよ。 > ・・・いや、職場で異様に自信満々で「共有メモリ使える」と逝ってる香具師がいるもんで。 ずいぶんと不幸な職場環境ですね……
30 名前:28 mailto:sage [05/02/18 21:09:43 .net] >>29 ・・・やっぱり? おかしいとは思ったんですわ。 まあ、もうちょっと読み進めては見ますがせっかくだし。 それはそれとして、RMAのある実装って何かありますか? MPICHにはないようで。 うまく使えばかなりおいしそうなんで、いじってみたい・・・
31 名前:デフォルトの名無しさん [05/02/22 10:09:38 .net] パソコンにインストールしたいのだけどどこから手をつけていいかわからん
32 名前:デフォルトの名無しさん mailto:sage [05/02/24 03:22:52 .net] とりあえず、 ハード的にはネットワークの使えるパソコン数台と、ルーター ソフト系は上のほうの紹介サイトぐるっと回ってライブラリをとってくる。 あとはメインのプログラムの開発環境、これぐらい?
33 名前:デフォルトの名無しさん [05/03/09 17:16:27 .net] bcc32で使える?
34 名前:デフォルトの名無しさん [2005/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 名前:デフォルトの名無しさん mailto:sage [2005/03/28(月) 08:45:49 .net] 拡張子を.cにする。
36 名前:デフォルトの名無しさん [2005/03/28(月) 08:57:36 .net] c++を使用したい場合は?
37 名前:デフォルトの名無しさん mailto:sage [2005/03/28(月) 09:11:02 .net] >>36 g++でコンパイルやリンクしてる?
38 名前:デフォルトの名無しさん [2005/03/28(月) 09:12:40 .net] mpiccです。
39 名前:デフォルトの名無しさん [2005/03/28(月) 16:28:41 .net] MPIつかったプログラムを走らせた場合、すべてのプロセスは終わるときも同時に終わるのですか?
40 名前:デフォルトの名無しさん [2005/03/28(月) 16:30:00 .net] 同時に終わるようにプログラムしないと同時には終わらないよ
41 名前:デフォルトの名無しさん [2005/03/29(火) 02:56:38 .net] プログラム中で、クラスを作成し、プログラム終了時に、ブロックから抜けることによって破棄されます。 このクラスのデストラクタがランク0以外働かないのですが、何故なのでしょうか?
42 名前:デフォルトの名無しさん mailto:sage [2005/03/29(火) 10:25:22 .net] >38 mpiCCでいける
43 名前:デフォルトの名無しさん [2005/03/29(火) 11:17:29 .net] 受け取る側のプロセスがまだrecv関数に到達していないときに、送信側がsendを送った場合、メッセージは破棄されてしまうのでしょうか?
44 名前:デフォルトの名無しさん mailto:sage [2005/03/29(火) 11:53:30 .net] >>43 まずはMPIの仕様書を読もうよ
45 名前:デフォルトの名無しさん [2005/03/31(木) 07:23:49 .net] MPIはC++には対応しているの?
46 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 14:28:48 .net] G77などのフリーソフトでMPI関数で書かれたプログラム文を コンパイルする詳しい方法分かりますか?
47 名前:46 [2005/04/06(水) 14:40:00 .net] OSはwindowsXPです。 include 'mpif.h'で定義ファイルを読み込むんですよね?
48 名前:デフォルトの名無しさん [2005/04/06(水) 15:41:26 .net] >>47 Unixは使えないのですか?
49 名前:46 [2005/04/06(水) 16:07:03 .net] >>48 使えないです。unixでないとできませんか?
50 名前:デフォルトの名無しさん [2005/04/06(水) 16:30:58 .net] G77ってgnuのfortran?
51 名前:46 [2005/04/06(水) 16:33:04 .net] そうです。無理ですか?
52 名前:デフォルトの名無しさん [2005/04/06(水) 22:37:29 .net] Windows上でのfortranコンパイラは何使ってるの?
53 名前:46 mailto:sage [2005/04/06(水) 23:35:21 .net] 主にG77でコンパイルしています。
54 名前:デフォルトの名無しさん [2005/04/07(木) 14:03:18 .net] MPIを使ってPDEを解きたいのですが、データはそれぞれのノードがデータの一部分を持つのでしょうか? threadを使ったプログラムは経験があるのですが、MPIでの作成方法がよくわかりません。
55 名前:デフォルトの名無しさん [2005/04/11(月) 00:23:11 .net] MPICH2使った人いる?MPICHは普通に動くのだけれどMIPCH2が全然機能してくれない。
56 名前:デフォルトの名無しさん [2005/04/16(土) 01:49:10 .net] mpichについていたπの計算するプログラムが理解できません。 なんでwhile(!done){}あたりのギミックが必要なの?
57 名前:デフォルトの名無しさん [2005/04/16(土) 13:14:57 .net] _、 _ ∩ ( ∀`) 彡 >>56 教えてやってもいいが ((≡O ⊃ | | おまい!左腕を上下 右腕を前後 し⌒J 同時にやってみろ!話はそれからだ!
58 名前:デフォルトの名無しさん mailto:sage [2005/04/16(土) 13:52:56 .net] CPUは別々に稼動してるだろ。CPU1個が処理終わったからといって 他のn個のCPUが処理が完全同期で終わる保証はどこにもないだろ。 だったら全部の処理が終わるまで待つのは当たり前だろ。 それともそんなことすら解らないのか?プログラム組むの辞めろ。お前は もう、日本から出て行け
59 名前:デフォルトの名無しさん mailto:sage [2005/04/16(土) 16:24:45 .net] >>56 > なんでwhile(!done){}あたりのギミックが必要なの? 単にコードの書き方がまずいだけと思われ。 この内容ならもっと見やすくシンプルにできるよね。
60 名前:デフォルトの名無しさん [2005/04/16(土) 21:35:10 .net] 56です。 なんかわかったような気がする。 コメントアウトの部分のソースを無視していました。 頭悪くてすみませんでした。 >>58 さん MPI_Reduce()で全プロセスが終わるの待ってるのかと思ってたんですけど 違うんですか?
61 名前:デフォルトの名無しさん [2005/04/30(土) 18:49:38 .net] CPUが空いているマシンから優先的にジョブを割り当てるにはどうしたらよいのでしょうか?
62 名前:デフォルトの名無しさん [2005/05/01(日) 01:56:36 .net] エラーもなくコンパイルが終わり、プログラムを実行すると、ある時点で p5_30033: p4_error: interrupt SIGSEGV: 11 Broken pipe Broken pipe というエラーが出ます。これは何がいけないのでしょうか? 個人的には、ファイルアクセスで問題が起きていると思っているのですが、エラーの原因が未だつかめません。
63 名前:デフォルトの名無しさん [2005/05/01(日) 02:18:46 .net] >>60 >>58 そいつ、単なるバカだから相手にすんな
64 名前:デフォルトの名無しさん [2005/05/03(火) 11:48:06 .net] >>62 配列の範囲外にアクセスしているとか MPI以外のエラーを疑え
65 名前:デフォルトの名無しさん [2005/05/05(木) 11:48:10 .net] gccのバージョンの違うコンパイラでmakeしたMPIを別のバージョンgccでコンパイルするCプログラムで利用しても問題ないですか? 問題ないと思っていたのですが、gcc4にアップデートして以来、原因不明で0番プロセス以外が実行中に落ちます。
66 名前:デフォルトの名無しさん mailto:sage [2005/05/07(土) 03:33:52 .net] x86 向け gcc4 はまだバグありで危険じゃないのかな。 gcc3 を使ってた方が安全だよ。
67 名前:デフォルトの名無しさん [2005/08/19(金) 18:09:30 .net] MPICH2をインストールするのにちょっと苦戦してるんですが mpd.confにsecretwordを書いた後どうすればいいかちょっと分かりません 教えてもらえないでしょうか?
68 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 18:42:55 .net] × 教えてもらえないでしょうか? ○ ちょっと教えてもらえないでしょうか?
69 名前:デフォルトの名無しさん [2005/08/22(月) 05:24:37 .net] これがちょっち?
70 名前:デフォルトの名無しさん mailto:sage [2005/09/09(金) 19:38:13 .net] SCore使って上げてヽ(;´Д`)ノ
71 名前:デフォルトの名無しさん [2005/09/12(月) 22:52:56 .net] ググってみましたが、情報が少ないですね。 C++でサーバアプリで計算しながら、クライアントアプリにソケット通信するようなシステムに 適用できますか? サーバー側は1000件/分ぐらいのトランザクションで、クライアント側はサマリー情報を 半リアルで表示させるだけといったかんじです。
72 名前:デフォルトの名無しさん mailto:sage [2005/09/13(火) 07:18:44 .net] 余裕
73 名前:デフォルトの名無しさん [2005/11/06(日) 16:40:07 .net] mpiプログラミングの前にmpiの勉強をした方が(w
74 名前:デフォルトの名無しさん [2005/11/17(木) 11:20:42 .net] 実行時に使用するコンピュータを指定することは出来ないのでしょうか?
75 名前:デフォルトの名無しさん mailto:sage [2005/11/17(木) 13:12:49 .net] できますよ
76 名前:デフォルトの名無しさん [2005/11/17(木) 16:19:52 .net] やり方を教えてください
77 名前:デフォルトの名無しさん mailto:sage [2005/11/17(木) 16:56:14 .net] 方法はMPIの実装に依る
78 名前:デフォルトの名無しさん mailto:sage [2005/12/21(水) 23:26:52 .net] >>67 www-lab.imr.tohoku.ac.jp/~t-nissie/computer/wolfchen/doc/HomeWolfchenProject.html
79 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 06:41:19 .net] 基本的に動かないとまずい。 メモリ不足とかじゃなきゃ、プログラムのバグだろうね
81 名前:デフォルトの名無しさん [2006/01/13(金) 11:50:49 .net] アドバイスありがとうございます。 >基本的に動かないとまずい。 >メモリ不足とかじゃなきゃ、プログラムのバグだろうね やはりそうですか。 実際、プログラムを単純化して、単に16プロセスでMPI_Bcast()するだけというプログラムでは、問題なく動きます。 16以外のどんな数字でも問題ありません。なので、プログラムのバグの可能性が高いのですが、一つ気になる点は、 エラーするケースでも、エラーしないケースでも、いずれの場合でもプロセスをps -ef などでモニタしていると、 実行中に16プロセスそれぞれの親プロセスIDがころころ変わっているのが確認できるのですが、何かそのあたり に関係しているのではと思うのですが、どなたか詳しい方、ヒントなどお願いします。
82 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 08:59:30 .net] mpichでもlamでも、実機でもなるってんだったら、 プログラムのバグ。 MPI_Barrier()で、きちんと同期とって MPI_Bcast()で起こってるなら MPI実装を疑ってもいい。 まあ、なんだ。 漏れには「FedoraのMPIでエラー終了」じゃ、 どのMPI環境なのかも どんな異常終了かもサパーリですよ。
83 名前:デフォルトの名無しさん [2006/01/15(日) 14:56:36 .net] >実際プログラムを単純化して、単に16プロセスでMPI_Bcast()するだけというプログラムでは、問題なく動きます (1) 単純化したプログラムと、エラーが起こる実プログラムで、 送信データの大きさは同じですか? (2)どういうエラーメッセージが出ますか? (3)mpi_bcastの前後にprintfでランクの値を書き出した場合、 どうなりますか? (全プロセスがmpi_bcast前しか表示しないのか、 それともプロセスによってはmpi_bcast後も表示するのか) (4)エラーが起こるデータファイルで、プロセス数が16より少ないときは どうなりますか?
84 名前:デフォルトの名無しさん [2006/01/16(月) 00:57:31 .net] 皆さん、アドバイスありがとうございます。 >(1) 単純化したプログラムと、エラーが起こる実プログラムで、 >送信データの大きさは同じですか? はい。MPI_INTを一個です。 >(2)どういうエラーメッセージが出ますか? 今自宅なので、正確には覚えていませんが、英語のメッセージで、 『どれかのプロセスでエラーしました』とか言う感じだったと思います。 >(3)mpi_bcastの前後にprintfでランクの値を書き出した場合、 >どうなりますか? 正しく、自分のランク値が表示されます。 >(全プロセスがmpi_bcast前しか表示しないのか、 >それともプロセスによってはmpi_bcast後も表示するのか) 全プロセスで、MPI_Bcast前に正しいランク値が表示されますが、 MPI_Bcast後には、どのプロセスも何も表示されません。
85 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん [2006/01/16(月) 05:13:37 .net] (5)の訂正 >はい。MPI_INTを一個です。 確認ですが、一個というのは、下記の2つ目の引数が1という意味ですか? MPI_Bcast(a,1,MPI_INT,〜); また、下記の大きいデータの場合も小さいデータの場合も1ですか? 分割数 大きいデータ 小さいデータ 2 OK エラー
89 名前:デフォルトの名無しさん [2006/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 [2006/01/19(木) 03:41:50 .net] mpichをインストールをしたいのですがconfigureで指定しなければならない オプションをちょっと教えていただけないでしょうか? osはfedora core4 コンパイラーにintel fortran compilar 9.0 mpich-1.2.7p1 を使用しています。 よろしくおねがいします。
91 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん [2006/01/20(金) 00:14:20 .net] 下記のプログラムでも同じエラーが出ますか? もし同じエラーが出たとしたら、 同じサブルーチンの同じ引数に異なる型を指定しているという 警告で、MPIとは関係ないと思います。 program test call sub(a) call sub(i) end subroutine sub(a) a=1 end
94 名前:デフォルトの名無しさん [2006/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 [2006/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 名前:デフォルトの名無しさん [2006/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 [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 18:43:50 .net] 動かない並列プログラムを無料でデバッグしてくれるスレはここですか?
99 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん [2006/01/31(火) 15:53:13 .net] age