
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
Portuguê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
Disciplina de especialização que fornece competências na área de High Performance Computing, i.e. estudo das metodologias/técnicas que permitem explorar arquiteturas hardware com múltiplos processadores, de modo a diminuir os tempos de execução de programas com necessidade de recursos de computação elevados. O curso inclui uma vertente aplicada/experimental com atividade laboratorial.
Requisitos: conceitos básicos de arquitetura, redes e sistemas de operação.
Conhecimentos:
Arquiteturas de multiprocessadores
Técnicas de decomposição de problemas e padrões recorrentes de programação/execução paralelas
Linguagens, bibliotecas e ferramentas necessárias para as vários fases de desenvolvimento de um programa paralelo
Aptidões e competências:
Melhoria do desempenho de aplicações.
Utilização de ambientes de programação de multiprocessadores
Programação de multiprocessadores com C/C++, OpenMP, MPI e OpenCL/CUDA
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
Lectures are intended to support the instructor’s presentation of fundamental issues.
Laboratory sessions take place in a general-purpose laboratory with PC-based multi-core nodes for shared memory and distributed-memory programming. Access to machines with heterogeneous architectures (CPus and GPUs Nvidia) for shared memory programming.