Escolar Documentos
Profissional Documentos
Cultura Documentos
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
8
9
10
http://www.isgtw.org/?pid=1001952
ÁREAS DE APLICAÇÃO
11
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
16
Híbridos
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 17
MPP Cray – Jaguar
AMD x86_64 Opteron Quad Core 2300 MHz Oak Ridge National Laboratory
181.504 cores
362TB de memória
18
Interconexão: Cray SeaStar / Infiniband
SO CNL (adaptação do Suse)
Cluster Krusty – LCAD Unioeste
Precisa-de
de
18 nós – Pentium IV 3.2 HT GHz usuários!!
1 GB RAM
Rede Gigabit Ethernet
19
SO Linux Fedora
FERRAMENTAS E
MODELOS DE
PROGRAMAÇÃO
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
PROGRAMAÇÃO DE
MULTIPROCESSADORES (MEM.
COMPARTILHADA)
#include <omp.h>
#include <stdio.h>
Exemplo OpenMP
#include <stdlib.h>
MPI_Finalize();
return 0; 24
}
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)
processador
dado
processo
Workpool
tarefas/dados
26
processadores
MODELOS DE APLICAÇÃO
Mestre-Escravo
mestre
escravos
Pipeline
F F F
1 2 3
F F F
1 2 3 27
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...
Validação e
testes de
desempenho
Projeto do
software
Detecção do
Problema
paralelismo 29
EXEMPLO DE
APLICAÇÃO PARALELA
EXEMPLO DE
APLICAÇÃO
Simulação de Hidrodinâmica
Rio Guaíba - RS
31
Geração dos
Geração da Particionamento
Sistemas de
Malha da malha
Equações
Resolução dos
sequencial Sistemas de
Equações
paralelo
Obtenção da
solução final
Arquitetura: Cluster
Software: C + MPI
32
RESULTADOS
Testes efetuados no
Cluster Krusty: 18 nodos
33
CONCLUINDO...
Aplicações
Científicas
Comerciais (desenvolvimento e conversão/paralelização)
Gerenciamento de infra-estrutura
Pesquisa
Clusters
Grids
P2P
Cloud Computing
Oportunidade
Aplicações em outras áreas:
s
Matemática
Física
Inteligência Artificial
34
Banco de Dados
etc...
OBRIGADO!
gui.galante@gmail.com
www.inf.unioeste.br/~guilherme
35