Computação Heterogénea de Alto Desempenho
0
2018-2019
02035039
Ciências da Computação
Português
Inglês
Presencial
6.0
Opcional
2º Ciclo - Mestrado
Conhecimentos de Base Recomendados
Programação de Computadores, Sistemas de Microprocessadores, Estruturas de Dados e Algoritmos, Arquiteturas de Computadores (conhecimentos sobre linguagens de programação, C/C++, arquiteturas de computadores.
Métodos de Ensino
Esta unidade curricular tem 4 horas de contacto semanais:
- aulas teóricas, suportadas por slides e estudo de capítulos de livros;
- aulas práticas laboratoriais, realizando e avaliando trabalhos com grau de dificuldade crescente, e esclarecendo dúvidas.
Resultados de Aprendizagem
A unidade curricular tem por objetivo principal a aquisição de conceitos básicos sobre o funcionamento de sistemas de computação heterogéneos de elevado desempenho, na perspetiva do programador e do projetista de sistemas de computação.
O(A) aluno(a) deve ficar apto(a) a programar de forma eficiente sistemas com múltiplos e heterogéneos processadores atuais, a dominar o particionamento da computação, as linguagens de programação adequadas, e ainda a tirar partido da flexibilidade de sistemas reconfiguráveis para produção de sistemas heterogéneos customizáveis. Desta forma, fica apto(a) a acompanhar e melhor explorar a evolução dos sistemas de computação para sistemas tendencialmente cada vez mais heterogéneos e com diferentes requisitos de desempenho.
No final, o(a) aluno(a) deverá ser capaz de conceber o sistema heterogéno mais conveniente e o algoritmo mais rápido e eficiente, que permita atingir os requisitos de tempo de processamento máximo especificados pela aplicação em causa.
Estágio(s)
NãoPrograma
M1: Introdução às arquiteturas do tipo multi-núcleo/multi-processador
-Organização e funcionamento de arquiteturas multi-processador do tipo CPU e GPU
-Análise de algoritmos paralelos: técnicas de decomposição e sincronização de problemas
-Programação de sistemas com múltiplos núcleos e processadores
-Utilização eficiente da hierarquia de memória
-Bibliotecas e diretivas OpenACC: computação heterogénea portável entre CPU e GPU
M2: Programação em multi-processadores do tipo GPU
-Linguagens CUDA e OpenCL
-Técnicas de optimização de desempenho: organização de estruturas de dados, sincronização, divergência, coalescência, balanceamento de carga e escalonamento
-Análise de desempenho
M3: Ambientes e ferramentas de programação de alto nível para geração de hardware heterogéneo
-Arquiteturas reconfiguráveis do tipo FPGA para sistemas multi-processador
-Síntese de alto nível: OpenCL como ferramenta geradora de hardware
-Computação heterogénea reconfigurável de alto desempenho.
Docente(s) responsável(eis)
Gabriel Falcão Paiva Fernandes
Métodos de Avaliação
Avaliação
Exame: 20.0%
Frequência: 20.0%
Trabalho laboratorial ou de campo: 60.0%
Bibliografia
1. Slides das aulas
2. URL: http://www.openacc.org/, NVIDIA, 2016.
3. David B. Kirk, Wen-mei W. Hwu. “Programming Massively Parallel Processors: A Hands-on Approach (Applications of GPU Computing Series)”, 1st Edition, ISBN-13: 978-0123814722, Morgan Kaufmann, February 2010.
4. David R. Kaeli, Perhaad Mistry, Dana Schaa and Dong Ping Zhang. “Heterogeneous Computing with OpenCL 2.0”, 3rd Edition, Morgan Kaufmann, ISBN: 9780128014141, May 2015.