francisco heron de carvalho junior, dr. escola politécnica, universidade de pernambuco...
TRANSCRIPT
Francisco Heron de Carvalho Junior, Dr.Francisco Heron de Carvalho Junior, Dr.
Escola Politécnica, Universidade de PernambucoEscola Politécnica, Universidade de Pernambuco
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
2
Computação de Alto Desempenho - Computação de Alto Desempenho - HardwareHardware Estado-da-ArteEstado-da-Arte
• Consolidação de arquiteturas Consolidação de arquiteturas distribuídasdistribuídas::
– MPP’s (MPP’s (Massive Parallel ProcessorsMassive Parallel Processors););
– Constelações;Constelações;
– ClustersClusters;;
– GridsGrids;;
• Evolução do Evolução do pico de desempenhopico de desempenho das arquiteturas paralelas das arquiteturas paralelas ainda obedece a ainda obedece a Lei de Moore !Lei de Moore !
– Duplicação a cada período de 18 meses;Duplicação a cada período de 18 meses;
– Arquiteturas Arquiteturas sequenciaissequenciais atingiram seu ponto de saturação; atingiram seu ponto de saturação;
• Top 500 (Top 500 (www.top500.orgwww.top500.org).).
3
0
10
20
30
40
50
60
70
80
90
100
Single
Vector
SMP
Constellations
MPP
Clusters
4
5
Rank SiteCountry/Year
Computer / ProcessorsManufacturer
Rmax
Rpeak
1 Earth Simulator CenterJapan/2002
Earth-Simulator / 5120NEC
3586040960
2 Lawrence Livermore National LaboratoryUnited States/2004
ThunderIntel Itanium2 Tiger4 1.4GHz - Quadrics / 4096California Digital Corporation
1994022938
3 Los Alamos National LaboratoryUnited States/2002
ASCI Q - AlphaServer SC45, 1.25 GHz / 8192HP
1388020480
4 IBM - Thomas Watson Research CenterUnited States/2004
BlueGene/L DD1 Prototype (0.5GHz PowerPC 440 w/Custom) / 8192IBM/ LLNL
1168016384
5 NCSAUnited States/2003
TungstenPowerEdge 1750, P4 Xeon 3.06 GHz, Myrinet / 2500Dell
981915300
6 ECMWFUnited Kingdom/2004
eServer pSeries 690 (1.9 GHz Power4+) / 2112IBM
895516051
7 Institute of Physical and Chemical Res. (RIKEN)
Japan/2004
RIKEN Super Combined Cluster / 2048Fujitsu
872812534
8 IBM - Thomas Watson Research CenterUnited States/2004
BlueGene/L DD2 Prototype (0.7 GHz PowerPC 440) / 4096IBM/ LLNL
865511469
9 Pacific Northwest National LaboratoryUnited States/2003
Mpp2Integrity rx2600 Itanium2 1.5 GHz, Quadrics / 1936HP
863311616
10 Shanghai Supercomputer CenterChina/2004
Dawning 4000A, Opteron 2.2 GHz, Myrinet / 2560Dawning
806111264
6
Computação de Alto Desempenho - Computação de Alto Desempenho - HardwareHardware Iniciativas nos EUAIniciativas nos EUA
• ASCIASCI ( (Accelerated Strategy Computing IntiativeAccelerated Strategy Computing Intiative););
– Department of EnergyDepartment of Energy ( (DOEDOE), EUA;), EUA;
– SNL, LLNL, LANL;SNL, LLNL, LANL;
– Suporte omputacional a simulação de artefatos nucleares;Suporte omputacional a simulação de artefatos nucleares;
– 10 10 TeraflopsTeraflops em em 20012001 / 1 / 1 PetaflopsPetaflops em em 20102010;;
• Centros de Supercomputação da Centros de Supercomputação da NSFNSF::
– Cornell Theory Center (CTC);Cornell Theory Center (CTC);
– National Center for Atmonspheric Research (NCSA);National Center for Atmonspheric Research (NCSA);
– Pittsburgh Supercomputing Center (PSC);Pittsburgh Supercomputing Center (PSC);
• Extensible Terascale FacilityExtensible Terascale Facility (ETF), (ETF), 20022002::
– Grid computingGrid computing;;
– Cinco super-nósCinco super-nós: : National Center for Supercomputing ApplicationsNational Center for Supercomputing Applications ( (NCSANCSA), ), San Diego San Diego Supercomputing CenterSupercomputing Center ( (SDSCSDSC), ), Pittsburgh Supercomputing CenterPittsburgh Supercomputing Center, , Argonne National Argonne National LaboratoryLaboratory ( (ANLANL), e ), e California Institute of TechnologyCalifornia Institute of Technology;;
7
Computação de Alto Desempenho - Computação de Alto Desempenho - SoftwareSoftware Antecedentes (Anos 80)Antecedentes (Anos 80)
• Ferramentas de Ferramentas de softwaresoftware (algoritmos e linguagens) não acompanham a (algoritmos e linguagens) não acompanham a
evolução do pico de desempenho do evolução do pico de desempenho do hardwarehardware;;
– Uso verdadeiramente Uso verdadeiramente escalescalávelável das arquiteturas limitada pelo das arquiteturas limitada pelo softwaresoftware;;
• ComoComo conciliar conciliar escalabilidadeescalabilidade com com portabilidadeportabilidade ? ?
• Center for Research in Parallel ComputationCenter for Research in Parallel Computation (CRPC) (CRPC)
– Iniciativa da Iniciativa da NSFNSF ( (National Science FoundationNational Science Foundation), 1989;), 1989;
– Coordenação de iniciativas do meio acadêmico; Coordenação de iniciativas do meio acadêmico;
– Tornar computação paralela Tornar computação paralela verdadeiramente utilizávelverdadeiramente utilizável;;
– O alvorecer de uma O alvorecer de uma ciência de fato para investigar computação paralelaciência de fato para investigar computação paralela ? ?
– Tornar públicas Tornar públicas ferramentasferramentas, , aplicaçõesaplicações e e algoritmosalgoritmos voltados ao voltados ao
processamento paralelo;processamento paralelo;
8
Computação de Alto Desempenho - Computação de Alto Desempenho - SoftwareSoftware Estado-da-ArteEstado-da-Arte
• Década de 90Década de 90: modelos e linguagens portáveis e eficientes:: modelos e linguagens portáveis e eficientes:
– HPFHPF ( (High Performance FortranHigh Performance Fortran) e Fortran 90;) e Fortran 90;
– PVMPVM ( (Parallel Virtual MachineParallel Virtual Machine) ;) ;
– MPIMPI ( (Message Passing EnvironmentMessage Passing Environment););
– openMP openMP ((multiprocessadoresmultiprocessadores););
– Inúmeras Inúmeras bibliotecas científicasbibliotecas científicas de propósito específico de propósito específico
• ((LAPACKLAPACK, , ScaLAPACKScaLAPACK, , PETScPETSc, etc.), etc.)
• Eficiência Eficiência portabilidade portabilidade generalidade generalidade abstração; abstração;
– ModelosModelos e e linguagenslinguagens atuais não têm atuais não têm conciliadoconciliado tais propriedades; tais propriedades;
9
Computação de Alto Desempenho - Computação de Alto Desempenho - SoftwareSoftware Estado-da-ArteEstado-da-Arte
• Aplicações de computação de alto desempenho tem crescido Aplicações de computação de alto desempenho tem crescido
em em escalaescala, , complexidadecomplexidade e variedade de potenciais usuários; e variedade de potenciais usuários;
– MotivoMotivo: advento de : advento de clustersclusters e e gridsgrids;;
• Não há suporte a múltiplas hierarquias de paralelismo:Não há suporte a múltiplas hierarquias de paralelismo:
– ConstelaçõesConstelações e e cclusterslusters de multiprocessadores de multiprocessadores são hoje comuns; são hoje comuns;
– Abordagem tradicional:Abordagem tradicional: MPI + openMP; MPI + openMP;
• Técnicas formaisTécnicas formais confiáveis e utilizáveis para confiáveis e utilizáveis para verificaçãoverificação e e
avaliaçãoavaliação de desempenho de programas paralelos ainda de desempenho de programas paralelos ainda
constituem um “sonho distante”. constituem um “sonho distante”.
10
Computação de Alto Desempenho - Computação de Alto Desempenho - SoftwareSoftware Estado-da-ArteEstado-da-Arte
““(…) the continued drive for high- and higher-(…) the continued drive for high- and higher-performance systems (…) leads us to one simple performance systems (…) leads us to one simple
conclusion: conclusion: the future is parallelthe future is parallel (…)” (…)”
Parallel ArchitecturesParallel Architectures
M. J. Flynn & K. W. RuddM. J. Flynn & K. W. Rudd
ACM Computing Surveys, ACM Computing Surveys,
Vol.28(1), 1996Vol.28(1), 1996
11
Computação de Alto Desempenho - Computação de Alto Desempenho - SoftwareSoftware Estado-da-ArteEstado-da-Arte
““(…) At a minimun, we recommend increased (…) At a minimun, we recommend increased investment in research in ultra-high-performance investment in research in ultra-high-performance hardware-software architectures including new hardware-software architectures including new
programming paradigms, user interfaces and specially programming paradigms, user interfaces and specially peta-scale distributed databases. (…)”peta-scale distributed databases. (…)”
What’s Next in High-Performance ComputingWhat’s Next in High-Performance Computing
Gordon Bell & Jim GrayGordon Bell & Jim Gray
Communications of the ACM, Communications of the ACM,
Vol.45(2), Fev. 2002Vol.45(2), Fev. 2002
12
Computação de Alto Desempenho - Computação de Alto Desempenho - SoftwareSoftware Estado-da-ArteEstado-da-Arte
““(…) A persistent programming model for scalable, (…) A persistent programming model for scalable, paralell computers is absolutely essential if paralell computers is absolutely essential if
computational science and enginnering is to realize computational science and enginnering is to realize even a fraction of its remarkable promise (…)”even a fraction of its remarkable promise (…)”
Sourcebook of Parallel ComputingSourcebook of Parallel Computing
Jack Dongarra & Ian Foster Jack Dongarra & Ian Foster et alet al..
((Chapter 1, Section 1.2Chapter 1, Section 1.2))
13
Computação de Alto Desempenho - Computação de Alto Desempenho - SoftwareSoftware Estado-da-ArteEstado-da-Arte
““(…) Why, in the face of these advances, is the science of (…) Why, in the face of these advances, is the science of parallel computation will interesting to study ? In 1989, many parallel computation will interesting to study ? In 1989, many
of us felt that we could develop a of us felt that we could develop a higher-level parallel higher-level parallel programming interfaceprogramming interface that would supplant the that would supplant the message-message-
passing paradigmspassing paradigms then being used. However, our expectation then being used. However, our expectation that explicit message passing would routinely be hidden from that explicit message passing would routinely be hidden from the developer have not been realized. Today, most developers the developer have not been realized. Today, most developers
must use explicit message passing, albeit via a more must use explicit message passing, albeit via a more sophisticated portable interface, to generate sophisticated portable interface, to generate efficient scalable efficient scalable parallel programsparallel programs. . This is but one example demonstrating This is but one example demonstrating
that the science of parallel computation is incomplete.that the science of parallel computation is incomplete. (…)” (…)”
Sourcebook of Parallel ComputingSourcebook of Parallel Computing
Jack Dongarra & Ian Foster Jack Dongarra & Ian Foster et alet al..
((Chapter 1, Section 1.3Chapter 1, Section 1.3))
O Modelo #O Modelo #
Uma Proposta para Uma Proposta para Programação ParalelaProgramação Paralela sobre as Arquiteturas Contemporâneas de sobre as Arquiteturas Contemporâneas de
Computação de Alto DesempenhoComputação de Alto Desempenho
15
AntecedentesAntecedentes
• Idéias de Idéias de Rafael D. LinsRafael D. Lins (final da década de 80); (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;;
• Haskell#:Haskell#:– Ricardo Massa Ferreira Lima:Ricardo Massa Ferreira Lima:
• Tese de doutorado, 2000;Tese de doutorado, 2000;
– Francisco Heron de Carvalho Junior:Francisco Heron de Carvalho Junior:• Dissertação de mestrado, 2000;Dissertação de mestrado, 2000;
16
Programação Paralela DistribuídaProgramação Paralela Distribuída
• EEficiênciaficiência PPortabilidadeortabilidade GGeneralidadeeneralidade AAbstraçãobstração;;
• Abordagens mais usadas atualmente:Abordagens mais usadas atualmente:– Paralelismo implícito;Paralelismo implícito;
• HPF, Fortran 90 e GpH;HPF, Fortran 90 e GpH;
• EE PP GG AA;;
– Bibliotecas Bibliotecas explícitasexplícitas de passagem de mensagens; de passagem de mensagens;
• PVM e MPIPVM e MPI;;
• EE PP GG AA;;
– Bibliotecas científicas Bibliotecas científicas paralelizadasparalelizadas de propósito específico; de propósito específico;
• LAPACK, ScaLAPACK e PETSc;LAPACK, ScaLAPACK e PETSc;
• EE PP GG AA..
17
O Modelo #O Modelo #
• Disciplinando a programação paralela por Disciplinando a programação paralela por passagem de mensagenspassagem de mensagens; ;
• EficiênciaEficiência: Explícito e estático, com traduç: Explícito e estático, com tradução trivial paraão trivial para MPIMPI;;
• Programação em dois níveis ortogonais:Programação em dois níveis ortogonais:
– Mundo das Mundo das funçõesfunções ( (computaçõescomputações););
– Mundo dos Mundo dos processosprocessos ( (coordenaçãocoordenação););
– Modelo de Modelo de coordenaçãocoordenação baseado em processos baseado em processos;;
• Nível de Nível de modularidademodularidade elevado: elevado:
– Suporte ao desenvolvimento de programas complexos e de Suporte ao desenvolvimento de programas complexos e de larga escalalarga escala;;
– Enfatiza programação orientada a Enfatiza programação orientada a componentescomponentes;;
• Requisitos Requisitos funcionaisfuncionais ou ou não-funcionaisnão-funcionais e e encapsuladasencapsuladas ou ou entrelaçadasentrelaçadas;;
• Programação orientada a Programação orientada a aspectosaspectos (AOP) e (AOP) e hyperspaceshyperspaces;;
• Reuso de componentes;Reuso de componentes;continua
18
• Nível de Nível de abstraçãoabstração potencialmente elevado: potencialmente elevado:
– Encapsulamento de Encapsulamento de bibliotecas científicasbibliotecas científicas;;
– EsqueletosEsqueletos topológicos parciais topológicos parciais;;
• Tradução de programas # para Tradução de programas # para Redes de PetriRedes de Petri
– Informações Informações necessáriasnecessárias e e suficientessuficientes em em nível de coordenaçãonível de coordenação;;
– Verificação/análise de propriedades (INA/PEP); Verificação/análise de propriedades (INA/PEP);
– Avaliação de desempenho (TimeNET);Avaliação de desempenho (TimeNET);
• Suporte a Suporte a múltiplasmúltiplas hierarquias de paralelismo; hierarquias de paralelismo;
• HaskellHaskell##
– Computações descritas usando linguagem Computações descritas usando linguagem HaskellHaskell (mundo das funções); (mundo das funções);
– Ortogonalidade Ortogonalidade sintáticasintática entre meios de entre meios de coordenaçãocoordenação e e computaçãocomputação;;
– Tratamento formal extensível ao meio de computação;Tratamento formal extensível ao meio de computação;
• Visual # Tool (VHT)Visual # Tool (VHT): Ambiente Integrado de programação;: Ambiente Integrado de programação;
O Modelo #O Modelo #
19
O Modelo # de Programação ParalelaO Modelo # de Programação Paralela
E
P G A
Modelo #=
Passagem de Mensagens+
Encapsulamento de Biblotecas Científicas+
Programação Orientada a Esqueletos
20
O Modelo #O Modelo #
• Hierarquia de ProcessosHierarquia de Processos::– Programação em dois níveis hierárquicos Programação em dois níveis hierárquicos ortogonaisortogonais;;
– Modelo de Modelo de coodenaçãocoodenação orientado a processos; orientado a processos;
Nível de Coordenação
Nível de Computação
Interface via lazy streams
(“não invasiva”)
Linguagem Sequencial (Haskell)
Linguagem de Configuração #
21
Conceito Primitivo:Conceito Primitivo: Componentes Componentes
• Descrevem Descrevem requisitosrequisitos ( (concernsconcerns):):– Funcionais/Funcionais/não-funcionaisnão-funcionais, encapsuladas/, encapsuladas/entrelaçadasentrelaçadas;;
• Podem ser classificados em:Podem ser classificados em:– SimplesSimples: Computações : Computações sequenciais;sequenciais;
• Programados em uma linguagem Programados em uma linguagem host host (Haskell, no caso de Haskell#)(Haskell, no caso de Haskell#) ;;
• Conjunto de componentes simples = Conjunto de componentes simples = Meio de computaçãoMeio de computação;;
– CompostosCompostos: Computações : Computações paralelasparalelas;;• Programados na linguagem #, pela composição de outros componentes;Programados na linguagem #, pela composição de outros componentes;
• Conjunto de componentes compostos = Conjunto de componentes compostos = Meio de coordenaçãoMeio de coordenação;;
#
Argumentos Pontos de Retorno
22
Programa # = Composição de ComponentesPrograma # = Composição de Componentes
#
#
#
#
23
Programa # = Composição Programa # = Composição HierárquicaHierárquicade Componentesde Componentes
Nível de Coordenação
#
#
# #
#
Nível de Computação
Componente Principal (funcionalidade da
aplicação)
Aninhamento / Sobreposiçãode Componentes
24
Nível de Coordenação
Capturando a Essência da Programação Paralela
Distribuída(passagem de mensagens)
A Linguagem # A Linguagem # Programando em Programando em Nível de CoordenaçãoNível de Coordenação
25
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
Configurando Componentes CompostosConfigurando Componentes CompostosProgramação #Programação #
26
Configurando Componentes CompostosConfigurando Componentes Compostos Unidades e InterfacesUnidades e Interfaces
• UnidadesUnidades::
– Entidades que executam tarefas individuais;Entidades que executam tarefas individuais;
– Instanciadas a partir de Instanciadas a partir de interfacesinterfaces;;
• InterfacesInterfaces descrevem como descrevem como unidadesunidades comportam-se no comportam-se no meio de coordenaçãomeio de coordenação;;
– TarefasTarefas são descritas por componentes atribuídos a unidade ( são descritas por componentes atribuídos a unidade (assignassign););
• Classes de InterfaceClasses de Interface
– Classe de unidades que compartilham Classe de unidades que compartilham comportamento análogocomportamento análogo;;
– Analogia: Analogia: Classes de interfacesClasses de interfaces 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 linguagens orientadas a objetos; em linguagens orientadas a objetos;
• Componentes compostosComponentes compostos são redes de são redes de unidadesunidades, as quais interagem por , as quais interagem por meio de meio de canais de comunicaçãocanais de comunicação que conectam suas que conectam suas interfacesinterfaces;;
27
Configurando Componentes CompostosConfigurando Componentes CompostosProgramação #Programação #
clusters processos
unidadevirtual
bind
bind
bind
connect
connect
connect
connect
connect
unit
unit
unit
unit
unit
assign
assign
assign
#
#
assign
28
InterfacesInterfaces
• Uma Uma interfaceinterface é descrita por: é descrita por:– Uma coleção de Uma coleção de portasportas ( (entradaentrada ou ou saídasaída););
– Uma Uma expressão expressão comportamentalcomportamental::• Descreve Descreve ordens válidasordens válidas para para ativação das portasativação das portas;;
• Expressões regulares controladas por semáforos;Expressões regulares controladas por semáforos;
• Equivalência expressiva com Equivalência expressiva com redes de Petri rotuladas terminaisredes de Petri rotuladas terminais;;
… …
Portas de Entrada
Portas de Saída
29
InterfacesInterfacesExpressão ComportamentalExpressão Comportamental
• Ações primitivas:Ações primitivas:– pid pid !! :: 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
• Combinadores de ações:Combinadores de ações:– seqseq aa11 a a22 …a …ann : : sequência;sequência;
– parpar aa11 a a22 …a …ann :: concorrência; concorrência;
– altalt aa11 a a22 …a …ann : : alternativa (“não-determinístico”);alternativa (“não-determinístico”);
– ifif <<??> > thenthen a a11 elseelse a a22: : escolha baseada em condição <?>;escolha baseada em condição <?>;
– 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;;
interface IMerge where ports: IPipe i1 -> o # IPipe i2 -> o protocol: repeat seq {alt {i1?;i2?}; o!} until <i1 & i2 & o>
30
Como Configurar Unidades ?Como Configurar Unidades ?
merge
Group ofPorts
IndividualPort
AccumulateListsIMergei2
i1 o
AccumulateLists
interface Imerge where: ports: IPipe i1 -> o # IPipe i2 -> o protocol: repeat seq {alt {i1?;i2?}; o!} until <i1 & i2 & o>
assign AccumulateLists to mergingunit merge # IMerge
31
Funções de LigaçãoFunções de Ligação
g f
Função de Ligação
+
32
Agrupamentos Agrupamentos anyanyFunção de LigaçãoFunção de Ligação
f ! +
g?+ …
…
…
…
33
f!
!
!
Agrupamentos Agrupamentos allallFunção de LigaçãoFunção de Ligação
g?
…
?
?…
34
StreamsStreams
• Sequências de itens de dados transmitidos em um canal;Sequências de itens de dados transmitidos em um canal;
vv11, , vv22, …, , …, vvnn;;
– EOSEOS:: Valor terminador de Valor terminador de streamstream;;
• Portas que transmitem Portas que transmitem streamsstreams::
– Ativadas no contexto de combinadores 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::
– EOSEOS é acompanhado do é acompanhado do valor de aninhamentovalor de aninhamento da da streamstream;;
– Transmissão de Transmissão de <<<<<<11>,<>,<22,,33>>,<<>>,<<33,,44>,<>,<55,,66,,77>>>>>>::
• [Data [Data 11, , EosEos 33, Data , Data 22, Data , Data 33, , EosEos 33, , EosEos 2 2, Data , Data 33, Data , Data 44, , EosEos 3 3, ,
Data Data 55, Data , Data 66, Data , Data 77, , EosEos 3 3, , EosEos 2 2, , EosEos 1 1];];
35
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;
StreamsStreams e Interfaces e Interfaces
36
Canais de ComunicaçãoCanais de Comunicação
• Conectam Conectam parespares de portas da interface de unidades; de portas da interface de unidades;– Portas devem ter direções opostas;Portas devem ter direções opostas;
• Ponto-a-ponto, unidirecionais e tipados;Ponto-a-ponto, unidirecionais e tipados;– Inspiração em Inspiração em OCCAMOCCAM e e CSP CSP (disciplina formal);(disciplina formal);
• Modos suportados (inspiração em MPI):Modos suportados (inspiração em MPI):– synchronoussynchronous: : MPI_SSEND/MPI_RECVMPI_SSEND/MPI_RECV;;
– bufferedbuffered: : MPI_BSEND/MPI_RECVMPI_BSEND/MPI_RECV;;
– readyready: : MPI_RSEND/MPI_RECVMPI_RSEND/MPI_RECV;;
37
UnidadesUnidades VirtuaisVirtuais
• Unidade para qual não há componente associado:Unidade para qual não há componente associado:
– ParametrizadaParametrizada pela tarefa que executará; pela tarefa que executará;
– Somente sua Somente sua interfaceinterface é conhecida; é conhecida;
• Esqueletos topológicos parciaisEsqueletos topológicos parciais::
– Componente (compostos) abstratos; Componente (compostos) abstratos;
– Pelo menos uma Pelo menos uma unidade virtualunidade virtual ocorre em sua composição; ocorre em sua composição;
– 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 Geração de código otimizadocódigo otimizado (uso de bibliotecas); (uso de bibliotecas);
• Aumenta capacidade de Aumenta capacidade de raciocínioraciocínio sobre programas; sobre programas;
• Encapsulamento de Encapsulamento de bibliotecas científicasbibliotecas científicas;;
• Suporte a modularização de Suporte a modularização de requisitos entrelaçadosrequisitos entrelaçados ( (cross-cutting concernscross-cutting concerns).).
– Aspect-Oriented ProgrammingAspect-Oriented Programming ( (AOPAOP) e ) e HyperspacesHyperspaces;;
38
Operações sobre Unidades VirtuaisOperações sobre Unidades Virtuais
• UnificaçãoUnificação: : nn unidades unidades 11 unidade; unidade;
• FatoraçãoFatoração: : 11 unidade unidade nn unidades; unidades;
• Operações Operações inversasinversas;;
• Regras de Regras de preservação da topologiapreservação da topologia
– Operações aplicam-se sobre redes bem formadas;Operações aplicam-se sobre redes bem formadas;
• Regras de Regras de preservação comportamentalpreservação comportamental..
39
UnificaçãoUnificação(permite (permite sobreposição de componentessobreposição de componentes))
unify ctA.u # (i,i’) -> o ctB.u # i -> (o,o’) to new_u # (i,i’) -> (o,o’)
unify
ctA ctB
u ui i
oo i’o’
40
UnificaçãoUnificação(permite sobreposição de componentes)(permite sobreposição de componentes)
ctActB
new_u
unify ctA.u # (i,i’) -> o ctB.u # i -> (o,o’) to new_u # (i,i’) -> (o,o’)
i
i’o
o’
Os componentees atribuídos aosclusters ctA e ctB são agora componentes sobrepostos !!
41
FatoraçãoFatoração
u
factorize u # (i,i’) -> (o,o’) to u1 # (i[1],i’) -> o, u2 # i[2] -> (o,o’)
i
i’o
o’
42
FatoraçãoFatoração
u1 u2i i
oo i’o’
factorize u # (i@{i1,i2},i’) -> (o,o’) to u1 # (i1,i’) -> o u2 # i2 -> (o,o’)
43
…
…
…
…… …
Esqueletos Esqueletos ElementaresElementares
…
…
…
…
…
…… …
FarmFarm
MeshMeshTorusTorus
Pipe_LinePipe_Line
44
Esqueletos de Comunicação ColetivaEsqueletos de Comunicação Coletiva
0
1
…
2
n
0
1
…
2
n
Prim_OneToAllPrim_OneToAll Prim_AllToOnePrim_AllToOne•BcastBcast•ScatterScatter•ScattervScatterv•Reduce_ScatterReduce_Scatter•ScanScan
Prim_AllToAllPrim_AllToAll•GatherGather•GathervGatherv•ReduceReduce
•AllGatherAllGather•AllGathervAllGatherv•AllToAllAllToAll•AllToAllvAllToAllv•AllReduceAllReduce
…
0 1
n
45
Uso de EsqueletosUso de Esqueletos
• Esqueletos podem prover ao compilador informações de Esqueletos podem prover 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;
• Abstração de funcionalidades encapsuladas em bibliotecas;Abstração de funcionalidades encapsuladas em bibliotecas;
• Primitivas de comunicação especiais;Primitivas de comunicação especiais;
– Em MPI: Comunicação coletiva, por exemplo …Em MPI: Comunicação coletiva, por exemplo …
– Otimização da alocação de processadores;Otimização da alocação de processadores;
– Simplificação da rede de Petri equivalente:Simplificação da rede de Petri equivalente:
• Exemplo adiante…Exemplo adiante…
• Esqueletos # permitem modularização de Esqueletos # permitem modularização de requisitos requisitos
entrelaçadosentrelaçados, assim como AOP e , assim como AOP e HyperspacesHyperspaces..
46
Implementação HaskellImplementação Haskell## de NPB de NPB
• NPB = NPB = NAS NAS Parallel BenchmarksParallel Benchmarks ( (NASA Research at Ames, EUANASA Research at Ames, EUA););
– Aplicações em dinâmica dos fluidos computacional;Aplicações em dinâmica dos fluidos computacional;
• Padrão Padrão SPMDSPMD ( (SSingle ingle PProgram, rogram, MMultiple ultiple DDataata););
• Como derivar de programas # a partir de Como derivar de programas # a partir de programas MPIprogramas MPI. .
– Componentes simples implementados em Haskell (Componentes simples implementados em Haskell (módulos funcionaismódulos funcionais););
• 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;
– Sobreposição de esqueletos MPI;Sobreposição de esqueletos MPI;
• Aplicações Simuladas: Aplicações Simuladas: LULU, , SPSP e e BTBT;;
– Comunicação ponto-a-ponto;Comunicação ponto-a-ponto;
– Exercita capacidade de lidar com unidades com muitas portas;Exercita capacidade de lidar com unidades com muitas portas;
47
Kernel IS: Kernel IS: Topologia #Topologia #
AlltoAllv
AllReduce
is_unit[4]
is_unit[1]
is_unit[2]
is_unit[3]
RShift
IS
IS
IS
IS
48
componentcomponent ISIS <problem_class, num_procs, max_key_log2, num_buckets_log2, <problem_class, num_procs, max_key_log2, num_buckets_log2,
total_keys_log2, max_iterations, max_procs, test_array_size> total_keys_log2, max_iterations, max_procs, test_array_size> withwith
#define PARAMETERS (IS_Params problem_class num_procs max_key_log2 num_buckets_log2 #define PARAMETERS (IS_Params problem_class num_procs max_key_log2 num_buckets_log2
total_keys_log2 max_iterations max_procs test_array_size)total_keys_log2 max_iterations max_procs test_array_size)
iteratoriterator i i rangerange [1, num_procs] [1, num_procs]
useuse Skeletons. Skeletons.{{Misc.RShift, Collective.Misc.RShift, Collective.{{AllReduce, AllToAllvAllReduce, AllToAllv}}}}
useuse IS -- IS -- ISIS Functional ModuleFunctional Module
interfaceinterface IISIIS (bs*, kb*, k) (bs*, kb*, k) ->-> (bs*, kb*, k) (bs*, kb*, k)
wherewhere: bs@: bs@IAllReduceIAllReduce (UArray Int Int) # (UArray Int Int) #
kb@kb@IAllToAllvIAllToAllv (Int, Ptr Int) # (Int, Ptr Int) #
k@k@IIRShiftRShift Int Int
behaviourbehaviour: : seqseq { {repeatrepeat seqseq {{dodo bs; bs; dodo kb} kb} untiluntil <bs & kb>; <bs & kb>; dodo k} k}
unitunit bs_comm ; bs_comm ; assignassign AllReduce<num_procs, MPI_SUM, MPI_INTEGER> AllReduce<num_procs, MPI_SUM, MPI_INTEGER> toto bs_comm bs_comm
unitunit kb_comm ; kb_comm ; assignassign AllToAllv<num_procs> AllToAllv<num_procs> toto kb_comm kb_comm
unitunit k_shift ; k_shift ; assignassign RShift<num_procs> 0 -> _ RShift<num_procs> 0 -> _ toto k_shift k_shift
[/ [/ unifyunify bs_comm.p[i] # bs, bs_comm.p[i] # bs,
kb_comm.p[i] # kb, kb_comm.p[i] # kb,
k_comm.p[i] k_comm.p[i] # k # k toto is_unit[i] # is_unit[i] # IISIIS
assignassign IS (PARAMETERS, bs, kb, k) -> (bs, kb, k) IS (PARAMETERS, bs, kb, k) -> (bs, kb, k) toto is_unit[i] # bs # kb # k is_unit[i] # bs # kb # k /] /]
49
50
Tratamento Formal de Programas # Tratamento Formal de Programas # Usando Redes de PetriUsando 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, 1996); redes de Petri (Lins & Maciel, 1996);
– Tradução Haskell# Tradução Haskell# redes de Petri (Lima, 2000); redes de Petri (Lima, 2000);
• Versão anterior de Haskell#;Versão anterior de Haskell#;
51
• Estudos de Caso:Estudos de Caso:– Jantar dos FilósofosJantar dos Filósofos: :
• 2 soluções com características distintas;2 soluções com características distintas;
– Simulação do Simulação do Protocolo do Protocolo do BitBit Alternado Alternado;;
• Ferramentas: Ferramentas: INAINA e e PEPPEP;;• Técnicas empregadas:Técnicas empregadas:
– 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:– PresençaPresença dede deadlocks deadlocks (impasses);(impasses);– Justiça;Justiça;– Grau de Grau de paralelismoparalelismo ou concorrência; ou concorrência;
Tratamento Formal de Programas # Tratamento Formal de Programas # Usando Redes de PetriUsando Redes de Petri
52
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);
53
Um processo filósofo
Um processo filósofo (Modelagem da Natureza
do Valor Transmitido)
54
Cinco processos filósofos(Canais de Comunicação)
55
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))
56
Cinco processos filósofos(Canais de Comunicação)
57
Protocolo do Bit AlternadoProtocolo do Bit Alternado
• Pode ser visto como um esqueleto:Pode ser visto como um esqueleto:
– Modelagem de protocolos de comunicação de canais;Modelagem de protocolos de comunicação de canais;
– Preocupação não-funcional entrelaçada;Preocupação não-funcional entrelaçada;
• Unidades heterogêneas;Unidades heterogêneas;
• 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;;
58
59
VHT (Visual # Tool)VHT (Visual # Tool)
• Ambiente # de programação paralela:Ambiente # de programação paralela:
• Configuração visual de componentes;Configuração visual de componentes;
– 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;
• Biblioteca de Biblioteca de componentescomponentes e e classes de interfacesclasses de interfaces reutilizáveis; reutilizáveis;
• Uso de XML como formato de intercâmbio;Uso de XML como formato de intercâmbio;
– Definições visuais e estruturais;Definições visuais e estruturais;
• Integração à ferramentas de verificação e análise de redes de Petri;Integração à ferramentas de verificação e análise de redes de Petri;
– Geração de código Geração de código PNMLPNML ( (Petri Net Markup LanguagePetri Net Markup Language););
60
VHT (Visual # Tool)VHT (Visual # Tool)
• Avaliação de Desempenho;Avaliação de Desempenho;
– Redes de Petri estocásticas usando a ferramenta Redes de Petri estocásticas usando a ferramenta TimeNETTimeNET;;
• Geração de código Geração de código SPNLSPNL ( (Stochastic Petri Net LanguageStochastic Petri Net Language););
– Simuladores de redes de computadores;Simuladores de redes de computadores;
• Geração de simulações para a ferramenta Geração de simulações para a ferramenta NSNS ( (Network SimulatorNetwork Simulator););
• Simulação de programas;Simulação de programas;
– Animação usando ferramentas de redes de Petri;Animação usando ferramentas de redes de Petri;
– Simuladores de rede, como Simuladores de rede, como NSNS (Network Simulator) (Network Simulator)
• Execução do programa e Execução do programa e debugingdebuging;;
– Integração ao Integração ao LAMLAM--MPIMPI ou ou MPICHMPICH;;
– Possível integração a ferramentas de Possível integração a ferramentas de debuggingdebugging de programas de programas MPIMPI;;
• EmEm fasefase desenvolvimento (prototipação).desenvolvimento (prototipação).
61
ConclusõesConclusões
• Advento de Advento de grid computinggrid computing e e cluster computingcluster computing;;– Aumento de escala e complexidade das aplicações;Aumento de escala e complexidade das aplicações;– Maior número de usuários interessados em PAD (academina e indústria);Maior número de usuários interessados em PAD (academina e indústria);– Novos desafios para programação paralelaNovos desafios para programação paralela;;
• O modelo # integra em um mesmo arcabouço mecanismos que conferem O modelo # integra em um mesmo arcabouço mecanismos que conferem eficiênciaeficiência e e alto nível de abstraçãoalto nível de abstração para programação paralela: para programação paralela:– Total transparência entre os meios de Total transparência 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:
• Desenvolvimento baseado em Componentes;Desenvolvimento baseado em Componentes;
• Programação de aplicações de Programação de aplicações de larga escalalarga escala;;
• ReusabilidadeReusabilidade de componentes; de componentes;
• Suporte a modularização de preocupações Suporte a modularização de preocupações não-funcionaisnão-funcionais e e entrelaçadasentrelaçadas;;
– Mecanismos de Mecanismos de abstraçãoabstração: : EsqueletosEsqueletos e e bibliotecas científicas encapsuladasbibliotecas científicas encapsuladas;;– Tradução direta para MPI (Tradução direta para MPI (eficiênciaeficiência e e portabilidadeportabilidade););– Suporte multi-lingual;Suporte multi-lingual;– Tradução para redes de Petri;Tradução para redes de Petri;
62
Trabalhos em Andamento e Propostas de Trabalhos em Andamento e Propostas de Trabalhos FuturosTrabalhos Futuros
• Implementação de estratégias de Implementação de estratégias de alocação de processos a processadoresalocação de processos a processadores
usando esqueletos topológicos parciais:usando esqueletos topológicos parciais:
– Tipo de preocupação Tipo de preocupação não-funcionalnão-funcional e e entrelaçadaentrelaçada;;
– FlexibilidadeFlexibilidade: programador escolhe esqueleto de acordo com a arquitetura ou : programador escolhe esqueleto de acordo com a arquitetura ou
características da aplicação;características da aplicação;
• Implementação de interfaces com Implementação de interfaces com bibliotecas científicasbibliotecas científicas::
– PETSc, LAPACK, ScaLAPACK, e inúmeras outras.PETSc, LAPACK, ScaLAPACK, e inúmeras outras.
– Abstração de funcionalidades por meio de Abstração de funcionalidades por meio de esqueletos topológicos parciaisesqueletos topológicos parciais;;
– Geração automática de código usando as primitivas da biblioteca;Geração automática de código usando as primitivas da biblioteca;
• Formalização uma álgebra para programação #:Formalização uma álgebra para programação #:
– Teoria das categorias;Teoria das categorias;continua
63
Trabalhos em Andamento e Propostas de Trabalhos em Andamento e Propostas de Trabalhos FuturosTrabalhos Futuros
• Ferramentas de alto nível para suporte à Ferramentas de alto nível para suporte à animaçãoanimação e e análise de análise de
propriedades formaispropriedades formais de programas # com redes de Petri: de programas # 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 de análise e simulação de
desempenhodesempenho de programas #: de programas #:
– Abordagem 1Abordagem 1: Modelagem e Simulação usando redes de Petri estocásticas;: Modelagem e Simulação usando redes de Petri estocásticas;
• Implementação no topo de TimeNET com tradução de programas # para Implementação no topo de TimeNET com tradução de programas # para SPNLSPNL;;
– Abordagem 2Abordagem 2: Simulações no topo de : Simulações no topo de NS NS ((NetworkNetwork SimulatorSimulator););
• Proposta de mestrado de Proposta de mestrado de Fernando Aires LinsFernando Aires Lins (atualmente bolsista IC-FDPE/UPE); (atualmente bolsista IC-FDPE/UPE);
– Integração à Integração à VHTVHT;; continua
64
Trabalhos em Andamento e Propostas de Trabalhos em Andamento e Propostas de Trabalhos FuturosTrabalhos Futuros
• Implementação de extensões multi-linguais para o compilador #:Implementação de extensões multi-linguais para o compilador #:
– Módulos funcionais em C, Fortran, JAVA, etc.;Módulos funcionais em C, Fortran, JAVA, etc.;
– Adaptação ao problema em consideração;Adaptação ao problema em consideração;
– HaskellHaskell é ideal para prototipação; é ideal para prototipação;
– Recentes implementações de Recentes implementações de LAMLAM--MPIMPI são heterogêneas. são heterogêneas.
• Formalização de um Formalização de um modelo de custosmodelo de custos para esqueletos #: para esqueletos #:
– Existem muitos trabalhos sobre modelos de custos de esqueletos;Existem muitos trabalhos sobre modelos de custos de esqueletos;
– Captura da noção de Captura da noção de composicionabilidade de esqueletoscomposicionabilidade de esqueletos;;
– SobreposiçãoSobreposição de esqueletos; de esqueletos;
• Meta-linguagem para especificação de implementação de esqueletos definidos Meta-linguagem para especificação de implementação de esqueletos definidos
ad-hocad-hoc pelo usuário; pelo usuário;
• Programação # sobre Programação # sobre gridsgrids..
Francisco Heron de Carvalho Junior, Dr.Francisco Heron de Carvalho Junior, Dr.
Escola Politécnica, Universidade de PernambucoEscola Politécnica, Universidade de Pernambuco
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