Автоматизація векторизації коду програм для використання simd-інструкцій
DOI:
https://doi.org/10.34121/1028-9763-2026-1-21-28Ключові слова:
паралельні обчислення, SIMD, оптимізація коду, векторизація коду, автоматизація векторизаціїАнотація
Суттєве уповільнення темпів зростання продуктивності процесорів пов’язане з наближенням до фізичних обмежень мінімізації розмірів транзисторів. Це призвело до того, що традиційні шляхи підвищення швидкодії (збільшення тактової частоти чи кількості ядер) вже не в повній мірі забезпечують приріст продуктивності. У сучасних процесорах важливу роль у підвищенні продуктивності обчислень відіграють інструкції типу SIMD (Single Instruction, Multiple Data), що дозволяють процесору виконувати одну операцію над кількома потоками даних одночасно на одному ядрі. У такій ситуації ключового значення набуває паралельна обробка даних, що реалізується шляхом використання SIMD-інструкцій. Спрямування процесу компіляції за допомогою спеціальних директив, опцій та правильної організації даних дозволяє отримати оптимізований векторизований код без необхідності явного використання SIMD-інструкцій у вихідному тексті програми. Але ефективність таких механізмів значною мірою залежить від низки чинників: архітектурних особливостей процесора, версії компілятора, якості початкового коду та стану оптимізатора. У статті проведено аналіз існуючих методів та засобів векторизації коду для використання SIMD-інструкцій та запропоновано підхід до автоматизації векторизації коду програм шляхом вставки міток у вихідний код, виявлення меж ділянок у скомпільованому коді, аналізу інструкцій у межах ділянок і формування звіту з прив’язкою до вихідного коду. Проведено порівняльний аналіз існуючих засобів векторизацї з розробленим прототипом. Запропонований підхід дозволяє автоматизувати перевірку факту векторизації коду з точністю до рядка і працює навіть при використанні агресивної оптимізації, включаючи вбудовування функцій.
Посилання
1. Intel, Intel Advanced Vector Extensions 10 Architecture Specification, rev 1.0, order no. 355989-001US, July 2023. URL: https://cdrdv2-public.intel.com/784267/355989-intel-avx10-spec.pdf.
2. Introduction to ARM NEON SIMD Intrinisics. URL: https://masterchef2209.wordpress.com/2020/08/12/introduction-to-arm-neon-simd-intrinisics-guide-for-simde-neon-impls/. 28 ISSN 1028-9763. Математичні машини і системи. 2026. № 1
3. Coyle D., Hampton L. 21st century progress in computing. Telecommunications Policy. 2024. N 48 (1). P.102649. URL: https://doi.org/10.1016/j.telpol.2023.102649.
4. Burg D., Ausubel J.H. Moore’s Law revisited through Intel chip density. PLoS ONE. 2021. N 16 (8). e0256245. DOI: https://doi.org/10.1371/journal.pone.0256245.
5. Siso S., Armour W., Thiyagalingam J. Evaluating auto-vectorizing compilers through objective withdrawal of useful information. ACM Transactions on Architecture and Code Optimization (TACO). 2019. Vol. 16, N 4. P. 1–23. DOI: https://doi.org/10.1145/3356842.
6. Liu B., Laird A., Tsang W.H., Mahjour B., Dehnavi M.M. Combining Run-Time Checks and CompileTime Analysis to Improve Control Flow Auto-Vectorization. Proc. of the International Conference on Parallel Architectures and Compilation Techniques (PACT '22). Association for Computing Machinery. New York, NY, USA, 2023. P. 439–450. DOI: https://doi.org/10.1145/3559009.3569663.
7. Taneja J., Laird A., Yan C., Musuvathi M., Lahiri S.K. Llm-vectorizer: Llm-based verified loop vectorizer. Proc. of the 23rd ACM/IEEE International Symposium on Code Generation and Optimization. 2025. March. P. 137–149. DOI: https://doi.org/10.48550/arXiv.2406.04693.
8. Zheng Z., Wu K., Cheng L., Li L., Rocha R.C., Liu T., Wei W., Zeng J., Zhang X., Gao Y. VecTrans: Enhancing Compiler Auto-Vectorization through LLM-Assisted Code Transformations. 2025. arXiv preprint. DOI: https://doi.org/10.48550/arXiv.2503.19449.
9. Богдюк М.О., Коваленко О.Є. Перевірка векторизації інструкцій. Теоретичні та прикладні аспекти розробки комп’ютерних систем 2025 (TAACSD-2025): VII Всеукр. наук.-практ. інтернет конф. студентів і аспірантів. Київ: Національний університет біоресурсів і природокористування України, 2025. URL: https://drive.google.com/file/d/179dsQND4mvTZLH4_MR-0gpSwwKJ35u6Y/view?usp=sharing.
10. Rust. A language empowering everyone to build reliable and efficient software. URL: https://rustlang.org/.
11. Crate goblin. URL: https://docs.rs/goblin/latest/goblin/.
12. Crate iced_x86. URL: https://docs.rs/iced-x86/latest/iced_x86/.
Опубліковано
Номер
Розділ
Ліцензія
Авторське право (c) 2026 Математичні машини і системи

Ця робота ліцензується відповідно до ліцензії Creative Commons Attribution 4.0 International License.
