Burocracias¶
Horários
Aulas:
Segunda -> 16h30 -- 18h30
Sexta -> 14h15 -- 16h15
Atendimento -> Início 27/02/26
Sexta -> 12:30 às 14:00
Objetivos de Aprendizagem
Ao final da disciplina, o estudante será capaz de:
Obj 1. Desenvolver algoritmos usando recursos de computação paralela e distribuída para obter ganhos de desempenho na aplicação final.
Obj 2. Aplicar estruturas lógicas de computação distribuída no desenvolvimento de algoritmos multitarefa.
Obj 3. Usar GPGPU (General-Purpose computing on Graphics Processing Units) para computação numérica e comparar seu desempenho com soluções baseadas em CPU.
Obj 4. Planejar e projetar sistemas de computação de alto desempenho, considerando aspectos de hardware, escalabilidade, e alocação de recursos.
Obj 5. Analisar a complexidade de algoritmos paralelos e a eficiência de implementações específicas, identificando as métricas de desempenho mais adequadas para essa análise.
Obj 6. Aplicar recursos específicos de sistemas operacionais (como escalonadores, controle de threads e gerenciamento de memória) para melhorar o desempenho de algoritmos.
Obj 7. Desenvolver aplicações que utilizam protocolos otimizados para paralelização, como MPI, OpenMP e CUDA.
Plano de Aulas - Supercomputação (2026.1)
| Data | Aula | Tópicos Abordados | Atividades |
|---|---|---|---|
| 09/fev (seg) | 01 | Introdução à disciplina; conceitos de HPC; plataforma de HPC; acesso remoto (SSH); políticas de uso do Cluster Franky | Criação de conta no cluster; configuração do ambiente; primeiro código em C++; uso da IDE |
| 13/fev (sex) | 02 | Sistemas de HPC; arquitetura de clusters; rede e hardware; filas e jobs; SLURM; clusters no Brasil e no mundo | Atividade prática com SLURM no Cluster Franky; submissão de jobs via SLURM |
| 20/fev (sex) | 03 | C++ para HPC: vetores; gerenciamento de memória; STL; alocação dinâmica; acesso cache-friendly | Exercícios de fixação em C++; análise de desempenho |
| 23/fev (seg) | 04 | C++ para HPC: matrizes; layout de memória (row-major); acesso sequencial vs aleatório; custo computacional | Exercícios de fixação; comparação de padrões de acesso à memória |
| 27/fev (sex) | 05 | Otimizações em CPU; hierarquia de memória; caches; prefetching; localidade temporal e espacial; loop unrolling | Exercícios de otimização em CPU; medição de desempenho |
| 02/mar (seg) | 06 | Estratégias e algoritmos de otimização; BLAS; Roofline Model; limites computacionais vs memória | Exercícios de fixação; análise comparativa de desempenho e relatório técnico |
| 06/mar (sex) | 07 | Algoritmos avançados de otimização; algoritmo de Strassen; matrizes esparsas; estruturas CSR e CSC | Exercícios de fixação; análise de custo computacional |
| 09/mar (seg) | 08 | Concorrência e paralelismo; modelo fork-join; speedup; eficiência; Leis de Amdahl e Gustafson | Exercícios de paralelização; análise de escalabilidade |
| 13/mar (sex) | 09 | Otimizações de memória em estratégias paralelas; false sharing; alinhamento; afinidade de memória | Exercícios de fixação; comparação de desempenho antes e depois da otimização |
| 16/mar (seg) | 10 | Gerenciamento de threads; thread pools; sincronização; barreiras; mutexes | Exercícios de fixação; implementação correta sem condições de corrida |
| 20/mar (sex) | 11 | Aula Estúdio: resolução orientada de problemas reais em HPC | Desenvolvimento incremental da APS 1; acompanhamento em sala |
| 23/mar (seg) | 12 | Aula Estúdio: continuação da APS 1 | Desenvolvimento incremental da APS 1 |
| 27/mar (sex) | 13 | Avaliação Intermediária | Avaliação prática e teórica |
| 30/mar (seg) | 14 | Avaliação Intermediária | Avaliação prática e teórica |
| 06/abr (seg) | 15 | Paralelismo com OpenMP; compartilhamento entre threads; efeitos do scheduler; escalonamento estático e dinâmico | Exercícios de fixação com OpenMP |
| 10/abr (sex) | 16 | Efeitos colaterais do paralelismo; race conditions; dependências de dados; recursão | Exercícios de fixação; correção de erros concorrentes |
| 13/abr (seg) | 17 | Memória distribuída; MPI ponto a ponto; Send/Recv; latência e topologias de comunicação | Exercícios de fixação; implementação MPI no cluster |
| 17/abr (sex) | 18 | MPI comunicação coletiva; Broadcast; Scatter; Gather; Reduce | Exercícios de fixação; análise de eficiência de comunicação |
| 24/abr (sex) | 19 | Grupos e comunicadores; programação híbrida MPI + OpenMP | Exercícios de fixação; implementação híbrida |
| 27/abr (seg) | 20 | Introdução à programação paralela em GPU; arquitetura de GPUs; modelo SIMT; hierarquia de memória | Exercícios de fixação; primeiro código CUDA |
| 04/mai (seg) | 21 | Programação em CUDA; kernels; grids e blocks; memória global e compartilhada | Exercícios de fixação; implementação de kernels |
| 08/mai (sex) | 22 | CUDA avançado: stencil, tiling e agendamento de threads | Exercícios de fixação; comparação entre versões otimizadas |
| 11/mai (seg) | 23 | Redução e scan em CUDA; algoritmos paralelos clássicos; uso de memória compartilhada | Exercícios de fixação; medição de speedup |
| 15/mai (sex) | 24 | Matrizes esparsas em GPU; SpMV; computação assíncrona; streams; sobreposição comunicação–cálculo | Exercícios de fixação; análise de desempenho |
| 18/mai (seg) | 25 | Código síncrono vs assíncrono em CUDA; streams; eventos; latência e throughput | Exercícios de fixação; comparação quantitativa entre abordagens |
| 22/mai (sex) | 26 | Revisão geral do conteúdo; exercícios preparatórios para Avaliação Final | Lista de exercícios preparatórios |
| 25/mai (seg) | 27 | Simulado da Avaliação Final | Resolução comentada do simulado |
| 29/mai (sex) | 28 | Avaliação Final | Avaliação Final |
| 01/jun (seg) | 29 | Avaliação Final | Avaliação Final |
Atividades (Individual) 15%
| Percentual de Atividades | Conceito |
|---|---|
| 50% | C |
| 70% | B |
| 90% | A |
| 100% | A + |
APS 1 10%
Em construção
APS 2 20%
Em construção