Autotuning LLVM Optimization Passes for Matrix Multiplication in Rust
Resumo
O framework de compiladores LLVM transforma sua Representação Intermediária (IR) para otimizar código. Essas transformações são controladas por passes que interferem nas métricas, como o tempo de execução. A seleção de passes para melhorar o tempo de execução de um programa é difícil e requer conhecimento especializado. Os métodos de autotuning podem automatizar partes desse processo e ajudar a entender os espaços de busca subjacentes. Este artigo descreve o trabalho em andamento, mostrando que os passes do LLVM podem afetar o tempo de execução de um algoritmo de multiplicação de matrizes em Rust e planeja futuros experimentos de autotuning para seleção de passes.
Referências
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.