Programação
Informações Gerais da SSC0742- Programação Concorrente (2017/1)
Este arquivo contem o conteúdo apresentado na primeira aula do curso.
Tem os objetivos, programa a ser cumprido, sistema de avaliação, datas das provas bimestrais e data da prova de recuperação.
Contem também os dados para contato com o professor.
A disciplina tem aluna PAE. Entre em contato com ela através do email
Silvia Diaz: smdiazdiaz
@gmail.com Os grupos devem ter três participantes.
Se você ainda não tem grupo, procure o professor responsável e informe o grupo a que pertence.
Qualquer dúvida, por favor procure o Professor e a Aluna PAE.
Qualquer dúvida, por favor procure o Professor e/ou a Aluna PAE.
Especificação da Prova AB1, a ser realizada individualmente entre os dias 26/05/2017 (17:00h) e 29/05/2017 (23:59h).
Implementação do Problema do Caixeiro Viajante em C/MPI e PThreads, conforme especificação.
Submissão da prova ao professor pelo Moodle.
Submeta aqui a sua prova até as 07:00h do dia 30/05/2017 (terça).
Revisão das Notas (AB2 e Trabalhos) na Segunda, dia 10/07, às 14:00h, na sala 4-136.
Lembrando: Data da REC: 12/07/2016 (quarta) às 09:00h no Campus 1 (sala 3-102).
01- Apresentação da disciplina. Introdução à Programação Concorrente. Conceitos essenciais.
Conteúdo ministrado: Introdução e conceitos essenciais
Material de estudo:
Caps introdutórios do Livro do Grama e do Quinn.
Faça o resumo deste artigo e entregue o pdf dele aqui no Moodle no link abaixo. Essa atividade deve ser feita em grupo.
02- Revisão de Arquiteturas Paralelas.
Conteúdo ministrado: Revisão de arquiteturas paralelas.
Material de estudo: Livros do Grama, Stallings (Organização & Arquitetura) e Rauber & Runger.
04- Desenvolvimento de aplicações concorrentes
Submeta aqui a sua atividade prática 1 (zip com todos os arquivos)
Projeto de uma solução para Multiplicação de Matrizes em Paralelo usando cluster com 16 nós e rede 1Gbit
Projeto de uma solução para Multiplicação de Matrizes em Paralelo usando SMP com 04 processadores.
O que entregar?
Descrição dos dois projetos (em separado) contendo: Decomposição do problema em tarefas; Análise de tarefas considerando: carga de trabalho, interação e dependências; Mapeamento de tarefas em processos (ou threads); e Mapeamento de processos em processadores e/ou núcleos.
Comparação crítica dos três projetos feitos (em sala, com cluster e com SMP).
06/07/08 - Desenv. Apl. Conc: Pthreads/OpenMP
DEADLINE: 17/05/2017 - Quarta às 13:00h.
Submeta aqui a sua atividade prática 2 (zip com todos os arquivos)
Implementação do Crivo de Eratosthenes proposto no livro do Quinn, seguindo as abordagens sequencial, paralelismo por dados e paralelismo por controle, as duas últimas em PThreads.
Devem ser desenvolvidas três aplicações, sendo que os desempenhos delas devem ser comparados em termos do tempo de resposta.
Para análise de desempenho deve-se usar speedup e eficiência. Fazer os experimentos usando:
-diferentes números de processadores/núcleos (no mínimo três quantidades diferentes de processadores) e
-diferentes tamanhos de vetor (no mínimo um grande e um pequeno).
O que entregar?
Códigos, resultados e análise crítica.
DEADLINE: 20/05/2017 - Sábado às 00:00h (isto é a meia noite de sexta).
Submeta aqui a sua atividade prática 3 (zip com todos os arquivos)
Implementação do Crivo de Eratosthenes proposto no livro do Quinn, seguindo as abordagens de paralelismo por dados e paralelismo por controle, estas em OpenMP.
Devem ser desenvolvidas duas aplicações, sendo que os desempenhos delas devem ser comparados em termos do tempo de resposta, incluindo nesta comparação a versão sequencial (implementada na Atividade Prática 2).
Para análise de desempenho deve-se usar speedup e eficiência. Fazer os experimentos usando:
-diferentes números de processadores/núcleos (no mínimo três quantidades diferentes de processadores) e
-diferentes tamanhos de vetor (no mínimo um grande e um pequeno).
-as cinco implementações já feitas: sequencial, paralalelismo por controle com PThreads, paralelismo de dados com PThreads, paralelismo por controle com OpenMP e paralelismo de dados com OpenMP.
O que entregar?
Códigos, resultados e análise crítica.
09/10- Desenvolvimento de Aplicações Concorrentes com Passagem de Mensagens
DEADLINE: 27/05/2017 - Sábado às 00:00h (isto é a meia noite de sexta).
Submeta aqui a sua atividade prática 4 (submeta um pdf com a descrição)
Análise do código fonte em C/MPI passado em sala de aula e disponibilizado aqui no Moodle - clique no link de submissão para ter acesso ao zip com os códigos em C/MPI para análise.
Trata-se de um master/slave (dois códigos distintos) que interagem e usam a primitiva coletiva MPI_Comm_spawn().
Explique objetivamente o que o programa concorrente faz, destacando as funcionalidades dos processos e suas interações, em função de quando elas ocorrem (siga a ordem de execução dos comandos/eventos).
11/12- CUDA
Referências para estudo:
(Conteúdo da 1a aula de GPU/CUDA)
Hennessy J. L; Patterson, D.A. Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA. 5th ed., 2011. (Appendix C - sobre GPU/CUDA)
Outras referências:
Kirk, D. B.; Hwu W.W. Programming Massively Parallel Processrs: a hands-on approach. Morgan Kaufmann Publishers Inc. NVDIA. 2nd ed. 2013.
NVIDIA, CUDA Runtime API - API Reference Manual. v8.0, Feb, 2016.
Fatahalian, K.; Houston, M. A closer look at GPUs. Commun. ACM 51, 10 (October 2008), 50-57, 2008. DOI: https://doi.org/10.1145/1400181.1400197
DEADLINE: 19/06/2017 - Segunda às 00:00h (isto é a meia noite de domingo).
Submeta aqui a sua atividade complementar 3 (submeta um zip com o código (comentado)).
12-13 TESTE DE PROGRAMAS CONCORRENTES
Slides das aulas de teste de programas concorrentes.
Livro recomendado: Delamaro, M.; Maldonado, J.; Jino, M. Introdução ao teste de software. Elsevier, 2007.