Programa

Computação em Sistemas Paralelos e Heterogéneos

Mestrado Bolonha em Engenharia Eletrotécnica e de Computadores

Mestrado Bolonha em Engenharia e Ciência de Dados

Programa

- Introdução à computação e arquiteturas paralelas: concepção dos sistemas paralelos, desafios para paralelização de código, métricas e modelos de desempenho e eficiência - Formas de paralelismo e subsistema de memória: multi-núcleos, SIMD, multi-tarefas, caches, latência e largura de banda - Modelos de programação paralela: implementações em HW/SW, espaço de memória partilhada, localidade e comunicação - Programação para arquiteturas paralelas massivas: paralelismo de dados, arquitetura GPU, modelos e abstrações de programação - Coerência e consistência de memória, primitivas de sincronização e transactional memory - Paralelismo heterogéneo, distribuição de carga, escalonamento e computação com eficiência energética - Análise, caracterização e otimização de aplicações paralelas - Tópicos emergentes em computação paralela e heterogénea: especialização em hardware, processamento com redes neuronais e near-memory computing

Sistemas de Computação de Elevado Desempenho

Minor em Computação de Elevado Desempenho

Programa

1. Análise, caracterização e modelação do desempenho de aplicações: a) Paralelismo de granularidade fina e grossa ao nível dos dados e das tarefas. b) Métricas de desempenho e eficiência. c) Modelos de desempenho e de consumo energético. 2. Hierarquia de memória, modelos de consistência e de memória transacional. 3. Técnicas para otimização de aplicações e maximização do seu desempenho em unidade central de processamento paralelo com múltiplos cores: a) Identificação e extracção de paralelismo. b) Exploração de instruções vectoriais. c) Otimização de aplicações ao nível da hierarquia de memória. d) Técnicas para processamento de grandes volumes de dados. 4. Introdução às arquitecturas de processamento massivo: a) Modelos de computação e de memória. b) Programação de sistemas de processamento massivo. c) Técnicas para otimização do desempenho de aplicações em diferentes aceleradores e coprocessadores, e.g., GPU e KNL. 5.Técnicas para exploração de sistemas de processamento heterogéneos: a) Distribuição e balanceamento do trabalho. b) Cooperação entre elementos de processamento. c) Contenção e interferência de aplicações em sistemas heterogéneos. 6.Técnicas para otimização do desempenho, consumo de potência e energia de aplicações de computação intensiva e com grandes volumes de dados.