Towards Just-In-Time Software Approximations

  • Lucas Reis UNICAMP
  • Lucas Wanner UNICAMP
  • Sandro Rigo UNICAMP

Resumo


Aproximações em nível de software, como a perforação de laços, substituição de funções e memoização podem melhorar o desempenho e consumo energético de uma aplicação de forma significativa em tempo de compilação. Entretanto, aproximadores a nível de compilação muitas vezes exigem intensa intervenção do usuário e pecam na capacidade de adaptação em tempo real. Esse trabalho apresenta RAAS, um framework que integra recompilação just-in-time com um sistema de avaliação automática para criar um ambiente de aproximação em nível de software de propósito geral que requer intervenção mínima do usuário. Nosso framework pode aplicar aproximações adaptáveis a diferentes entradas sem necessitar de uma fase de testes ao monitorar continuiamente o desempenho da aplicação alvo e recompilando trechos do código. Avaliamos o framework com um conjunto de benchmarks resilientes a aproximação, também comparando seu desempenho com um framework similar focado aproximações por compilação estática. Nossos testes demonstram speedups de até 6.3x com redução de qualidade limitado a 30%, alcançando resultados competitivos à compilação estática com reduzido tempo de convergência.

Referências

Ansel, J., Chan, C., Wong, Y. L., Olszewski, M., Zhao, Q., Edelman, A., and Amarasinghe, S. (2009). Petabricks: A language and compiler for algorithmic choice. In PLDI.

Baek, W. and Chilimbi, T. M. (2010). Green: A framework for supporting energy-conscious programming using controlled approximation. In PLDI.

Bienia, C. (2011). Benchmarking Modern Multiprocessors. PhD thesis, Princeton University.

Gadioli, D., Vitali, E., Palermo, G., and Silvano, C. (2019). mARGOt: A dynamic autotuning framework for self-aware approximate computing. IEEE Transactions on Computers, 68:713–728.

Guthaus, M., Ringenberg, J., Ernst, D., Austin, T., Mudge, T., and Brown, R. (2001). Mibench: A free, commercially representative embedded benchmark suite. In IEEE WWC.

Hoffmann, H., Sidiroglou, S., Carbin, M., Misailovic, S., Agarwal, A., and Rinard, M. (2011). Dynamic knobs for responsive power-aware computing. SIGPLAN Not., 46(3):199–212.

Kemp, T., Yao, Y., and Kim, Y. (2021). Mipac: Dynamic input-aware accuracy control for dynamic auto-tuning of iterative approximate computing. In ASP-DAC.

Lachenmann, A., Marrón, P. J., Minder, D., and Rothermel, K. (2007). Meeting lifetime goals with energy levels. Proceedings of the 5th International Conference on Embedded Networked Sensor Systems.

Liu, J., Shih, W.-K., Lin, K.-J., Bettati, R., and Chung, J.-Y. (1994). Imprecise computations. Proceedings of the IEEE.

Mitra, S., Gupta, M. K., Misailovic, S., and Bagchi, S. (2017). Phase-aware optimization in approximate computing. In CGO.

Parasyris, K., Georgakoudis, G., Menon, H., Diffenderfer, J., Laguna, I., Osei-Kuffuor, D., and Schordan, M. (2021). HPAC: evaluating approximate computing techniques on hpc openmp applications. In SC.

Pervaiz, A., Yang, Y. H., Duracz, A., Bartha, F., Sai, R., Imes, C., Cartwright, R., Palem, K., Lu, S., and Hoffmann, H. (2022). Goal: Supporting general and dynamic adaptation in computing systems. In Onward.

Poya, R. (2017). Fast approx library. [link].

Reis, L. and Wanner, L. (2021). Functional approximation and approximate parallelization with the accept compiler. In SBAC-PAD.

Rinard, M. (2013). Parallel synchronization-free approximate data structure construction. In USENIX Wksp. on Hot Topics in Parallelism.

Sampson, A., Baixo, A., Ransford, B., Moreau, T., Yip, J., Ceze, L., and Oskin, M. (2015). Accept: A programmer-guided compiler framework for practical approximate computing. U. Washington UW-CSE-15-01.

Sampson, A., Dietl, W., Fortuna, E., Gnanapragasam, D., Ceze, L., and Grossman, D. (2011). Enerj: Approximate data types for safe and general low-power computation. SIGPLAN Not., 46(6).

Sharif, H., Zhao, Y., Kotsifakou, M., Kothari, A., Schreiber, B., Wang, E., Sarita, Y., Zhao, N., Joshi, K., Adve, V. S., Misailovic, S., and Adve, S. (2021). Approxtuner: a compiler and runtime system for adaptive approximations. In PPoPP ’21, page 262–277.

Sidiroglou-Douskos, S., Misailovic, S., Hoffmann, H., and Rinard, M. (2011). Managing performance vs. accuracy trade-offs with loop perforation. In ACM ESEC/FSE, page 124–134.
Publicado
23/10/2024
REIS, Lucas; WANNER, Lucas; RIGO, Sandro. Towards Just-In-Time Software Approximations. In: SIMPÓSIO EM SISTEMAS COMPUTACIONAIS DE ALTO DESEMPENHO (SSCAD), 25. , 2024, São Carlos/SP. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2024 . p. 360-371. DOI: https://doi.org/10.5753/sscad.2024.244522.