цикл
Контролирует восприятие кода цикла автоматическим параллелизатором и(или) исключает цикл из рассмотрения автоматическим векторизатором.
#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.