OpenMP реализует внутренний пул потоков, он пытается повторно использовать потоки, если вы не измените некоторые его настройки между ними или не используете разные потоки приложения для вызова параллельных областей, в то время как другие все еще активны.
Можно проверить, что потоки действительно одинаковы, используя локальные потоки. Я бы порекомендовал вам проверить ваше заявление о воссоздании темы. Среда выполнения OpenMP выполняет множество интеллектуальных оптимизаций, помимо очевидной идеи пула потоков, вам просто нужно знать, как правильно ее настроить и контролировать.
Маловероятно, что потоки воссоздаются, но легко увидеть, как потоки могут перейти в спящий режим, когда вы снова вызываете параллельную область, и для их пробуждения требуется значительное время. Вы можете предотвратить переход потоков в спящий режим, используя OMP_WAIT_POLICY=active
и / или переменные среды, зависящие от реализации, такие как KMP_BLOCKTIME=infinite
(для времени выполнения Intel / LLVM).