Autotuning LLVM OptimizationPasses for Matrix Multiplication in Rust

Abstract


The LLVM compiler framework transforms its Intermediate Representation (IR) to optimize code. These transformations are controlled by flags which interfere on metrics such as the execution time. Selecting flags to improve the execution time of a program is difficult, and requires expert knowledge. Autotuning methods can automate parts of this process and help understanding the underlying search spaces. This paper describes ongoing work, showing that LLVM flags can impact the execution time of a Rust matrix multiplication algorithm, and planning future autotuning experiments for flag selection.

Keywords: Autotuning, LLVM, Rust, Optimization passes

References

Code and data on GitHub. https://github.com/emanuellima1/matrix-multiply-test.
Prasanna Balaprakash, Stefan M Wild, and Paul D Hovland. Can search algorithms save large-scale automatic performance tuning? Procedia Computer Science, 4:2136–2145, 2011.

Sergi Blanco-Cuaresma and Emeline Bolmont. What can the programming language Rust do for astrophysics? Proceedings of the International Astronomical Union, 12(S325):341–344, 2016.

Pedro Bruel, Marcos Amaris, and Alfredo Goldman. Autotuning CUDA compiler parameters for heterogeneous applications using the OpenTuner framework. Concurrency and Computation: Practice and Experience, 29(22):e3973, 2017

Pedro Bruel, Steven Quinito Masnada, Brice Videau, Arnaud Legrand, Jean-Marc Vin-cent, and Alfredo Goldman. Autotuning under tight budget constraints: A transparent design of experiments approach. In The 19th Annual IEEE/ACM International Symposium in Cluster, Cloud, and Grid Computing (CCGrid 2019). IEEE/ACM, 2019.

Chris Lattner and Vikram Adve. LLVM: A compilation framework for lifelong program analysis & transformation. In International Symposium on Code Generation and Optimization, 2004. CGO 2004., pages 75–86. IEEE, 2004.

Juneyoung Lee, Chung-Kil Hur, Ralf Jung, Zhengyang Liu, John Regehr, and Nuno PLopes. Reconciling high-level optimizations and low-level code in LLVM. Proceedings of the ACM on Programming Languages, 2(OOPSLA):1–28, 2018.

Amit Levy, Bradford Campbell, Branden Ghena, Pat Pannuto, Prabal Dutta, and Philip Levis. The case for writing a kernel in Rust. In Proceedings of the 8th Asia-PacificWorkshop on Systems, pages 1–7, 2017

Nicholas D Matsakis and Felix S Klock. The Rust language. ACM SIGAda Ada Letters,34(3):103–104, 2014.
Published
2020-08-19
DE SOUSA, Emanuel Lima; BRUEL, Pedro; GOLDMAN, Alfredo. Autotuning LLVM OptimizationPasses for Matrix Multiplication in Rust. In: REGIONAL SCHOOL OF HIGH PERFORMANCE COMPUTING FROM SÃO PAULO (ERAD-SP), 11. , 2020, Evento Online. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2020 . p. 34-37. DOI: https://doi.org/10.5753/eradsp.2020.16880.

Most read articles by the same author(s)

1 2 3 4 > >>