2016-03-10 3 views
1

Я заметил, что флаг gcc -ftree-vectorize очень полезен для оптимизации кода.векторная графика: gcc-флаг оптимизации

Я пытаюсь лучше понять, как это работает, но документ является довольно кратким:

Выполните векторизации на деревьях. Этот флаг позволяет использовать -vector-vectorize и -ftree-slp-vectorize, если явно не указано.

Кто-нибудь знает внутреннюю работу этого флага?

+0

Эта ссылка может быть полезной: [Векторизация в gcc] (https://monoinfinito.wordpress.com/series/vectorization-in-gcc/) – mindriot

+0

Как отмечено в связанном документе, дополнительное понимание внутренней работы оптимизатора можно получить, играя с опцией '-ftree-vectorizer-verbose = N'. – nucleon

+0

«SLP» - это параллелизм уровня Superword. Не все повторяющиеся инструкции вызваны разворачиванием цикла; некоторые из них связаны с тем, что основной код является естественным повторением. – MSalters

ответ

1

Деревья - это внутреннее представление кода, используемое GCC, и векторизация деревьев происходит на этом этапе. В этом представлении довольно легко заметить повторяющиеся инструкции. Если генератор кода может испускать SIMD-инструкции, это помогает связать эти повторяющиеся инструкции уже на этапе дерева.

Подробнее см. Tree-vectorizer.c.

Смежные вопросы