2017-04-03 13 views
0

10個のプロセッサを搭載したコンピュータでストリームメモリ帯域幅のベンチマーク(https://www.cs.virginia.edu/stream/)を実行しました。このベンチマークでは、3つまたは4つのプロセッサーの後では、スピードアップは約3倍になっています。 MPIコードのパフォーマンスに対するこの結果の実際の影響は何ですか?簡単にするために、このマルチコアマシン上でのみプログラムが複数のプロセスをローカルで実行しているとします。つまり、メモリアクセスが集中するプログラムを実行している場合、すべてのコアを使用していても3倍以上のスピードアップを得ることはできませんか?メモリアクセスが集中していないプログラムを実行した場合、理論的には完全に10倍を得ることができますか?同時に3つのプロセッサを使用する2つまたは3つのメモリアクセス集中型プログラムを同時に実行した場合、3倍の速度を得ることができますか、または互いに干渉し、RAMから同時に引き出されるため、ストリームメモリ帯域幅ベンチマークと、MPIをローカルに実行することによる潜在的なスピードアップとの間の実際的な関係は何ですか?

答えて

1

スピードアップはコードにどれくらいの並列性が存在するかです。さらに、アプリケーションの種類によっては、どのリソースもボトルネックになる可能性があります。アプリケーションでメモリが大量に使用されている場合は、メモリの帯域幅によって制限されます。メモリが集中しておらず、並列性が高い(Monte Carloサンプリングを例に取る)場合、コアから完全に高速化することができます。

あなたの最後の質問(複数のメモリを大量に消費する)に答えるには:1日の終わりにメモリコントローラを使用して読み書きを行います。したがって、メモリバンクと物理ページがどこから割り当てられているかによって異なります。したがって、あなたが言及した2つの状況のいずれかが起こる可能性があります。

+0

これは、より多くのプロセッサを搭載したコンピュータを使用する場合の欠点ですか?具体的には、32プロセッサ搭載の1台のコンピュータではなく、4台のプロセッサを搭載した8台のコンピュータでMPIジョブを実行することで、クラスタ上でパフォーマンスを向上できますか?後者はノード間の通信を必要としませんが、前者は8つの別々のノードに8つの別個のメモリコントローラを持っていますか? –

+0

もっと多くのプロセッサを使用するという欠点はありません。 *アプリケーション*が重要な役割を果たします。 MPIは、ノード間の通信と、より大きな問題(RAMのノード数がx *ある)を実行できるという事実を覚えておいてください。インターコネクトは重要な役割を果たし、現在のインフィニバンドネットワークはメッセージサイズに応じてGB/sをドライブすることができます。だからあなたの最後の質問に答えるために考慮すべきパラメータがあります。答えは:それは依存しています。 – Arash

+0

クール、私は "それは依存している"と答えています。より少ないプロセッサでより多くのコアに分散することがより速くなる可能性があるかどうかを尋ねていました。間違いなく、プロセス内のローカルメモリのレイテンシが重要か、プロセス間のデータ交換によるレイテンシが重要かどうかは、具体的には分かります。 –

関連する問題