Estudo preliminar de métricas de produtividade e portabilidade para linguagens de programação paralela
Resumo
A variedade de linguagens de programação paralela impõe o desafio de escolher uma linguagem apropriada para cada plataforma alvo. Utilizando métricas clássicas e recentes, este estudo preliminar compara linguagens de programação paralela com relação à produtividade de programação e à portabilidade efetiva do código. Utilizamos três versões paralelas do Jogo da Vida escritas em OpenMP, CUDA e Kokkos. Resulta que OpenMP e Kokkos requerem menor esforço de codificação do que CUDA, que OpenMP é a melhor escolha para execução na CPU e Kokkos é a melhor escolha para a GPGPU.Referências
Conway, J. (1970). Game of life. Scientific American, 223:120–123.
Edwards, H. C., Trott, C. R., and Sunderland, D. (2014). Kokkos: Enabling manycore performance portability through polymorphic memory access patterns. Journal of Parallel and Distributed Computing, 74(12):3202–3216.
Funk, A., Basili, V., Hochstein, L., and Kepner, J. (2005). Application of a development time productivity metric to parallel software development. Proceedings of the second international workshop on Software engineering for high performance computing system applications - SE-HPCS 05.
Hochstein, L., Carver, J., Shull, F., Asgari, S., Basili, V., Hollingsworth, J., and Zelkowitz, M. (2005). Parallel programmer productivity: A case study of novice parallel programmers. International Conference for High Performance Computing, Networking and Storage (SC’05).
Memeti, S., Li, L., Pllana, S., Kolodziej, J., and Kessler, C. (2017). Benchmarking OpenCL, OpenACC, OpenMP, and CUDA: Programming productivity, performance, and energy consumption. Proceedings of the 2017 Workshop on Adaptive Resource Management and Scheduling for Cloud Computing – ARMS-CC 17.
Pennycook, S., Sewall, J., and Lee, V. (2017). Implications of a metric for performance portability. Future Generation Computer Systems.
SDumont. Sistema brasileiro de computação petaflópica. http://www.sdumont. lncc.br/machine.php. Acesso: 30-01-2018.
Edwards, H. C., Trott, C. R., and Sunderland, D. (2014). Kokkos: Enabling manycore performance portability through polymorphic memory access patterns. Journal of Parallel and Distributed Computing, 74(12):3202–3216.
Funk, A., Basili, V., Hochstein, L., and Kepner, J. (2005). Application of a development time productivity metric to parallel software development. Proceedings of the second international workshop on Software engineering for high performance computing system applications - SE-HPCS 05.
Hochstein, L., Carver, J., Shull, F., Asgari, S., Basili, V., Hollingsworth, J., and Zelkowitz, M. (2005). Parallel programmer productivity: A case study of novice parallel programmers. International Conference for High Performance Computing, Networking and Storage (SC’05).
Memeti, S., Li, L., Pllana, S., Kolodziej, J., and Kessler, C. (2017). Benchmarking OpenCL, OpenACC, OpenMP, and CUDA: Programming productivity, performance, and energy consumption. Proceedings of the 2017 Workshop on Adaptive Resource Management and Scheduling for Cloud Computing – ARMS-CC 17.
Pennycook, S., Sewall, J., and Lee, V. (2017). Implications of a metric for performance portability. Future Generation Computer Systems.
SDumont. Sistema brasileiro de computação petaflópica. http://www.sdumont. lncc.br/machine.php. Acesso: 30-01-2018.
Publicado
13/04/2018
Como Citar
DANIEL, Daniela F. S.; PANETTA, Jairo.
Estudo preliminar de métricas de produtividade e portabilidade para linguagens de programação paralela. In: ESCOLA REGIONAL DE ALTO DESEMPENHO DE SÃO PAULO (ERAD-SP), 9. , 2018, São José dos Campos.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2018
.
p. 29-32.
DOI: https://doi.org/10.5753/eradsp.2018.13595.