Разработка средства оптимизации встраиваемого по на базе автонастройки перестановкой оптимизационных проходов современного компилятора GCC
Автор: Отращенко А.И., Акимов З.Д., Ефанов Н.Н.
Журнал: Труды Московского физико-технического института @trudy-mipt
Рубрика: Информатика и управление
Статья в выпуске: 1 (61) т.16, 2024 года.
Бесплатный доступ
Современные компиляторы реализуют значительное количество оптимизационных проходов, и существенно повлиять на характеристики полученного в результате компиляции бинарного файла может последовательность, в которой они применяются. Однако любое ПО, использующее GCC как систему компиляции, не может настраивать последовательность оптимизаций ввиду отсутствия поддержки такой возможности со стороны компилятора. В данной работе рассматривается разработка способа и имплементация программного комплекса на базе GCC, позволяющего автоматически настраивать последовательности применения оптимизационных проходов компилятора при изначально заданной целевой функции. Комплекс включает в себя программы для взаимодействия непосредственно с компонентами компилятора и его оптимизационными проходами, а также ПО для интеграции с уже существующими библиотеками машинного обучения. С использованием разработанной инфраструктуры авторами реализовано два подхода для автонастройки компилятора: на основе генетического алгоритма и на основе обучения с подкреплением. Для тестирования подходов был сформирован набор открытых бенчмарков, состоящий из утилит с открытым исходным кодом, программ моделирования и уже существующих открытых бенчмарков. В ходе экспериментального сравнения подходов был получен и проанализирован выигрыш в размере бинарных файлов набора открытых бенчмарков без увеличения времени исполнения.
Оптимизирующий компилятор, генетический алгоритм, машинное обучение, gcc, обучение с подкреплением, характеризация функций, автонастройка компилятора
Короткий адрес: https://sciup.org/142241776
IDR: 142241776
Список литературы Разработка средства оптимизации встраиваемого по на базе автонастройки перестановкой оптимизационных проходов современного компилятора GCC
- Lattner C., Adve V. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation // Online. 2003. https://llvm.org/pubs/2003-09-30-LifelongOptimizationTR.pdf
- Ashouri A.H., Killian W., Cavazos J., Palermo G., Silvano C. A Survey on Compiler Autotuning using Machine Learning // Online. 2018. https://arxiv.org/abs/1801.04405
- Plotnikov D., Melnik D., Vardanyan M., Buchatskiy R., Zhuykov R., Lee J. A scalable auto-tuning framework for compiler optimization // Online. 2009. https://ieeexplore.ieee.org/document/5161054
- Fursin G., Miranda C., Temam O., Namolaru M., Yom-Tov E., Zaks A., Mendelson B., Barnard P., Ashton E., Courtois E., Courtois F., Bonilla E., Thomson J., Leather H., Williams C., O’Boyle M. MILEPOST GCC: machine learning based research compiler // International Journal of Parallel Programming. 2011. V. 39. P. 296–327.
- Cummins C., Wasti B., Guo J., Cui B., Ansel J., Gomez S., Jain S., Liu J., Teytaud O., Steiner B., Tian Y., Leather H. CompilerGym: Robust, Performant Compiler Optimization Environments for AI Research // Online. 2021. https://arxiv.org/abs/2109.08267
- CompilerGym library // Online. 2023. https://compilergym.com
- GCC GENERIC // Online. 2023. https://gcc.gnu.org/onlinedocs/gccint/GENERIC.html
- GCC GIMPLE // Online. 2023. https://gcc.gnu.org/onlinedocs/gccint/GIMPLE.html
- GCC RTL // Online. 2023. https://gcc.gnu.org/onlinedocs/gccint/RTL.html
- Multibenches // Online. 2023. https://github.com/mccs-group/multibenches
- Zavodskih R. K., Efanov N. N. Performance prediction for chosen types of loops over one-dimensional arrays with embedding-driven intermediate representations analysis // Computer research and modeling. 2023. V. 15, I. 1. P. 211–224.
- Cummins C., Fisches Z.V., Ben-Nun T., Hoefler T., Leather H. ProGraML: Graphbased Deep Learning for Program Optimization and Analysis // Online. 2018. https://arxiv.org/pdf/2003.10536.pdf
- VenkataKeerthy S., Aggarwal R., Jain S., Desarkar M. S., Upadrasta R., Srikant Y.N. IR2VEC: LLVM IR Based Scalable Program Embeddings // ACM Transactions on Architecture and Code Optimization. 2020. V. 17, I. 4, N 32. P. 1–27.
- Rastello F., Tichadou F.B. SSA-based compiler design // Online. 2022. https://pfalcon.github.io/ssabook/latest/book.pdf
- Gcc_pr environment // Online. 2023. https://github.com/mccs-group/gcc_pr_env
- Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы. Москва: горячая линия Телеком, 2006.
- Gcc-multienv environment // Online. 2023. https://github.com/mccs-group/gcc_multienv
- PyGAD – Python Genetic Algorithm! // Online. 2023. https://pygad.readthedocs.io/en/latest/
- Umbarkar A.J., Sheth P.D. Crossover Operators In Genetic Algorithms: A Review // International Journal of Computer Applications. 2017. V. 162, N 10. P. 34–36.
- Sutton R.S. Barto A.G. Reinforcement Learning: An Introduction. Cambridge MIT Press, 2018
- Liang E., Liaw R., Moritz P., Nishihara R., Fox R., Goldberg K., Gonzalez J.E., Jordan M.I., Stoica I. RLlib: Abstractions for Distributed Reinforcement Learning // Online. 2018. https://arxiv.org/pdf/1712.09381.pdf
- Huang Q., Haj-Ali A., Moses W., Xiang J., Stoica I., Asanovic K., Wawrzynek J. AutoPhase: Juggling HLS Phase Orderings in Random Forests with Deep Reinforcement Learning // Online. 2020. https://arxiv.org/abs/2003.00671
- Sui Y., Cheng X., Zhang G., Wang H. Flow2Vec: value-flow-based precise code embedding // Proceedings of the ACM on Programming Languages. V. 4, I. OOPSLA, N 233. P. 1–27.
- Eckart, C.; Young, G. The approximation of one matrix by another of lower rank // Psychometrika. 1. P. 211–218. Online. http://dx.doi.org/10.1007/BF02288367
- Pearson K. LIII. On lines and planes of closest fit to systems of points in space // Philosophical Magazine and Journal of Science. 1901. V. 2, I. 11. P. 559–572.
- Appel A.W. Modern Compiler Implementation in ML. Cambridge UK: Cambridge University Press, 1998.
- Mnih V., Badia A.P., Mirza M., Graves A., Lillicrap T.P., Harley T., Silver D., Kavukcuoglu K. Asynchronous Methods for Deep Reinforcement Learning // Proceedings of The 33rd International Conference on Machine Learning. 2016. V. 48. P. 1928–1937.
- Yang X., Chen Y., Eide E., Regehr J. Finding and understanding bugs in C compilers // ACM-SIGPLAN Symposium on Programming Language Design and Implementation. 2011. V. 46, I. 6. P. 283–294.