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

  • 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, Национальный исследовательский центр "Курчатовский институт"; Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук

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

Литература

1. Trebotich D. Exascale CFD in heterogenous systems. Journal of Fluids Engineering. 2024:146(4):1-19. https://doi.org/10.1115/1.4064534
2. Menshov I., Pavlukhin P. GPU-native gas dynamic solver on octree-based AMR grids. Journal of Physics Conference Series. 2020:1640(1):012017. https://doi.org/10.1088/1742-6596/1640/1/012017
3. Bosnjak D., Pepe A., Schussnig R., et al. Higher-order block-structured hex meshing of tubular structures. Engineering with Computers. 2023:40(2):931-951. https://doi.org/10.1007/s00366-023-01834-7
4. Carr G.E., Biocca N., Urquiza S.A. A biologically-inspired mesh moving method for cyclic motions mesh fatigue. Computational Mechanics. 2024;75:475-486. https://doi.org/10.1007/s00466-024-02514-z
5. Park Y.M., Jee S. Numerical study on interactional aerodynamics of a quadcopter in hover with overset mesh in OpenFOAM. Physics of Fluids. 2023:35(8):085138. https://10.1063/5.0160689
6. Wan Y., Zhao Z., Liu J., et al. Large-scale homo- and heterogeneous parallel paradigm design based on CFD application PHengLEI. Concurrency and Computation Practice and Experiment. 2024:36:e7933. https://doi.org/10.1002/cpe.7933
7. Jakobs T., Klöckner O., Rünger G. Parallelization with load balancing of the weather scheme WSM7 for heterogeneous CPU-GPU platforms. The Journal of Supercomputing. 2024:80:14645-14665. https://doi.org/10.1007/s11227-024-06009-9
8. Lai J., Yu H., Tian Z., et al. Hybrid MPI and CUDA parallelization for CFD applications on multi-GPU HPC clusters. Scientific Programming. 2020:1-15. https://doi.org/10.1155/2020/8862123
9. Bashir S., Usman A., Mumtaz Y., et al. Parallelization of lattice Bolzmann method for CFD using message passing interface. Thermal Science. 2022:26(spec.issue1):211-218. https://doi.org/10.2298/TSCI22S1211B
10. Lin H., Yan L., Chang Q. et al. O2ath: an OpenMP offloading toolkit for the sunway heterogeneous manycore platform. CCF Transactions on High Performance Computing. 2024:6(7). https://doi.org/10.1007/s42514‑024‑00191‑1
11. He X., Wang K., Feng Y., et al. An implementation of MPI and hybrid OpenMP/MPI parallelization strategies for an implicit 3D DDG solver. Computers & Fluids. 2022:241(4):105455. https://doi.org/10.1016/j.compfluid.2022.105455
12. Cebrian J.M., Natvig L., Jahre M. Scalability analysis of AVX-512 extensions. The Journal of Supercomputing. 2020:76:2082-2097. https://doi.org/10.1007/s11227-019-02840-7
13. Kulikov I., Chernykh I., Tutukov A. A new hydrodynamic code with explicit vectorization instructions optimizations that is dedicated to the numerical simulation of astrophysical gas flow. I. Numerical method, tests, and model problem. The Astrophysical Journal. Supplement Series. 2019;243(1):4. https://doi.org/10.3847/1538-4365/ab2237
14. Glinting B.M., Mundani R.-P. Comparison of shallow water solvers: applications for dam-break and tsunami cases with reordering strategy for efficient vectorization on modern hardware. Water. 2019:11(4):639. https://doi.org/10.3390/w11040639
15. Yildirim A., Mader C., Martins J.R.R.A. Accelerating parallel CFD codes on modern vector processors using blockettes. In: Proceedings of the Platform for Advanced Scientific Computing Conference (PASC '21). New York, NY, USA: Association for Computing Machinery; 2021. Article number: 11. https://doi.org/10.1145/3468267.3470615
16. Rucci E., Moreno E., Pousa A., et al. Optimization of the N-body simulation on Intel’s architectures based on AVX-512 instruction set. In: Pesado P., Arroyo M. (eds.) Computer Science CACIC 2019. CACIC 2019. Communications in Computer and Information Science. Vol. 1184. Cham: Springer; 2020. p. 37-52. https://doi.org/10.1007/978-3-030-48325-8_3
17. Rucci E. Garcia C., Botella G., et al. SWIMM 2.0: Enhanced Smith-Waterman on Intel’s multicore and manycore architectures based on AVX-512 vector extensions. International Journal of Parallel Programming. 2019;47(17). https://doi.org/10.1007/s10766-018-0585-7
18. Choi Y., Choi H., Chung S. AVX512Crypto: parallel implementations of Korean block ciphers using AVX‑512. IEEE Access. 2023;11:55094-55106. https://doi.org/10.1109/ACCESS.2023.3278993
19. Cheng H., Fotiadis G., Großschädl J., et al. Batching CSIDH group actions using AVX‑512. IACR Transactions on Cryptographic Hardware and Embedded Systems. 2021:4:618-649. https://doi.org/10.46586/tches.v2021.i4.618-649
20. Savin G.I., Shabanov B.M., Rybakov A.A., Shumilin S.S. Vectorization of flat loops of arbitrary structure using instructions AVX-512. Lobachevskii Journal of Mathematics. 2020:41(12):2575-2592. https://doi.org/10.1134/S1995080220120331
21. Rybakov A., Chopornyak A. Improving vector code performance by monitoring masks density in vector instructions. Trudy NIISI RAN. 2020:10(4):40-47. (In Russ., abstract in Eng.) https://doi.org/10.25682/NIISI.2020.4.0006
22. Toh Y.H. Efficient non-iterative multi-point method for solving the Riemann problem. Nonlinear Dynnamics. 2024:112(1):1-13. https://doi.org/10.1007/s11071-023-09229-5
23. Zeng Z., Feng C., Yu C., et al. Linearized double-shock approximate Riemann solver for augmented linear elastic solid. Numerical Mathematics Theory Methods and Applications. 2021:15(1). https://doi.org/10.4208/nmtma.OA-2021-0021
24. Lee S., Kim Y., Nam D., et al. Gem5-AVX: Extension of the Gem5 simulator to support AVX instruction sets. IEEE Access. 2024;12:20767-20778. https://doi.org/10.1109/ACCESS.2024.3359296
25. Rybakov A.A., Shwindt A.N. Tools for vectorizing a flat loop body using AVX-512 vector instructions. Software & Systems. 2023:36(4):561-572. (In Russ., abstract in Eng.) https://doi.org/10.15827/0236-235X.142.561-572
Опубликована
2024-10-15
Как цитировать
RYBAKOV, Alexey Anatolyevich. Векторизация циклов с условными операциями с помощью комбинирования векторных масок. Современные информационные технологии и ИТ-образование, [S.l.], v. 20, n. 3, p. 563-572, oct. 2024. ISSN 2411-1473. Доступно на: <http://sitito.cs.msu.ru/index.php/SITITO/article/view/1090>. Дата доступа: 08 jan. 2026 doi: https://doi.org/10.25559/SITITO.020.202403.563-572.
Раздел
Параллельное и распределенное программирование, грид-технологии