Я работаю над приложением, которое использует как грубую, так и мелкозернистую многопоточность. То есть мы вручную управляем расписанием больших рабочих блоков в пуле потоков, а затем в этих рабочих единицах определенные функции используют OpenMP для более тонкой многопоточности.
Мы добились успеха, избирательно используя OpenMP в наших самых дорогих циклах, но обеспокоены созданием конкуренции для рабочего пула OpenMP, поскольку мы добавляем блоки OpenMP в более дешевые циклы. Есть ли способ сообщить OpenMP, что блок кода должен использовать пул, если он доступен, и если нет, то он должен обрабатывать цикл последовательно?