computa o paralela uma introdu o
Download
Skip this Video
Download Presentation
Computação Paralela: uma introdução

Loading in 2 Seconds...

play fullscreen
1 / 35

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


  • 131 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Computação Paralela: uma introdução' - duane


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

reas de aplica o
Áreas de aplicação

Top 500 – junho/09

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
slide17

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

slide18

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

slide19

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

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

slide32

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

ad