computaÇÃo paralela: uma introduÇÃo guilherme galante

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

Upload: internet

Post on 16-Apr-2015

132 views

Category:

Documents


3 download

TRANSCRIPT

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

COMPUTAÇÃO PARALELA:UMA INTRODUÇÃO

Guilherme Galante

Page 2: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

MOTIVAÇÃO E JUSTIFICATIVAS

Page 3: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

COMO GANHAR DESEMPENHO EM PROGRAMAS?

3 opções

3

?? ?

Page 4: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

COMO 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

Page 5: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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

Page 6: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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

Page 7: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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

7

Page 8: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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)

8

Programador é responsável pela exploração do paralelismo

Page 9: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

9

Page 10: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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

10

Page 11: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

ÁREAS DE APLICAÇÃO

Top 500 – junho/09

11

Page 12: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

ARQUITETURAS PARALELAS

Page 13: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

ARQUITETURAS PARALELAS

Classificação de Flynn (1970)

SISD SIMD

MISD MIMD

13

Page 14: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

ARQUITETURA

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

14

Page 15: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

ARQUITETURA

SIMD Cada processador executa a mesma instrução

em sincronia, mas usando dados diferentes

15

Page 16: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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

Page 17: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

17

ClusterPowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz129.600 cores98TB de memóriaSO Linux (Fedora and Red Hat enterprise editions)Interconexão: Infiniband

IBM – RoadRunnerLos Alamos National Laboratory

Page 18: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

18

MPPAMD x86_64 Opteron Quad Core 2300 MHz181.504 cores362TB de memóriaInterconexão: Cray SeaStar / InfinibandSO CNL (adaptação do Suse)

Cray – JaguarOak Ridge National Laboratory

Page 19: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

19

Cluster Krusty – LCAD Unioeste

18 nós – Pentium IV 3.2 HT GHz1 GB RAMRede Gigabit EthernetSO Linux Fedora

Precisa-de de

usuários!!

Page 20: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

FERRAMENTAS E MODELOS DE PROGRAMAÇÃO

Page 21: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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

Page 22: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

PROGRAMAÇÃO DEMULTIPROCESSADORES (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 */22

Exemplo OpenMP

Page 23: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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

Page 24: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

PROGRAMAÇÃO DEMULTICOMPUTADORES (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;

}

24

Exemplo MPI

Page 25: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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

Page 26: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

MODELOS DE APLICAÇÃO SPMD (Single Program, Multiple Data)

Workpool

26

dadoprocessador

processo

tarefas/dados

processadores

Page 27: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

MODELOS DE APLICAÇÃO Mestre-Escravo

Pipeline

27

mestre

escravos

F1 F2 F3

F1 F2 F3

Page 28: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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

Page 29: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

RESUMINDO...

29

Escolha da arquitetura

Problema

Escolha das ferramentas

Detecção do paralelismo

Implementação

Validação e testes de

desempenho

Projeto do software

Page 30: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

EXEMPLO DE APLICAÇÃO PARALELA

Page 31: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

EXEMPLO DE APLICAÇÃO

31

Área: Computação CientíficaParalela/Aplicações

Dissertação de Mestrado – UFRGS2004-2006

Simulação de HidrodinâmicaRio Guaíba - RS

Page 32: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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: ClusterSoftware: C + MPI

Page 33: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

RESULTADOS

33

Testes efetuados no Cluster Krusty: 18 nodos

Page 34: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

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

34

Oportunidades

Page 35: COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO Guilherme Galante

OBRIGADO!

[email protected]/~guilherme

35