Carregar apresentação
A apresentação está carregando. Por favor, espere
1
COMPUTAÇÃO PARALELA: UMA INTRODUÇÃO
Guilherme Galante
2
MOTIVAÇÃO E JUSTIFICATIVAS
3
Como ganhar desempenho em programas?
3 opções ? ? ?
4
Como ganhar desempenho em programas?
Melhorar o ambiente de execução Ex: Comprar um processador melhor Melhorar o algoritmo 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)
5
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*
6
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
7
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!!!
8
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
11
ÁREAS DE APLICAÇÃO Top 500 – junho/09
12
Arquiteturas paralelas
13
Arquiteturas Paralelas
Classificação de Flynn (1970) SISD SIMD MISD MIMD
14
Arquitetura SISD Computadores com um único processador
Instruções executadas em seqüência Placas gráficas
15
Arquitetura SIMD Cada processador executa a mesma instrução em sincronia, mas usando dados diferentes
16
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íbridos
17
Los Alamos National Laboratory
IBM – RoadRunner Los Alamos National Laboratory Cluster PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz cores 98TB de memória SO Linux (Fedora and Red Hat enterprise editions) Interconexão: Infiniband
18
Oak Ridge National Laboratory
MPP AMD x86_64 Opteron Quad Core 2300 MHz cores 362TB de memória Interconexão: Cray SeaStar / Infiniband SO CNL (adaptação do Suse) Cray – Jaguar Oak Ridge National Laboratory
19
Precisa-de de usuários!!
Cluster Krusty – LCAD Unioeste Precisa-de de usuários!! 18 nós – Pentium IV 3.2 HT GHz 1 GB RAM Rede Gigabit Ethernet SO Linux Fedora
20
FERRAMENTAS E MODELOS DE PROGRAMAÇÃO
21
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)
22
PROGRAMAÇÃO DE MULTIPROCESSADORES (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 */ Exemplo OpenMP
23
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: Linda, Threadmarks, ...
24
PROGRAMAÇÃO DE MULTICOMPUTADORES (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; } Exemplo MPI
25
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
26
MODELOS DE APLICAÇÃO SPMD (Single Program, Multiple Data) Workpool
processador dado processo tarefas/dados processadores
27
MODELOS DE APLICAÇÃO Mestre-Escravo Pipeline F1 F2 F3 F1 F2 F3 mestre
escravos F1 F2 F3 F1 F2 F3
28
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
29
Validação e testes de desempenho
Resumindo... Validação e testes de desempenho Escolha da arquitetura Escolha das ferramentas Implementação Projeto do software Problema Detecção do paralelismo
30
EXEMPLO DE APLICAÇÃO PARALELA
31
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
32
sequencial paralelo Arquitetura: Cluster Software: C + MPI
Geração da Malha Particionamento da malha Geração dos Sistemas de Equações Resolução dos Sistemas de Equações sequencial paralelo Obtenção da solução final Arquitetura: Cluster Software: C + MPI
33
Resultados Testes efetuados no Cluster Krusty: 18 nodos
34
Concluindo... Aplicações Gerenciamento de infra-estrutura Pesquisa
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... Oportunidades
35
gui.galante@gmail.com www.inf.unioeste.br/~guilherme
Obrigado!
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.