Является ли анализ зависимостей обязательным для компиляторов OpenACC?

Многие учебные пособия по OpenACC предполагают, что компилятор / ускоритель будет проверять правильность, автоматически проверяя зависимости и гарантируя, что цикл фактически распараллелен. Однако в спецификации OpenACC, похоже, ничего не говорится об обязательном анализе правильности. Обязаны ли компиляторы OpenACC проверять, являются ли циклы на самом деле распараллеливаемыми, и сдаваться, если нет?

1 ответ

Компилятор должен анализировать циклы, чтобы определить, являются ли они независимыми от данных при использовании предложения auto в директиве loop. (См. Раздел 2.9.6 стандарта OpenACC).

Для циклов внутри конструкции "kernels" "auto" включается по умолчанию, если не используются выражения "independent" или "seq".

Для директив "loop" внутри "параллельной" конструкции "auto" не включен по умолчанию, поэтому декорированные циклы считаются независимыми.

Другие вопросы по тегам