У меня есть цикл for, который я не хочу распараллеливать, который вызывает функцию, которую я хочу распараллелить (в которой есть цикл for, который я хочу распараллелить). Я хочу поместить параллельную область за пределы всей партии, чтобы мои потоки создавались только один раз (чтобы уменьшить накладные расходы на создание потоков).
Однако на данный момент у меня есть omp single
, охватывающий цикл for, который вызывает функцию, и omp for
внутри функции для работы с внутренним циклом for. Он протягивает руку, и, согласно OMP single висит внутри для , это потому, что это незаконно!
Если я не могу сделать это таким образом, как я могу подойти к этому? Я хочу убедиться, что только один поток запускает внешний цикл for и вызывает функцию, но внутри функции я могу получить полный параллелизм.
Возможно ли это? Есть идеи?