Концепция зависимостей задач может вводить в заблуждение.
Лучший способ выразить это - подумать о них как о способе указать , как различные задачи обращаются к данным , а не как о способе управления порядком выполнения .
Порядок задач в исходном коде вместе с предложением зависимости описывают один из 4 возможных сценариев: чтение после записи , запись после чтения , запись после записи и чтение после чтения .
В вашем примере вы описываете запись запись после чтения : вы сообщаете компилятору, чтовторая задача перезапишет переменную x, но первая задача принимает x в качестве входных данных, как указано depend(in:x)
.Поэтому компилятор выполнит первую задачу перед вторым , чтобы предотвратить перезапись начального значения.
Если вы посмотрите на документацию Intel здесь , то есть краткий пример, который показывает, как порядок задач (в исходном коде) все еще играет роль в определении графа зависимостей (и, следовательно,, в порядке исполнения).
Еще одна информативная страница по этому вопросу доступна здесь .