Algoritmos Paralelos
Prof
a: Cristina Boeres
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.
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
Computação Sequencial ou serial
Para solução de problemas, tradicionalmente resolvemos através de uma algoritmo sequencial
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
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
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...
Por que computação paralela e distribuída?
limites em processamento sequencial
velocidade da luz, termodinâmica
Por que computação paralela e distribuída?
Ao invés de um processador, vários processadores
Como são os ambientes atualmente?
Um computador possui atualmente vários processadores
Por que tantos processadores
O mundo real é massivamente paralelo
Eventos acontecem ao mesmo momento e em sequência
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;
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
“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)
Movimento de Corpos Celestes
Cada corpo é atra[ido pelo outro atrav[es de forças
gravitacionais
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)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:
Por que muitos processadores
Para economizar tempo e dinheiro
Teoricamente, mais recursos resolvem o problema
mais rapidamente – logo, economicamente mais barato
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
Disponibilidade de processadores
Desenvolvimento de processadores
Miniprocessadores e microprocessadores
Nova realidade: estações de trabalho
E depois, desktops
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 The'NetworkEffect’ kicks in, and the web
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
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
Plataforma de Execução Paralela
SMPs (Symmetric MultiProcessors)
MPPs (Massively Parallel Processors)
Cluster ou NOWs (Network Of Worstations)
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
SMPs ou Multiprocessadores
Exemplos:
Sun HPC 10000 (StarFire), SGI Altix, SGI Origin, IBM
pSeries
atualmente:
multiprocessadores multicores
heterogeneidade
SMPs ou Multiprocessadores
Exemplos:
Sun HPC 10000 (StarFire), SGI Altix, SGI Origin, IBM
pSeries
atualmente:
multiprocessadores multicores
SMPs ou Multiprocessadores
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
MPPs ou Multicomputadores
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
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
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
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
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)
Beowulf Clusters*
Grupo de computadores do tipo commodity que
atingem alto desempenho a baixo custo
Geralmente interconectados por uma rede de alta
Máquinas atuais
Vários níveis de chache: Level 1 (L1) cache Level 2 (L2) cache 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 Processor/ memory bus
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
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.
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
Grades Computacionais
Utilização de computadores
independentes
Grades Computacionais
Diferenças: clusters X grades
heterogeneidade de recursos
alta dispersão geográfica (escala mundial) compartilhamento
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
Grades Computacionais
Para executar uma aplicação eficientemente, middlewares
deve estar preparados para:
Dinamismo do sistema
Variedade de plataformas
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
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
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
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;
SETI@home: Search for Extraterrestrial
Intelligence at Home
“ETI@home is a scientific experiment that uses
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@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
SETI@home: Search for Extraterrestrial
Intelligence at Home
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)
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
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?
Cloud Computing
Computação em Nuvens
Exemplos
Googleaps, facebook, amazon
Exemplo de aplicação – gerenciamento de documentos
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
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
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
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)
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
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.
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
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
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
Por que paralelizar?
Aplicação Paralela
várias tarefas
vários processadores
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
Modelos de Programação Paralela
Expressão de Paralelismo: Paradigmas
SPMD ( Single Program Multiple Data )
MPMD (Multiple Program Multiple Data )
Metas
aumento no desempenho