1 / 35

Computação Paralela: uma introdução

Computação Paralela: uma introdução. Guilherme Galante. Motivação e Justificativas. Como ganhar desempenho em programas?. 3 opções. ?. ?. ?. Como ganhar desempenho em programas?. Melhorar o ambiente de execução Ex: Comprar um processador melhor Melhorar o algoritmo

duane
Download Presentation

Computação Paralela: uma introdução

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computação Paralela:uma introdução Guilherme Galante

  2. Motivação e Justificativas

  3. Como ganhar desempenho em programas? • 3 opções ? ? ?

  4. Como ganhar desempenho em programas? • Melhorar o ambiente de execução • Ex: Comprar um processador melhor • Melhorar o algoritmo • Ex: substituir um algoritmo de ordenação Bubble por Quicksort • Paralelização • Não é a solução para todos os problemas do mundo • Alguns problemas não são paralelizáveis (ou muito difíceis de se ganhar desempenho)

  5. Computação Sequencial • Programa executa em uma única CPU • Dividido em uma série de instruções • Executadas uma após a outra* • Apenas uma instrução é executada por vez*

  6. computação paralela • Utilização de múltiplos recursos computacionais para resolver um determinado problema • Múltiplas CPUs • Problemas são divididos para serem executados simultaneamente

  7. Por que usar paralelismo? • Tempo/Dinheiro • Limite da computação sequencial • Solução de grandes problemas • Alocação de recursos • Cluster • Grids • Arquiteturas estão mudando!!!

  8. Onde está o paralelismo • Paralelismo no nível de instruções • Pipeline, superescalar • Implícito para o programador • Várias linhas de execução: threads • Suporte do sistema operacional • Vários núcleos • Vários processadores • Placas Gráficas (GPUs) Programador é responsável pela exploração do paralelismo

  9. http://www.isgtw.org/?pid=1001952

  10. Áreas de aplicação Top 500 – junho/09

  11. Arquiteturas paralelas

  12. Arquiteturas Paralelas • Classificação de Flynn (1970) SISD SIMD MISD MIMD

  13. Arquitetura • SISD • Computadores com um único processador • Instruções executadas em seqüência • Placas gráficas

  14. Arquitetura • SIMD • Cada processador executa a mesma instrução em sincronia, mas usando dados diferentes

  15. Arquitetura • MIMD • Classe dos computadores paralelos • Não determinismo: • Várias coisas ocorrendo ao mesmo tempo • Memória Compartilhada • SMP, Multicore • Memória Distribuída • Cluster, MPP • Híbridos

  16. IBM – RoadRunner Los Alamos National Laboratory Cluster PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz 129.600 cores 98TB de memória SO Linux (Fedora and Red Hat enterprise editions) Interconexão: Infiniband

  17. MPP AMD x86_64 Opteron Quad Core 2300 MHz 181.504 cores 362TB de memória Interconexão: Cray SeaStar / Infiniband SO CNL (adaptação do Suse) Cray – Jaguar Oak Ridge National Laboratory

  18. Cluster Krusty – LCAD Unioeste Precisa-de de usuários!! 18 nós – Pentium IV 3.2 HT GHz 1 GB RAM Rede Gigabit Ethernet SO Linux Fedora

  19. Ferramentas e modelos de Programação

  20. Programação demultiprocessadores (mem. Compartilhada) • Modelo de programação: • Múltiplas threads compartilhando dados • Aspecto crítico: • sincronização quando diferentes tarefas acessam os mesmos dados • Ferramentas para programação: • linguagens concorrentes (Ada, SR, Java ...) • linguagens seqüenciais + extensões/biliotecas (OpenMP, Pthreads, Cilk, HPF)

  21. Programação demultiprocessadores (mem. Compartilhada) Exemplo OpenMP #include <omp.h> #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int nthreads, tid; #pragma omp parallel private(nthreads, tid) { /* Obtain thread number */ tid = omp_get_thread_num(); printf("Hello World from thread = %d\n", tid); /* Only master thread does this */ if (tid == 0) { nthreads = omp_get_num_threads(); printf("Number of threads = %d\n", nthreads); } } /* All threads join master thread and disband */

  22. Programação demulticomputadores (mem. Distribuída) • Modelo de programação: • troca de mensagens entre tarefas cooperantes • Aspectos críticos: • Comunicação e distribuição dos dados (balanceamento de carga) • Ferramentas para programação: • Linguagens sequenciais + extensões/bibliotecas • MPI (C,C++,Fortran,Java), PVM, Java+RMI • Memória compartilhada distribuída: • Linda, Threadmarks, ...

  23. Programação demulticomputadores (mem. Distribuída) Exemplo MPI #include <stdio.h> #include <mpi.h> int main (int argc, char *argv[]) {int rank, size, MPI_Init (&argc, &argv); MPI_Comm_rank (MPI_COMM_WORLD, &rank); MPI_Comm_size (MPI_COMM_WORLD, &size); printf( "Hello world from process %d of %d\n", rank, size ); MPI_Finalize(); return 0; }

  24. Construção de programas paralelos • Não existe um padrão para construção de aplicações paralelas • Metodologia PCAM – Foster • Particionamento • Comunicação • Agrupamento • Mapeamento

  25. Modelos de Aplicação • SPMD (Single Program, Multiple Data) • Workpool processador dado processo tarefas/dados processadores

  26. Modelos de Aplicação • Mestre-Escravo • Pipeline mestre escravos F1 F2 F3 F1 F2 F3

  27. Exemplo de uso: PCAM + Mestre-Escravo • Partição • Na fase de partição são identificadas as tarefas que são geridas pelo mestre • Comunicação • Neste tipo de algoritmo a comunicação é essencialmente entre o mestre e os escravos para a envio de tarefas e para o retorno de resultados • Aglomeração • Visando a redução dos custos de comunicação; podem ser enviadas várias tarefas em cada mensagem • Mapeamento • O mapeamento é efetuado através da distribuição dos escravos pelos processadores • Podem ser colocados vários escravos por nodo

  28. Resumindo... Validação e testes de desempenho Escolha da arquitetura Escolha das ferramentas Implementação Projeto do software Problema Detecção do paralelismo

  29. Exemplo de aplicação paralela

  30. Exemplo de Aplicação Simulação de Hidrodinâmica Rio Guaíba - RS Área: Computação Científica Paralela/Aplicações Dissertação de Mestrado – UFRGS 2004-2006

  31. Geração da Malha Particionamento da malha Geração dos Sistemas de Equações Resolução dos Sistemas de Equações sequencial paralelo Obtenção da solução final Arquitetura: Cluster Software: C + MPI

  32. Resultados Testes efetuados no Cluster Krusty: 18 nodos

  33. Concluindo... • Aplicações • Científicas • Comerciais (desenvolvimento e conversão/paralelização) • Gerenciamento de infra-estrutura • Pesquisa • Clusters • Grids • P2P • Cloud Computing • Aplicações em outras áreas: • Matemática • Física • Inteligência Artificial • Banco de Dados • etc... Oportunidades

  34. Obrigado! gui.galante@gmail.com www.inf.unioeste.br/~guilherme

More Related