de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
Ramy  Al Zuhouri
Ramy Al Zuhouri
質問

MPI_Barrierが正しく動作しない

mpi.hでは、MPI_Barrierを使用しようとしていますが、うまく動作しません。 ここに例があります:

int main(int argc, char **argv)
{
    MPI_Init(&argc,&argv);
    int i,j,rank,np;
    MPI_Comm_size(MPI_COMM_WORLD,&np);
    MPI_Comm_rank(MPI_COMM_WORLD,&rank);
    for(i=0;i

出力は次のとおりです。

(0)
0   

(1)
0   

(2)
0   

(3)
0   
1       2       3       4       1       2       3       4       1       2       3       4
1       2       3       4   

(4つのプロセッサで実行) したがって、障壁があっても、すべてのプロセッサが同時に値を印刷し始めます。 どうして?

0 2011-10-27T20:19:54+00:00 1
プログラミング
c
Adrian Cox
27日 10月 2011 в 9:31
2011-10-27T21:31:20+00:00
さらに
ソース
編集
#56792800

printf to stdout is buffered, and by default flushes the buffer at each \n. So each processor in turn prints its rank and flushes the buffer with \n, then prints 0 and flushes the buffer. Each processor then uses printf to load "1 2 3 4" into the output buffer, but doesn't flush. The flush happens the the end of the program, so all the final lines appear at once.

IOを順番に確認するには、障壁の前に fflush(stdout)を追加してください。 I/O順序付けを完全に制御するには、MPIがI/O順序保証を提供しないため、1つのプロセッサーをI/O実行専用にします。

3
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Roxana Elizabeth CASTILLO Avalos
登録済み 16時間前
2
Hideo Nakagawa
登録済み 1日前
3
Sergiy Tytarenko
登録済み 3日前
4
shoxrux azadov
登録済み 5日前
5
Koreets Koreytsev
登録済み 1週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属