Computa o paralela uma introdu o
This presentation is the property of its rightful owner.
Sponsored Links
1 / 35

Computação Paralela: uma introdução PowerPoint PPT Presentation


  • 88 Views
  • Uploaded on
  • Presentation posted in: General

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

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Computa o paralela uma introdu o

Computação Paralela:uma introdução

Guilherme Galante


Motiva o e justificativas

Motivação e Justificativas


Como ganhar desempenho em programas

Como ganhar desempenho em programas?

  • 3 opções

?

?

?


Como ganhar desempenho em programas1

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)


Computa o sequencial

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*


Computa o paralela

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


Por que usar paralelismo

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


Onde est o paralelismo

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


Computa o paralela uma introdu o

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


Reas de aplica o

Áreas de aplicação

Top 500 – junho/09


Arquiteturas paralelas

Arquiteturas paralelas


Arquiteturas paralelas1

Arquiteturas Paralelas

  • Classificação de Flynn (1970)

SISD

SIMD

MISD

MIMD


Arquitetura

Arquitetura

  • SISD

    • Computadores com um único processador

    • Instruções executadas em seqüência

    • Placas gráficas


Arquitetura1

Arquitetura

  • SIMD

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


Arquitetura2

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


Computa o paralela uma introdu o

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


Computa o paralela uma introdu o

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


Computa o paralela uma introdu o

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


Ferramentas e modelos de programa o

Ferramentas e modelos de Programação


Programa o de multiprocessadores mem compartilhada

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)


Programa o de multiprocessadores mem compartilhada1

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


Programa o de multicomputadores mem distribu da

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


Programa o de multicomputadores mem distribu da1

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;

}


Constru o de programas paralelos

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


Modelos de aplica o

Modelos de Aplicação

  • SPMD (Single Program, Multiple Data)

  • Workpool

processador

dado

processo

tarefas/dados

processadores


Modelos de aplica o1

Modelos de Aplicação

  • Mestre-Escravo

  • Pipeline

mestre

escravos

F1

F2

F3

F1

F2

F3


Exemplo de uso pcam mestre escravo

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


Resumindo

Resumindo...

Validação e testes de desempenho

Escolha da arquitetura

Escolha das ferramentas

Implementação

Projeto do software

Problema

Detecção do paralelismo


Exemplo de aplica o paralela

Exemplo de aplicação paralela


Exemplo de aplica o

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


Computa o paralela uma introdu o

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


Resultados

Resultados

Testes efetuados no

Cluster Krusty: 18 nodos


Concluindo

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


Obrigado

Obrigado!

[email protected]

www.inf.unioeste.br/~guilherme


  • Login