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

2.
Melhorar o algoritmo

3.
Ex: Comprar um processador melhor
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)
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)

Programador é
responsável pela
exploração do
paralelismo
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:



Memória Compartilhada


SMP, Multicore
Memória Distribuída


Várias coisas ocorrendo ao mesmo tempo
Cluster, MPP
Híbridos
16
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
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
18
Cluster Krusty – LCAD Unioeste
18 nós – Pentium IV 3.2 HT GHz
1 GB RAM
Rede Gigabit Ethernet
SO Linux Fedora
Precisa-de
de
usuários!!
19
FERRAMENTAS E
MODELOS DE
PROGRAMAÇÃO
PROGRAMAÇÃO DE
MULTIPROCESSADORES (MEM.
COMPARTILHADA)

Modelo de programação:


Aspecto crítico:


Múltiplas threads compartilhando dados
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);
}
}
/* All threads join master thread and disband */
22
PROGRAMAÇÃO DE
MULTICOMPUTADORES (MEM.

Modelo de programação:


troca de mensagens entre tarefas cooperantes
Aspectos críticos:


DISTRIBUÍDA)
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 DE
MULTICOMPUTADORES (MEM.
DISTRIBUÍDA)
#include <stdio.h>
#include <mpi.h>
Exemplo MPI
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
1
F
2
F
3
F
1
F
2
F
3
27
EXEMPLO DE USO: PCAM + MESTREESCRAVO

Partição


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


Na fase de partição são identificadas as tarefas que são
geridas pelo mestre
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...
Escolha da
arquitetura
Validação e
testes de
desempenho
Escolha das
ferramentas
Implementação
Projeto do
software
Problema
Detecção do
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 da
Malha
sequencial
paralelo
Particionamento
da malha
Geração dos
Sistemas de
Equações
Resolução dos
Sistemas de
Equações
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
Aplicações em outras áreas:
 Matemática
 Física
 Inteligência Artificial
 Banco de Dados
 etc...
Oportunidade
s
34
OBRIGADO!
[email protected]
www.inf.unioeste.br/~guilherme
35
Download

Computação Paralela: uma introdução