A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Francisco Heron de Carvalho Junior, Dr. Escola Politécnica, Universidade de Pernambuco Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas.

Apresentações semelhantes


Apresentação em tema: "Francisco Heron de Carvalho Junior, Dr. Escola Politécnica, Universidade de Pernambuco Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas."— Transcrição da apresentação:

1 Francisco Heron de Carvalho Junior, Dr. Escola Politécnica, Universidade de Pernambuco Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas

2 2 Computação de Alto Desempenho - Hardware Estado-da-Arte Consolidação de arquiteturas distribuídas:Consolidação de arquiteturas distribuídas: –MPPs (Massive Parallel Processors); –Constelações; –Clusters; –Grids; Evolução do pico de desempenho das arquiteturas paralelas ainda obedece a Lei de Moore !Evolução do pico de desempenho das arquiteturas paralelas ainda obedece a Lei de Moore ! –Duplicação a cada período de 18 meses; –Arquiteturas sequenciais atingiram seu ponto de saturação; Top 500 ( ).Top 500 ( ).

3 3

4 4

5 5 Rank Site Country/Year Computer / Processors Manufacturer R max R peak 1 Earth Simulator Center Earth Simulator Center Japan/2002 Earth-Simulator / 5120 NEC Lawrence Livermore National Laboratory Lawrence Livermore National Laboratory United States/2004 Thunder Intel Itanium2 Tiger4 1.4GHz - Quadrics / 4096 California Digital Corporation Los Alamos National Laboratory Los Alamos National Laboratory United States/2002 ASCI Q - AlphaServer SC45, 1.25 GHz / 8192 HP IBM - Thomas Watson Research Center IBM - Thomas Watson Research Center United States/2004 BlueGene/L DD1 Prototype (0.5GHz PowerPC 440 w/Custom) / 8192 IBM/ LLNL NCSA NCSA United States/2003 Tungsten PowerEdge 1750, P4 Xeon 3.06 GHz, Myrinet / 2500 Dell ECMWF ECMWF United Kingdom/2004 eServer pSeries 690 (1.9 GHz Power4+) / 2112 IBM Institute of Physical and Chemical Res. (RIKEN) Institute of Physical and Chemical Res. (RIKEN) Japan/2004 RIKEN Super Combined Cluster / 2048 Fujitsu IBM - Thomas Watson Research Center IBM - Thomas Watson Research Center United States/2004 BlueGene/L DD2 Prototype (0.7 GHz PowerPC 440) / 4096 IBM/ LLNL Pacific Northwest National Laboratory Pacific Northwest National Laboratory United States/2003 Mpp2 Integrity rx2600 Itanium2 1.5 GHz, Quadrics / 1936 HP Shanghai Supercomputer Center Shanghai Supercomputer Center China/2004 Dawning 4000A, Opteron 2.2 GHz, Myrinet / 2560 Dawning

6 6 Computação de Alto Desempenho - Hardware Iniciativas nos EUA ASCI (Accelerated Strategy Computing Intiative);ASCI (Accelerated Strategy Computing Intiative); –Department of Energy (DOE), EUA; –SNL, LLNL, LANL; –Suporte omputacional a simulação de artefatos nucleares; –10 Teraflops em 2001 / 1 Petaflops em 2010; Centros de Supercomputação da NSF:Centros de Supercomputação da NSF: –Cornell Theory Center (CTC); –National Center for Atmonspheric Research (NCSA); –Pittsburgh Supercomputing Center (PSC); Extensible Terascale Facility (ETF), 2002:Extensible Terascale Facility (ETF), 2002: –Grid computing; –Cinco super-nós: National Center for Supercomputing Applications (NCSA), San Diego Supercomputing Center (SDSC), Pittsburgh Supercomputing Center, Argonne National Laboratory (ANL), e California Institute of Technology;

7 7 Computação de Alto Desempenho - Software Antecedentes (Anos 80) Ferramentas de software (algoritmos e linguagens) não acompanham a evolução do pico de desempenho do hardware;Ferramentas de software (algoritmos e linguagens) não acompanham a evolução do pico de desempenho do hardware; –Uso verdadeiramente escalável das arquiteturas limitada pelo software; Como conciliar escalabilidade com portabilidade ?Como conciliar escalabilidade com portabilidade ? Center for Research in Parallel Computation (CRPC)Center for Research in Parallel Computation (CRPC) –Iniciativa da NSF (National Science Foundation), 1989; –Coordenação de iniciativas do meio acadêmico; –Tornar computação paralela verdadeiramente utilizável; –O alvorecer de uma ciência de fato para investigar computação paralela ? –Tornar públicas ferramentas, aplicações e algoritmos voltados ao processamento paralelo;

8 8 Computação de Alto Desempenho - Software Estado-da-Arte Década de 90: modelos e linguagens portáveis e eficientes:Década de 90: modelos e linguagens portáveis e eficientes: –HPF (High Performance Fortran) e Fortran 90; –PVM (Parallel Virtual Machine) ; –MPI (Message Passing Environment); –openMP (multiprocessadores); –Inúmeras bibliotecas científicas de propósito específico (LAPACK, ScaLAPACK, PETSc, etc.)(LAPACK, ScaLAPACK, PETSc, etc.) Eficiência portabilidade generalidade abstração;Eficiência portabilidade generalidade abstração; –Modelos e linguagens atuais não têm conciliado tais propriedades;

9 9 Computação de Alto Desempenho - Software Estado-da-Arte Aplicações de computação de alto desempenho tem crescido em escala, complexidade e variedade de potenciais usuários;Aplicações de computação de alto desempenho tem crescido em escala, complexidade e variedade de potenciais usuários; –Motivo: advento de clusters e grids; Não há suporte a múltiplas hierarquias de paralelismo:Não há suporte a múltiplas hierarquias de paralelismo: –Constelações e clusters de multiprocessadores são hoje comuns; –Abordagem tradicional: MPI + openMP; Técnicas formais confiáveis e utilizáveis para verificação e avaliação de desempenho de programas paralelos ainda constituem um sonho distante.Técnicas formais confiáveis e utilizáveis para verificação e avaliação de desempenho de programas paralelos ainda constituem um sonho distante.

10 10 Computação de Alto Desempenho - Software Estado-da-Arte (…) the continued drive for high- and higher- performance systems (…) leads us to one simple conclusion: the future is parallel (…) Parallel Architectures M. J. Flynn & K. W. Rudd ACM Computing Surveys, Vol.28(1), 1996

11 11 Computação de Alto Desempenho - Software Estado-da-Arte (…) At a minimun, we recommend increased investment in research in ultra-high-performance hardware-software architectures including new programming paradigms, user interfaces and specially peta-scale distributed databases. (…) Whats Next in High-Performance Computing Gordon Bell & Jim Gray Communications of the ACM, Vol.45(2), Fev. 2002

12 12 Computação de Alto Desempenho - Software Estado-da-Arte (…) A persistent programming model for scalable, paralell computers is absolutely essential if computational science and enginnering is to realize even a fraction of its remarkable promise (…) Sourcebook of Parallel Computing Jack Dongarra & Ian Foster et al. (Chapter 1, Section 1.2)

13 13 Computação de Alto Desempenho - Software Estado-da-Arte (…) Why, in the face of these advances, is the science of parallel computation will interesting to study ? In 1989, many of us felt that we could develop a higher-level parallel programming interface that would supplant the message- passing paradigms then being used. However, our expectation that explicit message passing would routinely be hidden from the developer have not been realized. Today, most developers must use explicit message passing, albeit via a more sophisticated portable interface, to generate efficient scalable parallel programs. This is but one example demonstrating that the science of parallel computation is incomplete. (…) Sourcebook of Parallel Computing Jack Dongarra & Ian Foster et al. (Chapter 1, Section 1.3)

14 O Modelo # Uma Proposta para Programação Paralela sobre as Arquiteturas Contemporâneas de Computação de Alto Desempenho

15 15 Antecedentes Idéias de Rafael D. Lins (final da década de 80);Idéias de Rafael D. Lins (final da década de 80); –Linguagens funcionais paralelas; –Hierarquia de processos; –Integração à ambiente de prova (redes de Petri); –Prototipação rápida e simulação de programas; –Incorporação de bibliotecas encapsuladas; Haskell#:Haskell#: –Ricardo Massa Ferreira Lima: Tese de doutorado, 2000;Tese de doutorado, 2000; –Francisco Heron de Carvalho Junior: Dissertação de mestrado, 2000;Dissertação de mestrado, 2000;

16 16 Programação Paralela Distribuída Eficiência Portabilidade Generalidade Abstração;Eficiência Portabilidade Generalidade Abstração; Abordagens mais usadas atualmente:Abordagens mais usadas atualmente: –Paralelismo implícito; HPF, Fortran 90 e GpH;HPF, Fortran 90 e GpH; E P G A ;E P G A ; –Bibliotecas explícitas de passagem de mensagens; PVM e MPI;PVM e MPI; E P G A ;E P G A ; –Bibliotecas científicas paralelizadas de propósito específico; LAPACK, ScaLAPACK e PETSc;LAPACK, ScaLAPACK e PETSc; E P G A.E P G A.

17 17 O Modelo # Disciplinando a programação paralela por passagem de mensagens;Disciplinando a programação paralela por passagem de mensagens; Eficiência: Explícito e estático, com tradução trivial para MPI;Eficiência: Explícito e estático, com tradução trivial para MPI; Programação em dois níveis ortogonais:Programação em dois níveis ortogonais: –Mundo das funções (computações); –Mundo dos processos (coordenação); –Modelo de coordenação baseado em processos; Nível de modularidade elevado:Nível de modularidade elevado: –Suporte ao desenvolvimento de programas complexos e de larga escala; –Enfatiza programação orientada a componentes; Requisitos funcionais ou não-funcionais e encapsuladas ou entrelaçadas;Requisitos funcionais ou não-funcionais e encapsuladas ou entrelaçadas; Programação orientada a aspectos (AOP) e hyperspaces;Programação orientada a aspectos (AOP) e hyperspaces; Reuso de componentes;Reuso de componentes; continua

18 18 Nível de abstração potencialmente elevado:Nível de abstração potencialmente elevado: –Encapsulamento de bibliotecas científicas; –Esqueletos topológicos parciais; Tradução de programas # para Redes de PetriTradução de programas # para Redes de Petri –Informações necessárias e suficientes em nível de coordenação; –Verificação/análise de propriedades (INA/PEP); –Avaliação de desempenho (TimeNET); Suporte a múltiplas hierarquias de paralelismo;Suporte a múltiplas hierarquias de paralelismo; Haskell #Haskell # –Computações descritas usando linguagem Haskell (mundo das funções); –Ortogonalidade sintática entre meios de coordenação e computação; –Tratamento formal extensível ao meio de computação; Visual # Tool (VHT): Ambiente Integrado de programação;Visual # Tool (VHT): Ambiente Integrado de programação; O Modelo #

19 19 O Modelo # de Programação Paralela E P G A Modelo # = Passagem de Mensagens + Encapsulamento de Biblotecas Científicas + Programação Orientada a Esqueletos

20 20 O Modelo # Hierarquia de Processos:Hierarquia de Processos: –Programação em dois níveis hierárquicos ortogonais; –Modelo de coodenação 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 21 Conceito Primitivo: Componentes Descrevem requisitos (concerns):Descrevem requisitos (concerns): –Funcionais/não-funcionais, encapsuladas/entrelaçadas; Podem ser classificados em:Podem ser classificados em: –Simples: Computações sequenciais; Programados em uma linguagem host (Haskell, no caso de Haskell#) ;Programados em uma linguagem host (Haskell, no caso de Haskell#) ; Conjunto de componentes simples = Meio de computação;Conjunto de componentes simples = Meio de computação; –Compostos: Computações paralelas; Programados na linguagem #, pela composição de outros componentes;Programados na linguagem #, pela composição de outros componentes; Conjunto de componentes compostos = Meio de coordenação;Conjunto de componentes compostos = Meio de coordenação; # Argumentos Pontos de Retorno

22 22 Programa # = Composição de Componentes ####

23 23 Programa # = Composição Hierárquica de Componentes Nível de Coordenação # # # # # Nível de Computação Componente Principal (funcionalidade da aplicação) Aninhamento / Sobreposição de Componentes

24 24 Nível de Coordenação Capturando a Essência da Programação Paralela Distribuída (passagem de mensagens) A Linguagem # Programando em Nível de Coordenação

25 25 Processos interagem por troca explícita de mensagens recv a 1 x:=x send a 0 send buf 2 print a Configurando Componentes Compostos Programação #

26 26 Configurando Componentes Compostos Unidades e Interfaces Unidades:Unidades: –Entidades que executam tarefas individuais; –Instanciadas a partir de interfaces; interfaces Interfaces descrevem como unidades comportam-se no meio de coordenação;Interfaces descrevem como unidades comportam-se no meio de coordenação; –Tarefas são descritas por componentes atribuídos a unidade ( assign ); Classes de InterfaceClasses de Interface –Classe de unidades que compartilham comportamento análogo; –Analogia: Classes de interfaces estão para unidades, assim como: Tipos de dados estão para variáveis, em programas;Tipos de dados estão para variáveis, em programas; Classes estão para objetos em linguagens orientadas a objetos;Classes estão para objetos em linguagens orientadas a objetos; Componentes compostos são redes de unidades, as quais interagem por meio de canais de comunicação que conectam suas interfaces;Componentes compostos são redes de unidades, as quais interagem por meio de canais de comunicação que conectam suas interfaces;canais de comunicação canais de comunicação

27 27 Configurando Componentes Compostos Programação # clusters processos unidade virtual bind connect unit assign # # assign

28 28 Interfaces Uma interface é descrita por:Uma interface é descrita por: –Uma coleção de portas (entrada ou saída); –Uma expressão comportamental: expressão comportamentalexpressão comportamental Descreve ordens válidas para ativação das portas;Descreve ordens válidas para ativação das portas; Expressões regulares controladas por semáforos;Expressões regulares controladas por semáforos; Equivalência expressiva com redes de Petri rotuladas terminais;Equivalência expressiva com redes de Petri rotuladas terminais; … … Portas de Entrada Portas de Saída

29 29 Interfaces Expressão Comportamental Ações primitivas:Ações primitivas: –pid ! : ativação de porta de saída; –pid ? : ativação de porta de entrada; –signal s : incremento de semáforo –wait s : decremento de semáforo Combinadores de ações:Combinadores de ações: –seq a 1 a 2 …a n : sequência; –par a 1 a 2 …a n : concorrência; –alt a 1 a 2 …a n : alternativa (não-determinístico); –if then a 1 else a 2 : escolha baseada em condição ; –repeat a : repetição; until : condição de terminação (finalização de streams);until : condição de terminação (finalização de streams); counter : número de repetições pré-fixado;counter : número de repetições pré-fixado; interface IMerge where ports: IPipe i1 -> o # IPipe i2 -> o protocol: repeat seq {alt {i1?;i2?}; o!} until

30 30 Como Configurar Unidades ? merge Group of Ports Individual Port AccumulateLists IMerge i2 i1 o AccumulateLists interface Imerge where: ports: IPipe i1 -> o # IPipe i2 -> o protocol: repeat seq {alt {i1?;i2?}; o!} until assign AccumulateLists to merging unit merge # IMerge

31 31 Funções de Ligação g f Função de Ligação +

32 32 Agrupamentos any Função de Ligação f ! + g ? + … … … …

33 33 f ! ! ! Agrupamentos all Função de Ligação g ? … ? ? …

34 34 Streams Sequências de itens de dados transmitidos em um canal;Sequências de itens de dados transmitidos em um canal; – v 1, v 2, …, v n ; – v 1, v 2, …, v n ; –EOS: Valor terminador de stream; Portas que transmitem streams:Portas que transmitem streams: –Ativadas no contexto de combinadores repeat; repeat –Terminador de stream e condição de terminação de repetição; Múltiplos níveis de aninhamento:Múltiplos níveis de aninhamento: –EOS é acompanhado do valor de aninhamento da stream; –Transmissão de, >,, >>: [Data 1, Eos 3, Data 2, Data 3, Eos 3, Eos 2, Data 3, Data 4, Eos 3, Data 5, Data 6, Data 7, Eos 3, Eos 2, Eos 1];[Data 1, Eos 3, Data 2, Data 3, Eos 3, Eos 2, Data 3, Data 4, Eos 3, Data 5, Data 6, Data 7, Eos 3, Eos 2, Eos 1];

35 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 } until z x y * ** *** [t] [[t]] [[[t]]] Em Haskell#:Em Haskell#: –Portas stream são associadas à listas nos argumentos e pontos de retorno do módulo funcional associado à unidade; –Daí o conceito de lazy streams; –Intercalação entre computação e comunicação sem comprometimento da hierarquia de processos; Streams e Interfaces

36 36 Canais de Comunicação Conectam pares de portas da interface de unidades;Conectam pares de portas da interface de unidades; –Portas devem ter direções opostas; Ponto-a-ponto, unidirecionais e tipados;Ponto-a-ponto, unidirecionais e tipados; –Inspiração em OCCAM e CSP (disciplina formal); Modos suportados (inspiração em MPI):Modos suportados (inspiração em MPI): –synchronous: MPI_SSEND/MPI_RECV ; –buffered: MPI_BSEND/MPI_RECV ; –ready: MPI_RSEND/MPI_RECV ;

37 37 Unidades Virtuais Unidade para qual não há componente associado:Unidade para qual não há componente associado: –Parametrizada pela tarefa que executará; –Somente sua interface é conhecida; Esqueletos topológicos parciais:Esqueletos topológicos parciais: –Componente (compostos) abstratos; –Pelo menos uma unidade virtual ocorre em sua composição; –Sobreposição e aninhamento; –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); Aumenta capacidade de raciocínio sobre programas;Aumenta capacidade de raciocínio sobre programas; Encapsulamento de bibliotecas científicas;Encapsulamento de bibliotecas científicas; Suporte a modularização de requisitos entrelaçados (cross-cutting concerns).Suporte a modularização de requisitos entrelaçados (cross-cutting concerns). –Aspect-Oriented Programming (AOP) e Hyperspaces;

38 38 Operações sobre Unidades Virtuais Unificação: n unidades 1 unidade;Unificação: n unidades 1 unidade; Fatoração: 1 unidade n unidades;Fatoração: 1 unidade n unidades; Operações inversas;Operações inversas; Regras de preservação da topologiaRegras de preservação da topologia –Operações aplicam-se sobre redes bem formadas; Regras de preservação comportamental.Regras de preservação comportamental.

39 39 Unificação (permite sobreposiçã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 u ii oo i o

40 40 Unificação (permite sobreposição de componentes) ctA ctB 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 aos clusters ctA e ctB são agora componentes sobrepostos !!

41 41 Fatoração u factorize u # (i,i) -> (o,o) to u1 # (i[1],i) -> o, u2 # i[2] -> (o,o) i i o o

42 42 Fatoração u1 u2 ii oo i o factorize u # -> (o,o) to u1 # (i1,i) -> o u2 # i2 -> (o,o)

43 43 … … … … … … Esqueletos Elementares … … … … … … … … Farm Mesh Torus Pipe_Line

44 44 Esqueletos de Comunicação Coletiva 0 1 … 2 n 0 1 … 2 n Prim_OneToAll Prim_AllToOne BcastBcast ScatterScatter ScattervScatterv Reduce_ScatterReduce_Scatter ScanScan Prim_AllToAll GatherGather GathervGatherv ReduceReduce AllGatherAllGather AllGathervAllGatherv AllToAllAllToAll AllToAllvAllToAllv AllReduceAllReduce … 0 1 n

45 45 Uso de Esqueletos Esqueletos podem prover ao compilador informações de alto nível sobre topologia da rede:Esqueletos podem prover ao compilador informações de alto nível sobre topologia da rede: –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 … –Otimização da alocação de processadores; –Simplificação da rede de Petri equivalente: Exemplo adiante…Exemplo adiante… Esqueletos # permitem modularização de requisitos entrelaçados, assim como AOP e Hyperspaces.Esqueletos # permitem modularização de requisitos entrelaçados, assim como AOP e Hyperspaces.

46 46 Implementação Haskell # de NPB NPB = NAS Parallel Benchmarks (NASA Research at Ames, EUA);NPB = NAS Parallel Benchmarks (NASA Research at Ames, EUA); –Aplicações em dinâmica dos fluidos computacional; Padrão SPMD (Single Program, Multiple Data);Padrão SPMD (Single Program, Multiple Data); Como derivar de programas # a partir de programas MPI.Como derivar de programas # a partir de programas MPI. –Componentes simples implementados em Haskell (módulos funcionais); Kernels: EP, IS, CG;Kernels: EP, IS, CG; –Extensivo uso de comunicação coletiva; –Usadas nos benchmarks mostrados adiante; –Sobreposição de esqueletos MPI; Aplicações Simuladas: LU, SP e BT;Aplicações Simuladas: LU, SP e BT; –Comunicação ponto-a-ponto; –Exercita capacidade de lidar com unidades com muitas portas;

47 47 Kernel IS: Topologia # AlltoAll v AllReduc e is_unit[4] is_unit[1] is_unit[2] is_unit[3] RShift IS

48 48 component IS with total_keys_log2, max_iterations, max_procs, test_array_size> with #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) iterator i range [1, num_procs] use Skeletons.{Misc.RShift, Collective.{AllReduce, AllToAllv}} use IS -- IS Functional Module interface IIS (bs*, kb*, k) -> (bs*, kb*, k) where: (UArray Int Int) # where: (UArray Int Int) # (Int, Ptr Int) # (Int, Ptr Int) # Int Int behaviour: seq {repeat seq {do bs; do kb} until ; do k} behaviour: seq {repeat seq {do bs; do kb} until ; do k} unit bs_comm ; assign AllReduce to bs_comm unit kb_comm ; assign AllToAllv to kb_comm unit k_shift ; assign RShift 0 -> _ to k_shift [/ unify bs_comm.p[i] # bs, kb_comm.p[i] # kb, kb_comm.p[i] # kb, k_comm.p[i] # k to is_unit[i] # IIS k_comm.p[i] # k to is_unit[i] # IIS assign IS (PARAMETERS, bs, kb, k) -> (bs, kb, k) to is_unit[i] # bs # kb # k /] assign IS (PARAMETERS, bs, kb, k) -> (bs, kb, k) to is_unit[i] # bs # kb # k /]

49 49

50 50 Tratamento Formal de Programas # Usando 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 (Integrated Net Analyser) e PEP; Avaliação de desempenho de programas:Avaliação de desempenho de programas: –Redes de Petri estocásticas; –SPNL e TimeNET; Antecedentes:Antecedentes: –Tradução OCCAM redes de Petri (Lins & Maciel, 1996); –Tradução Haskell# redes de Petri (Lima, 2000); Versão anterior de Haskell#;Versão anterior de Haskell#;

51 51 Estudos de Caso:Estudos de Caso: –Jantar dos Filósofos: 2 soluções com características distintas;2 soluções com características distintas; –Simulação do Protocolo do Bit Alternado; Ferramentas: INA e PEP;Ferramentas: INA e PEP; Técnicas empregadas:Técnicas empregadas: –Propriedades comportamentais e estrututurais; –Computação (parcial) de grafo de estados e grafo de cobertura; –Teste de alcançabilidade de marcações; –Teste de liveness; –Computação e teste de invariantes; Verificação de propriedades:Verificação de propriedades: –Presença de deadlocks (impasses); –Justiça; –Grau de paralelismo ou concorrência; Tratamento Formal de Programas # Usando Redes de Petri

52 52 Jantar dos Filósofos Solução 1 Situação geral;Situação geral; Presença de agrupamentos de portas;Presença de agrupamentos de portas; Filósofos disputam talheres arbitrariamente:Filósofos disputam talheres arbitrariamente: –Ocorrência de deadlocks; –Solução assíncrona (canais bufferizados); –Justiça condicional (escalonamento fortemente justo);

53 53 Um processo filósofo (Modelagem da Natureza do Valor Transmitido)

54 54 Cinco processos filósofos (Canais de Comunicação)

55 55 Jantar dos Filósofos Solução 2 Solução 2Solução 2 Filósofos estabelecem protocolo:Filósofos estabelecem protocolo: –Máximo paralelismo; –Justiça incondicional; –Ausência de deadlocks; –Comunicação síncrona (canais síncronos); –Não emprega agrupamentos de portas (simplicidade)

56 56 Cinco processos filósofos (Canais de Comunicação)

57 57 Protocolo do Bit Alternado Pode ser visto como um esqueleto:Pode ser visto como um esqueleto: –Modelagem de protocolos de comunicação de canais; –Preocupação não-funcional entrelaçada; Unidades heterogêneas;Unidades heterogêneas; Verificação de deadlocks;Verificação de deadlocks; –Empregando o teste de alcançabilidade marcações mortas a partir do grafo de estados não foram encontrados deadlocks;

58 58

59 59 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; Biblioteca de componentes e classes de interfaces reutilizáveis;Biblioteca de componentes e classes de interfaces reutilizáveis; Uso de XML como formato de intercâmbio;Uso de XML como formato de intercâmbio; –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 PNML (Petri Net Markup Language);

60 60 VHT (Visual # Tool) Avaliação de Desempenho;Avaliação de Desempenho; –Redes de Petri estocásticas usando a ferramenta TimeNET; Geração de código SPNL (Stochastic Petri Net Language);Geração de código SPNL (Stochastic Petri Net Language); –Simuladores de redes de computadores; Geração de simulações para a ferramenta NS (Network Simulator);Geração de simulações para a ferramenta NS (Network Simulator); Simulação de programas;Simulação de programas; –Animação usando ferramentas de redes de Petri; –Simuladores de rede, como NS (Network Simulator) Execução do programa e debuging;Execução do programa e debuging; –Integração ao LAM-MPI ou MPICH; –Possível integração a ferramentas de debugging de programas MPI; Em fase desenvolvimento (prototipação).Em fase desenvolvimento (prototipação).

61 61 Conclusões Advento de grid computing e cluster computing;Advento de grid computing e cluster computing; –Aumento de escala e complexidade das aplicações; –Maior número de usuários interessados em PAD (academina e indústria); –Novos desafios para programação paralela; O modelo # integra em um mesmo arcabouço mecanismos que conferem eficiência e alto nível de abstração para programação paralela:O modelo # integra em um mesmo arcabouço mecanismos que conferem eficiência e alto nível de abstração para programação paralela: –Total transparência entre os meios de coordenação e computação; –A noção de modularidade é levada ao extremo: Desenvolvimento baseado em Componentes;Desenvolvimento baseado em Componentes; Programação de aplicações de larga escala;Programação de aplicações de larga escala; Reusabilidade de componentes;Reusabilidade de componentes; Suporte a modularização de preocupações não-funcionais e entrelaçadas;Suporte a modularização de preocupações não-funcionais e entrelaçadas; –Mecanismos de abstração: Esqueletos e bibliotecas científicas encapsuladas; –Tradução direta para MPI (eficiência e portabilidade); –Suporte multi-lingual; –Tradução para redes de Petri;

62 62 Trabalhos em Andamento e Propostas de Trabalhos Futuros Implementação de estratégias de alocação de processos a processadores usando esqueletos topológicos parciais:Implementação de estratégias de alocação de processos a processadores usando esqueletos topológicos parciais: –Tipo de preocupação não-funcional e entrelaçada; –Flexibilidade: programador escolhe esqueleto de acordo com a arquitetura ou características da aplicação; Implementação de interfaces com bibliotecas científicas:Implementação de interfaces com bibliotecas científicas: –PETSc, LAPACK, ScaLAPACK, e inúmeras outras. –Abstração de funcionalidades por meio de esqueletos topológicos parciais; –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; continua

63 63 Trabalhos em Andamento e Propostas de Trabalhos Futuros Ferramentas de alto nível para suporte à animação e análise de propriedades formais de programas # com redes de Petri:Ferramentas de alto nível para suporte à animação e análise de propriedades formais de programas # com redes de Petri: –Implementação no topo de INA e PEP; –Integração à VHT; Ferramentas de alto nível para suporte à análise e simulação de desempenho de programas #:Ferramentas de alto nível para suporte à análise e simulação de desempenho de programas #: –Abordagem 1: Modelagem e Simulação usando redes de Petri estocásticas; Implementação no topo de TimeNET com tradução de programas # para SPNL;Implementação no topo de TimeNET com tradução de programas # para SPNL; –Abordagem 2: Simulações no topo de NS (Network Simulator); Proposta de mestrado de Fernando Aires Lins (atualmente bolsista IC-FDPE/UPE);Proposta de mestrado de Fernando Aires Lins (atualmente bolsista IC-FDPE/UPE); –Integração à VHT; continua

64 64 Trabalhos em Andamento e Propostas de Trabalhos 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.; –Adaptação ao problema em consideração; –Haskell é ideal para prototipação; –Recentes implementações de LAM-MPI são heterogêneas. Formalização de um modelo de custos para esqueletos #:Formalização de um modelo de custos para esqueletos #: –Existem muitos trabalhos sobre modelos de custos de esqueletos; –Captura da noção de composicionabilidade de esqueletos; –Sobreposição de esqueletos; Meta-linguagem para especificação de implementação de esqueletos definidos ad-hoc pelo usuário;Meta-linguagem para especificação de implementação de esqueletos definidos ad-hoc pelo usuário; Programação # sobre grids.Programação # sobre grids.

65 Francisco Heron de Carvalho Junior, Dr. Escola Politécnica, Universidade de Pernambuco Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas Distribuídas


Carregar ppt "Francisco Heron de Carvalho Junior, Dr. Escola Politécnica, Universidade de Pernambuco Programação Paralela Eficiente e de Alto Nível sobre Arquiteturas."

Apresentações semelhantes


Anúncios Google