Você está na página 1de 35

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 Programador é
 Vários núcleos responsável pela
exploração do
 Vários processadores paralelismo
 Placas Gráficas (GPUs)

8
9
10

http://www.isgtw.org/?pid=1001952
ÁREAS DE APLICAÇÃO

11

Top 500 – junho/09


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

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);
} 22
} /* All threads join master thread and disband */
PROGRAMAÇÃO DE
MULTICOMPUTADORES (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:


23
 Linda, Threadmarks, ...
PROGRAMAÇÃO DE
MULTICOMPUTADORES (MEM. DISTRIBUÍDA)
#include <stdio.h>
Exemplo MPI
#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
}
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

Escolha da Escolha das


Implementação
arquitetura ferramentas

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

Área: Computação Científica


Paralela/Aplicações

Dissertação de Mestrado – UFRGS


2004-2006

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

Você também pode gostar