Computação de Alto Desempenho

Objectivos

Saber:

  • Arquiteturas paralelas
  • Paradigmas de programação paralela
  • Metodologias gerais de desenho de algoritmos paralelos
  • Estratégias algorítmicas específicas para diversos tipos de problemas
  • Técnicas para otimizar o desempenho de algoritmos paralelos nas arquiteturas paralelas estudadas

Saber como:

  • Otimizar o desempenho de um programa sequencial
  • Implementar algoritmos paralelos para lidar com computações com grande complexidade e/ou que processam grandes quantidades de dados, executando em GPU(s) (com CUDA) e/ou em arquiteturas de memória distribuída (com Spark).
  • Medir e analisar o desempenho de uma computação paralela.

Soft-skills.

  • Raciocinar e avaliar criticamente as alternativas algorítmicas e tecnológicas disponíveis para resolver um problema.
  • Desenhar uma solução para um problema antes de entrar na fase de implementação.
  • Trabalho em equipa.
  • Estruturar e escrever um relatório de projeto.

Caracterização geral

Código

11165

Créditos

6.0

Professor responsável

Hervé Miguel Cordeiro Paulino, Pedro Abílio Duarte de Medeiros

Horas

Semanais - 4

Totais - 52

Idioma de ensino

Português

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 utilizadas a linguagem C/C++ e Java).

Bibliografia

Como é prática nos cursos de CAD não há um livro da disciplina. Existem vários livros que cobrem os conceitos fundamentais de CAD. Segue uma lista:

  • T Sterling, M Brodowicz, M Anderson. High Performance Computing - Modern Systems and Practices. Morgan Kaufmann, 2017. 
  • T Rauber and G Rünger. Parallel Programming for Multicore and Cluster Systems. Springer, 2013
  • P Pacheco.An Introduction to Parallel Programming.Morgan Kaufmann,2011
  • I Foster. Designing and Building Parallel Programs. Addison-Wesley, 1995, 

Computação em GPUs:

  • NVIDIA documentation
  • J Sanders, Edward Kandrot, CUDA by Example: An Introduction to General-Purpose GPU Programming, Addison-Wesley, 2010

Processamento de grandes quantidades de ddos

  • A Shook and D Miner. MapReduce Design Patterns. O’Reilly Media, 2012
  • High Performance Spark. O’Reilly Media, 2017

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) que permitem a execução dos exercícios sobre programação em memória partilhada. Para a programação de GPUs e de arquitecturas de memória distribuída, está acessível um cluster composto por várias máquinas equipadas com processadores multi-core e GPUs NVIDIA.

Todos os exercícios laboratoriais estão disponíveis a partir de um repositório GIT e incluem todas as dependências de software (exceto as linguagens de programação a utilizar). Estees também incluem testes automatizados para ajudar o aluno a avaliar a correção de suas implementações.

Método de avaliação

Elementos de avaliação

Dois testes ou exame (com peso de 60%) sem consulta.

Dois trabalhos práticos (com peso de 40%).

Frequência

Média dos trabalhos práticos  >=  8.

Cálculo da nota final

NT = média dos testes ou nota de exame

NP = média das notas dos trabalhos práticos

se NT < 8 então Nota final = NT

caso contrário, Nota final =  NT*0.6 + NP*0.4

Conteúdo

Motivação

  • Porquê computação paralela?
  • Porquê computação de alto desempenho?

Fundamentos de Computação Paralela

  • Arquiteturas Paralelas
  • Desempenho paralelo
  • Paradigmas de Programação Paralela
  • Desenho de Algoritmos Paralelos

Computação Paralela

  • Padrões e estratégias para a programação paralela
  • Processamento em memória partilhada
  • Computação em GPUs
  • Programação por troca de mensagens

Computação de alto desempenho centrada em dados

  • MapReduce
  • Apache Spark

Algoritmos Paralelos 

  • Algoritmos para processamento de gráficos
  • Algoritmos de aprendizagem automática

O futuro da computação de alto desempenho

  • Desafios na industria
  • Tópicos de pesquisa em aberto

Cursos

Cursos onde a unidade curricular é leccionada: