Автоматизація векторизації коду програм для використання simd-інструкцій

Автор(и)

  • М.О. Богдюк https://orcid.org/0009-0000-4743-4023 , Національний університет біоресурсів і природокористування України image/svg+xml
  • О.Є. Коваленко https://orcid.org/0000-0002-9639-3544 , Національний університет біоресурсів і природокористування України image/svg+xml

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/.

Завантаження

Views: 141
Downloads: 40

Опубліковано

2026-03-13

Номер

Розділ

ІНФОРМАЦІЙНІ І ТЕЛЕКОМУНІКАЦІЙНІ ТЕХНОЛОГІЇ