2014-02-17 5 views
0

В настоящее время я пишу отчет о состоянии методов автоматической параллелизации на уровне компилятора. Что касается стандарта OpenACC, доступно несколько компиляторов, таких как компилятор PGI, CAPS или компилятор CRAY. Тем не менее, мне было интересно, существуют ли определенные ограничения для компилятора CAPS, которые не документированы в стандарте OpenACC? Я знаю, что, вероятно, существуют ограничения для версии 2.0a, так как этот стандарт еще не полностью реализован, но есть ли какие-то подводные камни, о которых я должен позаботиться?Ограничения компилятора CAPS, поддерживающего OpenACC

ответ

1

Наиболее распространенная проблема с OpenACC-2.0, когда люди полагаются на автоматическое распараллеливание, является то, что скаляры являются неявным скопировать (в ядрах) или firstprivate (в параллелей секциях). Это означает, что, если компилятор не может приватизировать эти скаляры, автоматическое распараллеливание циклов, содержащих такие скаляры, если они записаны, скорее всего, не сработает (т. Е. Не «продвинет» цикл на параллельное выполнение). В настоящее время CAPS Compilers не агрессивно приватизирует скаляры, поэтому автоматическая распараллеливание может работать не так хорошо, как вы ожидали. Отвечает ли это на ваш вопрос?