Contacto WhatsApp 963640100

Universidade Lusófona

Técnicas de Computação Paralela

Curso

Engenharia Informática e Sistemas de Informação

Grau|Semestres|ECTS

Mestrado | Semestral | 7

Ano | Tipo de unidade curricular | Lingua

2 |Obrigatório |Português

Total de horas de Trabalho | Tempo de Contacto (horas)

196 | 30

Código

ULHT457-1-8852

Disciplinas complementares recomendadas

Não aplicável

Pré-requisitos e co-requisitos

Não aplicável

Precedências

Não

Estágio profissional

Não

Conteúdos Programáticos

1. Introdução
Motivações para o Paralelismo
Aplicações Científicas e Comerciais
2. Arquitecturas para Computação Paralela
Evolução e Limitações das Arquitecturas
Modelos de Computadores Paralelos
Modelo de Programação Paralela
Computação, Controle e Comunicação
Estrutura Física das Plataformas
Processamento vs. Comunicação
3. Desenho de Algoritmos Paralelos
Introdução
Técnicas de Decomposição e Aglomeração
Mapeamento e Balanceamento de Carga
Comunicação Inter Tarefas
Minimização de interacções
Modelos de Algoritmos Paralelos
4. Modelos e Plataformas de Programação Paralela
Programação em Memória Partilhada: Modelo de Threads
Programação baseada em directivas (OpenMP, Fork/Join, Streams)
Programação de GPUs: OpenCL
Programação por Mensagens: MPI

Objetivos

O objectivo desta Unidade Curricular é o de apresentar os princípios fundamentais da Computação Paralela e das tecnologias utilizadas no desenvolvimento e optimização de aplicações paralelas que permitem a sua operacionalização nas plataformas de suporte hardware e software mais actuais.
No final da cadeira, os alunos deverão:
¿ Utilizar as técnicas de programação paralela e as respectivas plataformas de execução para desenvolver sistemas e aplicações capazes de tirar partido da evolução recente do hardware (multicore, GPUs);
¿ Compreender os conceitos fundamentais da computação paralela
¿ Identificar a existência de tarefas independentes em algoritmos computacionais;
¿ Decompô-los em vários fluxos de execução paralela;
¿ Determinar o grau de paralelismo óptimo e prever os ganhos de desempenho.

Metodologias de ensino e avaliação

Os conceitos fundamentais de computação paralela são introduzidos através de metodologia expositiva, privilegiando de seguida a utilização de métodos exploratórios na análise de algoritmos paralelos e sua decomposição em fluxos de execução independentes. Finalmente é utilizada a auto-aprendizagem na realização de exemplos baseadas nos modelos de programação abordados, e avaliação crítica na sua análise de desempenho e optimização. A implementação é realizada em computadores configurados em rede independente, utilizando plataformas de computação paralela (OpenMP) ou de clustering (MPI). A aprendizagem tem igualmente uma forte componente de pesquisa individual realizada pelos alunos, complementada por apresentações dos temas abordados.
A avaliação é constituída por uma apresentação individual (40%) e um projecto de grupo de no máximo 2 alunos (60%). A aprovação na cadeira é obtida com uma nota mínima de 10 valores na média ponderada das duas componentes.

Bibliografia principal

"Parallel Programming for Multicore and Cluster Systems" (2nd Ed.), by Thomas Rauber & Gudula Rünger, 2013, Ed. Springer, ISBN-10: 3642378005

"Heterogeneous Computing with OpenCL" by Benedict R. Gaster, Lee Howes, David R. Kaeli, Perhaad Mistry & Dana Schaa, 2011, Ed. Morgan Kaufmann, ISBN-10 0123742609

¿Introduction to Parallel Computing (2nd Edition)¿, 2003, by Ananth Grama, George Karypis, Anshul Gupta, ed. Addison Wesley, ISBN-10: 0201648652

¿Introduction to Parallel Computing¿, by Blaise Barney (LLC), available on-line:
https://computing.llnl.gov/tutorials/parallel_comp