Как стать автором
Обновить

Комментарии 4

То есть по факту лучше всего писать самый очевидный вариант, не разматывая циклы ручками за компилятор в надежде на то, что его эвристика заточена на самые очевидные для программиста способы записи циклов?
Тут, к сожалению, действительно много проблем. Если говорить о цикловых оптимизациях, то компилятор с -O2 и -O3 активно вмешивается в действия программиста и стремится все переиначить на свой лад и как добиться сохранения своего варианта — не понятно. Часто попытка делать цикловые оптимизации самому приводит к плачевным результатам.
Вот и в данном эксперименте хорошим заключительным аккордом было бы заставить компилятор завекторизовать оптимизированные мною циклы и сравнить результат с векторизованным результатом компилятора. Но у меня не получилось. Векторизация тоже цикловая оптимизация и включается только вместе с остальными.
Поскольку я начал про цикловые оптимизации, то следующим шагом хочется расказать немного о зависимостях, как главной проблеме для компилятора при выполнении цикловых оптимизаций и сопутствующих проблемах, таких как разрешение неоднозначности при работе с памятью и т.д. Потом хочется рассказать о векторизации, автопараллелизации,… Да profile guided оптимизации есть вэтом списке, но до них вряд ли дело скоро дойдет :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий