的外れだが同じ作業をしていた素人として。

スレッド生成・消滅のオーバーヘッドは思いのほか大きい
$omp parallel 〜 $omp end parallel
が極めて複数回呼ばれる場合にパフォーマンスは非常に落ちる
ネストループ内部、100万回呼ばれるルーチン内など

シングルの作業内容をマルチ対応にするのは面倒ですね。
gprof等でタイムクリティカルな部分を探し、手を入れてみましょう