
Computação de Alto Desempenho
Código
11165
Unidade Orgânica
Faculdade de Ciências e Tecnologia
Departamento
Departamento de Informática
Créditos
6.0
Professor responsável
Maria Cecília Farias Lorga Gomes, Pedro Abílio Duarte de Medeiros
Horas semanais
4
Total de horas
56
Língua de ensino
Inglês
Objectivos
Saber:
- Arquiteturas de multiprocessadores e arquiteturas heterogéneas (CPU e GPUs)
- Técnicas de decomposição de problemas
- Linguagens, bibliotecas e ferramentas necessárias para as vários fases de desenvolvimento de um programa paralelo
Saber Fazer:
- Otimização do desempenho de um programa sequencial
- Utilização de ferramentas de medida de desempenho de multiprocessadores e de clusters
- Programação de multiprocessadores usado C/C++, OpenMP, MPI e CUDA da NVIA
Soft-Skills:
- Raciocionar e avaliar criticamente as alternativas de solução e abordagens para a resolução de problemas.
Pré-requisitos
Supõe-se que os estudantes conhecem conceitos básicos de arquitetura de computadores, redes de comunicação e sistemas de operação, e assume-se proficiência em programação (tem sido utilizada a linguagem C ou C++).
Conteúdo
- Computação de alto desempenho: hardware, software, aplicações e indicadores de desempenho.
- Programação de multiprocessadores de memória partilhada. OpenMP. Exemplos de aplicação.
- Computação usando GPUs. CUDA da Nvidia.
- Programação de clusters. MPI. Exemplos de aplicação.
- Programação paralela estruturada -- exemplos de padrões paralelos.
Bibliografia
Principal:
- P. Pacheco, " An Introduction to Parallel Programming", Morgan Kauffman, 2011
Bibliografia adicional:
- Norm Matloff, "Programming on Parallel Machines: GPU, Multicore, Clusters and More", University of California, Davis,
Método de ensino
As aulas teóricas têm por objectivo a apresentação dos principais temas e discutir as questões mais relevantes. As sessões laboratoriais têm lugar num laboratório de uso geral com acesso a PCs (que são multi-core) quer para a programação de memória partilhada quer para a de memória distribuída. Estão também acessíveis máquinas com arquitecturas heterogéneas (com CPU e GPUs Nvidia) para a programação de modelos de memória partilhada.
Método de avaliação
Dois testes intermédios (com o peso total de 60% na nota final). Esta componente tem nota mínima de 8.5 valores.
Três projectos de programação (com o peso total de 40% na nota final)