Векторизация циклов с условными операциями с помощью комбинирования векторных масок

  • Alexey Anatolyevich Rybakov Национальный исследовательский центр "Курчатовский институт"; Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук http://orcid.org/0000-0002-9755-8830

Аннотация

Статья посвящена проблеме повышения эффективности векторизации вычислений на вещественных числах. При выполнении вычислений несколько одинаковых скалярных операций могут быть объединены в единую векторную команду, существенно повышая скорость выполнения программы. Данная оптимизация является критически важной для расчетных задач суперкомпьютерного моделирования. Основным объектом, на который нацелена векторизация вычислений, является цикл с независимыми итерациями. При относительно простом виде тела рассматриваемого цикла проблем с векторизацией, как правило, не возникает. При появлении в теле цикла сложного управления, вложенных циклов и вызовов функций оптимизирующий компилятор зачастую не справляется с векторизацией. Однако особенности набора векторных инструкций AVX-512 с поддержкой выборочной обработки элементов данных векторов позволяют векторизовать циклы с телом практически произвольного вида. В настоящей статье рассматривается подход к векторизации цикла, содержащего условия. Подход основан на оптимизации слияния путей исполнения программы под соответствующими предикатами. Векторизованный предикат представляет собой маску обработки элементов вектора. Такие маски используются в векторных инструкциях AVX-512. При векторизации циклов, тело которых содержит сложное управление, основной проблемой является низкая плотность масок векторизованного кода, что приводит к снижению производительности. В статье рассмотрены методы, позволяющие повысить плотность векторных масок и эффективность выполнения векторного кода. Разработанные методы апробированы на программном контексте газодинамического решателя. Данные по эффективности векторизации были получены в режиме эмуляции векторных инструкций и на реальной машине (микропроцессор Intel Xeon Phi Knights Landing). После применения оптимизаций векторного кода были достигнуты показатели эффективности векторизации до 0.75 в режиме эмуляции и до 0.47 на реальной машине.

Сведения об авторе

Alexey Anatolyevich Rybakov, Национальный исследовательский центр "Курчатовский институт"; Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук

начальник отдела суперкомпьютерных технологий и систем, отделения суперкомпьютерных систем и параллельных вычислений;
ведущий научный сотрудник Межведомственного суперкомпьютерного центра Российской академии наук, кандидат физико-математических наук

Опубликована
2024-10-15
Как цитировать
RYBAKOV, Alexey Anatolyevich. Векторизация циклов с условными операциями с помощью комбинирования векторных масок. Современные информационные технологии и ИТ-образование, [S.l.], v. 20, n. 3, oct. 2024. ISSN 2411-1473. Доступно на: <http://sitito.cs.msu.ru/index.php/SITITO/article/view/1090>. Дата доступа: 31 mar. 2025
Раздел
Параллельное и распределенное программирование, грид-технологии