Currículo
Computação Avançada CompAv
Contextos
Groupo: Escola de Tecnologias e Arquitetura > Optativas > Departamento de Ciências e Tecnologias da Informação > 1º Ciclo
Groupo: Escola de Tecnologias e Arquitetura > Optativas > Departamento de Ciências e Tecnologias da Informação > 1º Ciclo
ECTS
6.0 (para cálculo da média)
Objectivos
No final da cadeira, o aluno deverá ser capaz de: OA1 - Identificar e comparar arquiteturas paralelas, modelos de memória e paradigmas de programação adequados a diferentes problemas computacionais; OA2 - Decompor e mapear problemas em tarefas paralelas, considerando dependências, granularidade, balanceamento de carga, comunicação e sincronização; OA3 - Selecionar e aplicar estratégias de paralelização adequadas às características do algoritmo e da arquitetura computacional; OA4 - Desenvolver aplicações paralelas para sistemas de memória partilhada, distribuída e aceleradores GPU, utilizando OpenMP, MPI e CUDA; OA5 - Analisar e otimizar a correção e o desempenho de programas paralelos, recorrendo a métricas de desempenho, modelos de performance e princípios de escalabilidade.
Programa
CP1 - Introdução à Computação de Alto Desempenho: evolução, aplicações, sistemas computacionais e principais desafios; CP2 - Arquiteturas paralelas: modelos SIMD e MIMD, memória partilhada e distribuída e redes de interligação; CP3 - Algoritmos paralelos: decomposição em tarefas e dados, dependências, granularidade, concorrência, caminho crítico, mapeamento e balanceamento de carga; CP4 - Programação em memória partilhada com OpenMP: regiões paralelas, partilha de trabalho, tarefas, sincronização, gestão de dados e escalonamento; CP5 - Programação em memória distribuída com MPI: comunicação ponto a ponto e coletiva, comunicadores, tipos de dados e decomposição de domínio; CP6 - Computação em aceleradores GPU com CUDA: modelo de execução, organização de threads, hierarquia de memória, kernels e otimização; CP7 - Análise de desempenho: speedup, eficiência, custo, overhead, modelos Roofline e latência-largura de banda, escalabilidade forte e fraca, leis de Amdahl e Gustafson.
Método de Avaliação
A UC pode ser realizada através de 2 modalidades de avaliação: 1 - Avaliação ao longo do semestre A avaliação ao longo do semestre é composta por: + (80%) 2 testes: 1 teste realizado a meio do semestre, em data a definir, e um 2.º teste realizado na primeira data da época de exame; + (20%) 2 trabalhos realizados em grupos de 2 alunos, com datas de entrega a definir. A aprovação nesta modalidade de avaliação obriga à obtenção de uma nota mínima de 7,5 valores (em 20) em todos os testes e trabalhos. 2 - Avaliação por exame final A avaliação por exame final é composta por 1 único exame realizado em qualquer das épocas de exame disponíveis, que corresponderá a 100% da nota final.
Carga Horária
Carga Horária de Contacto -
Trabalho Autónomo - 95.0
Carga Total -
Bibliografia
Principal
- Todos os conteúdos apresentados nas aulas estão disponíveis no sistema de e-learning do ISCTE-IUL.:
Secundária
- - Introduction to Parallel Computing. W.P Petersen, and P. Arbenz. Oxford Press (2004) - CUDA by example: An introduction to General-Purpose GPU programming. J. Sanders, E. Kanbrot. Addison-Wesley (2011) - Introduction to Parallel Computing. A. Grama, A. Kupta, G. Karypis, V. Kumar. Addison Wesley (2003):