Aula 02 - 1 - Mesonpi

Transcrição

Aula 02 - 1 - Mesonpi
CBPF
Centro Brasileiro de
Pesquisas Físicas
Aula 2
Computação Distribuída
de Alto Desempenho
Marcelo Portes de Albuquerque
Nilton Alves
Marcelo Giovanni
VI Escola do CBPF – Rio de Janeiro
17 a 28 de julho de 2006
VI Escola do CBPF
Sumário Aula 02
1.
2.
3.
4.
5.
6.
Introdução
Conceitos e Terminologia
Arquitetura de Memória
Modelos de Programação Paralela
Projetando Programas em Paralelo
Exemplo de Algoritmo Paralelo
2
VI Escola do CBPF
1. Introdução
O que é a Computação Paralela?
•
Em geral os programas são escritos para a computação serial:
– Execução em um único computador com um só processador
– Divisão do problema em uma serie de instruções
– Instruções são executadas uma após a outra
– Somente uma instrução pode ser executada no mesmo instante
3
VI Escola do CBPF
Computação Paralela
1. Introdução
Computação paralela é a utilização simultânea de vários recursos computacionais
na solução de um determinado problema computacional
–
–
–
–
Deve-se utilizar várias CPUs para resolver o problema
O problema deve ser dividido em partes que podem ser executadas concorrentemente
Cada parte deve ser sub-dividida em uma seqüência de instruções
As instruções de cada parte devem ser executadas simultaneamente em diferentes
CPUs
4
VI Escola do CBPF
Computação Paralela
1. Introdução
Computação paralela é uma evolução da computação serial
– Tradução para o computador da forma dos acontecimentos dos eventos naturais:
muitos eventos complexos inter-relacionados acontecendo ao mesmo momento
e/ou em seqüência.
A computação paralela é considerada por muitos como “a computação
de mais alto nível"
Tem sido usada para realizar simulações numéricas de sistemas
complexos e resolver “Problemas com Grandes Desafios”:
– Pesquisa científica
– Base de dados em paralelo, datamining
– Exploração de petróleo
– Serviços de busca na Web
– Diagnóstico na medicina
– Gráficos avançados e realidade virtual (indústria do entretenimento)
– ...
5
1. Introdução
VI Escola do CBPF
Porque usar a Computação Paralela?
Razões principais:
–
–
–
Economia de tempo para resolver um determinado problema
Resolver problemas muito grande
Realizar tarefas ao mesmo tempo (concorrência)
Outras vantagens:
– Aproveitar recursos ociosos
– Usar recursos mais baratos ao invés de pagar pelo uso de supercomputadores
– Aumentar a quantidade de memória
Limite para a computação serial
– Velocidade de transmissão: a velocidade de um computador está associado a
rapidez que os dados trafegam no hardware
– Limites de miniaturização: tecnologia vem permitindo o aumento de transistores
nos chips, porém o limite está em quão pequeno eles podem ser
– Limitação econômica: É mais caro fazer um único processador mais rápido que
usar um grande número de processadores comerciais para obter a mesma
performance
O FUTURO:
Nos últimos 10 anos apareceram as redes rápidas, sistemas distribuídos em
arquiteturas com vários processadores (mesmo no desktop)
Como vão ser os programas para estes ambientes? Programas Paralelos !
6
VI Escola do CBPF
Sumário Aula 02
1.
2.
3.
4.
5.
6.
Introdução
Conceitos e Terminologia
Arquitetura de Memória
Modelos de Programação Paralela
Projetando Programas em Paralelo
Exemplo de Algoritmo Paralelo
7
VI Escola do CBPF
2 - Conceitos e Terminologias
Arquitetura de von Neumann
– Por mais de 40 anos os computadores seguiram a máquina
de von Newmann
– O computador de von Neumann usa o conceito de
armazenamento de programa
– A CPU executa um programa armazenado que especifica a
seqüência de operações de leitura e escrita na memória
Projeto Básico
– A memória é utilizada para guardar os dados e as
instruções
John von Neumann
Matemático, Prof. Da Universidade de
Princeton e um dos construtores do ENIAC.
– Instruções são códigos que dizem ao computador
para fazer alguma coisa
– Dados são as informações que devem ser
processadas
– A CPU pega a instrução e os dados da memória,
decodifica a instrução e a executa seqüencialmente
8
VI Escola do CBPF
2. Conceitos e Terminologias
Algumas Terminologias Gerais
Tarefa (Task)
–
Uma tarefa é tipicamente um conjunto de instruções de um programa que pode ser
executada em computador
–
Uma tarefa pode ser um programa em série (processo único) ou um programa em paralelo
com múltiplos processos
Tarefa Paralela (Parallel Task)
–
Uma tarefa que pode ser executada por vários processadores
Job: coleção de tarefas iniciada por um usuário
Fila (Queue)
–
–
–
Um enfileiramento e agendamento de jobs
Uma fila contém jobs pendentes, em execução
Jobs completados são removidos da fila
Nó (Node): único nó computacional, com um ou mais processadores (CPUs)
Execução Serial
–
–
Execução de um programa sequencialmente, um comando por vez
Tarefas paralelas terão seções do programa paralelo que serão executados serialmente
Execução Paralela
–
Execução de um programa com mais de uma tarefa e cada tarefa sendo executada por
diferentes processadores ao mesmo
9
2. Conceitos e Terminologias
VI Escola do CBPF
Algumas Terminologias Gerais
Speedup (Observado)
– Definido como
wall-clock time da execução serial
wall-clock time da execução em paralelo
– Indicador mais simples e mais usado para medida de performance de
programas paralelos
Overhead do Paralelismo
– Tempo necessário para coordenar as tarefas em paralelo
– Tempo de inicialização das tarefas em paralelo (task start-up time)
– Sincronizações
– Comunicação de dados
– Overhead imposto pelos compiladores, bibliotecas, sistemas operacionais, etc
para o paralelismo
– Tempo de encerramento das tarefas em paralelo (task termination time)
10
2. Conceitos e Terminologias
VI Escola do CBPF
Classificação dos Computadores
Existem diferentes formas de classificar os computadores
Grande diversidades de arquiteturas computacionais
A mais usada é a Taxonomia1 de Flynn
– Classificação de ambientes de hardwares
Leva em consideração
Número de instruções executadas em paralelo
x
Conjunto de dados para os quais as instruções são submetidas
1 Taxonomia
SISD
SIMD
Single Instruction, Single Data
Single Instruction, Multiple Data
MISD
MIMD
Multiple Instruction, Single Data
Multiple Instruction, Multiple Data
refere-se à classificação das coisas
11
VI Escola do CBPF
2. Conceitos e Terminologias
SISD - Single Instruction, Single Data
Single Instruction
– Somente executa uma instrução de um programa por vez
– Somente um fluxo de instrução é processada pela CPU
Single Data
– Somente um fluxo de dados é processado como entrada
Modelo tradicional de processador único
Exemplo:
– Computador pessoal com processador convencional
– Computador serial (não paralelo)
Esta é a mais antiga e até hoje mais utilizada arquitetura de computador
12
VI Escola do CBPF
2. Conceitos e Terminologias
SIMD - Single Instruction, Multiple Data
Single Instruction
– As unidades de processamento executam a mesma instrução no mesmo ciclo de Clock
Multiple Data
– Cada unidade de processamento opera em dado diferente
Um tipo de computador paralelo
Tem normalmente um decodificador de instrução especializado, uma rede
interna de alta performance e um grande array para instruções
Adaptado para problemas caracterizados por ter regularidade:
– Exemplo: Processamento de Imagem
Exemplos: IBM 9000, Cray T90 etc.
Supercomputador CRAY T90 do Centro Nacional de
Supercomputação (CESUP-RS) da UFRGS
13
VI Escola do CBPF
2. Conceitos e Terminologias
MISD - Multiple Instruction, Single Data
Um único fluxo de dados para várias unidades de processamento
Cada unidade de processamento opera os dados independentemente via
fluxo de instruções independentes
Poucos computadores usaram esta classe de computador paralelo
O uso pode ser
– Vários filtros de freqüência operando em um único fluxo de sinal
– Vários algoritmos de criptografia tentando quebrar uma única mensagem
14
2. Conceitos e Terminologias
VI Escola do CBPF
MIMD - Multiple Instruction, Multiple Data
Multiple Instruction:
– Cada processador pode executar um fluxo diferente de instruções
Multiple Data:
– Cada processador pode trabalhar em um fluxo diferente dos dados
É o computador paralelo mais utilizado hoje em dia
Vários computadores modernos se encaixam nesta categoria
Exemplo: IBM BlueGene/L
Vários supercomputadores atuais, “Grids”,
multiprocessadores SMP, alguns PCs etc.
Photo credit: IBM Rochester
15
VI Escola do CBPF
2. Conceitos e Terminologias
BlueGene/C - Cyclops64
It is a massively parallel, supercomputer-on-a-chip cellular architecture
It is slated for release in late 2006 or early 2007
The Cyclops64 architecture will contain
many hundreds of computing nodes
Cyclops64 project aims to create the
first "supercomputer on a chip"
http://www.research.ibm.com/bluegene
16
2. Conceitos e Terminologias
VI Escola do CBPF
Classificação de Arquiteturas MIMD
Preocupação especial na forma como os processadores estão
conectados as memórias
– Multiprocessadores
– Multicomputadores
Multiprocessadores
(Memória Compartilhada)
Computadores
Computadores
Paralelos
Paralelos ee
Configurações
Configurações
Distribuídas
Distribuídas
MIMD
MIMD
Ambientes Fortemente Acoplados
Multicomputadores
(Memória Distribuída)
Ambientes Fracamente Acoplados
17
2. Conceitos e Terminologias
VI Escola do CBPF
Multiprocessadores
Fortemente acoplada uma vez que processadores e memória estão
fortemente interligados através do sistema local de conexão (hardware)
Comunicação entre processadores é efetuada através de instruções de
acesso comum a memória
Escalabilidade varia de alguns até centenas de processadores
Configurações Genéricas de Multiprocessadores
P
P
P
P
P
P
P
P
Comutador
M
M
M
M
Configuração Compartilhada
Barramento
M – Memória
M
M
M
M
Configuração Comutada
P – Processador
18
2. Conceitos e Terminologias
VI Escola do CBPF
Multicomputadores
Caracterizados por centenas (ou milhares) de processadores que tem
suas próprias memórias distribuída → fracamente acoplado
Comunicação entre processos é efetuada apenas por troca de
mensagens entre os processos que estão sendo executados
Comunicação entre os nós é realizada por meio de uma rede de conexão
Boa escalabilidade
Configurações Genéricas de Multicomputadores
M
M
M
M
M
M
M
M
P
P
P
P
P
P
P
P
Comutador
Configuração Compartilhada
Barramento
M – Memória
Configuração Comutada
P – Processador
19
2. Conceitos e Terminologias
VI Escola do CBPF
Multiprocessadores Simétricos - SMP
Consiste de múltiplos processadores similares conectados entre si e à
memória por um barramento ou alguma outra forma de circuito de conexão
interno
Processador
Processador
Processador
Processador
CACHE
Periféricos
Sistema
Sistema
de
de
E/S
E/S
CACHE
Processador
Processador
Processador
Processador
CACHE
CACHE
Memória
Configuração clássica de uma arquitetura SMP
Caracterizado por até dezenas de processadores compartilhando todos os
recursos disponíveis, executando um único sistema operacional
Os processadores são considerados simétricos pois tem o mesmo “custo” para
acessar a memória
20
VI Escola do CBPF
2. Conceitos e Terminologias
Outras Características de SMPs
Todos os processadores compartilham uma mesma memória
– Existe um único espaço de endereçamento
Todos os processadores compartilham acesso aos mesmos dispositivos de E/S,
através de canais comuns (ou não)
O sistema inteiro é controlado por um único sistema operacional que torna
transparente ao usuário a existência de vários processadores
– Windows e Linux estão preparados para rodar em sistemas SMP
Todos os processadores podem desempenhar as mesmas funções
O tempo de acesso a qualquer posição de memória por um processador é o
mesmo para todos os processadores
– Arquitetura UMA - Uniform Memory Access
Para aumentar a escalabilidade utiliza-se cache local
21
VI Escola do CBPF
2. Conceitos e Terminologias
Exemplo de Sistemas SMP
Intel Xeon Processor-based 2p Server
22
VI Escola do CBPF
2. Conceitos e Terminologias
Processamento Massivamente Paralelos - MPP
Classe de computação onde todos os elementos de processamento são
conectados entre si para se obter uma capacidade de processamento maior
São normalmente multicomputadores
Pode ser composto por um conjunto de multiprocessadores onde cada um é
um nó multicomputador
Computadores MPP são caracterizados por milhares de nós interligados por
dispositivos de conexão de alta velocidade
Cada nó possui seu próprio Sistema Operacional
As aplicações executam localmente e se comunicam por meio de troca de
mensagens (MPI ou PVM)
Ordem de grandeza de nós conectados → milhares
23
2. Conceitos e Terminologias
VI Escola do CBPF
Processamento Massivamente Paralelos - MPP
A escalabilidade da abordagem MPP é maior do que as arquiteturas com
memória compartilhada
Elemento importante é o sistema de interconexão
– Redes -> topologia, roteamento, comutação, latência etc.
Configuração Genérica de um MPP
Proc
Proc
C
E/S
...
Proc
Proc
Proc
Proc
C
C
M
...
E/S
Proc
Proc
Proc
Proc
C
C
...
M
E/S
...
Proc
Proc
C
M
Rede
Rede de
de Interconexão
Interconexão
Os ambiente computacionais de melhor performance atuais são sistemas MPP
– Earth Simulator, Blue Gene, ASCI White, ASCI Red etc.
24
VI Escola do CBPF
Earth Simulator
Clique aqui!
25
VI Escola do CBPF
2. Conceitos e Terminologias
Sistemas Distribuídos
Conjunto de máquinas homogêneas ou heterogêneas possuindo sua própria
arquitetura de software-hardware, executando seu próprio SO, integradas para
a formação de SMPs, MPPs, Cluster e Grids computacionais
Podem ser vistos como configurações com grande poder de escala devido a
agregação dos computadores existentes atualmente
O computador mais rápido que existe é a Internet, ou um subconjunto de suas
máquinas, agrupadas para a execução de uma aplicação.
Scientific American
• Computação distribuída envolve a descentralização e normalmente a programação em
paralelo
• Utiliza dois ou mais computadores que se comunicam para realizar uma tarefa
• Os tipos de ferramentas, linguagens de programação, de sistemas operacionais e outros
recursos podem variar muito
26
VI Escola do CBPF
2. Conceitos e Terminologias
Falácias da Computação Distribuída
Existem alguns argumentos que são incorretos, mas que podem convencer as
pessoas sobre o desenvolvimento de aplicações distribuídas
As mais comuns são:
–
–
–
–
–
–
–
A rede é 100% confiável
A latência é zero
A banda de comunicação é infinita
A rede é segura
A topologia não é relevante
Só existe um administrador do sistema
A rede é homogênea
27
VI Escola do CBPF
2. Conceitos e Terminologias
Clusters Computacionais
Combinação de computadores independentes em um sistema unificado por
meio de um software e rede
Cluster são usados para executar aplicações que necessitam de:
– Alta disponibilidade
– Grande confiabilidade
– Elevado desempenho
Clusters Linux
São considerados sistemas “High
Performance Computing” (HPC)
pois fornecem grande poder
computacional
28
VI Escola do CBPF
2. Conceitos e Terminologias
Cluster de Workstations (NOW)
Conjunto de computadores completos (com teclado, monitor, mouse),
conectados em rede, e que cumprem duas funções:
– o uso diário, com diversos tipos de programas como processadores de texto e
planilhas
– o uso para processamento paralelo pesado no final do dia e/ou nos fins de
semana.
Cluster não dedicado → desempenho do sistema é reduzido
Custo maior por máquina e mais problemas com a manutenção do sistema
29
2. Conceitos e Terminologias
VI Escola do CBPF
Clusters Beowulf
Clusters Beowulf são escaláveis em termos de performance e estão
baseados em hardwares comerciais e Linux
O que é Beowulf?
– Processadores comuns
Rede Local
Eth
GbE
Myrinet
Infiniband
Mestre
• Intelx86, Alpha, PPC
• Pode ter mais de um processador por nó
– Redes comuns
Nó 01
• Fast Ethernet, GbE, Myrinet, Infinband
– Sistema Operacional gratuito
Nó 02
• Linux, BSD
– Modelos de programação padronizados
Nó N
• MPI, PVM
Diagrama simplificado de um Cluster Beowulf
Sempre se pode melhorar o desempenho adicionando novas máquinas
30
2. Conceitos e Terminologias
VI Escola do CBPF
Submetendo Tarefas em Clusters
Realizado por um agendador de tarefas (Batch Scheduler)
Fila
Fila 1
Usuário
Usuário
Tamanho
Tamanho do
do job
job
Prioridade
Prioridade
Tipo
Tipo de
de recurso
recurso
etc.
etc.
#Proc
#Proc
Memória
Memória
Runtime
Runtime
etc.
etc.
Cluster #1
Fila 2
PBS, LSF, MAUI,
SGE, Condor, etc.
Fila N
Agendador de Tarefas
Tarefa
Cluster #2
Cluster #3
31
2. Conceitos e Terminologias
VI Escola do CBPF
Entendendo o Agendador de Tarefas
Recursos podem ser caros
Objetivo é alcançar a máxima utilização dos recursos disponíveis
–
–
Mais trabalhos realizados
Maior número de usuários acessando os recursos
Colocar na fila um conjunto de tarefas
–
–
Permite escolher qual é a melhor tarefa para os recursos disponíveis
Escolhas feitas baseadas em
–
–
–
Prioridade
Recursos solicitados
Objetivos desejados
Passo a Passo
1.
2.
3.
4.
5.
6.
Usuário submete uma tarefa à fila
Espera os recursos solicitados estarem disponíveis
O nó mestre envia a tarefa aos nós escravos que tem o recurso disponível
Os processadores alocados executam a tarefa
O gerenciador de tarefa retira-a da fila
Uma arquivo com saída é gerado
32
VI Escola do CBPF
2. Conceitos e Terminologias
Problema de Gerenciamento de Recursos
Perspectiva da Aplicação
– Dada uma aplicação encontrar um conjunto de recurso apropriado para
executá-la
– otimizar para obter a melhor performance
Perspectiva do Sistema
– Para um conjunto de recursos disponíveis, identificar qual aplicação fará o
melhor uso deles
– Otimizar para utilização total do sistema
33
2. Conceitos e Terminologias
VI Escola do CBPF
Computação de Alto Desempenho
Tendência atual → uso de HPCs para resolver grandes
desafios computacionais
Diferentes Plataformas para Alcançar Resultados
Sistemas
MPPs,
Vectoriais
Clusters HPC
Dedicados
Clusters de
Worksations
Objetivo
Performance
Absoluta
Boa relação
Preço/Performance
Aproveitar
processadores
ociosos
Velocidade de
Conexão
Máxima
Máxima, Boa
Impreciso
Modelo
Memória
Compartilhada
Passagem de
Mensagens
Proprietária
Rede
Barramento,
placa mãe
Myrinet,
Infiniband, GbE
Rede Local
TCP/IP
34
VI Escola do CBPF
2. Conceitos e Terminologias
Top500.org (Junho 2006)
Rank
Site
Computer
Proc.
Year
1
DOE/NNSA/LLNL
United States
BlueGene/L - eServer Blue Gene Solution
IBM
131072
2005
2
IBM Thomas J. Watson
Research Center
United States
BGW - eServer Blue Gene Solution
IBM
40960
2005
3
DOE/NNSA/LLNL
United States
ASC Purple - eServer pSeries p5 575 1.9 GHz
IBM
12208
2006
4
NASA/Ames Research
Center/NAS
United States
Columbia - SGI Altix 1.5 GHz, Voltaire Infiniband
SGI
10160
2004
5
Commissariat a l'Energie
Atomique (CEA)
France
Tera-10 - NovaScale 5160, Itanium2 1.6 GHz, Quadrics
Bull SA
8704
2006
6
Sandia National Laboratories
United States
Thunderbird - PowerEdge 1850, 3.6 GHz, Infiniband
Dell
9024
2006
7
GSIC Center, Tokyo Institute of
Technology
Japan
TSUBAME Grid Cluster - Sun Fire X64 Cluster, Opteron
2.4/2.6 GHz, Infiniband
NEC/Sun
10368
2006
8
Forschungszentrum Juelich
(FZJ)
Germany
JUBL - eServer Blue Gene Solution
IBM
16384
2006
9
Sandia National Laboratories
United States
Red Storm Cray XT3, 2.0 GHz
Cray Inc.
10880
2005
10
The Earth Simulator Center
Japan
Earth-Simulator
NEC
5120
2002
171
Petroleum Company (C)
Brazil
xSeries Cluster Xeon 3.06 GHz - Gig-E
IBM
1024
2004
35
VI Escola do CBPF
2. Conceitos e Terminologias
Top500 - Maiores Tendências
Crescimento
Crescimento do
do
uso
uso pela
pela Indústria
Indústria
36
VI Escola do CBPF
2. Conceitos e Terminologias
Top500 - Maiores Tendências
Os
Os Clusters
Clusters estão
estão
dominando
dominando
37
VI Escola do CBPF
2. Conceitos e Terminologias
Top500 - Maiores Tendências
GbE
GbE está
está
ganhando
ganhando espaço
espaço
38
VI Escola do CBPF
2. Conceitos e Terminologias
Top500 - Maiores Tendências
64
64 bits
bits
Processadores
Processadores Intel
Intel
são
são os
os escolhidos
escolhidos
pelos
pelos maiores
maiores HPC
HPC39
VI Escola do CBPF
2. Conceitos e Terminologias
Top500 - Maiores Tendências
Os
Os EUA
EUA tem
tem mais
mais de
de
60%
60% de
de poder
poder de
de
processamento!
processamento! 40
VI Escola do CBPF
2. Conceitos e Terminologias
Grids Computacionais
Grid é uma infra-estrutura que permite
a integração e colaboração de
organizações virtuais
Ian Foster and Carl Kesselman
http://www.mkp.com/grid2 - Second Edition
Qual a Idéia Básica ?
Usário:
• Enviar o Job
O Grid deve:
• Encontrar um lugar para executá-lo
• Organizar acessos eficientes aos dados
• Cache, migração e replicação
• Tratar da autenticação nos diferentes
ambientes e sites utilizados
• Alocar recursos do site local
• Executar o Job
• Monitorar o progresso de execução
• Recuperar o sistema em caso de
problemas
• Avisar quando o trabalho estiver completo
• Paralelizar se possível (decompor o Job
em unidades e recursos disponíveis)
Analogia à Rede Elétrica: disponibilização de energia escondendo do usuário
41
detalhes como sua origem e a complexidade da malha de transmissão e distribuição.
VI Escola do CBPF
2. Conceitos e Terminologias
Organizações Virtuais
• Pessoas e recursos distribuídos
• Conectados pela rede
• Situados em domínios administrativos diferentes
• Compartilhando recursos, mesmos objetivos
• Dinâmico
R
R
R
R
R
R
R
R
R
R
R
R
VO-A
R
VO-B
42
VI Escola do CBPF
2. Conceitos e Terminologias
Organizações Virtuais
• Pessoas e recursos distribuídos
• Conectados pela rede
• Situados em domínios administrativos diferentes
• Compartilhando recursos, mesmos objetivos
• Dinâmico
• Sistema de gerência → tolerante a falhas
R
R
R
R
R
R
R
R
R
R
R
VO-A
R
VO-B
43
VI Escola do CBPF
Virtualização
2. Conceitos e Terminologias
União e compartilhamento de recursos heterogêneos com utilização otimizada
e o fornecimento automático correspondente à demanda
• Conexão automática das
aplicações aos serviços
Aplicações
Virtualização das Aplicações
Administrador
Serviços de
Distribuição
Virtualização da Infra-estrutura
• Provisionamento
Dinâmico
• Recuperação
automática de falhas
Servidores de
Execução
Sistemas Distribuídos
44
Fonte: The Grid: Blueprint for a New Computing Infrastructure (2nd Edition), 2004
2. Conceitos e Terminologias
VI Escola do CBPF
Integração de Sistemas Distribuídos
Grids são construídos e não comprados
– Integração com sistemas de outras instituições é necessário
Instituição 2
Instituição 1
Internet
Instituição 3
Instituição N
Instituição 4
Problema:
– Diferentes domínios administrativos → políticas de uso diferentes
– Estabelecer uma política de uso dos recursos de um organização virtual
45
2. Conceitos e Terminologias
VI Escola do CBPF
Sistema de Integração em Grid
Sistema Globus
• Conjunto de serviços que facilitam a computação em Grid
• Permite que uma coleção de máquinas heterogêneas
distribuídas trabalhem em conjunto
• Grid Linux
Principais Serviços
Gerenciamento de Recursos – GRAM
Fornece uma interface uniforme para envio e controle de tarefas.
Serviço de Informação – MDS
Disponibiliza informações sobre a situação da Grid.
Serviço de Segurança – GSI
» Autenticação única no Grid.
» Autenticação de usuários em diferentes domínios administrativos.
46
26776 U.S.
2753 China
1318 Japan
1017 India
750 U.K.
495 Italy
488 Germany
391 Brazil
328 S. Korea
306 Taiwan
268 France
241 Canada
211 Viet Nam
211 Spain
202 Russia
187 Pakistan
159 Australia
142 Singapore
131 Greece
119 Colombia
111 Poland
109 Netherlands
107 Thailand
94 Switzerland
77 Chile
74 Sweden
38669 downloads in 2004 from globus.org
VI Escola do CBPF
2. Conceitos e Terminologias
Globus Download
68 Belgium
20 Finland
66 Venezuela
20 New Zealand
66 Romania
17 Nigeria
64 Indonesia
17 South Africa
62 Mexico
16 Jordan
61 Turkey
16 Slovenia
60 Malaysia
16 Afghanistan
58 Portugal
15 Denmark
57 Austria
15 Philippines
54 Ireland
14 Vanuatu
44 Hong Kong
Luxembourg
26776 14
U.S.
40 Hungary2753 14
Tunisia
China
38 Egypt 1318 12
Virgin Is. (U.K.)
Japan
38 Argentina
Peru
1017 12
India
34 Uruguay
12 Yemen
750 U.K.
31 Ukraine
11 Norway
495
Italy
29 Slovakia
11 Algeria
48811Germany
25 Israel
Armenia
23 Yugoslavia39110Brazil
Iceland
3289S.
Korea
23 Iran
Zambia
22 Bulgaria 3069Taiwan
Virgin Is. (U.S.)
22 Uzbekistan
9 Uganda
22 Czech Rep.
9 Bosnia & Herz.
22 N. Korea
8 Kenya
21 Lithuania
7 Zimbabwe
21 Croatia
7 Saudi Arabia
Top 10
7 Ecuador
7 Macedonia
6 Bolivia
6 Comoros
6 Zaire
6 Lebanon
5 Puerto Rico
5 Namibia
5 Togo
5 Tajikistan
5 Paraguay
5 Albania
5 Sudan
4 Estonia
4 Camaroon
4 Ghana
4 Tuvalu
4 Costa Rica
4 Cuba
4 UAE
4 Tonga
4 W. Samoa
4 Tanzania
3 Syria
3 Bahamas
3 Ethiopia
3 Mongolia
3 Sri Lanka
3 Wallis & Futuna Is.
3 Belarus
3 Bangladesh
2 Falkland Islands
2 Kuwait
2 Sierra Leone
2 Trinidad & Tobago
2 Guyana
2 American Samoa
2 Andorra
2 Georgia
2 Cook Islands
2 Turkmenistan
2 Gabon
2 The Gambia
2 Kazakhstan
2 Macau
2 Malta
2 Jamaica
2 Latvia
2 Turks & Caicos
1 Bhutan
1 Ascension Island
1 Cyprus
1 Mozambique
1 Tokelau
1 Greenland
1 Nepal
1 Swaziland
1 Iraq
1 Serbia
1 Barbados
1 Cambodia
1 Qatar
1 Saint Vincent
1 Laos
1 San Marino
1 Libya
1 Benin
1 Angola
1 Chad
1 Gibraltar
1 Haiti
1 Guatemala
1 Malawi
1 Equatorial Guinea
1 Palau
1 Bermuda
1 Botswana 47
1 Suriname
VI Escola do CBPF
2. Conceitos e Terminologias
GRID – Exemplo 1
48
7
VI Escola do CBPF
2. Conceitos e Terminologias
GRID – Exemplo 2
Projeto de computação em Grade de maior repercussão
Característica: Incentivar usuários domésticos a incorporarem
seus recursos à grade
Desvantagem: Impossibilidade de resolver problemas diversos
Signal analysis on a "work unit"
of data recorded from the
central 2.5 MHz wide band of
the SERENDIP IV instrument.
The results are then
automatically reported back to
UC Berkeley.
Over 5 million computer users
in more than 200 countries
have signed up
Contribution over 19 billion
hours of computer processing
time
49
VI Escola do CBPF
2. Conceitos e Terminologias
GRID – Exemplo 3
United Devices Community
– Download a small program called the UD Agent
– Put unused PC's resources to perform valuable scientific and medical research
without disturbing your usual computer use
Projects
Members
1,318,395
Devices
3,597,641
Cancer Research Project
Human Genome Project
Genetic Research
Human Proteome Folding
http://www.grid.org
50
VI Escola do CBPF
Grids & Cluster
2. Conceitos e Terminologias
Grids são mais distribuídos diversos e complexos que outras plataformas
Heterogeneidade – Componentes do Grid
Alta Dispersão Geográfica – Escala Mundial
Compartilhamento – Grid não é Dedicado
Múltiplos Domínios – Reúne informações de várias instituições
Controle Distribuído – Não existe uma entidade com controle total da Grid
51
VI Escola do CBPF
Sumário Aula 02
1.
2.
3.
4.
5.
6.
Introdução
Conceitos e Terminologia
Arquitetura de Memória
Modelos de Programação Paralela
Projetando Programas em Paralelo
Exemplo de Algoritmo Paralelo
52
VI Escola do CBPF
3. Arquitetura de Memória
Memória Compartilhada
– Todos os processadores acessam toda a
memória como um endereço global
– Múltiplos processadores podem acessar a
memória independentemente
– Modificações em um dado é visível a todos os
processadores
2 Classes
Memória de Acesso Uniforme (UMA)
– Usado nos SMPs (multiprocessadores simétricos)
– Igual acesso e tempo de acesso a memória
– Com coerência de cache - CC-UMA (Cache Coherent UMA)
Memória de Acesso Não-Uniforme
– Usa Link de acesso entre SMPs (lento)
– Nem todos os processadores tem igual tempo de acesso a toda memória
– Com coerência de cache - CC-NUMA
53
VI Escola do CBPF
3. Arquitetura de Memória
Memória Distribuída
Sistemas de Memórias
Distribuídas necessitam
de estarem conectados
entre si para acessar a
memória do outro
processador
– Cada processador tem sua memória local
– Não existe a idéia de espaço de endereçamento global
– Modificações na memória local não tem nenhum efeito na memória dos
outros processadores
– O conceito de cache coerente não se aplica
– Quando um processador precisa de acessar os dados que estão na
memória em um outro computador o programador explicita como e quando
os dados devem ser comunicados
54
VI Escola do CBPF
Sumário Aula 02
1.
2.
3.
4.
5.
6.
Introdução
Conceitos e Terminologia
Arquitetura de Memória
Modelos de Programação Paralela
Projetando Programas em Paralelo
Exemplo de Algoritmo Paralelo
55
VI Escola do CBPF
4. Modelos de Programação Paralela
Existem vários modelos de programação paralela
–
–
–
–
–
–
Memória Compartilhada
Threads
Passagem de Mensagens
Paralelismo de Dados
Paralelismo de Objetos
Híbrido
Modelos de programação em paralelo não
dependem do hardware e da arquitetura de
memória
Qual modelo deve ser usado está associado ao
fabricante sendo uma escolha pessoal
Não existe o melhor modelo, embora exista
certamente implementações melhores que outras
Modelo Hibrido:
Modelo de Passagem de Mensagens em uma máquina de
memória compartilhada: MPI em uma SGI Origin
SGI Origin 3000
16 R16000 em cada nó
Arquitetura de Memória Compartilhada
56
4. Modelos de Programação Paralela
VI Escola do CBPF
Memória Compartilhada
As tarefas compartilham o mesmo espaço de endereçamento de memória
– Leitura e escrita assincronamente
Vários mecanismos como “lock” ou semáforos são utilizados para controlar o
acesso a memória
Não existe a noção de “dono dos dados”, não há necessidade de comunicação
de dados entre as tarefas. O desenvolvimento de programas é mais simples
Uma desvantagem em termos de performance → mais difícil de gerenciar a
localização dos dados
Implementações:
– Um compilador especial traduz as variáveis do programa em endereço de
memória que são globais
– Não existe implementação comum para ambientes com memória compartilhada
– Existem implementações que permitem ver a memória de dados de forma
continua mesmo se a memória física esteja distribuída
– Exemplo: OpenMP → ambiente de desenvolvimento baseado em computação
paralela com memória compartilhada em Fortran e C/C++ (www.openmp.org)
57
4. Modelos de Programação Paralela
VI Escola do CBPF
Threads - Linhas de Execução
Thread é uma maneira de um processo dividir a si mesmo em duas ou mais
linhas de tarefas simultâneas
No modelo de programação paralela por Threads, um único processo pode ter
várias linhas de execuções diferentes
Analogia é a concepção de um programa que
inclui varias sub-rotinas
– Cada thread tem dados locais, mas também, usa
os recursos de a.out
tempo
– O programa principal (a.out) realiza algumas
trabalhos seriais, e cria threads que podem ser
executadas pelo SO concorrentemente
– Cada thread se beneficia de visão da memória
global de a.out
Neste modelo de programação pode-se executar
qualquer sub-rotina ao mesmo tempo
58
VI Escola do CBPF
4. Modelos de Programação Paralela
Threads - Linhas de Execução
Threads comunicam-se através da memória global
– Sincronização para garantir que mais de um thread não esteja atualizando o
mesmo endereço de memória no mesmo instante
Thereads estão associados com arquiteturas de memória compartilhada e com
o Sistema Operacional
As implementações de threads compreendem normalmente:
– Uma biblioteca de sub-rotinas que são chamadas a partir de um código paralelo
– Um conjunto de diretivas de compilação embutidos em um código serial
– O programador é responsável pela determinação do paralelismo
Threads são antigos em computação
– Historicamente os fabricantes de hardware
implementam versões proprietárias
– Implementações bem diferentes e isto
dificulta a portabilidade dos programas
Esforços de padronizações resultou na
implementação do POSIX Threads
Microsoft tem sua implementação de threads
POSIX - Portable Operating System Interface, with the X signifying the Unix heritage of the API
59
4. Modelos de Programação Paralela
VI Escola do CBPF
Passagem de Mensagens
Modelo de programação por passagem de mensagens tem as seguintes
características:
– Conjunto de tarefas usando sua própria memória
– As tarefas podem estar na mesma máquina física ou em outros máquinas
– Tarefas trocam dados através de comunicações enviando e recebendo
mensagens
– Dados transferidos requerem operações cooperativas para a realização do
processo
– Exemplo: uma operação de envido (send) deve estar associada a uma
operação de recebimento (receive)
60
4. Modelos de Programação Paralela
VI Escola do CBPF
Passagem de Mensagens
Implementações:
– A implementação de passagem de mensagens compreende uma biblioteca de
sub-rotinas que são inseridas no código fonte
– O programador é responsável na determinação o paralelismo
Várias bibliotecas de passagem de mensagem foram disponibilizadas
desde 1980
– As implementações era bem diferentes uma das outras sendo muito difícil
manter a portabilidade das aplicações
O MPI Forum estabeleceu um padrão para a implementação de passagem
de mensagens
–
–
–
–
–
1994 → MPI versão 1 (Interface para Passagem de Mensagens)
1996 → MPI-2 (Memória Remota, E/S Paralela ...)
As especificações estão disponíveis em: www-unix.mcs.anl.gov/mpi
É o padrão para passagem de mensagens
Quase todas as plataformas atuais oferecem pelo menos uma implementação
de MPI
– Implementação portável do MPI – MPICH
– Desenvolvido pelo Argonne National Laboratory
61
VI Escola do CBPF
4. Modelos de Programação Paralela
Paralelismo dos Dados
Muito do paralelismo esta focado em operações nos dados
Normalmente os dados são organizado em estruturas
Várias tarefas trabalham na mesma estrutura, porém cada tarefa trabalha
em regiões diferentes da estrutura
Tarefas realizam a mesma operação
Memória compartilhada
→ as tarefas acessam os dados pela
memória global
Memória distribuída
→ a estrutura de dados é distribuída
em cada uma das memórias locais
62
4. Modelos de Programação Paralela
VI Escola do CBPF
Paralelismo de Objetos
É o modelo mais recente
Utiliza o conceito de objetos distribuídos por uma rede
Objetos encapsulam estados
Seus métodos (funções) e variáveis podem ser acessados por diferentes
processadores para uma determinada finalidade
Exemplo: Charm++
Array de objetos
distribuídos
A[1]
Classe A
Método 1
Método 2
...
Metodo N
N objetos
são
instanciados
A[2]
...
A[N]
P1
A[1].m
P2
A[2].m
...
PN
A[N].m
63
VI Escola do CBPF
Sumário Aula 02
1.
2.
3.
4.
5.
6.
Introdução
Conceitos e Terminologia
Arquitetura de Memória
Modelos de Programação Paralela
Projetando Programas em Paralelo
Exemplo de Algoritmo Paralelo
64
VI Escola do CBPF
5. Projetando Programas Paralelos
Paralelização Manual x Automática
Projetar programas paralelos é na maior parte das vezes uma processo manual
O programador é quase sempre responsável pela identificação e
implementação do paralelismo
O desenvolvimento manual de código paralelo é complexo, gasta-se muito
tempo e é um processo iterativo
Ferramentas foram criadas para ajudar a
conversão de programas seriais em
programas paralelos
O tipo de ferramenta mais comum é a
paralelização pelo compilador ou pelo
pré-processador
65
VI Escola do CBPF
5. Projetando Programas Paralelos
Paralelização Manual x Automática
Um compilador que paraleliza um código funciona de duas formas
1. Totalmente automático
– O compilador analisa o código fonte e identifica oportunidades de paralelismo.
– Loops (do, for) são as partes mais utilizadas para paralelização automática
2. Diretivas de programação → manual
– Uso de diretivas de compilação onde o programador explicita ao compilador como
paralelizar o código
– Pode ser utilizado em conjunto com algum grau de paralelização automática
– Para os iniciantes, com códigos serial simples, a paralelização automática é a mais
indicada
– GNU UPC - A GCC-Based Compilation and Execution Environment for the Unified
Parallel C (UPC) Language (Hello World)
Existem vários problemas na paralelização automática
–
–
–
–
–
Resultados errados
Baixa performance
Muito menos flexível que a paralelização manual
Limitado na maior parte aos Loops
Compiladores encontram dificuldade em códigos muito complexos
66
VI Escola do CBPF
5. Projetando Programas Paralelos
Entendendo o Problema e o Programa
O primeiro passo no desenvolvimento de um programa paralelo é determinar
onde problema pode ser paralelizado
Exemplo de problema paralelizável
– Cálculo da energia de uma molécula
• Calcular independentemente a energia para milhares
combinações da molécula
• Encontrar qual tem a menor energia
– Solução em paralelo
• Criar tarefas independentes para combinar as moléculas e
calcular a energia
• Determinar em paralelo qual tem a menor energia
NAMD - Simulation of
Large Biomolecular Systems
Exemplo de um problema não paralelizável
– Cálculo da série de Fibonacci (1,1,2,3,5,8,13,...) pela fórmula:
F(k + 2) = F(k + 1) + F(k)
• Problema não pode ser paralelizado pois não é independente
• Calcular F(k + 2) usa-se F(k + 1) e F(k)
• Termos não podem ser calculado independentemente e por
isso não pode ser paralelizavel
The Numbers of Life
67
VI Escola do CBPF
5. Projetando Programas Paralelos
Entendendo o Problema e o Programa ...
Identifique os “hotspots” do programa
– Saiba onde o programa serial passa a maior parte do tempo
– A maior parte de programas científicos passa a maior parte do tempo em
poucos lugares do programa
– Use analisadores de performance
– Ignore as partes do programa onde o uso de CPU é baixo
Identifique os gargalos do programa
– Existem partes do programa que são lentas e/ou causam paradas na execução
do programa em paralelo?
• Por exemplo, acesso de E/S normalmente fazem o programa ficar lento
– Reestruturar o programa para usar diferentes algoritmos a fim de reduzir ou
eliminar partes lentas e desnecessárias
Identifique inibidores de paralelismo
– Tipo de comum de inibidores de paralelismo é a dependência de dados
(Exemplo: série de Fibonacci)
68
VI Escola do CBPF
5. Projetando Programas Paralelos
Comunicação
Necessidade de comunicação entre tarefas depende do problema
Não precisa-se de comunicação
– Alguns tipos de problemas que podem ser decompostos e executados em
paralelo sem a necessidade de compartilhamento de dados entre as tarefas
– Exemplo:
• Processamento de imagem P&B onde cada pixel deve ter sua cor invertida
• Os dados da imagem podem ser distribuídos em tarefas que agem
independentemente
• Estes tipos de problemas são chamados de bag-of-tasks.
• Uma comunicação mínima entre tarefas é necessária
Precisa-se de comunicação
– A maioria das aplicações paralelas requerem tarefas que compartilham dados
– Exemplo:
• Problema de simulação numérica de difusão de calor em 3-D requer que
uma tarefa saiba os valores das temperaturas calculadas pelas tarefas
adjacentes
• As mudanças nos dados dos vizinhos têm um efeito direto nos dados
dessa tarefa
69
VI Escola do CBPF
5. Projetando Programas Paralelos
Comunicação ...
Existem inúmeros fatores que devem ser considerados quando se projeta
sua própria comunicação
Custo da comunicação
– Comunicação entre tarefas implica em overhead
– CPU e recursos serão utilizados para a comunicação quando deveriam estar
sendo usado para o cálculo
– Comunicação freqüente requer algum tipo de sincronização entre tarefas, o que
resulta em tarefas esperando ao invés de calculando
– Comunicação pode saturar a banda disponível
Latência x largura de banda
– Latência é o tempo que se leva para enviar uma mensagem mínima (zero byte)
do ponto A ao ponto B (µs ou ns)
– Largura de banda é a quantidade de dados que podem ser comunicados por
unidade de tempo (bps)
– Enviar muitas pequenas mensagens pode causar o domínio da latência no
overhead de comunicação
– Quase sempre é mais eficiente empacotar pequenas mensagens em
mensagens maiores
70
VI Escola do CBPF
5. Projetando Programas Paralelos
Comunicação ...
Visibilidade da Comunicação
– Com o modelo de passagem de mensagens, comunicação entre processos é
explicita no código sendo de responsabilidade do programador
– Com o modelo de paralelismo dos dados, comunicação é transparente ao
programador, principalmente em arquiteturas de memória distribuída
– O programador pode não ser capaz de saber exatamente se a comunicação entre
tarefas foi completada
Comunicação Síncrona ou Assíncrona
– Síncrona necessita de algum tipo de "handshaking" entre as tarefas que estão
compartilhando dados
– Isto pode ser explicito no código pelo programador, ou em níveis mais baixo sem
que o programador saiba
– Síncrona normalmente bloqueia a comunicação entre tarefas (“block
communication”)
– Assíncrona permite que as tarefas transfiram dados de forma independentemente
– Exemplo: tarefa 1 pode enviar uma mensagem a tarefa 2, e imediatamente
continuar fazendo seu trabalho. Quando a tarefa 2 irá receber os dados não
interessa a tarefa 1
– Assíncronas são ditas como “non-blocking communications”
71
VI Escola do CBPF
5. Projetando Programas Paralelos
Comunicação ...
Escopo da Comunicação
– Saber quais tarefas devem se comunicar é critico durante o desenvolvimento do
programa em paralelo
– Ponto a Ponto: envolve duas tarefas com uma das tarefas agindo como
“sender/producer” dos dados e a outra como “receiver/consumer”
– Coletiva: envolve compartilhamento de dados entre mais de duas tarefas, que
são quase sempre especificados com sendo membros de um grupo comum
72
5. Projetando Programas Paralelos
VI Escola do CBPF
Comunicação ...
Eficiência da Comunicação
– O programador irá definir os fatores que afetam a performance da comunicação
– Podem ser:
• Qual o modelo de implementação deve ser usada
• Modelo de passagem de mensagens (MPI) pode ser mais rápido em um
determinado hardware do que em outro
• Qual o tipo de operação de comunicação deve ser usado? Síncrono ou
assíncrono? Qual das duas pode aumentar a performance?
• Rede – alguns fabricantes oferecem mais de uma rede de comunicação?
Qual deve ser utilizada?
73
VI Escola do CBPF
5. Projetando Programas Paralelos
Sincronização
Barreira (Barrier)
–
–
–
–
Cada tarefa realiza seu trabalho até que encontra uma barreira (“block”)
Quando a última tarefa chega até a barreira, todas as tarefas são sincronizadas
Na seqüência, normalmente uma seção serial do programa é executada
Em outros casos uma troca de informação entre as tarefas é realizada e estas
continuam suas atividades
Lock / Semáforo
– Pode envolver várias tarefas
– Tipicamente usado para “serializar” o acesso a um dado global ou uma parte do
código. Somente uma tarefa por vez pode usar o lock / semáforo / flag
– Pode bloquear ou não a execução do programa
Operações de Sincronismo
– Envolve somente as tarefas que estão executando a operação de comunicação
– Quando uma tarefa realiza uma operação de comunicação, alguma forma de
coordenação é necessária
– Exemplo: antes de enviar um dado uma tarefa pode necessitar de receber um
“acknowledgment” da tarefa que receberá o dado informando que está pronta
74
5. Projetando Programas Paralelos
VI Escola do CBPF
Dependência dos Dados
Existe quando a ordem dos comandos de execução afeta o resultado do
programa
Dependência dos dados resulta do uso por diferentes tarefas das mesmas
variáveis de armazenamento
Dependências são importantes para a programação paralela porque são
um dos inibidores ao paralelismo
Loop COM
dependência de dados
DO 500 J = MYSTART,MYEND
A(J) = A(J-1) * 2.0
500 CONTINUE
Loop SEM
dependência de dados
task 1
------
task 2
------
X = 2
.
.
Y = X**2
X = 4
.
.
Y = X**3
75
5. Projetando Programas Paralelos
VI Escola do CBPF
Balanceamento de Carga
(“Load Balancing”)
Refere-se a distribuição do trabalho entre as tarefas de modo que todas as
tarefas sejam mantidas ocupadas o tempo todo
Pode-se considerar como uma minimização do tempo de “idle” da tarefa
Importante em programas paralelos por razões de desempenho
– Se todas as tarefas estiverem sujeitas a um ponto de sincronização, a tarefa mais
lenta determinará o desempenho total
76
5. Projetando Programas Paralelos
VI Escola do CBPF
Balanceamento de Carga ...
(“Load Balancing”)
Como conseguir o BC
– Dividir igualmente o trabalho que cada tarefa recebe
– Operações em “array” onde cada tarefa executa trabalho similar, distribuir
uniformemente os dados entre as tarefas
– Para os “loops” onde o trabalho em cada iteração é similar, distribuir
uniformemente as tarefas por iteração
– Em máquinas heterogêneas com características de desempenho diferentes,
usar ferramentas da análise de desempenho a fim de detectar os desequilíbrios
da carga
Balanceamento Dinâmico
– Alguns problemas resultam em desequilíbrio de carga mesmo se os dados
estiverem bem distribuídos entre tarefas
– Sparse arrays – alguns tarefas tem dados a serem processados enquanto
outras tem somente "zeros"
– Adaptive grid methods – algumas tarefas podem necessitar de refinar seus
dados enquanto outras não
– Quando uma quantidade de trabalho de cada tarefa é intencionalmente variável,
ou não pode ser predito, o melhor é usar um agendador de tarefas – Ao terminar
seu trabalho a tarefa demanda um novo trabalho
– Pode ser necessário projetar algoritmos para detectar e corrigir desequilíbrios de
carga dinamicamente
77
VI Escola do CBPF
5. Projetando Programas Paralelos
Granularidade
Razão entre Computação / Taxa de Comunicação
– Medida qualitativa entre tempos de computação e de comunicação
– Períodos de computação são normalmente separados de períodos
de comunicação para sincronização de eventos
Granularidade Fina
–
–
–
–
–
Maior freqüência nas comunicações
Facilita o balanceamento de carga
Processamento é menor do que a comunicação
Tende a diminuir a performance do programa
Alto custo de sincronização
Granularidade Grossa
–
–
–
–
Processamento é maior do que a comunicação
Pode permitir melhorar a performance do programa.
Dificulta o balanceamento de carga
Menor custo de sincronização
Qual é a melhor?
– A granularidade mais eficiente dependente do algoritmo e do
ambiente de hardware utilizado
– É um compromisso entre o “overhead” de comunicação e
sincronização e a velocidade de execução.
– A própria natureza do problema pode limitar a granularidade
possível
78
VI Escola do CBPF
5. Projetando Programas Paralelos
Escalabilidade
Propriedade de um sistema paralelo de aumentar o speedup a medida
que aumentamos o número de processadores
Dificuldades
Hardware
– Um dos maiores gargalos é o tráfego de informação na rede que interliga os
processadores
– O aumento do número de processadores pode degradar a capacidade de
comunicação da rede, diminuindo a performance do programa
Software
– Alguns algoritmos trabalham melhor em certas escalas de paralelismo
– O aumento do número de processadores pode acarretar uma queda na
eficiência durante a execução do programa
79
5. Projetando Programas Paralelos
VI Escola do CBPF
Considerações de Performance
Lei de Amdahl - determina o potencial de aumento de velocidade a partir da
porcentagem paralelizável do programa
P = t p / tt
S = t s / tt
P+S=1
speedup = 1 / (1 – P)
tt = tempo total de execução
tp = tempo de execução da parte paralela
ts = tempo de execução da parte serial
– Se nenhuma parte do código pode ser paralelizado → P=0 e o speedup = 1
– Se todo o código pode ser paralelizado → P = 1 e o speedup é infinito (teórico)
– Se 50% do código pode ser paralelizado, o speedup = 2, (duas vezes mais rápido)
– A relação muda quando introduzimos o número de processadores
speedup = 1 / ( P/N + S )
P = fração paralela, N = número de processadores,
S = fração serial
Exemplo:
tt = 100s
tp = 85s
ts = 15s
P = 0.85
S = 0.15
speedup = 1 / (0.85/N + 0.15)
N
1
10
100
speedup
1
4,26
6,30
80
VI Escola do CBPF
Sumário Aula 02
1.
2.
3.
4.
5.
6.
Introdução
Conceitos e Terminologia
Arquitetura de Memória
Modelos de Programação Paralela
Projetando Programas em Paralelo
Exemplo de Algoritmo Paralelo
81
VI Escola do CBPF
6. Exemplo de Algoritmo Paralelo
Cálculo de PI
O valor de PI pode ser calculado de várias
maneiras
Vamos considerar o seguinte método para
calcular o valor de PI
1. Inscreva um círculo em um quadrado
2. Gere pontos aleatórios dentro do quadrado
3. Determine o número de pontos que caíram
dentro do círculo
4. Faça r ser o numero de pontos dentro circulo
dividido pelo numero de pontos gerados
5. PI ~ 4 r
6. Quanto mais pontos são gerados mais
preciso é o número PI
82
VI Escola do CBPF
6. Exemplo de Algoritmo Paralelo
Algoritmo Serial para Calcular π
Pseudo código serial para cálculo de PI
1.
1. npoints
npoints == 10000
10000
2.
2. circle_count
circle_count == 00
3.
3. do
do jj == 1,npoints
1,npoints
4.
generate
4.
generate 22 random
random numbers
numbers between
between 00 and
and 11
5.
xcoordinate
5.
xcoordinate == random1
random1
6.
ycoordinate
6.
ycoordinate == random2
random2
7.
if
7.
if (xcoordinate,
(xcoordinate, ycoordinate)
ycoordinate) inside
inside circle
circle
8.
then
8.
then circle_count
circle_count == circle_count
circle_count ++ 11
9.
9. end
end do
do
10.
10. PI
PI == 4.0*circle_count/npoints
4.0*circle_count/npoints
A maior parte do tempo o programa passa executando o Loop “Do”
O programa paralela deve abordar uma solução para:
• Cálculo computacional intenso
• Mínima comunicação entre tarefas
• Baixa operação de E/S
83
VI Escola do CBPF
6. Exemplo de Algoritmo Paralelo
Algoritmo Paralelo para Calcular π
A estratégia para paralelisar
– Dividir o Loop em partes que podem ser executadas por tarefas
independentes
Tarefas para o cálculo de PI:
1. Cada tarefa executa sua parte do Loop um certa número de vezes
2. Cada tarefa pode fazer seu trabalho sem requerer qualquer informação
das outras tarefas (não existe dependência de dados)
3. Uma tarefa atua como master coletando os resultados
84
VI Escola do CBPF
6. Exemplo de Algoritmo Paralelo
Algoritmo Paralelo para Calcular π
Pseudo código
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
npoints = 10000
circle_count = 0
p = number of tasks
num = npoints/p
find out if I am MASTER or WORKER
do j = 1,num
generate 2 random numbers between 0 and 1
xcoordinate = random1
ycoordinate = random2
if (xcoordinate, ycoordinate) inside circle then
circle_count = circle_count + 1
end do
if I am MASTER
receive from WORKERS their circle_counts
compute PI (use MASTER and WORKER calculations)
else if I am WORKER
send to MASTER circle_count
endif
85
CBPF
Centro Brasileiro de
Pesquisas Físicas
Aula 2
Computação Distribuída
de Alto Desempenho
Marcelo Portes de Albuquerque
Nilton Alves
Marcelo Giovanni
VI Escola do CBPF – Rio de Janeiro
17 a 28 de julho de 2006