MAC0219 Programação Concorrente e Paralela
Por | EmOBJETIVOS: Familiarizar o aluno com os conceitos e termos básicos de sistemas paralelos, implementação e uso de concorrência, apresentar os tipos de arquitetura mais usados, descrever o suporte necessário para a programação de tais sistemas e apresentar algumas aplicações.
PROGRAMA RESUMIDO: Concorrência, necessidade e implementação; Controle de processos e threads; Técnicas de otimização; Análise de desempenho; Paralelização fork-join; OpenMP; MPI; CUDA; Nuvem
PROGRAMA: Conceitos básicos: processos, threads, interrupções, escalonamento. Problemas de programação concorrente: deadlock, alocação de recursos, leitura e escrita concorrente, exclusão mútua, consenso. Programação concorrente em UNIX. Semáforos, mutexes e monitores. Otimização sequencial: uso eficiente da memória, unit stride, blocking; instruções vetoriais e super escalares, opções de otimização. Profiling e modelagem de desempenho Controle de processos e paralelização fork-join Memória compartilhada e introdução ao OpenMP Memória distribuída e MPI Programação em GPUs, CUDA e novas tecnologias Computação paralela na nuvem.
RESPONSÁVEIS: Alfredo Goldman, Daniel Macêdo Batista, Marco Dimas Gubitoso.
PRÉ-REQUISITOS: MAC0121, MAC0216.
CARGA HORÁRIA SEMANAL E NÚMERO DE CRÉDITOS: 6 horas, 4 créditos-aula e 2 créditos-trabalho.
CRITÉRIO DE AVALIAÇÃO DA APRENDIZAGEM:
Método e Critério: Média ponderada de provas e exercícios.
Norma de recuperação: Média ponderada da nota final e de provas e/ou trabalhos de recuperação.
BIBLIOGRAFIA BÁSICA:
- M. Herlihy, N. Shavit, The art of Multiperocessor Programming, 2008. Morgan Kauffman-Elsevier
- V. Eijkhout, Introduction to High-Performance Scientific Computing, 2014
- W. Gropp, T. Hoefler, R. Thakur, E. Lusk, Using Advanced MPI: Modern Features of the Message-Passing Interface (Scientific and Engineering Computation), 2014. MIT Press
OBSERVAÇÃO: Disciplina optativa eletiva nos currículos do BCC.
[Veja dados da disciplina no JúpiterWeb]