Cтатическая оценка производительности посредством эмбеддингов промежуточных представлений LLVM
Автор: Заводских Р.К., Ефанов Н.Н., Томашев Д.Д.
Журнал: Труды Московского физико-технического института @trudy-mipt
Рубрика: Информатика и управление
Статья в выпуске: 3 (55) т.14, 2022 года.
Бесплатный доступ
Рассматривается метод отображения программ в пространство векторов (эмбеддингов) для создания инструментария эмпирической оценки производительности программы на этапе компиляции без фактического исполнения. Предлагаемый метод основан на серии трансформаций исходного промежуточного представления (IR), таких как инструментирование искусственными инструкциями в компиляторном проходе, преобразование инструментированного IR в многомерный вектор с помощью технологии IR2Vec [1] с последующим понижением размерности по алгоритму t-SNE [2]. В качестве метрики производительности предлагается доля кэш-промахов первого уровня (D1 cache misses). Приводится эвристический критерий, по которому в двухмерном пространстве есть возможность отличить программы с большой долей промахов в кэше от программ с меньшей долей. Производится экспериментальная проверка критерия на синтетических тестах.
Математическое моделирование, компиляторы, промежуточные представления, эмбеддинги, анализ производительности, статический анализ
Короткий адрес: https://sciup.org/142236475
IDR: 142236475
Список литературы Cтатическая оценка производительности посредством эмбеддингов промежуточных представлений LLVM
- Venkata Keerthy S., Rohit Aggarwal, Shalini Jain, Maunendra Sankar Desarkar, Ramakrishna Upadrasta, Srikant Y.N. IR2VEC: LLVM IR Based Scalable Program Embeddings // ACM Transactions on Architecture and Code Optimization, V. 17. 4. ACM. New York. NY. USA. 2020. Article 32 (December 2020). 27 p.
- van der Maaten L., Hinton G. Visualizing Data using t-SNE // Journal of Machine Learning Research. 2008.
- Becker M.,Chakraborty S. Measuring Software Performance on Linux, Technical Report // Technical University of Munich. Munich. Germany, 2018.
- Linux kernel profiling with Perf // Online. 2022. https://perf.wiki.kernel.org/index.php/Tutorial.
- The LLVM Compiler Infrastructure Project // Online. 2022. https://llvm.org.
- Writing an LLVM Pass // Online. 2022. https://llvm.org/docs/WritingAnLLVMPass.html.
- Jain S., Andaluri Y., Venkata Keerthy S. and Upadrasta R. POSET-RL: Phase ordering for Optimizing Size and Execution Time using Reinforcement Learning // 2022 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS). 2022. P. 121-131.
- Cachegrind: a cache and branch-prediction profiler // Online. 2022. https://valgrind.org/docs/manual/cg-manual.html.
- eigen.tuxfamily.org Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms // Online. 2022. https://eigen.tuxfamily.org/index.php.
- McInnes L., Healy J., Saul N., Grossberger L. UMAP: Uniform Manifold Approximation and Projection // The Journal of Open Source Software 3(29):861 2018.