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

Português

Objectivos

Saber:

  • Arquiteturas de multiprocessadores
  • 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 OpenCL


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 na programação em C/C++ e Java.

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. OpenCL/CUDA.
  4. Programação de clusters. MPI. Exemplos de aplicação.
  5. Programação paralela estruturada -- abstracções e modelos estruturados para a programação paralela, e linguagens, bibliotecas e ferramentas que os suportam.

Bibliografia

Principal:

  • B. Wilkinson, M. Allen, “Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers (2nd Edition)”, Prentice-Hall 2004


Complementar:

  • P. Pacheco, " An Introduction to Parallel Programming", Morgan Kauffman, 2011
  • G. Hager, G. Wellein, “Introduction to High Performance Computing for Engineers and Scientists”, CRC Press, 2011
  • B. Gaster, L. Howes, D. Kaeli and P. Mistry, "Heterogeneous Computing with OpenCL", Morgan Kauffman, 2011

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. Um cluster dedicado é também utilizado na disciplina, permitindo o acesso a ferramentas de gestão e monitorização que não estão disponíveis no laboratório de uso geral.

Cursos