Computação Heterogénea de Alto Desempenho

Ano
5
Ano lectivo
2019-2020
Código
02035039
Área Científica
Ciências da Computação
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 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ã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: 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.