Programação

  • Informações Gerais da SSC0742- Programação Concorrente (2017/1)


  • 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.

  • 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.


  • 03- Redes de Conexão

    Material para estudo:  Livros do Grama,  Rauber & Runger e Pacheco.

  • 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).

  • 05- ERAD-SP - substituída pela prova

  • 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


  • 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.