Professor: Matheus Serpa (UFRGS)
Horarios: Quinta 21/01 de 08:00h às 12:00h
Objetivo: Para se ganhar desempenho nas arquiteturas modernas, são necessários conhecimentos sobre programação paralela e vetorial. Ambos paradigmas são tratados de forma lateral em cursos de computação, sendo que muitas vezes nem são abordados. Nesse contexto, este minicurso objetiva propiciar um maior entendimento sobre os paradigmas de programação paralela e vetorial, de forma que os participantes aprendam a otimizar adequadamente suas aplicações para arquiteturas modernas. Como plataforma experimental, será utilizado o processador Intel Xeon do SDumont. Será enfatizada a importância do processamento vetorial e de matrizes, presente em várias aplicações, tais como de petróleo e na área de previsões climáticas.
Ementa:
- Programação com OpenMP
- Programação Vetorial com diretivas
- Programação Vetorial com Intrinsics AVX
- Estudo de caso com aplicações reais
- Avaliação de desempenho com contadores de Hardware
Pré-requisitos:
- Conhecimentos básicos em C
- Conhecimentos básicos em Linux
Bibliografia:
- SERPA, Matheus; NAVAUX, Philippe; PANETTA, Jairo. Programação com Aceleradores Vetoriais, 2019. http://wscad.sbc.org.br/2020/artigos/minicursos/minicurso1-Prog-Vetorial-texto.pdf
- SERPA, Matheus; SCHEPKE, Claudio. Programação Paralela em Memória Compartilhada e Avaliação de Desempenho com Contadores de Hardware, 2020. https://doi.org/10.5753/sbc.4400.9.3
- CHAPMAN, Barbara; JOST, Gabriele; VAN DER PAS, Ruud. Using OpenMP: portable shared memory parallel programming. MIT press, 2008.
- OPENMP, A. R. B. Openmp application program interface v5.0.1. OpenMP Architecture Review Board, 2020. http://openmp.org/