Geração Automática de Estênceis Otimizados para GPUs

  • Alyson D. Pereira UFSC
  • Rodrigo C. O. Rocha University of Edinburgh
  • Márcio Castro UFSC
  • Luís F. W. Góes PUC Minas

Resumo


Neste artigo propomos uma ferramenta que utiliza uma análise estática para detectar computações estêncil em laços aninhados em um códigos C/C++ e um gerador de código que, baseado nas informações do padrão de vizinhança da computação estêncil, gera um código CUDA otimizado. Para validar a nossa ferramenta, analisamos um conjunto de códigos presentes no benchmark Polybench, o qual contem códigos dos domínios de estatística, algebra linear e estêncil. Os resultados mostraram que a análise estática foi capaz de detectar corretamente o padrão estêncil. Além disso, o código gerado pela ferramenta proposta apresentou desempenho de até 2.25x ao código gerado automaticamente por um compilador referência no estado da arte.

Referências

Bachmann, O., Wang, P. S., and Zima, E. V. (1994). Chains of recurrences: a method In Int. Symp. on Symbolic and to expedite the evaluation of closed-form functions. Algebraic Computation, pages 242–249.

Bernstein, A. J. (1966). Analysis of programs for parallel processing. IEEE Transactions on Electronic Computers, EC-15(5):757–763.

Christen, M., Schenk, O., and Cui, Y. (2012). PATUS for convenient high-performance In Int. Conf. on High Performance stencils: Evaluation in earthquake simulations. Computing, Networking, Storage and Analysis (SC), pages 11:1–11:10.

Cytron, R., Ferrante, J., Rosen, B. K., Wegman, M. N., and Zadeck, F. K. (1991). Efciently computing static single assignment form and the control dependence graph. ACM Trans. Program. Lang. Syst., 13(4):451–490.

Holewinski, J., Pouchet, L.-N., and Sadayappan, P. (2012). High-performance code generation for stencil computations on GPU architectures. In ACM Int. Conf. on Supercomputing (ICS), pages 311–320.

Khan, M., Basu, P., Rudy, G., Hall, M., Chen, C., and Chame, J. (2013). A script-based autotuning compiler system to generate high-performance CUDA code. ACM Trans. Archit. Code Optim., 9(4):31:1–31:25.

Lattner, C. and Adve, V. (2004). LLVM: A compilation framework for lifelong program analysis & transformation. In Int. Symp. on Code Generation and Optimization.

Maruyama, N. and Aoki, T. (2014). Optimizing stencil computations for NVIDIA Kepler GPUs. In Int. Workshop on High-Performance Stencil Computations, pages 89–95.

Mendonca, G. S. D., Guimaraes, B. C. F., Alves, P. R. O., Pereira, M. M., Araujo, G., and Pereira, F. M. Q. (2017). Dawncc: Automatic annotation for data parallelism and ofoading. ACM Trans. Archit. Code Optim., 14:13:1–13:25.

Meng, J. and Skadron, K. (2011). A performance study for iterative stencil loops on GPUs with ghost zone optimizations. Int. Journal of Parallel Programming, 39(1):115–142.

Nasciutti, T. C. and Panetta, J. (2016). Impacto da arquitetura de memória de gpgpus na velocidade da computação de estênceis. In XVII Simpósio em Sistemas Computacionais de Alto Desempenho (WSCAD-SSC), pages 1–12.

Nugteren, C. and Corporaal, H. (2014). Bones: An automatic skeleton-based c-to-cuda compiler for gpus. ACM Trans. Archit. Code Optim., 11(4):35:1–35:25.

Pereira, A. D., Castro, M., Dantas, M. A. R., Rocha, R. C. O., and Góes, L. F. W. (2017). Extending OpenACC for efcient stencil code generation and execution by skeleton frameworks. In Int. Conf. on High Perf. Comp. Simulation (HPCS), pages 719–726.

Pereira, A. D., Ramos, L., and Góes, L. F. W. (2015). PSkel: A stencil programming framework for CPU-GPU systems. Concur. and Comp.: Practice and Experience, 27(17):4938–4953.

Verdoolaege, S., Carlos Juega, J., Cohen, A., Ignacio Gómez, J., Tenllado, C., and Catthoor, F. (2013). Polyhedral parallel code generation for CUDA. ACM Trans. Archit. Code Optim., 9(4):54:1–54:23.


Publicado
17/10/2017
D. PEREIRA, Alyson; C. O. ROCHA, Rodrigo; CASTRO, Márcio; F. W. GÓES, Luís. Geração Automática de Estênceis Otimizados para GPUs. In: SIMPÓSIO EM SISTEMAS COMPUTACIONAIS DE ALTO DESEMPENHO (SSCAD), 18. , 2017, Campinas. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2017 . p. 64-75. DOI: https://doi.org/10.5753/wscad.2017.239.