現在、スーパーコンピュータやマルチコアプロセッサの効率的なプログラミングのコースに参加しています。私たちの最近の課題は、MPI_Send コマンドのレイテンシーを測定することです (したがって、0 バイトのメッセージの送信に費やされた時間)。これだけではそれほど難しいことではありませんが、次の基準で測定を実行する必要があります。
- 同じプロセッサ内のプロセスの通信、
- 同じノードだが異なるプロセッサ、
- および異なるノード上のプロセス用。
私は疑問に思っています:どうすればこれを判断できますか?さまざまなノード上のプロセスについて、プロセスが現在実行されているノードの識別子を返す MPI_Get_processor_name によって返された名前をハッシュし、それをタグとして送信することを考えました。また、sched_cpu() を使用してコア ID を取得しようとしましたが、コアがハイパースレッド化されている場合でも、増分番号が返されるようです (したがって、プロセスは同じコアで実行されます)。どうすればいいですか?地域を特定するための概念が必要なだけです。記載されている問題の完全なコードではありません。ありがとうございました!