tese de doutorado francisco heron de carvalho junior rafael dueire lins orientador programação...

134
Tese de Doutorado Tese de Doutorado Francisco Heron de Carvalho Francisco Heron de Carvalho Junior Junior Rafael Dueire Lins Rafael Dueire Lins Orientador Orientador Programação Paralela Eficiente e de Alto Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas Nível sobre Arquiteturas Distribuídas

Upload: internet

Post on 17-Apr-2015

109 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Tese de DoutoradoTese de Doutorado

Francisco Heron de Carvalho JuniorFrancisco Heron de Carvalho Junior

Rafael Dueire LinsRafael Dueire LinsOrientadorOrientador

Programação Paralela Eficiente e de Alto Nível Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídassobre Arquiteturas Distribuídas

Page 2: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

AntecedentesAntecedentes

• Idéias de Idéias de LinsLins (a partir do final da década de 80); (a partir do final da década de 80);– Linguagens funcionais Linguagens funcionais paralelasparalelas;;

– Hierarquia de processos;Hierarquia de processos;

– Integração à Integração à ambienteambiente dede provaprova (redes de Petri); (redes de Petri);

– PrototipaçãoPrototipação rápida e rápida e simulaçãosimulação de programas; de programas;

– Incorporação de Incorporação de bibliotecasbibliotecas encapsuladasencapsuladas;;

• Desenvolvimentos anteriores:Desenvolvimentos anteriores:– Haskell#:Haskell#:

• Lima, 2000 (tese de doutorado);Lima, 2000 (tese de doutorado);

• Carvalho, 2000 (dissertação de mestrado);Carvalho, 2000 (dissertação de mestrado);

Page 3: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Motivações e Estado-da-ArteMotivações e Estado-da-ArteComputação de Alto DesempenhoComputação de Alto Desempenho

• Consolidação da Consolidação da supercomputação distribuídasupercomputação distribuída; ;

• MPP’s (MPP’s (Massive Parallel ProcessorsMassive Parallel Processors););– SupercomputadoresSupercomputadores propriamente ditos; propriamente ditos;

• ClusterCluster computingcomputing;;– Supercomputação com Supercomputação com equipamento de prateleiraequipamento de prateleira ( (commoditiescommodities););

– Excelente Excelente relação custo / benefíciorelação custo / benefício frente à MPP’s; frente à MPP’s;

– Evolução do Evolução do hardwarehardware e e softwaresoftware;;

– Aumento na Aumento na escala de usuáriosescala de usuários (supercomputação para todos); (supercomputação para todos);

• Grid computingGrid computing;;– Supercomputação Supercomputação geograficamente distribuídageograficamente distribuída;;

– Aplicações paralelas de Aplicações paralelas de grande escalagrande escala e e complexidadecomplexidade;;

• Novas aplicações extrapolam Novas aplicações extrapolam computação científicacomputação científica;;

Page 4: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Motivações e Estado-da-ArteMotivações e Estado-da-Arte Ferramentas de Programação ParalelaFerramentas de Programação Paralela

• Paralelismo implícitoParalelismo implícito é ineficiente e pouco escalável; é ineficiente e pouco escalável;

• Programação paralela distribuída (Programação paralela distribuída (explícitaexplícita););

• Passagem de mensagens:Passagem de mensagens:

– Parallel Virtual MachineParallel Virtual Machine (PVM): ambientes heterogêneos; (PVM): ambientes heterogêneos;

– Message Passing InterfaceMessage Passing Interface (MPI): ambientes homogêneos ( (MPI): ambientes homogêneos (clustersclusters atuais); atuais);

Eficiência, portabilidade e escalabilidade Eficiência, portabilidade e escalabilidade ::

– Primitivas de Primitivas de baixo nívelbaixo nível como funções de bibilotecas; como funções de bibilotecas;

Modularidade, abstração, tratamento formal, etc.Modularidade, abstração, tratamento formal, etc.::

– Inadequação ao desenvolvimento de Inadequação ao desenvolvimento de programas de grande escalaprogramas de grande escala;;

– Entrelaçamento de código;Entrelaçamento de código;

– Inadequação às modernas técnicas de desenvolvimento de Inadequação às modernas técnicas de desenvolvimento de softwaresoftware;;

– Simplicidade relativa !!! Simplicidade relativa !!!

Page 5: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

ObjetivoObjetivo

Desenvolvimento do modelo # para programação paralela Desenvolvimento do modelo # para programação paralela distribuída como uma evolução à Haskell#, assumindo-se distribuída como uma evolução à Haskell#, assumindo-se premissas advindas no panorama tecnológico emergente premissas advindas no panorama tecnológico emergente

para computação de alto desempenhopara computação de alto desempenho

• Tópicos Específicos:Tópicos Específicos:

– Concepção do modelo #;Concepção do modelo #;• Análise das deficiências de Haskell# original, proposição e avaliação de Análise das deficiências de Haskell# original, proposição e avaliação de

soluções, implementação de protótipos;soluções, implementação de protótipos;

– Uso de Redes de Petri para tratamento formal de programas #;Uso de Redes de Petri para tratamento formal de programas #;

– Implementar nova versão para Haskell# baseado no modelo #;Implementar nova versão para Haskell# baseado no modelo #;

– Implementar aplicações e avaliar desempenho;Implementar aplicações e avaliar desempenho;

– Prototipação do ambiente # de desenvolvimento (VHT);Prototipação do ambiente # de desenvolvimento (VHT);

Page 6: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

EstruturaEstrutura

• Motivações e Objetivos;Motivações e Objetivos;• O modelo #;O modelo #;• Análise de programas # com redes de Petri;Análise de programas # com redes de Petri;• Implementação (Haskell#);Implementação (Haskell#);• Avaliação de desempenho;Avaliação de desempenho;• Conclusões;Conclusões;• Propostas de trabalhos futuros.Propostas de trabalhos futuros.

Page 7: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

EstruturaEstrutura

• Motivações e objetivos;Motivações e objetivos;• O modelo #;O modelo #;• Análise de programas # com redes de Petri;Análise de programas # com redes de Petri;• Implementação de Haskell#;Implementação de Haskell#;• Avaliação de desempenho;Avaliação de desempenho;• Conclusões;Conclusões;• Propostas de trabalhos futuros.Propostas de trabalhos futuros.

Page 8: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O Modelo #O Modelo #

• A premissa básica: A premissa básica: Hierarquia de ProcessosHierarquia de Processos– Programação em dois níveis hierarquicamente distingüidos:Programação em dois níveis hierarquicamente distingüidos:

– Paradigma de coodenação;Paradigma de coodenação;

Nível de Coordenação

Nível de Computação

Interface via lazy streams

(“não invasiva”)

Linguagem Sequencial (Haskell)

Linguagem # (Configuração)

Page 9: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Conceito Primitivo:Conceito Primitivo: ComponentesComponentes

• Entidades que caracterizam Entidades que caracterizam funcionalidadesfuncionalidades;;

• Podem ser classificados em:Podem ser classificados em:– SimplesSimples: Computações : Computações sequenciais;sequenciais;

• Conjunto de componentes simples = Meio de computaçãoConjunto de componentes simples = Meio de computação

• Programados na linguagem Programados na linguagem host host (Haskell, no caso de Haskell#)(Haskell, no caso de Haskell#) ;;

– CompostosCompostos: Computações : Computações paralelasparalelas;;• Conjunto de componentes compostos = Meio de coordenaçãoConjunto de componentes compostos = Meio de coordenação

• Programados na linguagem #, pela composição de outros componentes;Programados na linguagem #, pela composição de outros componentes;

#

Argumentos Pontos de Retorno

Page 10: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Programa # = Coleção Programa # = Coleção de Componentesde Componentes

#

#

#

#

Page 11: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Hierarquia de ProcessosHierarquia de Processos

Nível de Coordenação (#)

#

#

# #

#

Nível de Computação ()

Componente de Aplicação (raiz)

Page 12: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

• Em nível de Em nível de computaçãocomputação::– Programação sequencial Programação sequencial convencionalconvencional;;

– Em Haskell# = Em Haskell# = HaskellHaskell;;

• Em nível de Em nível de coordenaçãocoordenação– Linguagem #:Linguagem #: configuração de componentes; configuração de componentes;

– Descrição de topologias de processos;Descrição de topologias de processos;

– Composição de componentes:Composição de componentes:• AninhamentoAninhamento de componentes; de componentes;

• SobreposiçãoSobreposição de componentes; de componentes;

• Suporte a noção de Suporte a noção de esqueletos topológicos parciaisesqueletos topológicos parciais;;

Estruturando Programas #Estruturando Programas #

Próximos Slides!!

Page 13: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Nível de Coordenação

Capturando a Essência da Programação Paralela

Distribuída(passagem de mensagens)

A Linguagem # A Linguagem # (abstrações)(abstrações)Nível de CoordenaçãoNível de Coordenação

Page 14: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Especificando ComponentesEspecificando ComponentesConfiguração #Configuração #

Processos interagem por troca explícita de mensagens

recv a 1

x:=x+1

0

1

3

2

4

send a 0

send buf 2

print a

Page 15: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

0

1

3

2

4

Especificando ComponentesEspecificando ComponentesConfiguração #Configuração #

Page 16: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Portas e UnidadesPortas e Unidades

unidade… …

Portas de Saída

Portas de Entrada

Page 17: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Unidades e Unidades e InterfacesInterfaces

• Componentes compostos descrevem redes de Componentes compostos descrevem redes de unidadesunidades, que , que interagem por meio de interagem por meio de canais de comunicaçãocanais de comunicação;;

• Unidades Unidades (peças básicas)(peças básicas)::

– Abstração para Abstração para entidades executáveisentidades executáveis (generalização de processos); (generalização de processos);

• InterfaceInterface

– Classe de unidades que compartilham Classe de unidades que compartilham comportamento análogocomportamento análogo;;

– Analogia: Analogia: InterfacesInterfaces estão para estão para unidadesunidades, assim como:, assim como:

• TiposTipos de dadosde dados estão para estão para variáveisvariáveis, em programas;, em programas;

• ClassesClasses estão para estão para objetosobjetos em modelos orientados a objetos; em modelos orientados a objetos;

– Entidades primtivasEntidades primtivas, a partir das quais , a partir das quais unidadesunidades são são instanciadasinstanciadas;;

Page 18: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

InterfaceInterface

• Uma Uma interfaceinterface é descrita por: é descrita por:– Uma coleção de Uma coleção de portasportas ( (entradaentrada ou ou saídasaída););

– Uma expressão de ativação (comportamento):Uma expressão de ativação (comportamento):• Formalismo: Formalismo: Expressão regular controlada por semáforos;Expressão regular controlada por semáforos;

• Equivalência com Equivalência com redes de Petri rotuladas terminaisredes de Petri rotuladas terminais;;

• Descreve as Descreve as sequências válidassequências válidas de ativação das portas; de ativação das portas;

… …

Page 19: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Comportamento de UnidadesComportamento de UnidadesCombinadores da Expressão de AtivaçãoCombinadores da Expressão de Ativação

• parpar aa11 a a22 …a …ann :: concorrência; concorrência;

• seqseq aa11 a a22 …a …ann : : sequência;sequência;

• altalt aa11 a a22 …a …ann : : alternativa;alternativa;

• repeatrepeat aa :: repetição; repetição;– until : until : condição de terminação (finalização de condição de terminação (finalização de streamsstreams););

– counter : counter : número de repetições pré-fixadonúmero de repetições pré-fixado;;

– forever : forever : infinito;infinito;

• !! pidpid :: ativação de ativação de portaporta de saída; de saída;

• ?? pidpid : : ativação de ativação de portaporta de entrada; de entrada;

• signalsignal ss :: incremento de incremento de semáforosemáforo

• waitwait ss :: decremento de decremento de semáforosemáforo

Page 20: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Comunicação via Comunicação via LazyLazy StreamsStreams

• Sequências de dados com informação de mesma natureza;Sequências de dados com informação de mesma natureza;

vv11, , vv22, …, , …, vvnn;;

– Ao final, acompanha um Ao final, acompanha um terminador de terminador de stream stream ((EOSEOS));;

• Portas Portas streamstream::

– Sempre ativadas no contexto de combinadores Sempre ativadas no contexto de combinadores repeatrepeat;;

– Terminador de Terminador de streamstream e e condição de terminação de repetiçãocondição de terminação de repetição;;

• Múltiplos Múltiplos níveis de aninhamentoníveis de aninhamento ( (flagflag *): *):

– EOSEOS é acompanhado do aninhamento da é acompanhado do aninhamento da streamstream terminada; terminada;

– Transmissão de Transmissão de <<<<<<11>,<>,<22,,33>>,<<>>,<<33,,44>,<>,<55,,66,,77>>>>>>::

• [Val [Val 11, , Eos Eos 33, Val , Val 22, Val , Val 33, , Eos Eos 33, , Eos Eos 22, Val , Val 33, Val , Val 44, , Eos Eos 33, Val , Val 55,,

Val Val 66, Val , Val 77, , Eos Eos 33, , Eos Eos 22, , Eos Eos 11];];

Page 21: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Comunicação viaComunicação via Lazy Streams Lazy Streams

interface NestingExample t # (x*, y**::t) -> (z***::t) behavior: repeat seq {x?; z! repeat seq { y?; z!; repeat seq {x?; y?; z!} until z } until <y & z> } until <x & y & z>

zx

y

*

**

***[t]

[[t]][[[t]]]

• Em Haskell#:Em Haskell#:– Portas Portas streamstream são associadas à listas nos são associadas à listas nos argumentosargumentos e e pontos pontos

de retornode retorno do módulo funcional associado à unidade; do módulo funcional associado à unidade;

– Daí o conceito de Daí o conceito de LazyLazy streamsstreams;;

– Intercalação entre computação e comunicaçãoIntercalação entre computação e comunicação sem sem comprometimento da hierarquia de processos;comprometimento da hierarquia de processos;

Page 22: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Especificação de UnidadesEspecificação de Unidades

Agrupamento

de PortasPorta Individual

Page 23: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Função de LigaçãoFunção de Ligação

g f

Função de Ligação

+

Page 24: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Função de LigaçãoFunção de LigaçãoAgrupamentos Agrupamentos choicechoice

f!

+

f!+ …

Page 25: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

f!!!

Função de LigaçãoFunção de LigaçãoAgrupamentos não-Agrupamentos não-choicechoice

f!

!

!…

Page 26: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

UnidadesUnidades VirtuaisVirtuais

• Unidade Unidade parametrizadaparametrizada por sua por sua funcionalidadefuncionalidade::

– Não associada a um Não associada a um componentecomponente;;

• Operação Operação assignassign::

– Substituindo uma Substituindo uma unidade virtualunidade virtual por uma por uma unidade não-virtualunidade não-virtual;;

– Preservação comportamental;Preservação comportamental;

• Esqueletos topológicos parciaisEsqueletos topológicos parciais ou ou componente abstratoscomponente abstratos::

– Pelo menos uma Pelo menos uma unidade virtualunidade virtual em sua composição; em sua composição;

– Composição por Composição por sobreposiçãosobreposição e e aninhamentoaninhamento;;

– Descrições topológicas de alto nível:Descrições topológicas de alto nível:

• Geração de código otimizado (uso de bibliotecas);Geração de código otimizado (uso de bibliotecas);

• Mapeamento de processos aos processadores;Mapeamento de processos aos processadores;

• Melhora capacidade de raciocínio sobre programas;Melhora capacidade de raciocínio sobre programas;

Page 27: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Configurando Componentes Configurando Componentes AbstratosAbstratos

… …assign cell # (s,l) -> (n,o) to pipeline.stage # l -> o

pipe_line

stage

assigncell

Page 28: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Sobrepondo Componentes Sobrepondo Componentes AbstratosAbstratos

… …

pipe_linemesh

stage

… … assigncell

assign mesh.cell # (s,l) -> (n,o) to pipeline.stage # l -> o

Page 29: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Sobrepondo Componentes Sobrepondo Componentes AbstratosAbstratos

…… …

meshpipe_line

Page 30: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Operações sobre Operações sobre Unidades VirtuaisUnidades Virtuais

• Mecanismo de abstração;Mecanismo de abstração;

• Operações suportadas:Operações suportadas:– UnificaçãoUnificação: : nn unidades unidades 11 unidade; unidade;

– FatoraçãoFatoração: : 11 unidade unidade nn unidades; unidades;

– ReplicaçãoReplicação: : kk unidades unidades kk**nn unidades; unidades;

• Unidades Unidades à direitaà direita em em qualquerqualquer nível de aninhamento; nível de aninhamento;

• Preservação comportamental:Preservação comportamental:– Sequências de ativação válidasSequências de ativação válidas na interface das na interface das unidades unidades

resultantesresultantes deve ser um sub-conjunto das sequências válidas nas deve ser um sub-conjunto das sequências válidas nas unidades originaisunidades originais..

• Agrupamentos aninhados de portas;Agrupamentos aninhados de portas;– Semântica de ativação em redes de Petri;Semântica de ativação em redes de Petri;

Page 31: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Unificação de UnidadesUnificação de Unidades

wA

wB

cell

wa<-a e cell<-a conectadas à portas distintas

i

j

i j

i

wb<-b e cell<-b conectadas à mesma porta

i

a

mmb

c

d

res

choice

unify

c

d

res

res

b

b

a

a

unit wA # FarmWorker unit wB # FarmWorkerunit cell # GridElem…interface FarmWorker # in -> out behavior: seq {in?; out!}…interface GridElem # (l,u) -> (r,d) behavior: repeat seq { par {r!; d!}; par {l?; t?} }

interface MatrixMult # FarmWorker a -> res, # FarmWorker b -> res, # interact like GridElem behavior: seq {a?;b?; do interact; res!}unify wA # a -> res,

wB # b -> res, cell # interact to mm # MatrixMult connections a<>: choice

Page 32: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Fatoração de UnidadesFatoração de Unidades

someStrategy

factorize

pipe[1]

pipe[2]

pipe[3]

s1s4

s4

s4

s2

s3

index i range [1,3]…factorize merge3 # [/s[i]/] -> o to [/pipe[i] # Pipe s[i] -> o/] connections o<>: someStrategy

unit merge3 # Merge3…interface Merge3 # Pipe s1 -> s4 # Pipe s2 -> s4 # Pipe s3 -> s4 behavior: repeat seq {par {s1?; s2?; s3?}; s4!} until <s1 & s2 & s3 & s4>

merge3

s2s1 s3

s4

Page 33: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Replicação de UnidadesReplicação de Unidades

u2

u1

broadcast choice

someStrategy1 someStrategy2

replicate

replicate 3 u1 # a -> (b,_), u2 # (_,c) -> d connections a<>: someStrategy1, b<>: someStrategy2, c<>: broadcast, d<>: choice

a

d

b

c

x

y

u2[1]

u1[1]

u2[2]

u1[2]

u2[3]

u1[3]

a a ab b b

dc dc dc

x

y

x

y

x

y

Page 34: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Esqueleto Esqueleto FarmFarm

distributor collector

worker[1]

worker[2]

worker[N]

? ?

Page 35: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Esqueleto Esqueleto Pipe-LinePipe-Line

interface Pipe # in -> out behavior: repeat seq {in? -> out!} until <in & out>

pipe[1] pipe[2] pipe[N]

Page 36: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Esqueleto Esqueleto MeshMesh

… … …

interface GridElem # Pipe l -> r # Pipe u -> d behaving as: repeat seq {par {r!;d!}; par {l?;t?}} until <r & d & l & t>

Page 37: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Esqueleto Esqueleto TorusTorus

… … …

Page 38: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

par

titi

on b

y D

istr

ibu

teM

atri

x

com

bin

e by

C

omb

ineM

atri

x

partition by ?

par

titi

on b

y ?

com

bine b

y ?

index i,j range [1,N]…[/ assign matrix_mult[i][j] # (al,bt) -> (ar,bd,res) to mm_grid[i][j] # (al,bt) -> (ar,bd,res)

/]

assign mA to farmA.distributor

assign mB to farmB.distributor

assign mC to collector

index i,j range [1,N]…[/ assign matrix_mult[i][j] to mm_grid[i][j] /]

Page 39: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Esqueletos MPIEsqueletos MPI

• Abstração das primitivas de Abstração das primitivas de comunicação coletivacomunicação coletiva de MPI; de MPI;

– Tradução direta realizada pelo compilador;Tradução direta realizada pelo compilador;

• 13 esqueletos: 13 esqueletos: BcastBcast, , ScatterScatter, , ScattervScatterv, , Reduce_scatterReduce_scatter, ,

ScanScan, , GatherGather, , GathervGatherv, , ReduceReduce, , AllgatherAllgather, , AllgathervAllgatherv, ,

AlltoallAlltoall, , AlltoallvAlltoallv, , AllreduceAllreduce;;

• Esqueletos podem informar ao compilador informações de Esqueletos podem informar ao compilador informações de

alto nível sobre topologia da rede;alto nível sobre topologia da rede;

– Geração de código otimizado;Geração de código otimizado;

– Otimização da alocação de processadores;Otimização da alocação de processadores;

– Simplicicação da rede de Petri equivalente;Simplicicação da rede de Petri equivalente;

Page 40: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Implementação de NPBImplementação de NPB

• NAS = NAS NAS = NAS Parallel BenchmarksParallel Benchmarks

– NASA Research at Ames, EUANASA Research at Ames, EUA;;

• Kernels: Kernels: EPEP, , ISIS, , CGCG;;

– Extensivo uso de Extensivo uso de comunicação coletivacomunicação coletiva;;

– Usadas nos Usadas nos benchmarksbenchmarks mostrados adiante; mostrados adiante;

• Aplicações Simuladas: Aplicações Simuladas: LULU, , SPSP e e BTBT;;

• Padrão SPMD:Padrão SPMD:

– Derivação de programas # a partir de programas MPI;Derivação de programas # a partir de programas MPI;

Page 41: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Implementação de ISImplementação de IS

MPI_Alltoallv(key_buff1, send_count, send_displ, MPI_INT, key_buff2, recv_count, recv_displ, MPI_INT, MPI_COMM_WORLD );

MPI_Allreduce(bucket_size, bucket_size_totals, NUM_BUCKETS+TEST_ARRAY_SIZE, MPI_INT, MPI_SUM, MPI_COMM_WORLD );

MPI_Send(&key_array[total_local_keys-1], 1, MPI_INT, my_rank+1, 1000, MPI_COMM_WORLD );

MPI_Irecv(&k, 1, MPI_INT, my_rank-1, 1000, MPI_COMM_WORLD, &request );

kb2 kb1 bst bs

klkr IIS

Page 42: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Declaração de InterfaceDeclaração de Interface

interface IIS # bs* like IAllReduce # kb* like IAllToAllv # k like RShift behaviour: seq {repeat seq {do bs; do kb} until <bs & kb>; do k}

kRShift

IAllReduceIAllToAllvkb bs

Page 43: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Implementação de ISImplementação de ISp[4]

p[1]

p[2]

p[3]

AllReduce

Topology

unit bs_comm

unit bs_comm as AllReduce(4, MPI_SUM, MPI_INTEGER)

Page 44: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

AlltoAllv

Topology

p[4]

p[1]

p[2]

p[3]

unit kb_comm

unit kb_comm as AllToAllv(4)

Implementação de ISImplementação de IS

Page 45: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

p[4]

p[1]

p[2]

p[3]

k_shift

unit k_shift as RShift(4)

Implementação de ISImplementação de IS

Page 46: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

AlltoAllv

Topology

is_unit[4]

is_unit[1]

is_unit[2]

is_unit[3]

AllReduce

Topology

Implementação de ISImplementação de IS

Page 47: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

… …… …

is_unit[i]

kb_comm.p[i] bs_comm.p[i]

k_shift.p[i]

unify bs_comm.p[i] # bs, kb_comm.p[i] # kb, k_shift.p[i] # k to is_unit[i] # IIS

Implementação de ISImplementação de IS

Page 48: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

AlltoAllv

Topology

is_unit[4]

is_unit[1]

is_unit[2]

is_unit[3]

AllReduce

Topology

IS

IS

IS

IS

Implementação de ISImplementação de IS

Page 49: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

IS

IS

IS

IS

Haskell Programming

Implementação de ISImplementação de IS

Page 50: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Implementation of ISImplementation of ISconfiguration IS<PROBLEM_CLASS, NUM_PROCS, MAX_KEY_LOG2, NUM_BUCKETS_LOG2, TOTAL_KEYS_LOG2, MAX_ITERATIONS, MAX_PROCS, TEST_ARRAY_SIZE> with

use ISuse Skeletons.Collective.AllReduceuse Skeletons.Collective.AllToAllvuse Skeletons.Misc.RShift

index i range [1..NUM_PROCS]

interface IIS # bs* like IAllReduce # kb* like IAllToAllv # k like RShift behaviour: seq {repeat seq {do bs; do kb} until <bs & kb>; do k}

unit bs_comm as AllReduce(NUM_PROCS, MPI_SUM, MPI_INTEGER)unit kb_comm as AllToAllv(NUM_PROCS) unit k_shift as RShift(NUM_PROCS)

[/ unify bs_comm.p[i] # bs, kb_comm.p[i] # kb, k_shift.p[i] # k to is_unit[i] # IIS as IS(PROBLEM_CLASS, NUM_PROCS, MAX_KEY_LOG2, NUM_BUCKETS_LOG2, TOTAL_KEYS_LOG2, MAX_ITERATIONS, MAX_PROCS, TEST_ARRAY_SIZE, bs.in, kb.in,k.in) -> (bs.out, kb.out, k.out)/]

Page 51: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Implementation of ISImplementation of ISconfiguration CG<DIM, COL_FACTOR, NA, NONZER, SHIFT, NITER, RCOND, ZVV> # () -> (zeta, x) with

use CGuse Transposeuse Skeletons.Collective.AllReduce

index i range [1..DIM]index j range [1..COL_FACTOR]

interface ICG # q** like ITranspose # r* like ITranspose # rho* like IAllReduce # aux* like IAllReduce # rnorm* like IAllReduce # norm_temp_1* like IAllReduce # norm_temp_2* like IAllReduce behaviour: seq {repeat seq {do bs; do kb} until <bs & kb>; do k}

unit q_comm as Transpose(DIM, COL_FACTOR)unit r_comm as Transpose(DIM, COL_FACTOR)unit rho_comm as AllReduce(NUM_PROCS, MPI_SUM, MPI_DOUBLE)unit aux_comm as AllReduce(NUM_PROCS, MPI_SUM, MPI_DOUBLE)unit rnorm_comm as AllReduce(NUM_PROCS, MPI_SUM, MPI_DOUBLE)unit norm_temp_1_comm as AllReduce(NUM_PROCS, MPI_SUM, MPI_DOUBLE)unit norm_temp_2_comm as AllReduce(NUM_PROCS, MPI_SUM, MPI_DOUBLE)

Page 52: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Implementation of ISImplementation of IS[/ unify q_comm.u[i] # q, r_comm.u[i] # r, rho_comm.p[i] # rho, aux_comm.p[i] # aux, rnorm_comm.p[i] # rnorm, norm_temp_1_comm.p[i] # norm_temp_1, norm_temp_2_comm.p[i] # norm_temp_2 to cg_unit[i] # ICG as CG(DIM, COL_FACTOR, NA, NONZER, SHIFT, NITER, RCOND, ZVV, q.x, r.x, rho.in, aux.in, rnorm.in, norm_temp_1.in, norm_temp_2.in) -> (q.w, r.w, rho.out, aux.out, rnorm.out, norm_temp_1.out, norm_temp_2.out)/]configuration Transpose(DIM, COL_FACTOR)

index i,j range [1..DIM]index k range [1..COL_FACTOR]

interface ITranspose (x::UDVector) -> (w::UDVector) behaviour: seq {w!; x?}

[/ unit trans[i][j] # ITranspose groups (x<DIM>, w<DIM>:broadcast) /]

[/ connect trans[i][j]->w[k] to trans[k][i]->x[j] /]

[/ factorize trans[i][j] # w -> x to [/ u[(.i-1)*COL_FACTOR + k[.j]] # w -> x /] connections w<>:sum_arrays, x<>:split_vector/]

Page 53: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

EstruturaEstrutura

• Motivações e objetivos;Motivações e objetivos;• O modelo #;O modelo #;• Análise de programas # com redes de Petri;Análise de programas # com redes de Petri;• Implementação de Haskell#;Implementação de Haskell#;• Avaliação de desempenho;Avaliação de desempenho;• Conclusões;Conclusões;• Propostas de trabalhos futuros.Propostas de trabalhos futuros.

Page 54: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Modelo # e Redes de PetriModelo # e Redes de Petri

• Tradução da rede de processos para redes de Petri;Tradução da rede de processos para redes de Petri;

• Análise de propriedades formais de programas:Análise de propriedades formais de programas:

– INA (INA (Integrated Net AnalyserIntegrated Net Analyser) e PEP;) e PEP;

• Avaliação de desempenho de programas:Avaliação de desempenho de programas:

– Redes de Petri estocásticas;Redes de Petri estocásticas;

– SPNL e TimeNET;SPNL e TimeNET;

• Antecedentes:Antecedentes:

– Tradução OCCAM Tradução OCCAM redes de Petri (Lins & Maciel); redes de Petri (Lins & Maciel);

– Tracução Haskell# Tracução Haskell# redes de Petri (Lima); redes de Petri (Lima);

• Versão anterior de Haskell#;Versão anterior de Haskell#;

Page 55: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Modelando Comportamento de Modelando Comportamento de UnidadesUnidades

… …… ………

Expressão de Ativação Rede de Petri

Page 56: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Modelando o Comportamento Modelando o Comportamento de Unidadesde Unidades

• Regras de tradução para os Regras de tradução para os combinadorescombinadores;;

– Redes de Petri hierárquicas;Redes de Petri hierárquicas;

• Modelagem da Modelagem da ativação de portasativação de portas::

– Porta individual;Porta individual;

– Agrupamentos de Portas (Agrupamentos de Portas (choicechoice e não- e não-choicechoice););

• Semântica da escolha entre portas Semântica da escolha entre portas choicechoice;;

• Modelagem de Modelagem de agrupamentos aninhadosagrupamentos aninhados;;

• Condição de terminação do combinador Condição de terminação do combinador repeatrepeat;;

– Natureza valor mais recente transmitido por uma porta Natureza valor mais recente transmitido por uma porta streamstream; ;

– Dependente do Protocolo de finalização sincronizada de Dependente do Protocolo de finalização sincronizada de streamsstreams;;

Page 57: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Modelagem de Canais de Modelagem de Canais de ComunicaçãoComunicação

synchronous

Page 58: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Modelagem de Canais de Modelagem de Canais de ComunicaçãoComunicação

buffered

Page 59: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Modelagem de Canais de Modelagem de Canais de ComunicaçãoComunicação

ready

Page 60: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Modelagem da Natureza do Modelagem da Natureza do Valor Transmitido em StreamsValor Transmitido em Streams

• Natureza do valor transmitido em uma Natureza do valor transmitido em uma streamstream::

– Valor de dados;Valor de dados;

– Terminador de Terminador de stream stream em aninhamento em aninhamento k k ((EOSEOS k k););

• Necessário para modelagem de Necessário para modelagem de repeat … untilrepeat … until; ;

• Em um Em um canalcanal, a natureza do valor , a natureza do valor enviadoenviado deve coincidir com a deve coincidir com a

natureza do valor natureza do valor recebidorecebido;;

• Restrições na ordem de transmissão de terminadores de Restrições na ordem de transmissão de terminadores de streamsstreams;;

• Protocolo de finalização de Protocolo de finalização de streamsstreams é inserido para cada canal; é inserido para cada canal;

– LugaresLugares e e transiçõestransições adicionais que modelam às restrições de adicionais que modelam às restrições de streamsstreams;;

Page 61: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Modelagem de EsqueletosModelagem de Esqueletos

• A tradução direta de esqueletos pode ser usada para A tradução direta de esqueletos pode ser usada para

simplificar a rede de Petri gerada;simplificar a rede de Petri gerada;

• ExemploExemplo: Modelagem de esqueletos MPI:: Modelagem de esqueletos MPI:

– Cada componente de interface derivada de um esqueleto MPI é Cada componente de interface derivada de um esqueleto MPI é

modelada por uma única porta cuja direção é indiferente modelada por uma única porta cuja direção é indiferente

– Uma Uma interação coletivainteração coletiva é modelada como uma sincronização entre é modelada como uma sincronização entre

as porta de cada processo envolvidas na comunicação coletiva;as porta de cada processo envolvidas na comunicação coletiva;

• Essa informcão é obtida a partir do aglomerado associado ao Essa informcão é obtida a partir do aglomerado associado ao

esqueleto MPI em questão;esqueleto MPI em questão;

Page 62: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

• Estudos de Caso:Estudos de Caso:– Jantar dos FilósofosJantar dos Filósofos; (2 soluções); (2 soluções)– Simulação do Simulação do Protocolo do Protocolo do BitBit Alternado Alternado;;

• Ferramentas: Ferramentas: INAINA e e PEPPEP;;• Técnicas:Técnicas:

– Propriedades Propriedades comportamentaiscomportamentais e e estrututuraisestrututurais;;– Computação (parcial) de Computação (parcial) de grafo de estadosgrafo de estados e e grafo de coberturagrafo de cobertura;;– Teste de alcançabilidade de marcações;Teste de alcançabilidade de marcações;– Teste de Teste de livenessliveness;;– Computação e teste de invariantes;Computação e teste de invariantes;

• Verificação de propriedades:Verificação de propriedades:– deadlocksdeadlocks;;– Justiça;Justiça;– Grau de Grau de paralelismoparalelismo ou concorrência; ou concorrência;

Análise de Propriedades Formais Análise de Propriedades Formais de Programas #de Programas #

Padrões comportamentais

regulares

Page 63: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Jantar dos FilósofosJantar dos Filósofos Solução 1 Solução 1

• Situação geral;Situação geral;

• Presença de Presença de agrupamentos de portasagrupamentos de portas;;

• Filósofos disputam talheres Filósofos disputam talheres arbitrariamentearbitrariamente::

– Ocorrência de Ocorrência de deadlocksdeadlocks;;

– Solução assíncrona (canais “Solução assíncrona (canais “bufferizados”bufferizados”););

– Justiça Justiça condicionalcondicional (escalonamento fortemente justo); (escalonamento fortemente justo);

• Modelagem com redes de Petri:Modelagem com redes de Petri:

– Modelando um processo filósofo;Modelando um processo filósofo;

– Introduzindo protocolo de finalização de streams;Introduzindo protocolo de finalização de streams;

– Conectando redes de Petri dos processos filósofos;Conectando redes de Petri dos processos filósofos;

Page 64: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Jantar dos FilósofosJantar dos Filósofos Solução 2 Solução 2

• Filósofos estabelecem Filósofos estabelecem protocoloprotocolo::

– Máximo paralelismo;Máximo paralelismo;

– Justiça incondicional;Justiça incondicional;

– Ausência de Ausência de deadlocksdeadlocks;;

– Comunicação Comunicação síncronasíncrona (canais síncronos); (canais síncronos);

– Não emprega agrupamentos de portas (Não emprega agrupamentos de portas (simplicidadesimplicidade))

• Modelagem com redes de Petri:Modelagem com redes de Petri:

– Modelando um processo filósofo;Modelando um processo filósofo;

– Introduzindo protocolo de finalização de streams;Introduzindo protocolo de finalização de streams;

– Conectando redes de Petri dos procConectando redes de Petri dos processos filósofosessos filósofos;;

Page 65: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Protocolo do Bit Alternado Protocolo do Bit Alternado Solução ÚnicaSolução Única

• Pode ser visto como um esqueleto (não-total):Pode ser visto como um esqueleto (não-total):

– Modelagem de protocolos de comunicação de canais;Modelagem de protocolos de comunicação de canais;

• Unidades heterogêneas;Unidades heterogêneas;

• Presença de Presença de streamsstreams com aninhamento > 1; com aninhamento > 1;

• Modelagem com redes de Petri;Modelagem com redes de Petri;

• Verificação de Verificação de deadlocksdeadlocks;;

– Empregando o teste de Empregando o teste de alcançabilidade marcações mortasalcançabilidade marcações mortas a partir a partir

do grafo de estados não foram encontrados do grafo de estados não foram encontrados deadlocksdeadlocks;;

Page 66: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

EstruturaEstrutura

• Motivações e objetivos;Motivações e objetivos;• O modelo #;O modelo #;• Análise de programas # com redes de Petri;Análise de programas # com redes de Petri;• Implementação de Haskell#;Implementação de Haskell#;• Avaliação de desempenho;Avaliação de desempenho;• Conclusões;Conclusões;• Propostas de trabalhos futuros.Propostas de trabalhos futuros.

Page 67: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Compilador #Compilador #

• Implementado em Haskell:Implementado em Haskell:

– Gerador de Gerador de analisador léxicoanalisador léxico: : Alex 2.0;Alex 2.0;

– Gerador de Gerador de parserparser : : Happy 1.11;Happy 1.11;

• Geração de código Haskell com chamadas à Geração de código Haskell com chamadas à MPIMPI via via FFIFFI

((Foreign Function InterfaceForeign Function Interface););

• Processos # implementados como Processos # implementados como funções de alta ordemfunções de alta ordem;;

– Entrada: Entrada: autômato de validação do processoautômato de validação do processo..

• Induzido pelo comportamento de cada processo;Induzido pelo comportamento de cada processo;

– Tipos de processos suportados:Tipos de processos suportados:

• Assícronos (fluxo de controle): Assícronos (fluxo de controle): CC, , FortranFortran;;

• Orientado a demanda pela saída: Orientado a demanda pela saída: HaskellHaskell;;

• Controlado pelo fluxo de entrada: Controlado pelo fluxo de entrada: IdId;;

Page 68: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

VHT (Visual # Tool)VHT (Visual # Tool)

• Ambiente integrado para a programação #:Ambiente integrado para a programação #:

– Programação visual;Programação visual;

– Uso de XML como formato de intercâmbio;Uso de XML como formato de intercâmbio;

– Geração de código na linguagem # a partir das especificações visuais;Geração de código na linguagem # a partir das especificações visuais;

– Integração à ferramentas de análise de redes de Petri;Integração à ferramentas de análise de redes de Petri;

• Geração de código Geração de código PNMLPNML e e SPNLSPNL;;

– Execução do programa e Execução do programa e debugingdebuging;;

• Integrado ao LAM-MPI;Integrado ao LAM-MPI;

• Possível integração a ferramentas de Possível integração a ferramentas de debuggingdebugging de programas MPI; de programas MPI;

• EmEm fasefase desenvolvimento (prototipação).desenvolvimento (prototipação).

Page 69: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

EstruturaEstrutura

• Motivações e objetivos;Motivações e objetivos;• O modelo #;O modelo #;• Análise de programas # com redes de Petri;Análise de programas # com redes de Petri;• Implementação de Haskell#;Implementação de Haskell#;• Avaliação de desempenho;Avaliação de desempenho;• Conclusões;Conclusões;• Propostas de trabalhos futuros.Propostas de trabalhos futuros.

Page 70: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Avaliação de DesempenhoAvaliação de Desempenho

• NAS Parallel BenchmarksNAS Parallel Benchmarks

– EPEP, , CGCG e e ISIS;;

• Ambiente de Ambiente de HardwareHardware::

– Cluster de PC’s: 8 Pentium IV 2GHzCluster de PC’s: 8 Pentium IV 2GHz

– RAM:RAM: 4 x 256MB, 2 X 512MB, 1 X 1GB 4 x 256MB, 2 X 512MB, 1 X 1GB

– Fast Ethernet (100MBs).Fast Ethernet (100MBs).

• Ambiente de Ambiente de SoftwareSoftware::

– Protocolo de rede: TCP/IP;Protocolo de rede: TCP/IP;

– LAM-MPI 6.5.9;LAM-MPI 6.5.9;

– Glasgow Haskell Compiler (GHC) 6.0;Glasgow Haskell Compiler (GHC) 6.0;

• Uso de ferramentas de Uso de ferramentas de profilingprofiling para análise de custos; para análise de custos;

Page 71: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Avaliação de DesempenhoAvaliação de DesempenhoRestrições e MetodologiaRestrições e Metodologia

• Diferenças entre as versões imperativa (C/Fortran) e Diferenças entre as versões imperativa (C/Fortran) e funcional (Haskell) dos funcional (Haskell) dos kernelskernels;;– Comportamento espacial (uso da memória);Comportamento espacial (uso da memória);– Maior granularidade de processos Haskell:Maior granularidade de processos Haskell:

• Ilusão de ser Haskell# muito mais eficiente que MPI;Ilusão de ser Haskell# muito mais eficiente que MPI;

• Metodologia:Metodologia:– Cáculo de tempo de execução e Cáculo de tempo de execução e speedupspeedup;;

• Cronometragem segundo os kernels originais;Cronometragem segundo os kernels originais;

– Casos: Sequencial; Paralelo: Casos: Sequencial; Paralelo: 22, , 44 e e 88 processadores; processadores;– Uso de Uso de profilingprofiling para análise dos pontos de ineficiência; para análise dos pontos de ineficiência;– 22 Tamanhos de Problema para cada kernel: Tamanhos de Problema para cada kernel:

• EP-1, EP-2, IS-1, IS-2, CG-1, CG-2;EP-1, EP-2, IS-1, IS-2, CG-1, CG-2;

Page 72: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Avaliação de DesempenhoAvaliação de Desempenho Curvas de DesempenhoCurvas de Desempenho

• EP: EP: speedupspeedup aproxima-se ao linear (ótimo); aproxima-se ao linear (ótimo);

• CGCG e e ISIS merecem atenção especial: merecem atenção especial:

– Uso extensivo de Uso extensivo de comunicação coletivacomunicação coletiva;;

– Presença de Presença de funções de ligaçãofunções de ligação;;

– SpeedupSpeedup não comporta-se linearmente: não comporta-se linearmente:

• Mesmo efeito observado nas versões originais MPI;Mesmo efeito observado nas versões originais MPI;

• Rede de alta latência;Rede de alta latência;

• ClusterCluster pouco sintonizado para execução em alto desempenho; pouco sintonizado para execução em alto desempenho;

– GHC Profiling ToolGHC Profiling Tool: estudo dos : estudo dos custoscustos do paralelismo; do paralelismo;

Page 73: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Avaliação de DesempenhoAvaliação de Desempenho Curvas de DesempenhoCurvas de Desempenho

• Custos observados:Custos observados:

i.i. Computação efetiva (trabalho útil);Computação efetiva (trabalho útil);

ii.ii. Avaliação de funções de ligação;Avaliação de funções de ligação;

iii.iii. ““Marshalling”Marshalling” (de valores Haskell a (de valores Haskell a buffersbuffers MPI); MPI);

iv.iv. Sincronização e Comunicação (MPI);Sincronização e Comunicação (MPI);

v.v. Gerenciamento Automático de Memória;Gerenciamento Automático de Memória;

Page 74: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Análise de Custos (IS)Análise de Custos (IS)

CasoCaso ProcsProcs.. ii iiii iiiiii iviv vv

IS-1IS-1

SEQSEQ 45,9%45,9% -- -- -- 54,1%54,1%

22 35,4%35,4% 3,0%3,0% 7,4%7,4% 4,6%4,6% 45,3%45,3%

44 37,6%37,6% 3,0%3,0% 7,2%7,2% 11,0%11,0% 35,7%35,7%

88 36,0%36,0% 2,7%2,7% 7,2%7,2% 20,8%20,8% 28,7%28,7%

IS-2IS-2

SEQSEQ 34,5%34,5% -- -- -- 65,5%65,5%

22 -- -- -- -- --

44 35,3%35,3% 2,8%2,8% 6,8%6,8% 11,7%11,7% 38,9%38,9%

88 32,8%32,8% 2,7%2,7% 7,0%7,0% 21,1%21,1% 32,6%32,6%

Page 75: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Análise de Custos (CG)Análise de Custos (CG)

CasoCaso ProcsProcs.. ii iiii iiiiii iviv vv

CG-1CG-1

SEQSEQ 90,2%90,2% -- -- -- 9,8%9,8%

22 79,1%79,1% 1,5%1,5% 2,1%2,1% 4,7%4,7% 7,7%7,7%

44 70,9%70,9% 1,8%1,8% 3,2%3,2% 11,6%11,6% 5,8%5,8%

88 57,5%57,5% 3,5%3,5% 5,6%5,6% 24,0%24,0% 2,7%2,7%

CG-2CG-2

SEQSEQ 84,5%84,5% -- -- -- 15,5%15,5%

22 68,5%68,5% 1,2%1,2% 1,7%1,7% 10,8%10,8% 11,6%11,6%

44 70,2%70,2% 1,5%1,5% 2,5%2,5% 12,9%12,9% 6,3%6,3%

88 61,1%61,1% 3,2%3,2% 5,1%5,1% 19,5%19,5% 4,5%4,5%

Page 76: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Análise de G.A.M. (IS)Análise de G.A.M. (IS)

CasoCaso NPROCSNPROCSEficiência Eficiência de coletade coleta

Tempo de Tempo de coletacoleta

Speedup Speedup coletorcoletor

Speedup Speedup mutadormutador

IS-1IS-1

SEQSEQ 38,1%38,1% 112,3112,3 -- --

22 36,1%36,1% 72,872,8 1,51,5 1,41,4

44 29,3%29,3% 28,128,1 4,04,0 2,72,7

88 25,9%25,9% 15,115,1 7,47,4 4,24,2

IS-2IS-2

SEQSEQ 41,4%41,4% 247,7247,7 -- --

22 38,9%38,9% 168,0168,0 1,41,4 1,31,3

44 34,4%34,4% 70,570,5 3,53,5 2,62,6

88 27,5%27,5% 31,931,9 7,77,7 4,14,1

Page 77: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Análise de G.A.M. (CG)Análise de G.A.M. (CG)

CasoCaso NPROCSNPROCSEficiência Eficiência de coletade coleta

Tempo de Tempo de coletacoleta

Speedup Speedup coletorcoletor

Speedup Speedup mutadormutador

CG-1CG-1

SEQSEQ 5,5%5,5% 143,1143,1 -- --

22 5,7%5,7% 72,272,2 1,91,9 2,02,0

44 4,9%4,9% 39,839,8 3,63,6 3,13,1

88 0,8%0,8% 4,74,7 30,430,4 4,44,4

CG-2CG-2

SEQSEQ 5,5%5,5% 350,5350,5 -- --

22 5,7%5,7% 152,0152,0 2,32,3 1,81,8

44 4,9%4,9% 61,161,1 5,75,7 3,13,1

88 0,8%0,8% 16,216,2 21,521,5 5,05,0

Page 78: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Análise de Análise de SpeedupSpeedup (IS) (IS)

CasoCaso NPROCSNPROCS ii + ii+ ii + iii+ iii + iv+ iv + v+ v

IS-1IS-1

22 2,12,1 1,91,9 1,61,6 1,51,5 1,21,2

44 4,14,1 3,83,8 3,23,2 2,62,6 2,52,5

88 7,57,5 7,07,0 5,95,9 4,04,0 4,44,4

IS-2IS-2

22 1,91,9 1,81,8 1,51,5 -- --

44 4,14,1 3,83,8 3,23,2 2,52,5 2,52,5

88 8,08,0 7,37,3 6,16,1 4,14,1 4,54,5

Page 79: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Análise de Análise de SpeedupSpeedup (CG) (CG)

CasoCaso NPROCSNPROCS ii + ii+ ii + iii+ iii + iv+ iv + v+ v

CG-1CG-1

22 2,02,0 2,02,0 1,91,9 1,81,8 1,91,9

44 3,93,9 3,83,8 3,63,6 3,23,2 3,23,2

88 7,97,9 7,47,4 6,76,7 4,94,9 5,35,3

CG-2CG-2

22 2,12,1 2,02,0 2,02,0 1,71,7 1,81,8

44 4,04,0 3,93,9 3,73,7 3,23,2 3,43,4

88 8,08,0 7,67,6 7,07,0 5,55,5 6,06,0

Page 80: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Influência da Coleta de LixoInfluência da Coleta de LixoResumoResumo

• Sobrecarga do G.A.M. diminui com o tamanho do problema:Sobrecarga do G.A.M. diminui com o tamanho do problema:

– Maior localidade dos dados;Maior localidade dos dados;

– Efeitos de Efeitos de cachecache;;

– Nas medições, utilizou-se o “tamanho ótimo” da Nas medições, utilizou-se o “tamanho ótimo” da heapheap;;

– Algoritmos de coleta não se comportam linearmente;Algoritmos de coleta não se comportam linearmente;

• Mais processadores Mais processadores menor tamanho de problema por menor tamanho de problema por

processador processador menor sobrecarga de gerenciamento menor sobrecarga de gerenciamento

automático de memória;automático de memória;

– Compensação do custo Compensação do custo 33;;

– Pode-se assumir nulo o custo de Pode-se assumir nulo o custo de run-timerun-time de Haskell#; de Haskell#;

• OBS:OBS: Marshalling Marshalling pode ser otimizado (dependente de GHC); pode ser otimizado (dependente de GHC);

Page 81: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

EstruturaEstrutura

• Motivações e objetivos;Motivações e objetivos;• O modelo #;O modelo #;• Análise de programas # com redes de Petri;Análise de programas # com redes de Petri;• Implementação de Haskell#;Implementação de Haskell#;• Avaliação de desempenho;Avaliação de desempenho;• Conclusões;Conclusões;• Propostas de trabalhos futuros.Propostas de trabalhos futuros.

Page 82: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

ConclusõesConclusões

• O modelo # oferece um arcabouço de alto nível para programação O modelo # oferece um arcabouço de alto nível para programação paralela, em qualquer escala, sobre arquiteturas distribuídas, sem paralela, em qualquer escala, sobre arquiteturas distribuídas, sem comprometimento inerente de comprometimento inerente de eficiênciaeficiência;;– Advento de Advento de grid computinggrid computing e e cluster computingcluster computing;;

• Programas de larga escala e topologias complexas;Programas de larga escala e topologias complexas;

– Total abstração entre os meios de Total abstração entre os meios de coordenaçãocoordenação e e computaçãocomputação;;– A noção de A noção de modularidademodularidade é levada ao extremo: é levada ao extremo:

• Favorece e estimula a Favorece e estimula a reusabilidadereusabilidade de componentes; de componentes; • Suporte a Suporte a composição hierárquicacomposição hierárquica;;• Suporte à noção de Suporte à noção de esqueletosesqueletos;;• Suporte à separação de módulos entrelaçados (Suporte à separação de módulos entrelaçados (aspectosaspectos););

– Suporte à programação em Suporte à programação em larga escalalarga escala::• Não torna complicada a programação em Não torna complicada a programação em pequena escalapequena escala;;

– Tradução direta para MPI (Tradução direta para MPI (eficiênciaeficiência e e portabilidadeportabilidade););– Suporte multi-lingual;Suporte multi-lingual;– Análise formal de propriedades e desempenho com redes de Petri;Análise formal de propriedades e desempenho com redes de Petri;

Page 83: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

EstruturaEstrutura

• Motivações e objetivos;Motivações e objetivos;• O modelo #;O modelo #;• Análise de programas # com redes de Petri;Análise de programas # com redes de Petri;• Implementação de Haskell#;Implementação de Haskell#;• Avaliação de desempenho;Avaliação de desempenho;• Conclusões;Conclusões;• Propostas de trabalhos futuros.Propostas de trabalhos futuros.

Page 84: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Propostas de Trabalhos FuturosPropostas de Trabalhos Futuros

• Técnicas de Técnicas de alocação de processosalocação de processos à processadores: à processadores:

– Uso de esqueletos topológicos;Uso de esqueletos topológicos;

• Implementação de extensões # multi-linguais:Implementação de extensões # multi-linguais:

– Módulos funcionais em C, Fortran, JAVA;Módulos funcionais em C, Fortran, JAVA;

– Adaptação ao problema em consideração;Adaptação ao problema em consideração;

– HaskellHaskell é ideal para prototipação; é ideal para prototipação;

• Interfaces com Interfaces com bibliotecas científicasbibliotecas científicas::

– Bibliotecas, paralelizadas ou não, são largamente utilizadas em computação Bibliotecas, paralelizadas ou não, são largamente utilizadas em computação

científica;científica;

• PetsC, Lapack, IMSL, etc.PetsC, Lapack, IMSL, etc.

– Abstração por meio de esqueletos topológicos parciais;Abstração por meio de esqueletos topológicos parciais;

– Modelo # oferece naturalmente tal capacidade;Modelo # oferece naturalmente tal capacidade;

Page 85: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Propostas de Trabalhos FuturosPropostas de Trabalhos Futuros

• Ferramentas de alto nível para suporte à Ferramentas de alto nível para suporte à análise de análise de

propriedades formaispropriedades formais com redes de Petri: com redes de Petri:

– Implementação no topo de Implementação no topo de INA INA ee PEP PEP;;

– Integração à Integração à VHTVHT;;

• Ferramentas de alto nível para suporte à Ferramentas de alto nível para suporte à análise e simulação análise e simulação

de desempenhode desempenho de programas com redes de Petri e de programas com redes de Petri e

simuladores de rede:simuladores de rede:

– Implementações no topo Implementações no topo TimeNETTimeNET e e NS NS ((NetworkNetwork SimulatorSimulator););

• Estudos comparativos;Estudos comparativos;

– Integração à Integração à VHTVHT;;

Page 86: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Tese de DoutoradoTese de Doutorado

Francisco Heron de Carvalho JuniorFrancisco Heron de Carvalho Junior

Rafael Dueire LinsRafael Dueire LinsOrientadorOrientador

Programação Paralela Eficiente e de Alto Nível Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídassobre Arquiteturas Distribuídas

Page 87: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O Modelo #O Modelo #Ponto de Partida: Ponto de Partida: Limitações Limitações de Haskell#de Haskell#

• Hierarquia de processosHierarquia de processos restringe expressividade: restringe expressividade:

– Dificuldade para expressar padrões iterativos de paralelismo;Dificuldade para expressar padrões iterativos de paralelismo;

– Não permite intercalação de Não permite intercalação de comunicaçãocomunicação e e computaçãocomputação;;

• Reusabilidade restrita aos Reusabilidade restrita aos módulos funcionaismódulos funcionais;;– Pouco poder composicional em nível de coordenação;Pouco poder composicional em nível de coordenação;

……

1.Receber (portas de entrada) 2.Efetuar computação (main)3.Enviar (portas de saída)

ordem deleitura

ordem deescrita

Page 88: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O Modelo #:O Modelo #: Intercalação entre Intercalação entre computaçãocomputação e e comunicaçãocomunicação::

• Essencial em muitos padrões de interação; Essencial em muitos padrões de interação;

• Como não comprometer a Como não comprometer a hierarquia de processoshierarquia de processos ? ?

• A solução está em Haskell:A solução está em Haskell:– O conceito de comunicação via O conceito de comunicação via lazylazy streamsstreams;;

• Ativações de portas: Ativações de portas: linguagem recursivamente enumerávellinguagem recursivamente enumerável;;

• Redes de Petri: subconjunto das Redes de Petri: subconjunto das ling. sensíveis ao contextoling. sensíveis ao contexto;;

• Expressões regulares sincronizadas por semáforos;Expressões regulares sincronizadas por semáforos;– Equivalência com redes de PetriEquivalência com redes de Petri

– Usadas na especificação do Usadas na especificação do comportamento de processoscomportamento de processos;;

– A noção primitiva de interfaceA noção primitiva de interface; ;

Page 89: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O Modelo #O Modelo #

Page 90: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

MotivaçõesMotivações

• Até a década de 80Até a década de 80– Supercomputação paralela restrita a grandes centros de Supercomputação paralela restrita a grandes centros de

pesquisa e indústrias;pesquisa e indústrias;– Tecnologia de interesse estratégico de países Tecnologia de interesse estratégico de países

desenvolvidos, sobretudo EUA;desenvolvidos, sobretudo EUA;– Supercomputadores Supercomputadores vetoriaisvetoriais e MPP’s (alto custo). e MPP’s (alto custo).

• A partir de meado da década de 80 (Bell 2002)A partir de meado da década de 80 (Bell 2002)– Consolidação das Consolidação das arquiteturas distribuídasarquiteturas distribuídas;;– Cluster computing (“Cluster computing (“Supercomputing for allSupercomputing for all”);”);

• Supercomputadores construídos com Supercomputadores construídos com hardwarehardware de prateleira; de prateleira;

– Novas classes de usuários para Novas classes de usuários para supercomputaçãosupercomputação::

Page 91: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

MotivaçõesMotivações

Page 92: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

MotivaçõesMotivações

• Centros de pesquisa em diversas áreas:Centros de pesquisa em diversas áreas:– Matemáticos, físicos, engenheiros, biólogos, químicos, etc.Matemáticos, físicos, engenheiros, biólogos, químicos, etc.

– Alta demanda de desempenho e uso de matemática avançados;Alta demanda de desempenho e uso de matemática avançados;

– Usuários leigos, com pouca habilidade em programação;Usuários leigos, com pouca habilidade em programação;

– Poucos recursos para contratar especialistas;Poucos recursos para contratar especialistas;

– Carência de programadores experientes em programação paralela eficiente Carência de programadores experientes em programação paralela eficiente sobre sobre clusters clusters para essas aplicações;para essas aplicações;

• Uso Uso comercialcomercial e e industrialindustrial tem se tornado comum: tem se tornado comum:– Bancos de dados de grande porte;Bancos de dados de grande porte;

– Sistemas de Mineração de dados;Sistemas de Mineração de dados;

– Simulações em indústrias:Simulações em indústrias:• Autombolística, aeroespacial, petrolífera, etc.;Autombolística, aeroespacial, petrolífera, etc.;

• Requisitos similares a computação científica;Requisitos similares a computação científica;

– Aplicações de maior complexidade estrutural.Aplicações de maior complexidade estrutural.

Page 93: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

MotivaçõesMotivações

• Carência por melhores ferramentas para o construção de Carência por melhores ferramentas para o construção de programas paralelos programas paralelos eficienteseficientes;;– ““Parallel Programming for allParallel Programming for all”;”;

– Tecnologia de programação não evoluiu com o aumento de Tecnologia de programação não evoluiu com o aumento de complexidade das aplicações;complexidade das aplicações;

• Programação paralela é mais dificil inerentemente;Programação paralela é mais dificil inerentemente;

– Linguagens hoje usadas em Linguagens hoje usadas em computação científicacomputação científica::• Alta eficiência;Alta eficiência;

• Uso de primitivas de baixo nível intercaladas com o código que Uso de primitivas de baixo nível intercaladas com o código que implementa as computações;implementa as computações;

• pouco nível de abstração para lidar com aplicações complexas:pouco nível de abstração para lidar com aplicações complexas:

• Programs difíceis de manter e depurar;Programs difíceis de manter e depurar;

• Exemplos: MPI, PVM, HPF etc;Exemplos: MPI, PVM, HPF etc;

Page 94: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Objetivo GeralObjetivo Geral

• A proposta e implementação de um A proposta e implementação de um novo modelo novo modelo para programação paralela explícitapara programação paralela explícita que atenda que atenda aos novos requisitos exigidos para o aos novos requisitos exigidos para o processo de processo de desenvolvimentodesenvolvimento eficienteeficiente de de aplicações aplicações complexascomplexas, as quais tem se tornado comuns, sobre , as quais tem se tornado comuns, sobre as as arquiteturas emergentes de supercomputaçãoarquiteturas emergentes de supercomputação ((clustersclusters e constelações, em especial); e constelações, em especial);

Page 95: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Um novo modelo para Um novo modelo para programação paralelaprogramação paralela

• Adaptado às modernas técnicas de eng. de Adaptado às modernas técnicas de eng. de softwaresoftware;;– Alto nível de abstração e modularidade;Alto nível de abstração e modularidade;– Reuso de componentes; Reuso de componentes;

• Alto desempenhoAlto desempenho, comparado à MPI;, comparado à MPI;• Simplicidade;Simplicidade;• Expressividade e Generalidade;Expressividade e Generalidade;• Análise de Análise de propriedades formaispropriedades formais de programas; de programas;• Fácil implementação no topo de MPI;Fácil implementação no topo de MPI;• Portabilidade;Portabilidade;

Page 96: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (“Hash”)O modelo # (“Hash”)

• Hierarquia de processos:Hierarquia de processos:– ““Mundo dos processos”Mundo dos processos” “Mundo das computações” “Mundo das computações”

• Modelos de coordenação (coodernação Modelos de coordenação (coodernação vs.vs. computação); computação);

– Execução paralela e computações (sequenciais) devem ser especificadas em Execução paralela e computações (sequenciais) devem ser especificadas em etapas etapas distintasdistintas do desenvolvimento do do desenvolvimento do software software paralelo;paralelo;

– A noção de “mundo dos processos” busca capturar a abstração do que A noção de “mundo dos processos” busca capturar a abstração do que chamamos de “chamamos de “essência da programação paralelaessência da programação paralela”:”:

• Processos interagem e sincronizam por meio de Processos interagem e sincronizam por meio de comunicaçãocomunicação;;

• No No mundo dos processosmundo dos processos, a ordem em que ocorrem as operações de comunicações é , a ordem em que ocorrem as operações de comunicações é suficiente para descrever o comportamento de um programa paralelo;suficiente para descrever o comportamento de um programa paralelo;

• A classe de comportamentos deve ser equivalente à a classe de comportamentos que A classe de comportamentos deve ser equivalente à a classe de comportamentos que podem ser descritos por podem ser descritos por redes de Petri;redes de Petri;

• Suporte a noção de esqueletos e composição hierárquica;Suporte a noção de esqueletos e composição hierárquica;

Page 97: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Componentes)O modelo # (Componentes)• ComponentesComponentes: as peças básicas para compor : as peças básicas para compor

programas paralelos sob modelo #;programas paralelos sob modelo #;

Componente

i1

ono1

i2

o2

in…

pontos de entrada

Pontos de saída

Page 98: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Componentes)O modelo # (Componentes)• Componentes realizam uma tarefa específica;Componentes realizam uma tarefa específica;• Existem dois tipos de componentes:Existem dois tipos de componentes:

– Simples:Simples:• Entidades de execução sequencial;Entidades de execução sequencial;• Implementam computações;Implementam computações;• Descritos em uma linguagem sequencial;Descritos em uma linguagem sequencial;

– Compostos:Compostos:• Entidades de execução paralela (“mundo dos processos”);Entidades de execução paralela (“mundo dos processos”);• Mecanismo hierárquico de composição de programas;Mecanismo hierárquico de composição de programas;

• Um componente composto define a aplicação:Um componente composto define a aplicação:– Componente de aplicação;Componente de aplicação;– Como descrever componentes compostos ?Como descrever componentes compostos ?

Page 99: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Interfaces)O modelo # (Interfaces)

• A noção primitiva de interfaceA noção primitiva de interface– Descrição comportamental de unidades paralelas;Descrição comportamental de unidades paralelas;

in* out

x*y*

((x2)·(y//z))z*

0-counter synchronized regular expression ( redes de Petri)

(in) · out

Interface_A

Interface_A

Interface_B

Page 100: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

10

i1

o2

o1unitA

unitB

merge

d* e

h

f*

c*

a*

b*

Int

[Int]

[Int]

Int

(Int, Float)

[Int]

Interface_B

Interface_A

Page 101: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Unidades)O modelo # (Unidades)

• Duas questões vêm à tona:Duas questões vêm à tona:

– Como definir o que uma unidade computa ?Como definir o que uma unidade computa ?• Unidades virtuais capturam somente o comportamento de Unidades virtuais capturam somente o comportamento de

comunicação da unidade em na rede;comunicação da unidade em na rede;

– Como componentes são integrados para compor Como componentes são integrados para compor aplicações ?aplicações ?

Page 102: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Unidades)O modelo # (Unidades)

• ProcessosProcessos: unidades cuja computação é descrita por um : unidades cuja computação é descrita por um componente simplescomponente simples;;– Processo são as unidades Processo são as unidades indivisíveisindivisíveis de programas dentro do de programas dentro do

modelo #;modelo #;

• ClustersClusters: unidades cuja computação é descrita por um : unidades cuja computação é descrita por um componente compostocomponente composto;;– Componentes podem ser aninhados a componentes;Componentes podem ser aninhados a componentes;

• Composição hierárquica (aninhamento) de programas;Composição hierárquica (aninhamento) de programas;

– Unidades podem ser entidade de execução paralela !!!Unidades podem ser entidade de execução paralela !!!

– Capturando hierarquias de exploração do paralelismo;Capturando hierarquias de exploração do paralelismo;• Constelaçãoes, cluster de multiprocessadores, etc.Constelaçãoes, cluster de multiprocessadores, etc.

Page 103: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Unidades)O modelo # (Unidades)

unitA

CompA(pode ser simples ou composto)a*

c

b[1]*

b[2]*

3

valor ignoradoArgumento passado

explicitamente

Page 104: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Unidades)O modelo # (Unidades)

• Visão hierárquica de um programaVisão hierárquica de um programa

Raiz é a unidade principal

Unidades nas folhas são processos

Units nos galhos são clusters

Page 105: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

EsqueletosEsqueletos de Algoritmos de Algoritmos

• Importante técnica de programação introduzida Importante técnica de programação introduzida por Cole no final da década de 80;por Cole no final da década de 80;

• Captura de padrões reusáveis de algoritmos, de Captura de padrões reusáveis de algoritmos, de forma a abstrair o programador das preocupações forma a abstrair o programador das preocupações relativas a sua implementação eficiente;relativas a sua implementação eficiente;– Foco em concorrência;Foco em concorrência;

• Hoje, muitas linguagens suportam esqueletos:Hoje, muitas linguagens suportam esqueletos:– Caliban, SCL, Eden, P3L, etc.Caliban, SCL, Eden, P3L, etc.– Foco no algoritmo;Foco no algoritmo;

Page 106: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Esqueletos)O modelo # (Esqueletos)

• Componentes com pelo menos uma Componentes com pelo menos uma unidade virtualunidade virtual são ditos são ditos componentes virtuaiscomponentes virtuais;;– Esqueletos topológicos parciais;Esqueletos topológicos parciais;

• Os uso de Os uso de esqueletosesqueletos provê informações de alto nível sobre a provê informações de alto nível sobre a topologia da rede de processos de um componente, topologia da rede de processos de um componente, permitindo:permitindo:– Otimização na alocação de processos;Otimização na alocação de processos;

– Melhor uso das primitivas de MPIMelhor uso das primitivas de MPI• Exemplo: esqueletos p/ abstração das primitivas de comunicação coletiva Exemplo: esqueletos p/ abstração das primitivas de comunicação coletiva

de MPI;de MPI;

– Maior poder para análise formal com redes de Petri;Maior poder para análise formal com redes de Petri;

Page 107: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # O modelo # (Exemplos de Esqueletos)(Exemplos de Esqueletos)

• Esqueleto Esqueleto Pipe-LinePipe-Line::

pipe[1] pipe[2] pipe[N]

Page 108: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Esqueletos)O modelo # (Esqueletos)

• Esqueleto Esqueleto FarmFarm::

distributor collector

worker[1]

worker[2]

worker[N]

? ?

Page 109: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Esqueletos)O modelo # (Esqueletos)

• Esqueleto Esqueleto MeshMesh : :

…… … …

Page 110: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # (Esqueletos)O modelo # (Esqueletos)

• Esqueleto Esqueleto TorusTorus::

…… … …

Page 111: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # O modelo # (Operações sobre Unidades Virtuais)(Operações sobre Unidades Virtuais)

• UnificaçãoUnificação– Compõe uma nova unidade a partir de um conjunto de Compõe uma nova unidade a partir de um conjunto de

unidades pré-existentes;unidades pré-existentes;

• FatorizaçãoFatorização– Toma uma unidade e a divide em várias unidades;Toma uma unidade e a divide em várias unidades;

– Inverse of unification;Inverse of unification;

• ReplicaçãoReplicação– Cria várias cópias de um única unidade;Cria várias cópias de um única unidade;

– Útil para operações de Útil para operações de paralelismo de dados paralelismo de dados distribuído;distribuído;

Page 112: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo # O modelo # (Operações sobre Unidades Virtuais)(Operações sobre Unidades Virtuais)

• Uma unidade não pode participar em mais de uma operação;Uma unidade não pode participar em mais de uma operação;

• Unidades originaisUnidades originais deixam de existir e são substituídas pelas deixam de existir e são substituídas pelas unidades resultantes;unidades resultantes;

• Comportamento das unidades originais é preservado; Comportamento das unidades originais é preservado; parcialmenteparcialmente pelas unidades resultantes; pelas unidades resultantes;

• Esqueleto e operações sobre unidades virtuais, podem ser usados Esqueleto e operações sobre unidades virtuais, podem ser usados para construir a para construir a topologia virtual da rede de processostopologia virtual da rede de processos; ; – Esqueletos podem ser Esqueletos podem ser sobrepostossobrepostos e e aninhadosaninhados;;

– Topologias complexas podem ser definidas de uma forma mais abstrata, Topologias complexas podem ser definidas de uma forma mais abstrata, estruturada e incentivando o reuso de componentes.estruturada e incentivando o reuso de componentes.

Page 113: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

O modelo #O modelo #

• Em um programa válido no modelo # …Em um programa válido no modelo # …– … … todos os canais são todos os canais são ponto-a-pontoponto-a-ponto;;– … … não existem unidades virtuaisnão existem unidades virtuais;;

• Mas como substituir unidades virtuais por não-virtuais ?Mas como substituir unidades virtuais por não-virtuais ?– Unidade não-virtual podem ser nomeadas para ocupar o papel Unidade não-virtual podem ser nomeadas para ocupar o papel

de uma unidade virtual, deixando esta de existir;de uma unidade virtual, deixando esta de existir;– O comportamento da unidade nomeada deve ser compatível O comportamento da unidade nomeada deve ser compatível

com o comportamento da unidade substituída;com o comportamento da unidade substituída;– Exemplo:Exemplo:

• Multiplicação de Matrizes (Multiplicação de Matrizes (próximo slidepróximo slide););

Page 114: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

FARM

FARM

TORUS

partition by ?

par

titi

on b

y ?

com

bine b

y ?

par

titi

on b

y D

istr

ibu

teM

atri

x

com

bin

e by

C

omb

ineM

atri

x

Page 115: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#

• Uma implementação para o modelo #:Uma implementação para o modelo #:– Componentes simplesComponentes simples descritos em descritos em HaskellHaskell;;– Componentes compostosComponentes compostos descritos em descritos em HCLHCL ( (Haskell# Haskell#

Configuration LanguageConfiguration Language););

• O uso de Haskell permite a ortogonalização entre os O uso de Haskell permite a ortogonalização entre os meios de meios de coordenaçãocoordenação e e computaçãocomputação;;– Listas Listas lazylazy são associadas aos pontos de entrada e saída; são associadas aos pontos de entrada e saída;– Cada elemento da lista é um valor que trafega por um canal;Cada elemento da lista é um valor que trafega por um canal;

• Linguagens de configuraçãoLinguagens de configuração são ideais quando a noção são ideais quando a noção de processo e canal de comunicação é explícita;de processo e canal de comunicação é explícita;– Simplicidade e alto grau de modularidade;Simplicidade e alto grau de modularidade;– Paradigma bastante empregado em sistemas distribuídos;Paradigma bastante empregado em sistemas distribuídos;

• Atualmente, ausência ou fraco suporte à esqueletos;Atualmente, ausência ou fraco suporte à esqueletos;

Page 116: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Visão Geral de HCLVisão Geral de HCL))

• Coleção de declarações que definem um Coleção de declarações que definem um componente compostocomponente composto::– Entidades:Entidades:

• Interfaces, unidades, canais, índices, componentes usados;Interfaces, unidades, canais, índices, componentes usados;

– Operações sobre unidades:Operações sobre unidades:• Unificação, fatoração, replicação e nomeação;Unificação, fatoração, replicação e nomeação;

– Ordem das declarações é irrelevante;Ordem das declarações é irrelevante;

• Gerenciando grande número de entidades; Gerenciando grande número de entidades; – Parâmetros estáticos;Parâmetros estáticos;– Notação indexada (Notação indexada (índicesíndices e e escopos de variaçãoescopos de variação) ;) ;– Expressões sobre índices, parâmetros e constantes;Expressões sobre índices, parâmetros e constantes;

Page 117: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Declarações HCLDeclarações HCL))

Parâmetro Estático

Ponto de Entrada Ponto de

Saída• Cabeçalho:Cabeçalho:

– Nome do componenNome do componen te;te;

– Parâmetro(s) estático(s);Parâmetro(s) estático(s);

– Ponto(s) de entrada e/ou saída;Ponto(s) de entrada e/ou saída;

• Exemplo:Exemplo:

component PIPE<@N> # in -> out withcomponent PIPE<@N> # in -> out with

(…)(…)

-- declarações-- declarações

Page 118: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Declarações HCLDeclarações HCL))

• Declarando Declarando componentescomponentes que serão usados: que serão usados:– Organizados em uma biblioteca hierárquica;Organizados em uma biblioteca hierárquica;

• Exemplos:Exemplos:

(…)(…)useuse modulemodule MatMultMatMultuseuse modulemodule ReadMatrixReadMatrix useuse modulemodule ShowMatrixShowMatrix

useuse configurationconfiguration Skeletons.Common. Skeletons.Common.TORUSTORUSuseuse configurationconfiguration Skeletons.Common. Skeletons.Common.MESHMESH

(…)(…)

ComponentesSimples

ComponentesCompostos

Page 119: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Declarações HCLDeclarações HCL))

Portas de Entrada

Portas de Saída

• Declarando Declarando interfacesinterfaces– Portas, restrições comportamentais e comportamento;Portas, restrições comportamentais e comportamento;

• Exemplo:Exemplo:

interface GridElem # (left,above) -> (right,below) behaving as Pipe # left -> right, behaving as Pipe # above -> below,

behaving as: repeat alt {

right! -> above! above! -> right! common: par {left?;above?} }

Page 120: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Declarações HCLDeclarações HCL))

• Declarando Declarando unidadesunidades;;• Exemplos:Exemplos:

virtualvirtual unitunit worker # Worker inp -> outp worker # Worker inp -> outp

unitunit random random asas Random seed -> rand_value Random seed -> rand_value ## IRandomIRandom seed -> rand_value seed -> rand_value

[/ [/ unitunit matmult[i][j] matmult[i][j] asas MatMult (N,a,b,l,t) -> (r,b,c) MatMult (N,a,b,l,t) -> (r,b,c) ## IMatMultIMatMult (a,b,l,t) -> (r,b,c)/] (a,b,l,t) -> (r,b,c)/]

Unidade virtual

Unidade não-virtual

Unidade não-virtual(notação indexada)

index i,j range [1, N]

Page 121: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Declarações HCLDeclarações HCL))

• Declarando Declarando canaiscanais;;• Exemplos:Exemplos:

connect distributor->out to worker<-in connect worker->out to collector<-in

connect * unitA->b[2] to merge<-f[1] buffered 10

Page 122: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Declarações HCLDeclarações HCL))

• Associando Associando pontos de entrada/saídapontos de entrada/saída do do componente para componente para portas de entrada/saída portas de entrada/saída das das unidades;unidades;

• Exemplo:Exemplo:bind unitA->b[1] to o1

bind pipe[1] <-in to in

bind pipe[N]->out to out

Page 123: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Declarações HCLDeclarações HCL))

wire function

• Operação de Operação de unificaçãounificação;;• Exemplos:Exemplos:•

unify wA # a -> res, wB # b -> res, cell # (a,b) -> (c,d) to mm # MatrixMult (a,b) -> (c,d,res)

connections choice a

Page 124: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Declarações HCLDeclarações HCL))

• Operação de Operação de fatoraçãofatoração;;• Exemplos:Exemplos:•

index i range [1,10]

factorize merge3 # [/s[i]/] -> o to [/pipe[i] # Pipe s[i] -> o/] connections some_strategy o

Page 125: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Declarações HCLDeclarações HCL))

• Operação de Operação de replicaçãoreplicação;;• Exemplos:Exemplos:

replicate 3 u1 # a -> (b,_), u2 # (_,c) -> d connections some_strategy1 a, some_strategy2 b, broadcast c, choice d

Page 126: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

A Linguagem Haskell#A Linguagem Haskell#((Declarações HCLDeclarações HCL))

• Operação de Operação de nomeaçãonomeação;;• Exemplos:Exemplos:

assign mB to farmB.distributor

assign unidade_X # (a,_) -> c to pipeline.pipe[1] # a -> c

Page 127: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Evolução de Haskell# em Evolução de Haskell# em relação a versão anteriorrelação a versão anterior

• Uma série de restrições tornavam Haskell# imprópria para especificação Uma série de restrições tornavam Haskell# imprópria para especificação da maioria das aplicações relevantes;da maioria das aplicações relevantes;

• A versão atual suporta A versão atual suporta maior expressividademaior expressividade;;– Consegue expressar um conjunto maior de padrões de interação entre Consegue expressar um conjunto maior de padrões de interação entre

processos, equiparado ao poder expressivo das redes de Petri P/T;processos, equiparado ao poder expressivo das redes de Petri P/T;– Intercalação entre Intercalação entre comunicaçãocomunicação e e computaçãocomputação sem comprometimento da sem comprometimento da

hierarquia de processos;hierarquia de processos;• Na versão anterior, processos não intercalavam comunicação e computação, uma Na versão anterior, processos não intercalavam comunicação e computação, uma

suposição bastante restritiva;suposição bastante restritiva;

• Fortalecimento da Fortalecimento da hierarquia de processoshierarquia de processos;;• Reuso de componentes à nível de coordenação;Reuso de componentes à nível de coordenação;

– Somente módulos funcionais Somente módulos funcionais podiampodiam ser reusados; ser reusados;– Suporte a esqueletos e componentes aninhados;Suporte a esqueletos e componentes aninhados;

Page 128: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Trabalhos em AndamentoTrabalhos em Andamentopara Conclusão da Tesepara Conclusão da Tese

• Implementação de Haskell#;Implementação de Haskell#;– Geração de código MPI;Geração de código MPI;

• Implementação dos esqueletos MPI;Implementação dos esqueletos MPI;

– Tradução de código HCL para PNML (Tradução de código HCL para PNML (Petri Net Petri Net Markup LanguageMarkup Language););

• Interface para ferramentas de análise de propriedadses formais Interface para ferramentas de análise de propriedadses formais de progrmas baseados em redes de Petri;de progrmas baseados em redes de Petri;

– VHT (Visual Haskell# Tool);VHT (Visual Haskell# Tool);• Atualmente sendo implementado em JAVA;Atualmente sendo implementado em JAVA;

• Suporte ao modelo # de programação;Suporte ao modelo # de programação;

Page 129: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Trabalhos em AndamentoTrabalhos em Andamentopara Conclusão da Tesepara Conclusão da Tese

• Avaliação da linguagem Avaliação da linguagem – Desempenho, expressividade e adequabilidade a Desempenho, expressividade e adequabilidade a

aplicações científicas e de engenharia reais;aplicações científicas e de engenharia reais;– BenchmarksBenchmarks,, comparando comparando speedupspeedup de aplicações de aplicações

Haskell# com implementações MPI destas;Haskell# com implementações MPI destas;• NAS Parallel Benchmarks;NAS Parallel Benchmarks;

– Aplicações reaisAplicações reais, com o fim de avaliar a linguagem do , com o fim de avaliar a linguagem do ponto de vista da engenharia de software parealelo;ponto de vista da engenharia de software parealelo;

• Simulação de bacias petrolíferas;Simulação de bacias petrolíferas;• Climate System Model (CSM);Climate System Model (CSM);

• Modificações sintáticas na linguagem ainda Modificações sintáticas na linguagem ainda podem ocorrerpodem ocorrer eventualmente; eventualmente;

Page 130: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Trabalhos FuturosTrabalhos Futuros

• O desenvolvimento do ambiente Haskell# nos O desenvolvimento do ambiente Haskell# nos sugere uma série de trabalhos futuros, que sugere uma série de trabalhos futuros, que extrapolam os objetivos da tese:extrapolam os objetivos da tese:– Uso de simuladores de rede para simulação de Uso de simuladores de rede para simulação de

programas e análise de desempenho (custo de programas e análise de desempenho (custo de comunicação), integrado ao VHT;comunicação), integrado ao VHT;

– Exploração de Exploração de paralelismo hierárquicoparalelismo hierárquico, com a , com a possibilidade de geração de código OpenMP para possibilidade de geração de código OpenMP para clusters alocados a um nó multiprocessado;clusters alocados a um nó multiprocessado;

• Não há linguagens paralelas de alto nível que suportem essa Não há linguagens paralelas de alto nível que suportem essa funcionalidade [Bell 2002];funcionalidade [Bell 2002];

Page 131: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Trabalhos FuturosTrabalhos Futuros

• Cont.:Cont.:– Suporte multilingual, permitindo que outras linguagens, Suporte multilingual, permitindo que outras linguagens,

em alternativa a Haskell sejam usadas para em alternativa a Haskell sejam usadas para programação dos componentes simples:programação dos componentes simples:

• Adaptabilidade a classes de aplicações;Adaptabilidade a classes de aplicações;– C e Fortran para computação científica, JAVA em aplicações C e Fortran para computação científica, JAVA em aplicações

comerciais, etc.comerciais, etc.

• Haskell poderia ser usada como uma Haskell poderia ser usada como uma linguagem de linguagem de especificaçãoespecificação, dentro desse contexto;, dentro desse contexto;

• Será Investigado o uso do Será Investigado o uso do paradigma de programação paradigma de programação orientado a aspectoorientado a aspecto (AOP), para ortognalizar os meios de (AOP), para ortognalizar os meios de coordenação e computação na ausência de coordenação e computação na ausência de lazy evaluationlazy evaluation;;

Page 132: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Trabalhos FuturosTrabalhos Futuros

• Cont.:Cont.:– Interface com bibliotecas científicas:Interface com bibliotecas científicas:

• Bibliotecas de uso científico são largamente usadas por Bibliotecas de uso científico são largamente usadas por cientistas de todas as áreas;cientistas de todas as áreas;

– Usam os melhores algoritmos;Usam os melhores algoritmos;

– Implementações eficientes;Implementações eficientes;

– Implementações estáveis; Implementações estáveis;

– Podem ser paralelizadas ou não;Podem ser paralelizadas ou não;

• Funções de bibliotecas científicas podem ser oferecidas como Funções de bibliotecas científicas podem ser oferecidas como componentes do ambiente paralelo, de forma transparente ao componentes do ambiente paralelo, de forma transparente ao programador;programador;

• Talvez incluiremos algo sobre isso na tese;Talvez incluiremos algo sobre isso na tese;

Page 133: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

Estrutura da TeseEstrutura da Tese

• Capítulo 1Capítulo 1: Introdução, contextualização, motivação e objetivos ;: Introdução, contextualização, motivação e objetivos ;

• Capítulo 2Capítulo 2: Revisão de literatura estudada e introdução dos conceitos : Revisão de literatura estudada e introdução dos conceitos

básicos usados ao longo do texto;básicos usados ao longo do texto;

• Capítulo 3Capítulo 3: Descrição da Linguagem Haskell# e de seu modelo de : Descrição da Linguagem Haskell# e de seu modelo de

programação e implementação; programação e implementação;

• Capítulo 4Capítulo 4: Programação baseadas em esqueletos e seu emprego;: Programação baseadas em esqueletos e seu emprego;

• Capítulo 5Capítulo 5: Análise de propriedads de programas com redes de Petri;: Análise de propriedads de programas com redes de Petri;

• Capítulo 6Capítulo 6: Aplicações e avaliação de desempenho;: Aplicações e avaliação de desempenho;

• Capítulo 7Capítulo 7: Apresentação do ambiente VHT;: Apresentação do ambiente VHT;

• Capítulo 8Capítulo 8: Conclusões e linhas para futuro trabalhos;: Conclusões e linhas para futuro trabalhos;

Page 134: Tese de Doutorado Francisco Heron de Carvalho Junior Rafael Dueire Lins Orientador Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

ConclusõesConclusões

• Entrega da versão final para apreciação da banca: Entrega da versão final para apreciação da banca: 15/12/2003.15/12/2003.

• Previsão de defesa: 15/02/2004Previsão de defesa: 15/02/2004

• Entrega da versão final: 30/03/2004Entrega da versão final: 30/03/2004