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

Это произведение доступно по лицензии 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.
