OpenMPで並列化していない箇所の処理時間が増加している

コンパイル時に、OpenMPや自動並列化を使用するオプションを指定した場合、並列化指示行の有無に関わらず、「並列版ライブラリ」がリンクされます。「並列版ライブラリ」の関数(並列版の関数)には通常版ライブラリと比べて、排他制御のために他スレッドのリソースへのアクセスを制限する「ロック処理」が組み込まれています。
 
並列化指示行を挿入していない箇所で並列版の関数がコールされた場合、1スレッドで動作するので、実際にロック処理に伴う「他スレッドの処理待ち」が発生するわけではないのですが、例えば、「排他が必要かどうか」といった判定を行う都合で、わずかですが通常版ライブラリより処理時間が増えることとなります。
 
一回のオーバヘッドはわずかですが、大量にコールすると、処理時間に大きく影響することとなります。
ご注意ください。