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

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

Francisco Heron de Carvalho Junior, Dr.

Apresentações semelhantes


Apresentação em tema: "Francisco Heron de Carvalho Junior, Dr."— Transcrição da apresentação:

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

2 Computação de Alto Desempenho - Hardware Estado-da-Arte
Consolidação de arquiteturas distribuídas: MPP’s (Massive Parallel Processors); Constelações; Clusters; Grids; 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 (www.top500.org).

3

4

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

6 Computação de Alto Desempenho - Hardware Iniciativas nos EUA
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: Cornell Theory Center (CTC); National Center for Atmonspheric Research (NCSA); Pittsburgh Supercomputing Center (PSC); 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 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; Uso verdadeiramente escalável das arquiteturas limitada pelo software; Como conciliar escalabilidade com portabilidade ? 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 Computação de Alto Desempenho - Software Estado-da-Arte
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.) Eficiência  portabilidade  generalidade  abstração; Modelos e linguagens atuais não têm conciliado tais propriedades;

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; Motivo: advento de clusters e grids; 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”.

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 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. (…)” What’s Next in High-Performance Computing Gordon Bell & Jim Gray Communications of the ACM, Vol.45(2), Fev. 2002

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 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 Antecedentes 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#: Ricardo Massa Ferreira Lima: Tese de doutorado, 2000; Francisco Heron de Carvalho Junior: Dissertação de mestrado, 2000;

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

17 O Modelo # Disciplinando a programação paralela por passagem de mensagens; Eficiência: Explícito e estático, com tradução trivial para MPI; 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: 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; Programação orientada a aspectos (AOP) e hyperspaces; Reuso de componentes; continua

18 O Modelo # Nível de abstração potencialmente elevado:
Encapsulamento de bibliotecas científicas; Esqueletos topológicos parciais; Traduçã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; 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;

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 Interface via lazy streams (“não invasiva”)
O Modelo # Hierarquia de Processos: Programação em dois níveis hierárquicos ortogonais; Modelo de coodenação orientado a processos; Interface via lazy streams (“não invasiva”) Nível de Coordenação Linguagem de Configuração # Nível de Computação Linguagem Sequencial (Haskell)

21 Conceito Primitivo: Componentes
Descrevem requisitos (concerns): Funcionais/não-funcionais, encapsuladas/entrelaçadas; Podem ser classificados em: Simples: Computações sequenciais; Programados em uma linguagem host (Haskell, no caso de Haskell#) ; Conjunto de componentes simples = Meio de computação; Compostos: Computações paralelas; Programados na linguagem #, pela composição de outros componentes; Conjunto de componentes compostos = Meio de coordenação; Argumentos l Pontos de Retorno #

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

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

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

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

26 Configurando Componentes Compostos Unidades e Interfaces
Entidades que executam tarefas individuais; Instanciadas a partir de interfaces; Interfaces descrevem como unidades comportam-se no meio de coordenação; Tarefas são descritas por componentes atribuídos a unidade (assign); Classes 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; 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;

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

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

29 Interfaces Expressão Comportamental
 interface IMerge where ports: IPipe i1 -> o # IPipe i2 -> o protocol: repeat seq {alt {i1?;i2?}; o!} until <i1 & i2 & o> 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: seq a1 a2 …an : sequência; par a1 a2 …an : concorrência; alt a1 a2 …an : alternativa (“não-determinístico”); if <?> then a1 else a2: escolha baseada em condição <?>; repeat a : repetição; until <?>: condição de terminação (finalização de streams); counter : número de repetições pré-fixado;

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

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

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

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

34 Streams Sequências de itens de dados transmitidos em um canal;
v1, v2, …, vn; EOS: Valor terminador de stream; Portas que transmitem streams: Ativadas no contexto de combinadores repeat; Terminador de stream e condição de terminação de repetição; Múltiplos níveis de aninhamento: EOS é acompanhado do valor de aninhamento da stream; Transmissão de <<<1>,<2,3>>,<<3,4>,<5,6,7>>>: [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 l Streams e Interfaces 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; 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> * l x *** [t] [[[t]]] z ** [[t]] y

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

37 Unidades Virtuais Unidade para qual não há componente associado:
Parametrizada pela tarefa que executará; Somente sua interface é conhecida; 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); Aumenta capacidade de raciocínio sobre programas; Encapsulamento de bibliotecas científicas; Suporte a modularização de requisitos entrelaçados (cross-cutting concerns). Aspect-Oriented Programming (AOP) e Hyperspaces;

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

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 i i o’ u u i’ o o

40 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’) Os componentees atribuídos aos clusters ctA e ctB são agora componentes sobrepostos !! ctB ctA i o’ new_u o i’

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

42 Fatoração factorize u # (i@{i1,i2},i’) -> (o,o’)
to u1 # (i1,i’) -> o u2 # i2 -> (o,o’) i i o’ u1 u2 i’ o o

43 Esqueletos Elementares
Farm Pipe_Line Torus Mesh

44 Esqueletos de Comunicação Coletiva
Prim_OneToAll Prim_AllToOne Prim_AllToAll Gather Gatherv Reduce Bcast Scatter Scatterv Reduce_Scatter Scan AllGather AllGatherv AllToAll AllToAllv AllReduce 1 2 n 1 2 n 1 n

45 Uso de Esqueletos 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; 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… Esqueletos # permitem modularização de requisitos entrelaçados, assim como AOP e Hyperspaces.

46 Implementação Haskell# de NPB
NPB = NAS Parallel Benchmarks (NASA Research at Ames, EUA); Aplicações em dinâmica dos fluidos computacional; Padrão SPMD (Single Program, Multiple Data); Como derivar de programas # a partir de programas MPI. Componentes simples implementados em Haskell (módulos funcionais); 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; Comunicação ponto-a-ponto; Exercita capacidade de lidar com unidades com muitas portas;

47 Kernel IS: Topologia # IS is_unit[1] is_unit[2] is_unit[4] is_unit[3]
AllReduce AlltoAllv IS RShift is_unit[2] is_unit[4] is_unit[3]

48 component IS <problem_class, num_procs, max_key_log2, num_buckets_log2,
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) 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) # (Int, Ptr Int) # Int behaviour: seq {repeat seq {do bs; do kb} until <bs & kb>; do k} unit bs_comm ; assign AllReduce<num_procs, MPI_SUM, MPI_INTEGER> to bs_comm unit kb_comm ; assign AllToAllv<num_procs> to kb_comm unit k_shift ; assign RShift<num_procs> 0 -> _ to k_shift [/ unify bs_comm.p[i] # bs, kb_comm.p[i] # kb, 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 /]

49

50 Tratamento Formal de Programas # Usando Redes de Petri
Tradução da rede de processos para redes de Petri; Análise de propriedades formais de programas: INA (Integrated Net Analyser) e PEP; Avaliação de desempenho de programas: Redes de Petri estocásticas; SPNL e TimeNET; Antecedentes: Tradução OCCAM  redes de Petri (Lins & Maciel, 1996); Tradução Haskell#  redes de Petri (Lima, 2000); Versão anterior de Haskell#;

51 Tratamento Formal de Programas # Usando Redes de Petri
Estudos de Caso: Jantar dos Filósofos: 2 soluções com características distintas; Simulação do Protocolo do Bit Alternado; Ferramentas: INA e PEP; 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: Presença de deadlocks (impasses); Justiça; Grau de paralelismo ou concorrência;

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

53 (Modelagem da Natureza do Valor Transmitido)
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ósofos Solução 2
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 Cinco processos filósofos (Canais de Comunicação)

57 Protocolo do Bit Alternado
Pode ser visto como um esqueleto: Modelagem de protocolos de comunicação de canais; Preocupação não-funcional entrelaçada; Unidades heterogêneas; 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

59 VHT (Visual # Tool) Ambiente # de programação paralela:
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; 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; Geração de código PNML (Petri Net Markup Language);

60 VHT (Visual # Tool) Avaliação de Desempenho; Simulação de programas;
Redes de Petri estocásticas usando a ferramenta TimeNET; 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); 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; Integração ao LAM-MPI ou MPICH; Possível integração a ferramentas de debugging de programas MPI; Em fase desenvolvimento (prototipação).

61 Conclusões 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: Total transparência entre os meios de coordenação e computação; A noção de modularidade é levada ao extremo: Desenvolvimento baseado em Componentes; Programação de aplicações de larga escala; Reusabilidade de componentes; 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 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: 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: 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 #: Teoria das categorias; continua

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: 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 #: 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; Abordagem 2: Simulações no topo de NS (Network Simulator); Proposta de mestrado de Fernando Aires Lins (atualmente bolsista IC-FDPE/UPE); continua

64 Trabalhos em Andamento e Propostas de Trabalhos Futuros
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 #: 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; Programação # sobre grids.

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


Carregar ppt "Francisco Heron de Carvalho Junior, Dr."

Apresentações semelhantes


Anúncios Google