algoritmos paralelos - uffboeres/slidesoptativa2016/introalgparalelos.pdf · • jon von neumann...
TRANSCRIPT
Algoritmos Paralelos
Profa: Cristina Boeres
Sistemas de Informação IC – Instituto de Computação
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 não usar vários processadores?
• 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?
Por que tantos processadores
Por que tantos processadores
Por que tantos processadores
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
1a.16
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.17
“Grand Challenge” • 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.18
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.19
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.20
• 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
Movimento de Corpos Celestes
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
1a.22
• Inicialmente: um processador + memória + dispositivos – Um programa por vez
• Com desenvolvimento de Sistemas Operacionais – Multiprogramação
• Necessidade de maior poder computacional – Mainframes
• Desenvolvimento de processadores – Miniprocessadores e microprocessadores
• Nova realidade: estações de trabalho – E depois, desktops
Qual foi o marco na disponibilidade de processadores
Evolução nas comunicações
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
Num
ber o
f hos
ts (m
illio
ns (
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
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
Classificação de Sistemas Paralelos
Proposta por Flynn
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
Plataforma de Execução Paralela
SMPs (Symmetric MultiProcessors)
MPPs (Massively Parallel Processors)
Cluster ou NOWs (Network Of Worstations)
Grades Computacionais
Nuvens
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
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 Exemplos:
– Sun HPC 10000 (StarFire), SGI Altix, SGI Origin, IBM pSeries
– atualmente: • multiprocessadores multicores • heterogeneidade
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
Comunicação – troca de mensagens
Rede de interconexão:diferentes topologias – Fracamente acoplados
Escaláveis
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
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
MPPs ou Multicomputadores
HP/Compaq Alphaserver IBM BG/L Cray XT3
Intel IA32 IBM POWER5
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
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
– Possibilidade de compor um sistema de alto desempenho e um baixo custo (principalmente quando comparados com MPPs).
Cluster ou NOWs
... CPU CPU CPU
Mem. Mem. Mem.
requisições requisições requisições
“The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software” Herb Sutter, http://www.gotw.ca/publications/concurrency-ddj.htm
Power dissipation
Clock frequency
Cluster de computadores
• 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)
• Desta forma, um 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.
Máquinas atuais • Olhando melhor as máquinas modernas.....
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 (quadcore shared memory)
Intel Xeon processor with 6 cores and 6 L3 cache units
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 (Computational Grids) Utilização de computadores
– independentes – geograficamente distantes
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
Cluster
Workstation
Internet
MPP
MPP SMP
SMP
Computador convencional
Servidor
Workstation
Computação em Grid
Computação em Cluster foi estendido para computação ao longo dos sites distribuídos geograficamente conectados por redes metropolitanas
Grid Computing
Heterogêneos
Compartilhados
Aspectos que devem ser tratados
Segurança
Falhas de recursos
Gerenciamento da execução de várias aplicações
Computação em Grid
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.
Computação em Grid
O sucesso da computação em grid depende da comunidade de pesquisadores: – possibilidade de construir tal ambiente (hardware e
software) – Necessidade de atingir seus objetivos.
Computação em Grid
SETI@home: Search for Extraterrestrial Intelligence at Home
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).” (from setiathome.berkeley.edu/)
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).” (from setiathome.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
• 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 propos o uso de um “supercomputador virtual”
SETI@home: Search for Extraterrestrial Intelligence at Home
So, what will you be doing for us? What exactly will you be looking for in the data? The easiest way to answer that question is to ask what we expect extraterrestrials to send. We expect that they would want to send us a signal in the most efficient manner for THEM that would allow US to easily detect the message. ….. So, we're not looking for a broadband signal (spread over many frequencies), we're looking for a very specific frequency message. The SETI@home screen saver acts like tuning your radio set to various channels, and looking at the signal strength meter. If the strength meter goes up, that gets our attention.
What is SETI@home Looking for?
Computação em Grid
• 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 ambiente grids?
Computação em Grid
Como o usuário (dono da aplicação) escolhe?
• Vários middlewares existem, qual o mais apropriado? • Vários estão ainda sendo desenvolvidos • Não há a garantia de suporte • Pouca comparação entre os middlewares, por exemplo, desempenho,
grau de intrusão. • É difícil encontrar grids com o mesmo tipo de software instalado
Cloud Computing • 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
• Exemplos – Googleaps, facebook, amazon – Ex. de aplicação – gerenciamento de documentos distribuídos
geograficamente
Cloud Computing 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
• Heterogeneidade de recursos • os dois agregam recursos heterogêneos
• 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
• 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
Modelos de Programação Paralela
Expressão de Paralelismo: Paradigmas – SPMD ( Single Program Multiple Data ) – MPMD (Multiple Program Multiple Data )
Metas – aumento no desempenho – maior eficiência
Objetivos
Visão geral – arquitetura de computadores – ambientes de programação paralela – modelos de programação paralela
Motivar ⇒ Sistemas de Alto Desempenho