8

今日、これに出会いました

MPI_ERR_COUNT カウント引数が無効です。カウント引数は負ではない必要があります。多くの場合、ゼロのカウントは有効です。

多くの場合、ゼロのカウントが有効であるとはどういう意味ですか? 実装依存ということですか?

4

2 に答える 2

10

あなたはそれを読みすぎていると思います。これは、ユーザーの実装によっては、0からランダムな正の整数が有効なカウントであることを意味していると思います。パラメータを必要としないメッセージタグを想像するのは難しいことではありません。

メッセージタグにパラメータが必要ない場合は、ゼロのみを送信することが有効です(実際、それ以上送信する場合は無効になる可能性があります)。メッセージタグはそれ自体が「パラメータ」であるため、パラメータがないことはデータがないことと同じではないことに注意する必要があります。

于 2012-05-01T19:45:27.857 に答える
7

これは、メッセージ データ サイズを指定する必要がある MPI のすべての関数がゼロを受け入れることを意味しますが、それが正しいアプリケーション コードにつながるという意味ではありません。

たとえば、MPI_Sendはカウントとして 0 を受け入れ、常に、データを持たない空のメッセージを送信しますが、エンベロープがあり、一致する任意の で受信できますMPI_Recv。一方、カウントとして 0 を指定するMPI_Recvと、到着した一致する空でないメッセージに対してメッセージ切り捨てエラーが発生します。つまり、0 は (アプリケーションの観点から) 有効なカウント値になることはほとんどありませんが、MPI_RecvMPI では完全に許容されます。

ゼロは MPI で広く受け入れられています。これにより、より対称的なコードを記述できるようになるためです (たとえば、多くのゼロを使用しないコード)。if (count != 0) ...

于 2012-05-04T14:24:27.647 に答える