2

I believe everyone agree with the title of this post. Can someone point me the reason ? Any reference to that like book etc ? I have tried to find but no luck.

I believe the reason is something about openmp has a synchronization overhead that no openmp project doesn't have.

Hope someone can expand the reason more?

Thanks

4

2 に答える 2

3

スレッドが 1 つしかない場合でも OpenMP を使用すると、実行時にいくらかのオーバーヘッドが発生しますが、より重要な問題は、コンパイラが OpenMP コードを生成するために実行しなければならないコード変換 (特に、並列領域コードを個別の関数にアウトライン化すること) である可能性があります [ gcc と icc によって行われます; PGI は別のことを行います...]) 他のコードの最適化 (ベクトル化など) に影響を与えます。コードの一部が概説された関数で実行されると、コンパイラが最適化を可能にする単一の関数に持つ情報が失われる可能性があるため、生成されたコードが悪化する可能性があります。

于 2013-05-21T09:59:46.587 に答える