Как упоминалось выше, векторизация используется для использования SIMD-инструкций, которые могут выполнять идентичные операции с различными данными, упакованными в большие регистры.
Общая рекомендация, позволяющая компилятору автоматически векторизовать цикл, состоит в том, чтобы гарантировать отсутствие потоковых и анти-зависимых ч / б элементов данных в разных итерациях цикла.
http://en.wikipedia.org/wiki/Data_dependency
Некоторые компиляторы, такие как компиляторы Intel C ++ / Fortran, способны автоматически векторизовать код. В случае, если он не смог векторизовать цикл, компилятор Intel может сообщить, почему он не смог этого сделать. Там отчеты могут быть использованы для изменения кода, чтобы он стал векторизованным (при условии, что это возможно)
Зависимости подробно рассматриваются в книге «Оптимизация компиляторов для современных архитектур: подход, основанный на зависимостях»