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

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

COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante.

Apresentações semelhantes


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

1 COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

2 MOTIVAÇÃO E JUSTIFICATIVAS

3 C OMO GANHAR DESEMPENHO EM PROGRAMAS ? 3 opções 3 ? ? ?

4 C OMO GANHAR DESEMPENHO EM PROGRAMAS ? 1. Melhorar o ambiente de execução Ex: Comprar um processador melhor 2. Melhorar o algoritmo Ex: substituir um algoritmo de ordenação Bubble por Quicksort 3. 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) 4

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* 5

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 6

7 P OR 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!!! 7

8 O NDE 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) 8 Programador é responsável pela exploração do paralelismo

9 9

10 10

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

12 A RQUITETURAS PARALELAS

13 Classificação de Flynn (1970) SISDSIMD MISDMIMD 13

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

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

16 A RQUITETURA 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

17 17 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 IBM – RoadRunner Los Alamos National Laboratory

18 18 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 19 Cluster Krusty – LCAD Unioeste 18 nós – Pentium IV 3.2 HT GHz 1 GB RAM Rede Gigabit Ethernet SO Linux Fedora Precisa-de de usuários!!

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) 21

22 PROGRAMAÇÃO DE MULTIPROCESSADORES (MEM. COMPARTILHADA) #include 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 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,... 23

24 PROGRAMAÇÃO DE MULTICOMPUTADORES (MEM. DISTRIBUÍDA) #include 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 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 25

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

27 MODELOS DE APLICAÇÃO Mestre-Escravo Pipeline 27 mestre escravos F1F1 F2F2 F3F3 F1F1 F2F2 F3F3

28 E XEMPLO DE USO : PCAM + M ESTRE - E SCRAVO 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

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

30 EXEMPLO DE APLICAÇÃO PARALELA

31 EXEMPLO DE APLICAÇÃO 31 Área: Computação Científica Paralela/Aplicações Dissertação de Mestrado – UFRGS Simulação de Hidrodinâmica Rio Guaíba - RS

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

33 R ESULTADOS 33 Testes efetuados no Cluster Krusty: 18 nodos

34 C ONCLUINDO... 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 Oportunidade s

35 O BRIGADO ! 35


Carregar ppt "COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante."

Apresentações semelhantes


Anúncios Google