algoritmos paralelos - uffboeres/slides_ap/introalgparalelos.pdf · jon von neumann especificou...
TRANSCRIPT
Algoritmos Paralelos
Profa: Cristina Boeres
Pós Graduação em Computação
Instituto de Computação - UFF
Bibliografia
J. Jájá, Introduction to Parallel Algorithms, Addison-Wesley, 1992.
Ian Foster , Designing and Building Parallel Programs, Addison-
Wesley , 1995. (online)
J. Dongarra et. al., Sourcebook of Parallel Computing, Morgan
Kaufmann, 2003.
T. G. Robertazzi, Networks and Grids - technology and theory,
Springer, 2007.
H. Casanova, A. Legrand and Y. Robert, Parallel Algorithms, CRC
Press, 2008.
S. Akl, Parallel Computation – Models and Methods , Prentice Hall
1997.
A. Grama, A. Gupta, G. Karypis, and V. Kumar Introduction to
Parallel Computing, 2nd edition, Addison-Wesley, 2003.
Artigos a serem definidos
Programa do Curso
Introdução e conceitos iniciais
Motivação
Introdução a tipos de arquiteturas paralelas
Modelo de Programação Paralela
Projeto de Algoritmos Paralelos
Programação com Threads
Execução Eficiente de Programas Paralelos
Computação Sequencial ou serial
Para solução de problemas, tradicionalmente resolvemos através
de uma algoritmo sequencial
O problema é especificado em uma sequência de instruções
executadas serialmente
Computação Sequencial ou serial
Jon Von Neumann especificou requisitos para computador eletrônico
em 1945
Instruções e dados devem ser armazenados na unidade de memória
Unidades principais:
CPU: unidade de controle e ALU
MP
I/O
Computação Sequencial ou serial
CPU: unidade de controle
Busca a próxima instrução
Decodifica
Executa (pela ALU, simplificando)
MP – memória de acesso aleatório guarda
código e dados
I/O – interface com o mundo externo
Por que computação paralela e distribuída?
Sistemas de computadores sequenciais cada vez mais velozes
velocidade de processador
memória
comunicação com o mundo externo
Quanto mais se tem, mais se quer......
Demanda computacional está aumentando cada vez mais:
visualização, base de dados distribuída, simulações, etc.
Por que computação paralela e distribuída?
limites em processamento sequencial
velocidade da luz, termodinâmica
custo X benefício
Por que computação paralela e distribuída?
Ao invés de um processador, vários processadores
Cada processador executa uma parte do programa
simultaneamente
Como são os ambientes atualmente?
Um computador possui atualmente vários processadores
Um ambiente computacional é constituído de vários computadores
(similares ou não)
Por que tantos processadores
O mundo real é massivamente paralelo
Eventos acontecem ao mesmo momento e em sequência
Como simular tal evento em sequência? Quanto tempo levaria?
Computação de Alto Desempenho
Os grandes desafios (Levin 1989):
química quântica, mecânica estatística e física relativista;
cosmologia e astrofísica;
dinâmica e turbulência computacional dos fluídos;
projeto de materiais e supercondutividade;
biologia, farmacologia, seqüência de genomas, engenharia
genética, dobramento de proteínas, atividade enzimática e
modelagem de células;
medicina, modelagem de órgãos e ossos humanos;
clima global e modelagem do ambiente
Demanda para velocidade computacional
Existem várias áreas que demandam processamento computacional mais veloz:
modelagem numérica
simulação de problemas científicos
Computação deve ser finalizada em um tempo razoável
1a.16
“GrandChallenge”
São problemas que não podem ser resolvidos em uma quantidade de tempo razoável nos computadores atuais
para resolver o problema computacionalmente, 10 anos seriam razoáveis?
Modelagem de estruturas longas de DNA
previsão de tempo global
simulação e modelagem do movimento de corpos celestes (astronomia)
1a.17
Movimento de Corpos Celestes
Cada corpo é atra[ido pelo outro atrav[es de forças gravitacionais
O movimento de cada corpo é previsto através do cálculo da força total de cada corpo
1a.18
Movimento de Corpos Celestes
Existindo N corpos
N – 1 cálculo de força para cada corpo
ou aproximadamente N2 cálculos, i.e. O(N2)
Depois deste cálculo, determinar as novas
posições dos corpos, repetindo esse
procedimento
N2 × T cálculos no total, sendo T o número de passos
* Existe um algoritmo O(N log2 N)
1a.19
Movimento de Corpos Celestes
A galáxia deve ter em torno de 1011 estrelas
Se cada cálculo da força leva em torno de 1 ms (sendo
extremamente otimista), então, são necessários:
109 anos para uma iteração utilizando um algoritmo N2
1a.20
Por que muitos processadores
Para economizar tempo e dinheiro
Teoricamente, mais recursos resolvem o problema
mais rapidamente – logo, economicamente mais
barato
Atualmente, ter vários processadores não é tão caro
Disponibilidade de processadores
Inicialmente: um processador + memória + dispositivos
Um programa por vez
Com desenvolvimento de Sistemas Operacionais
Multiprogramação
Necessidade de maior poder computacional
Mainframes
1a.22
Disponibilidade de processadores
Desenvolvimento de processadores
Miniprocessadores e microprocessadores
Nova realidade: estações de trabalho
E depois, desktops
1a.23
Evolução nas comunicações
1a.24
TCP/IP
HTML
Mosaic
XML
PHASE 1. Packet Switching Networks 2. The Internet is Born 3. The World Wide Web 4. with XML 5. The Grid
1969: 4 US Universities linked to form ARPANET TCP/IP becomes core protocol HTML hypertext system created 1972: First e-mail program created Domain Name System created
IETF created (1986)
CERN launch World Wide Web
1976: Robert Metcalfe develops Ethernet NCSA launch Mosaic interface
0
20
40
60
80
100
120
140
1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
The'NetworkEffect’
kicks in, and the web
goes critical'
Nu
mb
er
of h
osts
(mill
ion
s (
cortesia de Rajkumar Buyya
Arquitetura de Sistemas de Computadores
Uma classificação
Memória Centralizada
Memória Distribuída
Proposta por Flynn
quantidade de instruções e dados processados em um
determinado momento
1a.25
Classificação de Sistemas Paralelos
SISD (single instruction single data)
Um contador de programa
Computadores seqüenciais
SIMD (single instruction multiple data)
Um contador de programa, uma instrução executada por
diversos processadores sobre diferentes dados
Computadores paralelos como PRAM
1a.26
Classificação de Sistemas Paralelos
MISD (multiple instructions single data)
Não aplicável
MIMD (multiple instructions multiple data)
Vários contadores de programa
Diferentes dados
Os vários computadores paralelos e distribuídos atuais
1a.27
Plataforma de Execução Paralela
SMPs (Symmetric MultiProcessors)
MPPs (Massively Parallel Processors)
Cluster ou NOWs (Network Of Worstations)
Grades Computacionais
1a.28
SMPs ou Multiprocessadores
único espaço de endereçamento lógico
mecanismo de hardware (memória compartilhada)
comunicação espaço de endereçamento compartilhado
operações de loads e stores
Acesso a memória é realizada através de leitura
(load) e escrita (store), caracterizando desta forma, a
comunicação entre processadores
1a.29
SMPs ou Multiprocessadores
Sistema homogêneo
Compartilhamento total da mesma memória
Uma única cópia do Sistema Operacional
Imagem única do sistema
Excelente conectividade: fortemente acoplados
Não escalável
1a.30
SMPs ou Multiprocessadores
Exemplos:
Sun HPC 10000 (StarFire), SGI Altix, SGI Origin, IBM
pSeries
atualmente:
multiprocessadores multicores
heterogeneidade
1a.31
SMPs ou Multiprocessadores
Exemplos:
Sun HPC 10000 (StarFire), SGI Altix, SGI Origin, IBM
pSeries
atualmente:
multiprocessadores multicores
heterogeneidade
1a.32
MPPs ou Multicomputadores
Diferem quanto a implementação física
Módulos ou elementos de processamento contendo:
múltiplos processadores com memória privativa
computadores completos
Espaço de endereçamento
não compartilhado - memória distribuída
1a.34
MPPs ou Multicomputadores
Comunicação
troca de mensagens
Rede de interconexão:diferentes topologias
Fracamente acoplados
Escaláveis
1a.35
MPPs ou Multicomputadores
Sistema homogêneo ( ou heterogêneo )
Interconexão: redes dedicadas e rápidas
Cada nó executa sua própria cópia do Sistema
Operacional
Imagem única do sistema
visibilidade dos mesmos sistemas de arquivo
Um escalonador de tarefas
partições diferentes para aplicações diferentes 1a.36
MPPs ou Multicomputadores
Partições dedicadas a cada aplicação
Aplicações não compartilham recursos
Pode ocorrer que uma aplicação permaneça em estado
de espera
Exemplos:
Cray T3E, IBM SP2s, clusters montados pelo próprio
usuário, com propósito de ser um MPP
1a.37
Cluster de computadores ou NOWs
Conjunto de estações de trabalho ou PCs
Interconexão: redes locais
Nós: elementos de processamento = processador +
memória
Diferenças em relação a MPPs:
não existe um escalonador centralizado
redes de interconexão tendem a ser mais lentas
1a.39
Cluster de computadores ou NOWs
Resultado das diferenças:
Cada nó tem seu próprio escalonador local
Compartilhamento de recursos
sem partição dedicada a uma aplicação
Aplicação
deve considerar impacto no desempenho
não tem o sistema dedicado
1a.40
“TheFreeLunchIsOver:AFundamentalTurnTowardConcurrencyin
Software”HerbSutter,http://www.gotw.ca/publications/concurrency-ddj.htm
Power
dissipation
Clock
frequency
Cluster de computadores
Possibilidade de compor um sistema de alto desempenho
e um baixo custo (principalmente quando comparados
com MPPs).
Rede de computadores ser tornaram mais atraentes do
que adquirir um supercomputador (custo bem maior)
Possível atingir alto desempenho a um custo bem
menor (década 1990)
processador de última geração pode ser incluído no
sistema
Cluster de Computadores
E mais importante: portabilidade de software
Softwares existentes podem ser utilizados ou
facilmente adaptados
Projetos bastante conhecidos nesta época:
Berkeley NOW (network of workstations)
NASA Beowulf
Beowulf Clusters*
Grupo de computadores do tipo commodity que atingem alto desempenho a baixo custo
Geralmente interconectados por uma rede de alta velocidade como Ethernet, e utilizando sistema operacional Linux.
* Beowulf comes from name given by NASA Goddard Space Flight Center cluster
project.
Vários níveis de chache:
Level 1 (L1) cache
Level 2 (L2) cache
Level 3 (L3) chache
Processor
L2 Cache
Bus interface
L1 cache
Processor
L2 Cache
Bus interface
L1 cache
Processor
L2 Cache
Bus interface
L1 cache
Processor
L2 Cache
Bus interface
L1 cache
Memory controller
Memory
Processor/ memory b us
Shared memory
Máquinas atuais (quadcore shared memory)
Máquinas atuais (desde 2005)
Dual ou até multi-cores
Dois ou mais elementos de processamento em
independentes em um pacote
Na verdade, uma ideia antiga que não havia sido colocada em
pratica até recentemente. Os limitantes até então eram
baseados em limites tecnológicos:
Dissipação de energia (sempre um problema) e limitação
da frequência de relógio
Limites na velocidade de acesso a memória
GPU clusters
Última tendência dos clusters de computadores: incorporar
GPUs para atingir alta performance
Pelo menor três dos cinco computadores mais rápidos do
mundo possuem GPUs.
http://www.top500.org/
Top500 description
Na lista TOP500 ordenação e de acordo com:
1) Rmax
2) Rpeak
3) tamanho de memória
4) alfabética
Campos da lista:
Rank- Position within the TOP500 ranking
Location - Location and country
System – name, configuration and manufacturer
#Proc. - Number of processors (Cores)
Rmax - Maximal LINPACK performance achieved
Rpeak - Theoretical peak performance
Power - energy
Grades Computacionais
Diferenças: clusters X grades
heterogeneidade de recursos
alta dispersão geográfica (escala mundial)
compartilhamento
múltiplos domínios administrativos
controle totalmente distribuído
Grades Computacionais
Componentes
PCs, SMPs, MPPs, clusters
controlados por diferentes entidades diversos domínios administrativos
Não têm uma imagem única do sistema a princípio
Vários projetos tem proposto o desenvolvimento de middlewares de gerenciamento
camada entre a infraestrutura e as aplicações a serem executadas na grade computacional
Grades Computacionais
Para executar uma aplicação eficientemente, middlewares deve estar preparados para:
Dinamismo do sistema
Variedade de plataformas
Tolerância falhas
Grades Computacionais
Sistema não dedicado e diferentes plataformas
Usuários da grades devem obter autorização e
certificação para acesso aos recursos disponíveis na
grade computacional
Falhas nos recursos tanto de processamento como
comunicação são mais frequentes que as outras
plataformas paralelas
Mecanismos de tolerância a falhas devem tornar essas
flutuações do ambiente transparente ao usuário
Grades Computacionais
Para utilização eficiente da grade computacional
Gerenciamento da execução da aplicação através de
políticas de escalonamento da aplicação ou
balanceamento de carga
Escalonamento durante a execução da aplicação se faz
necessário devido as variações de carga dos recursos
da grade
Grades Computacionais
Internet
MPP
MPP SMP
SMP
Computador
convencional
Servidor
Workstation
Computador
convencional
desktop
notebook
Servidor
Grades Computacionais
Computação em Cluster foi estendido para computação ao
longo dos sites distribuídos geograficamente conectados
por redes metropolitanas
Ambientes tipicamente heterogêneos e compartilhados
Ainda, aspectos que devem ser tratados
Segurança
Falhas de recursos
Gerenciamento da execução de várias aplicações
Grades Computacionais
O sonho do cientista (The Grid Vision)
Computação em Grid adota tanto o nome quanto o
conceito semelhantes aqueles da Rede de Potência
Elétrica para capturar a noção ou a visão de:
Oferecer desempenho computacional eficientemente;
De acordo com a demanda;
A um custo razoável;
Para qualquer um que precisar
SETI@home: Search for Extraterrestrial
Intelligence at Home
“ETI@home is a scientific experiment that uses Internet-
connected computers in the Search for Extraterrestrial
Intelligence(SETI).”(fromsetiathome.berkeley.edu/)
SETI@home: Search for Extraterrestrial
Intelligence at Home A abordagem:
radio telescopes para ouvir sinais do espaço
tais sinais podem ser ruídos de origem celeste ou
provenientes da terra (estações de TV, radares e
satélites)
SETI analisa esse ruídos e digitalmente
SETI@home: Search for Extraterrestrial
Intelligence at Home A abordagem:
Maior poder computacional possibilita cobrir uma procura
maior de ruídos
Primeiramente – supercomputadores especiais foram
utilizados
Em 1995 (iniciado na verdade em 1999), David Gedye
propôsousodeum“supercomputadorvirtual”
Grades Computacionais
Grid middlewares: tem como objetivo facilitar a utilização
de um ambiente grid
APIs para isolar usuários ou programas da complexidade
deste ambiente
Gerenciar esses sistemas automaticamente e eficientemente
para executar aplicações no ambiente grid (grid-enabled
applications)
E as aplicações não habilitadas a execução em grades?
Grades Computacionais
Como o usuário (dono da aplicação) escolhe?
Vários middlewares existem, qual o mais apropriado?
Não há a garantia de suporte
Pouca comparação entre os middlewares
por exemplo, qual desempenho, grau de intrusão?
É difícil encontrar grids com o mesmo tipo de software
instalado
Cloud Computing
Computação em Nuvens
Computação provida como um serviço sobre a internet
Infra-estrutura geograficamente distribuída
Com algumas características de autonomic computing
Que características são essas?
O middleware não está embutido na aplicação
Cloud Computing
Computação em Nuvens
Exemplos
Googleaps, facebook, amazon
Exemplo de aplicação – gerenciamento de documentos
distribuídos geograficamente
Cloud Computing
Computação em Nuvens
Modelo econômico de utilização dos serviços
Ambiente que prove uma quantidade maior de serviços a
baixo custo
Baixo consumo de energia
Não acontece sem Virtualização
Diferenças entre Grid e Cloud Computing
AlHakami, H. et al, Comparison Between Cloud and Grid Computing:
Review Paper, in International Journal on Cloud Computing: Services
and Architecture (IJCCSA),Vol.2, No.4, August 2012
Recursos
os recursos na grade estão disponíveis e compartilhados
na nuvem, os recursos são providos de acordo com a
demanda
Diferenças entre Grid e Cloud Computing
AlHakami, H. et al, Comparison Between Cloud and Grid Computing:
Review Paper, in International Journal on Cloud Computing: Services
and Architecture (IJCCSA),Vol.2, No.4, August 2012
Heterogeneidade de recursos
os dois agregam recursos heterogêneos
Diferenças entre Grid e Cloud Computing
AlHakami, H. et al, Comparison Between Cloud and Grid Computing:
Review Paper, in International Journal on Cloud Computing: Services
and Architecture (IJCCSA),Vol.2, No.4, August 2012
Segurança
segurança do usuário não foi atacado em grades (mais
segurança de acesso)
no caso de nuvem, cada usuário tem seu ambiente virtual e
seguro
Diferenças entre Grid e Cloud Computing
AlHakami, H. et al, Comparison Between Cloud and Grid Computing:
Review Paper, in International Journal on Cloud Computing: Services
and Architecture (IJCCSA),Vol.2, No.4, August 2012
Gerenciamento
maior experiência no caso de grades
muito a fazer em nuvem
Features Grid Cloud
Resource Sharing Collaboration (VOs, fair share) not shared.
Virtualization Virtualization of data and
computing resources
Virtualization of hardware and
software platforms.
Security Security through credential
delegations
Security through isolation.
High Level Services Plenty of high level services. No high level services defined
yet.
Architecture Service orientated User chosen architecture.
Software Dependencies Application domain dependent
software
Application domain
independent software
Platform Awareness The client software must be Grid-
enabled
The software works on a
customized environment
Scalability Nodes and sites scalability Nodes, sites, and hardware
scalability
Standardization Standardization and interoperability Lack of standards for Clouds
interoperability.
User Access Access transparency for the end
user.
Access transparency for the
end user.
Payment Model Rigid Flexible
Definindo melhor alguns conceitos Concorrência
termo mais geral, um programa pode ser constituído por mais de
um thread/processo concorrendo por recursos
Paralelismo
uma aplicação é executada por um conjunto de processadores
em um ambiente único (dedicado)
Computação distribuída
aplicações sendo executadas em plataformas distribuídas
Definindo melhor alguns conceitos
Qualquer que seja o conceito, o que queremos?
estabelecer a solução do problema
lidar com recursos independentes
aumentar desempenho e capacidade de memória
fazer com que usuários e computadores trabalhem em espírito de
colaboração
O que paralelizar?
Pode estar em diferentes níveis de sistemas computacionais atuais
Hardware
Sistema Operacional
Aplicação
As principais questões que são focadas são
Desempenho
Corretude
Possibilidade de explorar o paralelismo
Por que paralelizar?
Aplicação Paralela
várias tarefas
vários processadores
redução no tempo total de execução
Modelos de Programação Paralela
Criação e gerenciamento de processos
estático ou dinâmico
Comunicação
memória compartilhada: visão de um único espaço de endereçamento
global
memória distribuída: troca explícita de mensagens