Message Passing Interface (MPI) 統合スレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGとりあえず本家
http://www-unix.mcs.anl.gov/mpi/
0185デフォルトの名無しさん
2007/06/27(水) 23:51:220186デフォルトの名無しさん
2007/06/28(木) 02:15:450187デフォルトの名無しさん
2007/06/28(木) 22:45:570188・∀・)っ-○◎●
2007/06/29(金) 02:42:040189デフォルトの名無しさん
2007/07/02(月) 16:57:33MPIを使ってさらに大規模な行列を計算させたいのですが、お薦めのライブラリを教えてください
0190デフォルトの名無しさん
2007/08/12(日) 20:42:39fedora5でひととおり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()
どなたか御力をおかしください。
0191190
2007/09/03(月) 22:06:14いけました。
他にps3でクラスタやってる人の例をネットなどでみていると、結構Fedora 5で
やってる人がいるから、OSの違いでうまくいったというよりも、初回のmpiの
インストール時の設定に問題があったのかもしれません。以上。
0192デフォルトの名無しさん
2007/09/10(月) 01:30:38知ってるひといたら教えてくれい
0193デフォルトの名無しさん
2007/09/12(水) 04:50:40こんなのあった
自分は使ったことないが
ttps://sourceforge.jp/projects/mpiunit/
0194デフォルトの名無しさん
2007/09/23(日) 03:05:43つかってみたぞ
いがいとべんりだった
0195デフォルトの名無しさん
2007/09/24(月) 00:57:560196デフォルトの名無しさん
2007/09/26(水) 16:47:33チュートリアル書きたいが
どんな機能があるのがよくわからん
0197デフォルトの名無しさん
2007/09/27(木) 00:30:55虎の巻じゃだめかね
0198デフォルトの名無しさん
2007/09/27(木) 01:59:38虎の巻をたのむ
0199デフォルトの名無しさん
2007/09/27(木) 09:50:27ttp://accc.riken.jp/HPC/training/text.html
0200デフォルトの名無しさん
2007/09/27(木) 15:07:25すまねえ
193の虎の巻がほしかったんだ
0201デフォルトの名無しさん
2007/09/30(日) 00:21:40パッケージの中にあるじゃん
0202デフォルトの名無しさん
2007/09/30(日) 12:28:39あるけどわかりにくくない?
0203デフォルトの名無しさん
2007/09/30(日) 21:15:53http://sourceforge.jp/projects/mpiunit/wiki/Tutorial
0204デフォルトの名無しさん
2007/09/30(日) 21:37:27ま と も な
チュートリアルが欲しいんだよ。
0205デフォルトの名無しさん
2007/10/01(月) 03:36:48作者に直で言うしかないな
0206デフォルトの名無しさん
2007/10/01(月) 23:01:280207デフォルトの名無しさん
2007/10/04(木) 21:05:22どうせLGPLだし
204氏はどんなチュートリアルが欲しいんだい?
0208デフォルトの名無しさん
2007/10/05(金) 12:19:320209デフォルトの名無しさん
2007/10/11(木) 00:03:400210デフォルトの名無しさん
2007/10/17(水) 09:58:07使ってるよ
プログラミングの効率が上がった
0211デフォルトの名無しさん
2007/10/20(土) 20:55:500212デフォルトの名無しさん
2007/10/26(金) 21:09:070213デフォルトの名無しさん
2007/11/02(金) 21:07:27$ 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は出来るみたいですね。
http://enrico.phys.cmu.edu/QCDcluster/mpi/mpirun_mpich.html
というかOpenMPIはman マニュアル無くて悲しい。
0214デフォルトの名無しさん
2007/11/04(日) 15:00:582台ともデュアルコアなので、
/etc/mpich/machines.LINUX に
cluster1:2
cluster2:2
と記述しています。
テストを行おうと
mpirun -np 4 cpi
をしてみたのですが、1分以上待ってもプロンプトが帰ってきません。しかし
mpirun -np 3 cpi
とするとcluster1に2スレッド、cluster2に1スレッド割り当てられ計算結果がすぐ返ってきます?
4コア使い切るためにはどうしたら良いでしょうか?
0215213
2007/11/07(水) 00:40:140216デフォルトの名無しさん
2007/11/07(水) 11:28:47mpich-1.2.7p1
gcc, pgi 7.1
を使用していますが、emacsでmpiデバッグできませんかね。
gdbとpgdbgを使ってデバッグできますが、
pgdbgは使いにくいし、gdb単体も使いにくいので、できれば
emacsからgdbを起動したいなと。
0217デフォルトの名無しさん
2007/11/07(水) 13:26:160219デフォルトの名無しさん
2007/11/07(水) 15:42:53ローカルマシンに同じ名前のディレクトリを作る。
そこに機種毎のバイナリを置く。
これで桶。
0220デフォルトの名無しさん
2007/11/07(水) 15:44:35補足。
機種毎のバイナリは同じ名前で作っておく。
mpirunはデフォでは同じ名前のユーザーの同じ名前のディレクトリにある
同じ名前のコマンドを実行するだけなので。
0221デフォルトの名無しさん
2007/11/07(水) 15:59:06標準で入ってるんだ
昔はPVMが主流だったそうだけど、今はほとんどがMPIだよね
0223214
2007/11/10(土) 21:37:30localhost:2
cluster2:2
となっていたのを
cluster1:2
cluster2:2
にしたらいけました。3スレッドはできるので machines.LINUXは悪くないと決め付けてました。
0224デフォルトの名無しさん
2007/12/12(水) 06:13:16・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)に質問したところ、
設定は問題はない。プログラムの問題、あるいは通信時間がかかってしまうので
実時間が増える、といういい加減な返答しかきません。
似たような症状を経験したことのある方、対処法をご存知でしたら
教えてもらえないでしょうか。
0225デフォルトの名無しさん
2007/12/13(木) 07:08:530226デフォルトの名無しさん
2007/12/27(木) 14:48:26MPICHならconfigure時に --mem=shared を付けて構築すべし
通信が共有メモリを介したものになる(異ノード間は当然sshやrsh経由)。
実行時に ps -x してsshやrshでプロセスが起動してたら、わざわざ同一計算機内でTCP/IP通信しちゃってるので損。
OSやコンパイラに付属のMPICHはsharedで構築されていない例が多いので自分で構築してみよう。
0227デフォルトの名無しさん
2007/12/27(木) 14:59:25今時シングルコアはないから、2コアの2CPUなんだろう
0228デフォルトの名無しさん
2007/12/28(金) 20:38:39>>225
検索すると状況としてはこれが当てはまる感じなのですが、
私には使い方がよく分かりません。
詳しいサイト等ありましたら教えてもらえないでしょうか。
>>226
確かにps x コマンドで確認すると(ノード内の場合でも)
rsh が動いていました。
このコンピュータはMPIのインストール及び設定済みのものを
購入したのですが、業者がいいかげんということなのでしょうか?
複数ノード構成なのですが、この場合はどうなのでしょうか
業者の説明では例えば、machinefile に
node00:2 とすればSMPとなるとのことでした。
node00 node00 とすれば通信が発生するとのことでした。
>>227
シングルコアのItanium2:4CPUx4ノードの構成です。
(年度でわけて増設して購入したのでちょっと古いCPUになっています)
納品されたのは1年以上前なのですが、不具合ばかりです。
0229225
2007/12/29(土) 00:39:48#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;
}
0230225
2007/12/29(土) 00:46:50sar コマンドを使って、例えば
> sar -P ALL 1 1000
とやると各プロセスがランクと同じ番号の CPU で走り続けてランク順に終了していく様子が観察できる。
参考にしたページ:http://d.hatena.ne.jp/naoya/20070824/1187945715
0231デフォルトの名無しさん
2008/01/08(火) 18:31:33の書き込み見て、--with-comm=shared というオプションをつけてMPICHを
コンパイルしてみたんだけど、逆に遅くなりました。共有メモリのほうが早く
なると思うんですけど、どうしてだろう?
CPUは Core 2 Quad 2.4GHz を使っています。
0232デフォルトの名無しさん
2008/01/09(水) 01:43:00GridMPIのMPI関数は、通信先によって、リモートノードなら、IMPI、
自ノードなら自ノード内のMPI(ベンダMPIなど)を呼び出して通信
するはずですが、GridMPIが提供しているMPI関数と(自ノードの)
ベンダMPIの関数のシンボルが重複しないのはなぜでしょう?
(最初は、GridMPIから発行するベンダMPIの関数は、MPI関数では
なく、PMPI関数と思っていましたが、これは違いますよね・・・)
0233デフォルトの名無しさん
2008/01/10(木) 00:07:05MPICHのブロードキャストはTCPを用いて行われているようなのですが、
UDPによるブロードキャストを使用することはできるのでしょうか?
ご存知の方がいらっしゃれば、よろしくお願いします。
0234デフォルトの名無しさん
2008/01/11(金) 10:27:421.スレーブ(MPIでもこういう表現するんですかね)のマシンに
計算領域を割り当てて計算させる
↓
2.マスタに計算結果を返す
↓
1と2を繰り返す
という流れはどういう風にソース上で実現させているのでしょうか。
0235デフォルトの名無しさん
2008/01/11(金) 20:48:46スレーブとか言いません。
全く同じプログラムが複数走ります。
主従はなく、皆平等です。
MPI_Comm_rank関数を呼び出すと自分のノード番号がわかるので、
その番号に応じた振舞いをするようにプログラムを書きます。
たとえば、0から100までの足し算を2台の計算機でするときに、
ノード番号0なら0から49まで、ノード番号1なら50から100まで計算するようにしておきます。
通信は送信したいノード番号に向けて送信し、受信したいノード番号を指定して受信します。
0236デフォルトの名無しさん
2008/01/12(土) 20:56:170237デフォルトの名無しさん
2008/01/13(日) 11:21:47そうやるんですか
PVMで同じようにする方法がさっぱりわからんもんで
参考になるかな、とは考えたのですが・・・
0238デフォルトの名無しさん
2008/01/16(水) 23:13:340239デフォルトの名無しさん
2008/02/07(木) 17:31:34質問です。
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したオブジェクトのポインタが存在して、それも他のノードで再現したいわけで...
0240デフォルトの名無しさん
2008/02/07(木) 18:19:400241239
2008/02/07(木) 20:05:46って、まあ置いといて、STLのstringなんかもオブジェクトのバイナリ丸コピじゃだめなんだよな。
ヒープからバッファ取ってるから。
となると、シリアライズして送信、受信側で再構築なんだろうけど、正直面倒臭いな。
0242デフォルトの名無しさん
2008/03/01(土) 05:39:370243デフォルトの名無しさん
2008/03/06(木) 23:33:27Linux / Cele 420 / MEM 2GB / 26台 /hdd less
という構成なんだが、手軽に遊ばせるMPIのサンプルないかな?
ちなみに、午後6時に強制shutdownの設定になってるので、
長くても8時間程度のジョブの奴を頼む。
0244デフォルトの名無しさん
2008/03/18(火) 08:12:50環境はFedora8+Intel C++ 10です。
0245デフォルトの名無しさん
2008/03/29(土) 13:32:000246デフォルトの名無しさん
2008/04/05(土) 15:00:580247デフォルトの名無しさん
2008/04/17(木) 17:12:340248デフォルトの名無しさん
2008/04/17(木) 18:43:410249デフォルトの名無しさん
2008/04/18(金) 21:06:07同じエラーが出るミニプログラムを作ってうp汁
0250デフォルトの名無しさん
2008/04/22(火) 00:04:00どこのスレいけばいいか解らんくて
迷子してる
0251デフォルトの名無しさん
2008/05/21(水) 23:38:11ファイルがバッファリングされる関係で
リアルタイムで更新されないので、fflushを
つっこんだら、計算時間が倍になったぞ。
こういうのは難しいなぁ。
0252デフォルトの名無しさん
2008/05/22(木) 06:37:45NFSとかSambaでリモートのファイルシステムに書いてない?
ローカルの /tmp あたりに書くようにすると速くなるかも。
0253デフォルトの名無しさん
2008/05/22(木) 09:17:590254251
2008/05/23(金) 00:45:22リモートファイルシステムです。
多分それで速くなると思いますが/tmpとか勝手に
使ったら怒られそう。大学共同利用のシステムなんで。
>>253
かなり頻繁に更新してますた。数秒に1回ぐらい。
進行状況を書いてただけなので、flush頻度を1/100
にしたら速度がだいたい元に戻りました。
0255デフォルトの名無しさん
2008/05/23(金) 01:30:25普通の大学の計算機センターならローカルディスクぐらい用意してるよ。
聞いてみな
0256251
2008/05/24(土) 18:29:49計算で64bit Intetgerを使って、桁あふれ(2^64)が起きたら
「SKIPしますた」とlogファイルに書いて次ぎのデータ処理に入る
ようにしてたんだ。
今まで深さ4の処理をしてたんだが桁あふれが起きてなかった。
次に深さ5の処理に入ったんだ。とたんに桁あふれが増えて
「SKIPしますた。」でdisk使用制限が超えそうになっちまった。
テラヤバスで、20時間実行したjobを強制停止…
>>255
いや、他大学システムなんで、あまりくだらない質問したく
なくて。利用料金も私が出したんじゃなくて、教授のだし。
0257デフォルトの名無しさん
2008/05/26(月) 19:24:36処理が終ってFinalize待ちのプロセッサの負荷が100%になってやがる。
割り込み使ってくだちゃい。
0258デフォルトの名無しさん
2008/05/27(火) 21:52:46rank=0のタスクをjobのマネージメントだけにつかって
rank=1以降を計算に使うプログラムを書いた。
rank=0とrank=1以降でも大してCPU使用率がかわらん
かった。rank=0のタスクはMPI_RECVで待機してただけ
なんだがな。
0259デフォルトの名無しさん
2008/06/20(金) 22:58:08何か良いプログラムは無いでしょうか?
姫野ベンチやHPLだと、結果がFLOPSでしかでないので分かりにくいと言われ
体感的(秒数なもの)にわかるものにしてほしいと(´・ω・`)
思いつく簡単なベンチマークを例であげると、例えばスーパーπの104万桁を2つのCPUで
計算した場合は○○秒かかったけど、4つだと○秒だったよ!という感じです。(ベンチマーク
じゃなくてもいいです。)
よろしくお願いします。
0260デフォルトの名無しさん
2008/06/20(金) 23:17:57自分で秒数に戻せばいい。そもそも計算速度(flop/sec)というのは
計算速度=計算量÷計算時間
として求めている。
計算量(浮動小数点演算の回数)はプログラムによって決まる。
ベンチマークプログラムなら解説文書に計算量が書いてあるはず。
計算量と計算速度が分かれば当然ながら
計算時間=計算量÷計算速度
で秒数が分かる。
0261デフォルトの名無しさん
2008/06/21(土) 01:48:01アドバイスありがとうございます!
なるほど!
そういう風に求めるのですね。
助かりましたm(__)m
0262デフォルトの名無しさん
2008/06/21(土) 10:55:46でいいじゃん。
各ノードごとの時間を知りたければ
mpirun -np 3 time aho &
でできるぜ
0263259
2008/06/26(木) 17:15:29timeを使えば計算時間分かりますね!
アドバイスありがとうございますm(__)m
すいません。色々アドバイスを頂いたのですが何かオープンキャンパスで
高校生の方たちにクラスタを使ってもらうらしく姫野ベンチとかだと流体
の計算なので何を計算しているのかイメージが付きにくいんじゃないか?
と、言われまして何かイメージが付きやすいプログラムというのは無い
でしょうかね・・・?
すいません、変な質問をして(汗
0264デフォルトの名無しさん
2008/06/26(木) 22:30:47計算結果を可視化するところまでやるとか。
でも見た目が楽しい計算結果でないと訴求力がないだろうねえ。
あるいは利用ノード数(並列度)を変えて実行時間の変化をグラフにして
並列度の高いクラスタのありがたみ(速度向上)を訴えるとか。
0265デフォルトの名無しさん
2008/06/27(金) 01:51:51迷路。
ノードごとに探索経路を色分けすればぐー
0266259
2008/06/27(金) 11:53:25>計算結果を可視化するところまでやるとか。
>でも見た目が楽しい計算結果でないと訴求力がないだろうねえ。
そうなんですよね〜
分子力学のプログラムで計算結果を可視化できるものがあったんですが
リンク切れとソースの名前をググっても出てこなかったので諦めました・・・。
>あるいは利用ノード数(並列度)を変えて実行時間の変化をグラフにして
>並列度の高いクラスタのありがたみ(速度向上)を訴えるとか。
なるほど。理想値と実際に計算にかかった時間をグラフに書いてもらえば
オーバーヘッドの事や何倍速く計算できたかと言う事が分かりやすいですね!
アドバイスありがとうございますm(__)m
>>265
>迷路。
すいません。
迷路というのは迷路を解くと言う事でしょうか?
0267デフォルトの名無しさん
2008/08/22(金) 20:08:51windowsでMPIを実行しようとしているんですけどエラーがでて困っています。
インクルドのパスは切っています。
error C2653: 'MPI' : 識別子がクラス名でも名前空間名でもありません。
error C3861: 'Init': 識別子が見つかりませんでした
というエラーがでます。
なんで何でしょう。いきなり初期設定でつまずいて恥ずかしいのですが
だれかアドバイスしていただけないでしょうか。
0268デフォルトの名無しさん
2008/08/23(土) 08:45:51それで他人になにか状況が伝わるとでも?
0269デフォルトの名無しさん
2008/08/23(土) 18:49:31C:Program Files\MPICH2\include
を追加する。
最低これでエラーはなくなるはずのに認識できない。
メッセージは同様。
error C2653: 'MPI' : 識別子がクラス名でも名前空間名でもありません。
error C3861: 'Init': 識別子が見つかりませんでした
絶対windowsで同様なエラーが出ている人がいるはず。
MPICH2はwindowsでは無理なのか?
0270デフォルトの名無しさん
2008/08/23(土) 21:20:54それで他人になにか状況が伝わるとでも?
ソースくらい出せ。
コンパイルオプションくらい出せ
0271デフォルトの名無しさん
2008/08/23(土) 21:22:390272デフォルトの名無しさん
2008/08/24(日) 14:46:18ウィザードで作った雛形をつかってコピしていたからみたいです。
空のディレクトリをしてしてファイル追加してみるとできました。
ご声援ありがとうございました。何の役にもたたなかったけど(w
0273デフォルトの名無しさん
2008/08/24(日) 20:32:38何の役にも立たないのは、お前がなんら情報を出さないからだろ。
自分の低能を棚上げしてイヤミで〆か。
新打法がいいね。
0274デフォルトの名無しさん
2008/08/25(月) 17:29:10野球していたが打てなかったので1本足打法に変えました。
するとよく打てるようになりました。
そして解説者に言われました。
新打法がいいね。
0275デフォルトの名無しさん
2008/08/25(月) 23:55:04自分の考えをコンピュータに伝えられるわけがない。
プログラムなんてやめた方がいいよ。
0276デフォルトの名無しさん
2008/09/16(火) 08:21:400277デフォルトの名無しさん
2008/09/17(水) 03:03:50MPICH2いれてBoostのMPI使おうかと思ったが
うまくいかね
using mpi ; をusr-config.jamに書いたが
パスが通ってないと言われる…
いい解説サイト知っていたら教えてくださいませ
0278デフォルトの名無しさん
2008/11/01(土) 04:35:50データ分割可能なもの知りませんか?
fftwやFFTEのMPI版は短冊形(z方向分割)にしか対応していません。
0279デフォルトの名無しさん
2008/12/01(月) 12:33:58MPI_Sendrecvってペアじゃないと使えないですかね?
片方がMPI_Sendrecv
もう一方がMPI_SendだけとかMPI_Recvだけとか。
わかる方いたらご教授願いたいのですが。
0280デフォルトの名無しさん
2008/12/04(木) 16:33:04エラーメッセージは特になく、タスクマネージャで確認するとCPUコア数分のcpi.exeが実行中であるのが
確認できるのでが、強制終了する以外コントロールできない状況です。MPICH1ではうまくゆくのですが。
どなたかご教示のほうよろしくお願いします。
0281デフォルトの名無しさん
2009/01/13(火) 08:26:39とりあえず以下のコードを実行しました。
$ 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にてコピーしました。この先、何をやればよいでしょうか?
0282デフォルトの名無しさん
2009/01/14(水) 00:08:03mpiexec -machinefile mpd.hosts -n 3 a.out
http://www.mcs.anl.gov/research/projects/mpich2/documentation/files/mpich2-1.0.8-userguide.pdf
0283281
2009/01/15(木) 03:39:43有り難うございます。出来ました。
別の質問なのですが、以下のコードを実行すると、結果は順不同で出力されます。
#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のランクの順に出力したい場合はどう修正すればよいでしょうか?
0284デフォルトの名無しさん
2009/01/15(木) 10:36:11別々のプロセスが勝手に出力を出しているのでそうなる。
ノード0 出力が終わったらノード1に何か情報を送る
ノード1 ノード0空の受信を待った後、画面に出力。その後ノード2に情報を送信
・・・
という感じにするか、あるいはノード0に角ノードが出力したい情報を送りつけて、出力は全部ノード0でやるか。
0285デフォルトの名無しさん
2009/01/15(木) 14:13:53http://www.amazon.co.jp/dp/456301544X/
http://www.amazon.co.jp/dp/4621047736/
■ このスレッドは過去ログ倉庫に格納されています