Faculdade de Ciências e Tecnologia

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

  1. Computação de alto desempenho: hardware, software, aplicações e indicadores de desempenho.
  2. Programação de multiprocessadores de memória partilhada. OpenMP. Exemplos de aplicação.
  3. Computação usando GPUs. CUDA da Nvidia.
  4. Programação de clusters. MPI. Exemplos de aplicação.
  5. 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)

Cursos