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

Post on 16-Apr-2015

128 views 3 download

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

COMPUTAÇÃO PARALELA:UMA INTRODUÇÃO

Guilherme Galante

MOTIVAÇÃO E JUSTIFICATIVAS

COMO GANHAR DESEMPENHO EM PROGRAMAS?

3 opções

3

?? ?

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

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

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

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

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

9

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

10

ÁREAS DE APLICAÇÃO

Top 500 – junho/09

11

ARQUITETURAS PARALELAS

ARQUITETURAS PARALELAS

Classificação de Flynn (1970)

SISD SIMD

MISD MIMD

13

ARQUITETURA

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

14

ARQUITETURA

SIMD Cada processador executa a mesma instrução

em sincronia, mas usando dados diferentes

15

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

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

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

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

FERRAMENTAS E MODELOS DE PROGRAMAÇÃO

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

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

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

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

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

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

Workpool

26

dadoprocessador

processo

tarefas/dados

processadores

MODELOS DE APLICAÇÃO Mestre-Escravo

Pipeline

27

mestre

escravos

F1 F2 F3

F1 F2 F3

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

RESUMINDO...

29

Escolha da arquitetura

Problema

Escolha das ferramentas

Detecção do paralelismo

Implementação

Validação e testes de

desempenho

Projeto do software

EXEMPLO DE APLICAÇÃO PARALELA

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

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

RESULTADOS

33

Testes efetuados no Cluster Krusty: 18 nodos

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

OBRIGADO!

gui.galante@gmail.comwww.inf.unioeste.br/~guilherme

35