Computação Heterogénea de Alto Desempenho

Ano
2
Ano lectivo
2022-2023
Código
02035039
Área Científica
Computadores
Língua de Ensino
Português
Outras Línguas de Ensino
Inglês
Modo de Ensino
Presencial
Duração
Semestral
Créditos ECTS
6.0
Tipo
Obrigatória
Nível
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 tendecialmente 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ão

Programa

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: 25.0%
Frequência: 25.0%
Trabalho laboratorial ou de campo: 50.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.