MAC0219  Programação Concorrente e Paralela

Por | Em

OBJETIVOS:  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]