2015-06-22 10 views
1

Использование компилятора Intel, цикл все еще может быть векторизован, если пользователи не подтверждают никаких зависимостей, используя #pragma ivdep.GCC Vectorization Pragma

Я нашел в НКУ #pragma GCC ivdep, но получил сообщение об ошибке, как показано ниже:

warning: ignoring #pragma GCC ivdep [-Wunknown-pragmas] #pragma GCC ivdep

ответ

4

"#pragma ivdep" полностью поддерживается, начиная с GCC4.9.

В какой версии GCC вы используете? #pragma ivdep официально не поддерживалась в GCC, по крайней мере, до 2013 года.

Я не уверен в официальной поддержке в других под-версиях GCC4.x между 2013 и 2014 годами, хотя я видел, что были некоторые частичные исправления для Поддержка ivdep перед версией 4.9.

В ICC (который также упоминается в вопросительных тегах) #pragma ivdep поддерживается давно (по крайней мере, последние 5 лет).

Для других компиляторов: Microsoft поддерживает «#pragma loop ivdep», начиная с MSVS 2013. Cray и некоторые другие компиляторы «старой школы» могут поддерживать его начиная с 1990-х годов, но я не уверен.

Наконец, если вы ищете кросс-платформенное и стандартизованное решение, взгляните на OpenMP4.x #pragma omp simd. Хотя он отличается от семантического и поддерживается только GCC4.9 + ICC/IFORT, он может быть более полезен в будущем, потому что (в отличие от ivdep) - pragma omp simd является истинным стандартом, поэтому все производители компиляторов будут более или менее должны поддерживать его в будущем и должны поддерживать тот же синтаксис для него.