Ficha Unidade Curricular (FUC)

Informação Geral / General Information


Código :
03870
Acrónimo :
CompAv
Ciclo :
1.º ciclo
Língua(s) de Ensino :
Português (pt)
Língua(s) amigável(eis) :
Português

Carga Horária / Course Load


Semestre :
2
Créditos ECTS :
6.0
Aula Teórica (T) :
0.0h/sem
Aula Teórico-Prática (TP) :
18.0h/sem
Aula Prática e Laboratorial (PL) :
18.0h/sem
Trabalho de Campo (TC) :
0.0h/sem
Seminario (S) :
0.0h/sem
Estágio (E) :
0.0h/sem
Orientação Tutorial (OT) :
1.0h/sem
Outras (O) :
0.0h/sem
Horas de Contacto :
37.0h/sem
Trabalho Autónomo :
95.0
Horas de Trabalho Total :
132.0h/sem

Área científica / Scientific area


Arquitectura de Computadores e Sistemas Operativos

Departamento / Department


Departamento de Ciências e Tecnologias da Informação

Ano letivo / Execution Year


2026/2027

Pré-requisitos / Pre-Requisites


A unidade curricular não tem pré-requisitos formais. São recomendados conhecimentos prévios de arquitetura de computadores, redes, e programação em linguagem C.

Objetivos Gerais / Objectives


A unidade curricular tem como objetivo introduzir os conceitos fundamentais da Computação Avançada e High Performance Computing (HPC), abordando arquiteturas paralelas, algoritmos paralelos e modelos de programação para sistemas de memória partilhada e distribuída. Os estudantes desenvolvem competências na conceção, implementação e análise de aplicações paralelas utilizando OpenMP, MPI e CUDA, explorando técnicas de paralelização, comunicação, sincronização, modelação de desempenho e escalabilidade em sistemas multicore, clusters e aceleradores GPU.

Objetivos de Aprendizagem e a sua compatibilidade com o método de ensino (conhecimentos, aptidões e competências a desenvolver pelos estudantes) / Learning outcomes


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.

Conteúdos Programáticos / Syllabus


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.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da UC / Evidence that the curricular unit's content dovetails with the specified learning outcomes


O conteúdo programático CP1 fornece uma descrição global da UC, apresentando os vários OA e a sua relação com os CP. Em conjunto com o CP2, irá fornecer os conceitos principais que suportam o objectivo OA1. O objectivo de aprendizagem OA2 é suportado pelos conceitos e técnicas discutidas ao nível dos conteúdo CP3. Os conteúdos de aprendizagem CP4 a CP6 fornecem as competências necessárias para suportar simultaneamente os objectivos de aprendizagem OA3 e OA4. Finalmente, o objectivo de aprendizagem OA5 é suportado pelo conteúdos de aprendizagem CP7.

Avaliação / Assessment


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.

Metodologias de Ensino / Teaching methodologies


A unidade curricular está estruturada ao longo de 12 semanas lectivas, com 2 aulas distintas semanais: + 1 aula teórica, essencialmente expositiva, onde se apresentam os conceitos e técnicas dos conteúdos programáticos; + 1 aula prática / laboratório, de carácter idealmente interactivo, onde os os alunos resolvem um conjunto de problemas associados aos conteúdos explorados nessa semana, ou implementam nos seus computadores pequenos programas que irão ilustrar os conceitos analisados. Os alunos deverão trazer o seu próprio computador portátil para as sessões laboratoriais. Adicionalmente é esperado do aluno um tempo de trabalho autónomo semanal de 3 a 5 horas para consulta da bibliografia e revisão da matéria, resolução de exercícios e preparação dos laboratórios, sendo encorajada a colaboração entre os vários estudantes.

Demonstração da coerência das metodologias de ensino e avaliação com os objetivos de aprendizagem da UC / Evidence that the teaching and assessment methodologies are appropriate for the learning outcomes


A metodologia de ensino segue o modelo tradicional de ensino destas temáticas, estruturado em aulas teóricas e aulas práticas/laboratoriais, tal como descrito na secção relevante. Este modelo, associado à estruturação dos conteúdos programáticos, permite ao aluno adquirir progressivamente as competências necessárias para cada objectivo de aprendizagem, e estabelecer a relação entre eles. Os procedimentos de avaliação estão estruturados de forma análoga, incidindo progressivamente nos conteúdos programáticos leccionados e, em simultâneo, na demonstração das competências dos objectivos de aprendizagem associados através da avaliação resposta a problemas e da implementação de projectos no âmbito da UC. Em particular, no modalidade de avaliação ao longo do semestre: 1. O 1.º teste incidirá nos conteúdos programáticos CP1 a CP4, o 2.º teste nos conteúdos CP5 a CP7; 2. Os 2 trabalhos de irão incidir nos conteúdos programáticos CP4 a CP7. Na modalidade de avaliação por exame final, o exame incide na totalidade dos conteúdos programáticos.

Observações / Observations


Bibliografia Principal / Main Bibliography


Todos os conteúdos apresentados nas aulas estão disponíveis no sistema de e-learning do ISCTE-IUL.

Bibliografia Secundária / Secondary Bibliography


- 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)

Data da última atualização / Last Update Date


2026-07-23