09/01/17 06:32:16
丸投げでなくてすみません。あと一歩で完成だと思うのですが、実行するとコンソールの途中で処理が止まってしまいます。
(MPI_SendとMPI_Recvのデッドロック?)どこかを少しいじれば完成なのですが、ご指摘頂けませんか?
[1] 並列プログラミング
[2] 問題文(含コード&リンク):
整数を昇順にソートするプログラムを並列プログラミングで作成せよ。
mpirun -np 3 ./a.out 9
のように実行すると、3つのプロセスがそれぞれ3要素の乱数配列を作成し、
プロセス内でバブルソートした後にマージ処理を行って全体での昇順に格納します。
例)
proc0: array[0]=13, array[1]=7, array[2]=5
proc1: array[0]=9, array[1]=4, array[2]=2
proc2: array[0]=20, array[1]=12, array[2]=10
という乱数配列を生成した場合、まずプロセサ内でバブルソートして
proc0: array[0]=5, array[1]=7, array[2]=13
proc1: array[0]=2, array[1]=4, array[2]=9
proc2: array[0]=10, array[1]=12, array[2]=20
とする。最後にマージする。このとき、各プロセス内にarrayと同一個数の
メモリを使用してよいが、それ以上のメモリを使ってはならない。
(この例の場合各プロセスはそれぞれtemp_array[3]を使って良い。)
proc0: array[0]=2, array[1]=4, array[2]=5
proc1: array[0]=7, array[1]=9, array[2]=10
proc2: array[0]=12, array[1]=13, array[2]=20
僕のプログラムの、74行目から102行目までのどこかがおかしいのだと思います。
URLリンク(www.dotup.org)
[3] 環境
[3.1] OS:MacOSX
[3.2] gcc
[3.3] C
[4] 期限:1月17日まで