Векторизация перемножения малоразмерных матриц специального вида с использованием инструкций AVX-512
Authors: БЕНДЕРСКИЙ Л А. , РЫБАКОВ А А. , ШУМИЛИН С С. 
Published: January 2025

Современные расчетные пакеты для проведения суперкомпьютерных вычислений крайне требовательны к ресурсам, поэтому остро стоит вопрос повышения их производительности. В то же время появление новых аппаратных архитектур открывает новые возможности по оптимизации программного кода. Набор инструкций AVX-512, появившийся впервые в 2016-м году в микропроцессорах Intel Xeon Phi второго поколения, является мощным инструментом для создании высокопроизводительного параллельного кода. Набор инструкций AVX-512 обладает рядом особенностей, среди которых специальные регистры масок, позволяющие отбирать отдельные элементы векторов для обработки, комбинированные арифметические операции, операции чтения из памяти элементов данных с произвольными смещениями, векторные трансцендентные операции, многообразие операций перемешивания элементов векторов. Эти и многие другие уникальные возможности позволяют достигать кратного ускорения на наиболее важных участках расчетных кодов. Отдельные численные методы оперируют специальными объектами, эффективность обработки которых критически влияет на эффективность всего пакета. Для расчетных кодов RANS/ILES, предназначенных для расчета нестационарных турбулентных течений, такими специфическими объектами являются матрицы размера 5x5, расположенные внутри матриц размера 8x8 в качестве подматриц. Основной операцией для работы с такими матрицами является их перемножение. В статье рассматривается эффективный подход к векторизации перемножения матриц размера 8x8, а также проводится исследование, как понижение размера матриц влияет на эффективность векторизации. Предложенный подход реализован с помощью специальных функций-инстринсиков, и его эффективность проверена экспериментами, проведенными на суперкомпьютере, находящимся в МСЦ РАН.
Modern software packages for supercomputer calculations require a large amount of computing resources. At the same time there are new hardware architectures that open up new opportunities for program code optimizing. The AVX-512 instruction set is a unique tool with many useful features that allow creating high-performance parallel code for supercomputer calculations. The most striking features of AVX-512 instruction set are special mask registers that allow selecting the elements of vectors for processing, combined arithmetic instructions, vector transcendental instructions, operations of multiple memory access with different arbitrary offsets, and many others. Some numerical methods use special objects, the processing speed of which critically affects the speed of the entire calculation package. Matrices of size 5 by 5, represented as submatrices of 8-by-8 matrices, are such critical objects for the numerical RANS/ILES method, which is used for nonstationary turbulent flows calculating. The main operation for working with such matrices is multiplication. In this paper we consider an effective approach to vectorizing the multiplication of 8-by-8 matrices. Further, the effect of decreasing the dimension of the matrices on the efficiency of vectorization is estimated. The considered approach is realized with the help of special intrinsic functions for the AVX-512 instruction set and it is checked on a supercomputer located in JSCC RAS.