Universidade Federal do Espírito Santo

Portal do Ementário

Informações Gerais
Disciplina:
Computação Paralela e Distribuída ( DCE14857 )
Unidade:
Departamento de Computação e Eletrônica
Tipo:
Optativa
Período Ideal no Curso:
Sem período ideal
Nota Mínima para Aprovação:
5.00
Carga Horária:
60
Número de Créditos:
3

Objetivos
Apresentar os conceitos básicos e as finalidades da computação paralela e distribuída: processos, threads, interrupções, escalonamento, organização, comunicação e sincronização. [Familiaridade] Saber identificar e classificar as diferentes arquiteturas paralelas e distribuídas e ter familiaridade com a taxinomia de Flynn. [Familiaridade] Estar familiarizado com a hierarquia de memória. [Familiaridade] para obter otimizações sequenciais baseadas na hierarquia de memória. [Uso] Apresentar a evolução das arquiteturas paralelas e distribuídas. [Familiaridade] Descrever as técnicas empregadas para projetar e desenvolver programas paralelos e/ou distribuídos. [Uso] Descrever os possíveis problemas ao se trabalhar com programação concorrente e explicar como resolvê-los usando mecanismos de sincronização. [Familiaridade] Apresentar as principais medidas de complexidade e desempenho de programas paralelos e distribuídos. [Familiaridade] Apresentar os modelos de comunicação: memória compartilhada e distribuída. [Familiaridade] Apresentar as ferramentas para a paralelização de acordo com o modelo de comunicação. [Uso] Descrever as estratégias para a implementação paralela de diversos algoritmos tradicionais da literatura. [Uso]

Ementa
Conceitos básicos de processamento paralelo e distribuído. Arquiteturas paralelas e distribuídas. Taxonomia de Flynn. Topologias de interconexão. Hierarquias de memória. Otimização sequencial. Projeto e técnica de desenvolvimento de programas paralelos e distribuídos. Problemas de programação concorrente. Mecanismos de sincronização. Semáforos e mutex. Medidas de complexidade e desempenho de programas paralelos. Controle de processos e paralelização fork-join. Memória compartilhada e introdução a Pthreads, OpenMP e Cilk. Memória distribuída e introdução ao MPI. Introdução à programação em GPUs. Aplicações.

Bibliografia
GRAMA, Ananth; KARYPIS, George; KUMAR, Vipin; GUPTA, Anshul. An Introduction to Parallel Computing: Design and Analysis of Algorithms. 2nd edition. Addison Wesley. 2003. PACHECO, Peter. An Introduction to Parallel Programming. Morgan Kaufmann Publishers Inc. 2011. LIN, Calvin; SNYDER, Larry. Principles of Parallel Programming. Addison-Wesley Publishing Company. 2008.

Bibliografia Complementar
MILLER, Russ; BOXER, Laurence. Algorithms Sequential and Parallel: A Unified Approach. Charles River Media Inc. 2005. QUINN, Michael J. Parallel Programming in C with MPI and OpenMP. McGraw-Hill Education Group. 2003. SNIR, Marc; OTTO, Steve W.; HUSS-LEDERMAN, Steven; WALKER, David W.; DONGARRA, Jack. MPI: The Complete Reference. 2a ed. The MIT Press. 1998. CHAPMAN, Barbara; JOST, Gabriele; PAS, Ruud van der. Using OpenMP: Portable Shared Memory Parallel Programming. MIT Press. 2008. KIRK, David B.; HWU, Wen-mei W. Programming Massively Parallel Processors: A Hands-on Approach. 2a ed. Morgan Kaufmann Publishers Inc. 2012.
Carregando...