シングルコア CPU のマシンで OpenMP を使用できますか? パフォーマンスの改善はありますか?
質問する
1412 次
2 に答える
2
はい、できます。コードに OpenMP ディレクティブで注釈を付けても、アプリケーションを順次実行できます。そのためには、OpenMP フラグなしでアプリケーションをコンパイルして実行する必要があります ( e.g.,
-fopenmp
)。
シングル コアで OpenMP を使用しても、たとえばハイパースレッディングを使用してシングル コア CPU でマルチスレッド プログラムを実行することにより、パフォーマンスを向上させることができます。
ハイパースレッディングを利用するメモリ バウンド アルゴリズムがあります。これは、実行中にメモリがフェッチされるのを待機しているスレッドがあり、他のスレッドが計算を行っているためです。まれに、ハイパースレッディングによる利益が分岐予測の改善から得られる場合があります。
それにもかかわらず、ほとんどの場合、単一のコアで OpenMP を使用すると、OpenMP ディレクティブに固有のオーバーヘッドが原因で、単一のスレッドであってもアプリケーションの速度が低下します。さらに、スレッドも同じリソースを求めて「戦っています」。
于 2012-11-07T23:05:03.883 に答える