Поделиться через


цикл

Контролирует восприятие кода цикла автоматическим параллелизатором и(или) исключает цикл из рассмотрения автоматическим векторизатором.

#pragma loop( hint_parallel(n) )

#pragma loop( no_vector )

#pragma loop( ivdep )

Параметры

  • hint_parallel( n )
    Указывает компилятору, что этот цикл необходимо параллельно обработать в потоках n, где n — положительный целочисленный литерал или нуль. Если n — ноль, максимальное число потоков используется во время выполнения. Это лишь указание, а не команда компилятору. Нет гарантии, что цикл будет обработан параллельно. Если цикл имеет зависимости данных или структурные проблемы, например, цикл сохраняется в скалярном компоненте, который используется где-либо еще кроме основной части цикла. В этом случае цикл не будет обработан параллельно.

    Компилятор игнорирует этот параметр, если оператор компилятора /Qpar не задан.

  • no_vector
    По умолчанию автоматический векторизатор включен и предпринимает попытки векторизовать все циклы, которые, по его оценке, смогут извлечь из этого преимущества. Укажите эту директиву pragma, чтобы отключить автоматический векторизатор для цикла, который следует за ней.

  • ivdep
    Указывает компилятору, что можно игнорировать векторные зависимости для этого цикла. Используйте его вместе с hint_parallel.

Заметки

Для использования директивы pragma loop поместите ее сразу перед определением цикла (а не в нем). Директива pragma вступит в силу для области цикла, который следует за ним. Можно применить к циклу несколько директив pragma в любой последовательности, однако каждую из них необходимо определить в отдельном операторе pragma.

См. также

Ссылки

Ошибки и предупреждения Автоматический-Parallelization

Директивы Pragma и ключевое слово __Pragma