もちろん、Hristoの答えは優れていますが、私は異なる視点を提供したいと思います。
あなたの期待に反して、質問は簡潔ではありません。 Hristo氏が指摘したように、システムの詳細を知らなくても具体的に答えることさえできません。それは質問が無効であることを意味するわけではありませんが、異なるレベルでパフォーマンスについて推論する必要があります。
最初に、収集操作の複雑さを考慮してください。ルートへのネットワーク転送とメモリ要件は、コミュニケータのプロセス数とともに直線的に増加します。これは当然スケーラビリティを制限します。より良いあなたが手でそれを行うことよりも -
第二に、あなたはあなたのMPIの実装が可能な限り最も効率的な方法でMPI_Gather
を実装しないと仮定してよいです。この仮定は非常に間違っているかもしれませんが、あなたのプログラムを書いておくのが最良の出発点です。
あなたのプログラムをお持ちの場合は、どこで時間が費やされたか、または無駄になったかを測定して見てください。そのためには、MPI performanceanalysis toolsとする必要があります。 Gatherがパフォーマンスに重大な影響を与えていることが分かった場合は、先に進んで最適化を試みることができます。まず、コミュニケーションを概念的によりうまく構築できるかどうかを検討してください。何らかの形で計算を一括して削除するか、代わりに巧妙な削減を使用してください。まだ収集に固執する必要がある場合は、まずMPI実装を調整してください。その後、最適化が実際に特定のシステムのパフォーマンスを向上させたことを確認します。
驚くべき回答!ありがとう、トン! –