A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO

Apresentações semelhantes


Apresentação em tema: "COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO"— Transcrição da apresentação:

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

10

11 ÁREAS DE APLICAÇÃO Top 500 – junho/09

12 Arquiteturas paralelas

13 Arquiteturas Paralelas
Classificação de Flynn (1970) SISD SIMD MISD MIMD

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

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

16 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

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

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

19 Precisa-de de usuários!!
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

20 FERRAMENTAS E MODELOS DE PROGRAMAÇÃO

21 PROGRAMAÇÃO DE MULTIPROCESSADORES (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)

22 PROGRAMAÇÃO DE MULTIPROCESSADORES (MEM. COMPARTILHADA)
#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 */ Exemplo OpenMP

23 PROGRAMAÇÃO DE MULTICOMPUTADORES (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, ...

24 PROGRAMAÇÃO DE MULTICOMPUTADORES (MEM. DISTRIBUÍDA)
#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; } Exemplo MPI

25 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

26 MODELOS DE APLICAÇÃO SPMD (Single Program, Multiple Data) Workpool
processador dado processo tarefas/dados processadores

27 MODELOS DE APLICAÇÃO Mestre-Escravo Pipeline F1 F2 F3 F1 F2 F3 mestre
escravos F1 F2 F3 F1 F2 F3

28 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

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

30 EXEMPLO DE APLICAÇÃO PARALELA

31 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

32 sequencial paralelo Arquitetura: Cluster Software: C + MPI
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

33 Resultados Testes efetuados no Cluster Krusty: 18 nodos

34 Concluindo... Aplicações Gerenciamento de infra-estrutura Pesquisa
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

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


Carregar ppt "COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO"

Apresentações semelhantes


Anúncios Google