Computação Paralela
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Programação |
Ocorrência: 2011/2012 - 2S 
Ciclos de Estudo/Cursos
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
1- ENQUADRAMENTO
A programação paralela e distribuída está a tornar-se o paradigma comum de programação dada a evolução do hardware para arquiteturas multicore e elementos massivamente paralelos como as GPUs. O computador pessoal atual é composto por vários processadores que coletivamente disponibilizam maior capacidade de processamento, do que os anteriores single-core, mas que individualmente têm menor capacidade. Os programadores terão de dominar a programação multi-processador para que possam utilizar com eficiência as máquinas do presente e do futuro.
2- OBJECTIVOS ESPECIFICOS
Aquisição de conhecimentos conducentes à utilização simultânea de várias unidades de processamento num sistema de computação. Construção de bases sólidas sobre arquiteturas paralelas, paralelização de algoritmos, modelos de programação, sincronização de processos e medidas de desempenho, através do desenvolvimento de programas.
3-CONHECIMENTOS ANTERIORES
Os estudantes devem ter obtido aprovação às unidades curriculares de programação do 1º e 2º ano do curso.
4-DISTRIBUIÇÃO PERCENTUAL
Componente ciêntifica:50%
Componente técnica:50%
5- RESULTADOS DA APRENDIZAGEM
Os estudantes no final deverão ser capazes de:
a) Analisar um problema e identificar o modelo de paralelização mais adequado (Conhecimento e compreensão)
b) Escrever programas segundo o modelo de passage de pmensagens e memória partilhada (Análise e Prática)
C) Elaborar soluções paralelas para novos problemas (Especificação)
D) Utilização de modelos computacionais para estimar o tempo de computação das aplicações (Investigação)
E) Conhecimentos de concorrência de processos e implementação de boas práticas para efetuar partilha de recursos (competências transferíveis)
Programa
INTRODUÇÃO:
- Programação Distribuída e Paralelismo, Maquinas Paralelas, Processadores, Organização de Memória.
FUNDAMENTOS DA PROGRAMAÇÃO PARALELA:
- Divisão do Problema, Padrões de comunicação, Sincronização, Granularidade da paralelização, Escalonamento (distribuição do trabalho pelos processadores).
PROGRAMAÇÃO DE MULTI-COMPUTADORES E MULTI-PROCESSADORES:
- Utilização de MPI e OpenMP.
- Outros frameworks e ferramentas.
- Programação de GPUs para o paradigma de "Data Parallel".
CARACTERIZAÇÃO DA COMPUTAÇÃO PARALELA:
- Modelos de execução, Modelos de Programação, Modelos de Computação, Medidas de Desempenho e Eficiencia, Expansibilidade (Função de Isoeficiência).
INTRODUÇÃO À COMPOTAÇÃO DISTRIBUÍDA EM AMBIENTE INTERNET:
- P2P, GRID, CLOUD COMPUTING: Aplicações e características.
Bibliografia Obrigatória
Quinn, Michael J.;
Parallel programming in C with MPI and openMP. ISBN: 007-123265-6
Calvin Lin, Lawrence Snyder; Principles of parallel programming, Pearson - Addison Wesley, 2009. ISBN: 0-321-48790-7
David B. Kirk, Wen-mei W. Hwu; Programming massively parallel processors, Morgan Kaufman, 2010. ISBN: 978-0-12-381472-2
Bibliografia Complementar
Foster, Ian T.;
Designing and building parallel programs. ISBN: 0-201-57594-9
Métodos de ensino e atividades de aprendizagem
Exposição do material teórico com apresentação e discussão de exemplos. Desenvolvimento de alguns programas e exercícios práticos. Projecto e desenvolvimento de trabalhos de maior dimensão.
Software
Visual Studio 2008 Professional (C#/C/C++)
MPI
Palavras Chave
Ciências Tecnológicas > Tecnologia > Tecnologia de computadores > Tecnologia de software
Tipo de avaliação
Avaliação distribuída com exame final
Componentes de Avaliação
Descrição |
Tipo |
Tempo (Horas) |
Peso (%) |
Data Conclusão |
Participação presencial (estimativa) |
Participação presencial |
42,00 |
|
|
Exercícios de estudo de casos |
Teste |
18,00 |
|
|
Desenvolvimento de programas e relatório para avaliação |
Defesa pública de dissertação, de relatório de projeto ou estágio, ou de tese |
60,00 |
|
|
Exame |
Exame |
2,00 |
|
|
|
Total: |
- |
0,00 |
|
Componentes de Ocupação
Descrição |
Tipo |
Tempo (Horas) |
Data Conclusão |
Estudo autónomo |
Estudo autónomo |
40 |
|
|
Total: |
40,00 |
|
Obtenção de frequência
Não exceder o número de faltas (25%) e realizar e apresentar os trabalhos práticos.
Fórmula de cálculo da classificação final
Nota Final = 0.5*AvD + 0.5*Ex
AvD – Avaliação Distribuída
Ex – Nota do exame
A Avaliação Distribuída é obtida por 2 trabalhos práticos, com peso idêntico cada um.
Avaliação especial (TE, DA, ...)
A avaliação distribuída é baseada na realização de trabalhos práticos de programação ao longo do semestre, e é exigida a todos os alunos independentemente do regime de inscrição.
Melhoria de classificação
A melhoria da classificação obtida na componente distribuída pode ser realizada na próxima ocorrência da unidade curricular.
A componente de Exame pode ser melhorada nas épocas previstas na FEUP.
Observações
Conhecimento de Linguagem C/C++