Algoritmos Paralelos - UFFboeres/slides_AP/IntroAlgParalelos.pdf · Jon Von Neumann especificou...

81
Algoritmos Paralelos Prof a : Cristina Boeres Pós Graduação em Computação Instituto de Computação - UFF

Transcript of Algoritmos Paralelos - UFFboeres/slides_AP/IntroAlgParalelos.pdf · Jon Von Neumann especificou...

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?

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

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

“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.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‏'Network‏Effect’

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

SMPs ou Multiprocessadores

1a.33

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

MPPs ou Multicomputadores

1a.38

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

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

“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

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.

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

Utilização de computadores

independentes

geograficamente distantes

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

Grades Computacionais

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 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ôs‏o‏uso‏de‏um‏“supercomputador‏virtual”

SETI@home: Search for Extraterrestrial

Intelligence at Home

Como está o projeto?

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

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