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

Это произведение доступно по лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная.
Редакционная политика журнала основывается на традиционных этических принципах российской научной периодики и строится с учетом этических норм работы редакторов и издателей, закрепленных в Кодексе поведения и руководящих принципах наилучшей практики для редактора журнала (Code of Conduct and Best Practice Guidelines for Journal Editors) и Кодексе поведения для издателя журнала (Code of Conduct for Journal Publishers), разработанных Комитетом по публикационной этике - Committee on Publication Ethics (COPE). В процессе издательской деятельности редколлегия журнала руководствуется международными правилами охраны авторского права, нормами действующего законодательства РФ, международными издательскими стандартами и обязательной ссылке на первоисточник.
Журнал позволяет авторам сохранять авторское право без ограничений. Журнал позволяет авторам сохранить права на публикацию без ограничений.
Издательская политика в области авторского права и архивирования определяются «зеленым цветом» в базе данных SHERPA/RoMEO.
Все статьи распространяются на условиях лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная, которая позволяет другим использовать, распространять, дополнять эту работу с обязательной ссылкой на оригинальную работу и публикацию в этом журналe.