Saltar para:
Logótipo
Você está em: Início > CC4014
Mapa das Instalações
FC6 - Departamento de Ciência de Computadores FC5 - Edifício Central FC4 - Departamento de Biologia FC3 - Departamento de Física e Astronomia e Departamento GAOT FC2 - Departamento de Química e Bioquímica FC1 - Departamento de Matemática

Computação Paralela

Código: CC4014     Sigla: CC4014     Nível: 400

Áreas Científicas
Classificação Área Científica
OFICIAL Ciência de Computadores

Ocorrência: 2014/2015 - 1S

Ativa? Sim
Página Web: http://www.dcc.fc.up.pt/~fds/aulas/CP/1415/
Unidade Responsável: Departamento de Ciência de Computadores
Curso/CE Responsável: Mestrado em Ciência de Computadores

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
M:CC 7 PE a partir do ano letivo de 2014 1 - 6 42 162
MI:ERS 9 Plano Oficial desde ano letivo 2014 4 - 6 42 162

Língua de trabalho

Inglês

Objetivos

Dotar os estudantes do conhecimento teórico e prático dos modelos de computação orientados para arquiteturas paralelas e distribuídas. Será dada ênfase ao desenvolvimento de competências de programação para memória distribuída com o MPI, programação em memória partilhada com processos, threads e OpenMP, e programação para arquiteturas GPU. Expor os alunos a temas de investigação recente nesta área.

Resultados de aprendizagem e competências

Ao completarem esta unidade curricular, os estudantes deverão ser capazes de:
- entender e aferir conceitos relativos ao desempenho de programas paralelos.
- conhecer alguns dos principais modelos e linguagens recentes de programação paralela, como sejam programação para GPU, OpenCL, Map-Reduce, Chapel, etc.
- formular soluções nos principais paradigmas de programação paralela, nomeadamente MPI, pthreads e OpenMP.

Modo de trabalho

Presencial

Programa

Fundamentos:
Programação paralela, concorrência e paralelismo. Taxonomia de Flynn. Metodologia de programação de Foster. Principais modelos e paradigmas de programação paralela.

Programação em Memória Distribuída com o MPI:
A especificação MPI, troca explícita de mensagens, protocolos de comunicação, tipos derivados e empacotamento de dados, comunicações colectivas, comunicadores, topologias.

Programação em Memória Partilhada com Processos:
Processos, segmentos de memória partilhada, mapeamento de ficheiros em memória partilhada, spinlocks, semáforos.

Programação em Memória Partilhada com o Pthreads:
Processos multithreaded com o Pthreads, mutexs, variáveis de condição, chaves, implementações do Pthreads.

Programação em Memória Partilhada com o OpenMP:
A especificação OpenMP, directivas de compilação, constructores de work-sharing, constructores de sincronização, funções básicas, funções de locking, variáveis de ambiente, remoção de dependências nos dados, desempenho, combinando o OpenMP com o MPI.

Programação para arquitecturas GPU:
Arquitecturas GPU recentes. Interface de programação de sistemas CUDA e OpenCL. Exemplos de programas.

Métricas de Desempenho:
Medidas de speedup, eficiência, redundância, utilização e qualidade duma aplicação paralela. Lei de Amdahl. Lei de Gustafson-Barsis. Métrica de Karp-Flatt. Métrica de isoeficiência.

Algoritmos Paralelos:
Estratégias de escalonamento e balanceamento de carga. Paralelização de algoritmos de ordenação, de algoritmos de procura, de algoritmos baseados em métodos de Monte Carlo, e de algoritmos para multiplicação de matrizes.

Bibliografia Obrigatória

Michael J. Quinn; Parallel Programming in C with MPI and OPenMP, McGraw-Hill.
Rauber Thomas; Parallel programming. ISBN: 9783642378003
P. Pacheco.; Parallel Programming with MPI, Morgan Kaufmann
B. Nichols, D. Buttlar and J.P. Farrell; Pthreads Programming, O'Reilly
R. Chandra, L. Dagum, D. Kohr, D. Maydan, J. McDonald and R. Menon; Parallel Programming in OpenMP, Morgan Kaufmann
M. Mitchell, J. Oldham and A. Samuel; Advanced Linux Programming, New Riders
B. Wilkinson, M. Allen.; Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers , Prentice Hall.

Métodos de ensino e atividades de aprendizagem

Aulas Teórico-Práticas: exposição e discussão dos conceitos sobre modelos de programação paralela e distribuída; resolução de exercícios e apoio no desenvolvimento de trabalhos práticos de programação ilustrativos dos vários modelos de programação paralela.

Palavras Chave

Ciências Físicas > Ciência de computadores > Arquitectura de computadores > Computação distribuída
Ciências Físicas > Ciência de computadores > Arquitectura de computadores > Computação paralela

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Designação Peso (%)
Exame 35,00
Teste 35,00
Trabalho laboratorial 30,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Estudo autónomo 60,00
Frequência das aulas 42,00
Trabalho laboratorial 60,00
Total: 162,00

Obtenção de frequência

Os estudantes têm de obter uma classificação média mínima de 40% na componente prática.

Fórmula de cálculo da classificação final

A classificação final é calculada pela fórmula:

Classificação Final = (3*A1+3*A2+7*E1+7*E2)/20

onde A1 e A2 correspondem à componente prática e E1 e E2 à componente de avaliação escrita (exame). Todos as componentes estão classificadas na escala de 0 a 20.

Provas e trabalhos especiais

A avaliação dos estudantes é feita a partir da avaliação das seguintes componentes:

A1 - projeto prático de programação em MPI
A2 - projecto prático de programação em OpenMP ou Pthreads
E1 - Teste/exame intermédio
E2 - Teste/exame final

Melhoria de classificação

A melhoria da classificação incide apenas sobre as provas escritas.

Recomendar Página Voltar ao Topo
Copyright 1996-2024 © Faculdade de Ciências da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2024-09-01 às 12:26:31 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias