Ожидание завершения задачи OpenMP при неявных барьерах?

Если я создаю кучу задач OpenMP и не использую taskwaitгде программа ожидает завершения этих задач? Рассмотрим следующий пример:

#pragma omp parallel
{
#pragma omp single
{
for (int i = 0; i < 1000; i++) {
#pragma omp task
... // e.g., call some independent function
}
// no taskwait here
}
// all the tasks completed now?
}

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

РЕДАКТИРОВАТЬ

От barrier описание в OpenMP Spec .:

Все потоки команды, выполняющей обязательную параллельную область, должны
выполнить область барьера и завершить выполнение всех явных
задачи, связанные с этой параллельной областью, прежде чем любой из них будет разрешено продолжить
исполнение за барьером.

Это, однако, не говорит, отвечаю ли я за завершение задачи или за меня отвечает среда выполнения OpenMP.

1

Решение

Завершение задачи в OpenMP неявное, а не явное (1.2.5 Терминология задач)

завершение задачи Завершение задачи происходит, когда конец структурированный блок связано с сооружать что породило задача достигнуто

Существует неявный барьер в конце single конструктивная конструкция. Как вы упомянули, барьеры ждут явных задач. Поэтому все задачи будут выполнены на single блок.

1

Другие решения

Других решений пока нет …