Código: | CC430 | Sigla: | CC430 |
Áreas Científicas | |
---|---|
Classificação | Área Científica |
OFICIAL | Ciência de Computadores |
Ativa? | Sim |
Página Web: | http://www.dcc.fc.up.pt/~fds/aulas/PPD/1314/ |
Unidade Responsável: | Departamento de Ciência de Computadores |
Curso/CE Responsável: | Mestrado Integrado em Engenharia de Redes e Sistemas Informáticos |
Sigla | Nº de Estudantes | Plano de Estudos | Anos Curriculares | Créditos UCN | Créditos ECTS | Horas de Contacto | Horas Totais |
---|---|---|---|---|---|---|---|
M:CC | 10 | PE do Mestrado em Ciência de Computadores | 1 | - | 7,5 | 67 | 202,5 |
2 | |||||||
MI:ERS | 11 | Plano de Estudos a partir de 2007 | 4 | - | 7,5 | 67 | 202,5 |
Dotar os alunos 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.
Ao completarem esta unidade curricular, os alunos 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.
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.
Aulas Teóricas: exposição e discussão dos conceitos sobre modelos de programação paralela e distribuída.
Aulas Teórico-Práticas: para resolução de exercícios e apoio aos alunos no desenvolvimento de trabalhos práticos de programação ilustrativos dos vários modelos de programação paralela.
Designação | Peso (%) |
---|---|
Exame | 30,00 |
Teste | 30,00 |
Trabalho escrito | 10,00 |
Trabalho laboratorial | 30,00 |
Total: | 100,00 |
Designação | Tempo (Horas) |
---|---|
Elaboração de relatório/dissertação/tese | 20,00 |
Estudo autónomo | 65,50 |
Frequência das aulas | 67,00 |
Trabalho laboratorial | 50,00 |
Total: | 202,50 |
Os alunos têm de obter uma classificação média mínima de 40% na componente prática.
A classificação final é calculada pela fórmula:
Classificação Final = (2*A1+3*A2+3*A3+6*E1+6*E2)/20
onde A1, A2 e A3 correspondem à componente prática e E1 e E2 à componente de avaliação escrita (exame). Todos estas componentes estão classificadas na escala de 0 a 20.
A avaliação dos alunos é feita a partir da avaliação das seguintes componentes:
A1 - projeto prático de programação em MPI
A2 - relatório escrito e apresentação sobre um tópico do curso
A3 - projecto prático de programação em OpenMP ou Pthreads
E1 - Teste/exame intermédio
E2 - Teste/exame final
A melhoria da classificação incide apenas sobre as provas escritas.