Código: | CC4014 | Sigla: | CC4014 | Nível: | 400 |
Á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/CP/1415/ |
Unidade Responsável: | Departamento de Ciência de Computadores |
Curso/CE Responsável: | Mestrado em Ciência de Computadores |
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 |
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.
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.
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ó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.
Designação | Peso (%) |
---|---|
Exame | 35,00 |
Teste | 35,00 |
Trabalho laboratorial | 30,00 |
Total: | 100,00 |
Designação | Tempo (Horas) |
---|---|
Estudo autónomo | 60,00 |
Frequência das aulas | 42,00 |
Trabalho laboratorial | 60,00 |
Total: | 162,00 |
Os estudantes 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 = (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.
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
A melhoria da classificação incide apenas sobre as provas escritas.