
Study of the vectorization efficiency of loop nests with an irregular number of iterations
Author(s) -
Алексей Анатольевич Рыбаков,
S. S. Shumilin
Publication year - 2019
Publication title -
programmnye sistemy: teoriâ i priloženiâ
Language(s) - Russian
Resource type - Journals
ISSN - 2079-3316
DOI - 10.25209/2079-3316-2019-10-4-77-96
Subject(s) - vectorization (mathematics) , loop (graph theory) , parallel computing , computer science , physics , mathematics , combinatorics
Векторизация вычислений является важной низкоуровневой оптимизацией, используемой для создания высокоэффективного параллельного кода. Особенности набора инструкций AVX-512 позволяют применять векторизацию для сложного программного контекста, в частности для гнезд циклов и циклов с сильно разветвленным управлением. При использовании векторных инструкций для контекста с неизвестным профилем исполнения существует опасность низкой эффективности векторизации. Особенно ярко это проявляется при векторизации гнезд циклов с нерегулярным числом итераций внутреннего цикла. В статье рассматривается практический подход к векторизации гнезд циклов, основанный на предикатном представлении программы. В качестве примера приводится реализация сортировки Шелла, компактная реализация которой состоит из гнезда циклов, в котором количество итераций внутреннего цикла носит нерегулярный характер и зависит от номеров итераций внешних циклов. Такой контекст является крайне неудобным для векторизации. Приводится сравнение теоретической и практической эффективности векторизации сортировки Шелла, рассматриваются особенности этого программного контекста и объясняется их негативное влияние на производительность векторизованного кода. Полученные результаты могут быть использованы исследователями и разработчиками программного обеспечения для обнаружения причин низкой эффективности векторизации программного кода с похожими особенностями.