Apresentar arquiteturas paralelas, conceitos de processamento concorrente e programação paralela e distribuída, visando dar os conhecimentos necessários para a escolha e o uso de sistemas de computação de alto desempenho.
Conceitos, técnicas de paralelização e aspectos de programação paralela para computadores com múltiplos núcleos e memória compartilhada e sistemas distribuídos são apresentados. Ferramentas de programação paralela são utilizadas para o desenvolvimento de exercícios e projeto.
1. Arquiteturas de Computador Paralelo: taxonomia. 2. Métricas e análises de desempenho para programas paralelos. 3. Modelos de Programação Paralela. 4. Conceitos básicos: processos e threads, comunicação, mecanismos de sincronização, controle de concorrência, deadlock e exclusão mútua. 5. Desenvolvimento de aplicações paralelas. 6. Programação paralela em computadores com múltiplos núcleos e memória compartilhada. 7. Programação paralela em sistemas distribuídos.
[1] Parallel Programming for Multicore and Cluster Systems. Thomas Rauber • Gudula Rünger Barry. 2a. ed. Springer-Verlag, 2013. [2] Principles of Concurrent and Distributed Programming. Ben-Ari, M. Addison-Wesley, Second Edition, 2006. [3] Introduction to Parallel Computing. Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar. V. 2ed. Addison-Wesley. 2003.