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

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

1 Haskell # Uma Extensão Paralela Para Haskell Universidade Federal de Pernambuco Centro de Informática Pós-Graduação em Ciências da Computação Dissertação.

Apresentações semelhantes


Apresentação em tema: "1 Haskell # Uma Extensão Paralela Para Haskell Universidade Federal de Pernambuco Centro de Informática Pós-Graduação em Ciências da Computação Dissertação."— Transcrição da apresentação:

1 1 Haskell # Uma Extensão Paralela Para Haskell Universidade Federal de Pernambuco Centro de Informática Pós-Graduação em Ciências da Computação Dissertação de Mestrado Autor: Francisco Heron de Carvalho Junior Orientador: Prof. Dr. Rafael Dueire Lins

2 2 Objetivo Desenvolver uma extensão para a linguagem funcional Haskell, para exploração do paralelismo zPremissas yparalelismo eficiente; yarquiteturas de memória distribuída; ydesenvolvimento modular de programas; yraciocínio sobre programas paralelos; OCCAM xmodelo de paralelismo de OCCAM;

3 3 Estrutura da Dissertação Capítulo 1 Introdução Capítulo 2 Haskell # Capítulo 3 Aspectos da Construção de Aplicações Haskell # Capítulo 4 Implementação de Haskell # Capítulo 5 Conclusões e Trabalhos Futuros

4 4 Estrutura da Dissertação Capítulo 1 Introdução Capítulo 2 Haskell # Capítulo 3 Aspectos da Construção de Aplicações Haskell # Capítulo 4 Implementação de Haskell # Capítulo 5 Conclusões e Trabalhos Futuros

5 5 Linguagens Funcionais zOrigem yLISP, -calculus; zPrincipais características e virtudes; zCompilação de programas funcionais yavanços obtidos nos últimos anos; zLing. funcionais e processamento paralelo; linguagens funcionais constituem uma alternativa real para o processamento paralelo

6 6 Linguagens Funcionais zHaskell ylinguagem funcional pura e não-estrita; yelaborada por um comitê científico, constituído em 1987 durante a conferência FPCA87; ysuporte a ysuporte a funções de alta ordem, polimorfismo ad hoc, polimorfismo paramétrico, sistema de módulos, avaliação lazy, tipos algébricos, casamento de padões, compreensão de listas, rico conjunto de tipos, etc.;

7 7 Linguagens Funcionais zHaskell (cont.) yHaskell tornou-se um padrão para pesquisa e desenvolvimento em linguagens funcionais; yRico conjunto de implementações eficientes (NHC, GHC, Hugs, CMC/Haskell,...); Haskell 98 yO padrão Haskell 98; Haskell está em constante evolução. Um novo comitê tem sido constituído para elaboração de um novo padrão, chamado Haskell II

8 8 Processamento Paralelo zMotivações para o processamento paralelo; zModelos e Arquiteturas de Suporte: ySIMD - Single Instruction Multiple Data; yMIMD - Multiple Instruction Multiple Data; xMemória Distribuída X Memória Compartilhada; yTransparência do paralelismo: xParalelismo Implícito X Paralelismo Explícito;

9 9 Processamento Paralelo zLimitações e Desafios yGerenciamento do paralelismo; yGranularidade; yInconvenientes do paradigma imperativo; yDificuldade de programação; yPortabilidade; yEngenharia de programas; yRaciocínio sobre programas paralelos;

10 10 Estrutura da Dissertação Capítulo 1 Introdução Capítulo 2 Haskell # Capítulo 3 Aspectos da Construção de Aplicações Haskell # Capítulo 4 Implementação de Haskell # Capítulo 5 Conclusões e Trabalhos Futuros

11 11 zHierarquização entre os sub-conjuntos seqüencial (funcional) e paralelo; yModularidade; yRaciocínio e prova de propriedades sobre programas paralelos (redes de Petri); yFacilidades para implementação; zParalelismo de grossa granularidade; zArquiteturas de memória distribuída; zAlocação estática e explícita de processos; zComunicação estática e explícita entre processos ; Haskell # - Características

12 12 Haskell # Configuration Language Haskell # - Características Haskell Haskell # Configuration Language HCL

13 13 Haskell # - Subconjunto Seqüencial zLinguagem Haskell padrão; zMódulos Funcionais yconstituem módulos Haskell; module Compressor(main) where main :: [FContents] -> IO [FContents] main contents = return (compress contents) (...) yconstituem unidades de particionamento funcional de aplicações Haskell # ;

14 14 Haskell # - Subconjunto Paralelo zHCL - Haskell # Configuration Language yInstanciação de processos funcionais; xdeclarações module; yConstrução da rede de processos funcionais; xdeclarações connect; yAlocação dos processos funcionais aos nós; xdeclarações alloc; yInicialização a aplicação; xdeclarações start;

15 15 Haskell # - Subconjunto Paralelo zInstanciação de Processos Funcionais yA partir do conjunto de módulos funcionais; yPortas de comunicação (interface); xnome, protocolo e direção; PROCESSO FUNCIONAL função main A1A1 A2A2 AnAn V1V1 V2V2 VmVm INTERFACE DE ENTRADAINTERFACE DE SAÍDA (V 1,V 2,...V m ) A1A1 A2A2 AnAn

16 16 Haskell # - Subconjunto Paralelo ::= module M input p 1 ::t 1,p 2 ::t 2,... p n ::t n output q 1 ::u 1,q 2 ::u 2,... q m ::u m instances i 1,i 2,... i n M é o nome do módulo funcional; p i e q j são nomes de portas de entrada e saída, respectivamente; t i e u j são tipos Haskell (protocolos); i k são nomes de processos funcionais; OBS.: as declarações input e output são facultativas;

17 17 Haskell # - Subconjunto Paralelo zConstrução da rede de processos funcionais yCanais de Comunicação; xmapeamento entre duas portas de comunicação de processos distintos; xtipados, unidirecionais, ponto-a-ponto e síncronos; yRegras para construção de canais: xas portas devem ter o mesmo protocolo; xas portas devem possuir direções opostas; xcada porta deve ser conectada a um único canal;

18 18 Haskell # - Subconjunto Paralelo ::= connect pf i.op jip to pf k.ip lkp i k; pf n é um nome de processo funcional; ip xyz é o nome da x-ésima porta de entrada do processo funcional pf y, com protocolo z; op xyz é o nome da x-ésima porta de saída do processo funcional pf y, com protocolo z.

19 19 zAlocação dos processos funcionais aos nós yestática; ymuitos-para-um; ypor classes de nós; xmodelagem de arquiteturas heterogêneas; xarquivos nodeclasses e nodeid; xestratégia orientada à arquitetura; favorece eficiência; xestratégia orientada à aplicação; favorece portabilidade; Haskell # - Subconjunto Paralelo

20 20 Nós Físicos Nó n 3 Nó n 1 Nó n 2 Nó n 4 Nós Virtuais Haskell # - Subconjunto Paralelo d h g e f c b a Processos Funcionais

21 21 Haskell # - Subconjunto Paralelo wide,thin fast,slow f1e1.di.ufpe.br wide,fast f1e2.di.ufpe.br wide,fast f1e3.di.ufpe.br thin,fast f1e4.di.ufpe.br thin,fast f1e5.di.ufpe.br wide,slow f1e6.di.ufpe.br thin,slow nodeclassesnodeid Exemplo de Classificação de Nós

22 22 Haskell # - Subconjunto Paralelo ::= alloc(c 1,c 2,...c n ) pf 1,pf 2,...pf m c i é o nome de uma classe de nó; pf i é um nome de processo funcional; n 0; (é permitido não fazer-se restrição de classe) m 1; (pelo menos um processo deve ser alocado a um nó)

23 23 Haskell # - Subconjunto Paralelo zExecução de uma Aplicação Haskell # yEstados de execução de um processo funcional; xExecutando; xbloqueado em leitura; xbloqueado em escrita; xfinalizado; yEstado de execução da aplicação; yInicialização da Aplicação; xconfiguração do estado inicial da aplicação; yAplicações finalizáveis e não-finalizáveis;

24 24 Haskell # - Subconjunto Paralelo ::= start pf i arg 1 arg 2... arg n pf i é um nome de processo funcional; arg j é um argumento para a função main do processo funcional; n 0;

25 25 a b c d e nó 1 nó 2 o1o1 o2o2 o1o1 o2o2 o3o3 o2o2 o2o2 o1o1 i1i1 i2i2 i1i1 i2i2 i3i3 f i1i1 i2i2 i1i1 application Ex with final state module C_Example input i1::String, i2 ::Int output o1::[Int] instances c connect a.o1 to f.i1 connect a.o2 to c.i1 connect b.o1 to c.i2 connect b.o2 to d.i1 connect b.o3 to e.i1 connect c.o1 to f.i2 connect d.o1 to f.i3 connect d.o2 to e.i2 alloc (wide,fast) a, c, f alloc slow b, d, e start a start b bloqueado em leitura executando bloqueado em escrita finalizado tempo t0t0 t1t1 t2t2 t3t3 t4t4 t5t5 t6t6 t7t7 a b c d e f {o 1,o 2 } {o 2,o 3 } {o 1 } {i 1 } {o 2 }{i 1 } {i 2 } {i 3 } {o 1 }

26 26 Estrutura da Dissertação Capítulo 1 Introdução Capítulo 2 Haskell # Capítulo 3 Aspectos da Construção de Aplicações Haskell # Capítulo 4 Implementação de Haskell # Capítulo 5 Conclusões e Trabalhos Futuros

27 27 zBalanceamento de Carga; zConfigurações válidas; yconectividade da rede de processos; ydeadlocks; zDeterminismo; zEngenharia de Programas. Haskell # - Aspectos da...

28 28 zBalanceamento de Carga; zConfigurações válidas; yconectividade da rede de processos; ydeadlocks; zDeterminismo; zEngenharia de Programas. Haskell # - Aspectos da...

29 29 Haskell # - Balanc. de Carga Mecanismos dinâmicos e automáticos (ling. funcionais paralelas em geral) X Mecanismos estáticos e explícitos (proposta para Haskell # ) nossa proposta visa reduzir a sobrecarga do mecanismo de balanceamento sobre o desempenho da aplicação

30 30 Haskell # - Balanc. de Carga zOtimizando o Balanceamento de Carga yO que queremos... xEvitar ociosidade de processadores; xMinimizar o custo da comunicação; yFerramentas disponíveis em Haskell # xAlocação de processos a um mesmo nó; xClassificação de nós;

31 31 Haskell # - Aplicações Válidas Aplicação Válida Definição (Aplicação Válida) Uma aplicação Haskell # é considerada válida se, e somente se, atinge, durante a execução, o estado final (finalizável) ou entra em um loop inifinito (não- finalizável), com a avaliação cíclica de seu conjunto de processos funcionais

32 32 Haskell # - Aplicações Válidas P P P S S S E E E E P i j i i i j j j Bloqueado em Leitura na i-ésima porta de entrada Executando Bloqueado em Escrita na j-ésima porta de saída Finalizado E P P S j i S Bloqueado em Escrita na j-ésima porta de saída Bloqueado em Leitura na i-ésima porta de entrada Valor está sendo transmitido pelo canal Int

33 33 Haskell # - Aplicações Válidas

34 34 Haskell # - Aplicações Válidas zDeadlocks Um conjunto de processos está em deadlock se cada processo no conjunto está esperando (bloqueado) por um evento que somente outro processo do conjunto pode causar yCausas de deadlocks em aplicações Haskell # xInterdependência de dados entre proc. funcionais; xMá ordenação de portas de comunicação; yPrevenção estática, em tempo de programação; xProposta de Haskell # ; xEvitando sobrecarga de tempo e espaço;

35 35 Haskell # - Aplicações Válidas A B E C F D G S E S E E S S S ESS S E E E E Ciclo Direto C, D, F e G são processos interdependentes Para evitar o deadlock, um dos processos no ciclo deve ser inicializado explicitamente e a aplicação deve ser configurada como não-finalizável

36 36 a bc S E SE S E a bc S E SE S E a bc S E SE S E a bc S E SE S E a bc S E SE S E a bc S E SE S E a bc S E SE S E a bc S E SE S E Haskell # - Aplicações Válidas a bc S E SE S E a bc S E SE S E Finalizável Não-finalizável APLICAÇÃO BLOQUEADA !!! a bc S E SE S E a bc S E SE S E a bc S E SE S E a bc S E SE S E

37 37 Haskell # - Aplicações Válidas BC A S ES E S E i l D S E B A S E E S C=D E S k i k i j j B=C A=D E S j E S k l l cc c Critério de Ordenação Válida l j e k i

38 38 Haskell # - Aplicações Válidas a b c S E S E S E a b c S E S E S E a b c S E S E S E a b c S E S E S E a b c S E S E S E a b c S E S E S E a b c S E S E S E a b c S E S E S E a b c S E S E S E Ordenação VálidaOrdenação Inválida DEADLOCK !!!

39 39 Haskell # - Aplicações Válidas zRegras para construção de aplicações válidas: yA rede de processos deve estar conectada; yAplicações que possuem um ou mais conjuntos de processos funcionais interdependentes devem ser configuradas como não-finalizáveis; yPelo menos um processo em cada conjunto de processos interdependentes na aplicação deve ser ativado explicitamente;

40 40 Haskell # - Aplicações Válidas zRegras para construção de aplicações válidas (continuação) yA ordenação das portas deve obedecer o critério de ordenação válida; yOs processos raízes devem ser ativados explicitamente; yEm uma aplicação finalizável, um processo que não é raiz nunca deve ser ativado explicitamente;

41 41 zBalanceamento de Carga; zConfigurações válidas; yconectividade da rede de processos; ydeadlocks; zDeterminismo; zEngenharia de Programas. Haskell # - Aspectos da...

42 42 Haskell # - Determinismo zFacilitar o tratamento formal de aplicações; zDeterminismo em Haskell # ya nível seqüencial: determinismo de Haskell; ya nível paralelo: canais ponto-a-ponto e síncronos; zImportância do não-determinismo para modelagem do comportamento dinâmico da aplicação e da arquitetura alvo; ySeparação entre os sub-conjuntos determinístico e não-determinístico da linguagem;

43 43 zBalanceamento de Carga; zConfigurações válidas; yconectividade da rede de processos; ydeadlocks; zDeterminismo; zEngenharia de Programas. Haskell # - Aspectos da...

44 44 Haskell # - Eng. de Programas zModularidade yImportante atributo em Engenharia de Software; yVantagens xRedução da complexidade das aplicações; xReuso de componentes; yIndependência funcional entre os módulos xAlto grau de coesão; xBaixo grau de acoplamento; yInerente yInerente ao modelo de aplicações Haskell # ;

45 45 Construção dos Módulos Relatório de Custos de Computação para cada Mód. Funcional Mód. Funcionais Implementados Mapeamento dos Processos Funcionais aos nós do Ambiente Paralelo Programa de Configuração Problema Decomposição Funcional Especificação dos Módulos (Interface e Comportamento) Módulos Funcionais Especificação dos Módulos Funcionais Integração Preliminar Rede de Processos Funcionais Preliminar Decomposição do Domínio Rede de Processos Funcionais Final

46 46 Estrutura da Dissertação Capítulo 1 Introdução Capítulo 2 Haskell # Capítulo 3 Aspectos da Construção de Aplicações Haskell # Capítulo 4 Implementação de Haskell # Capítulo 5 Conclusões e Trabalhos Futuros

47 47 Haskell # - Implementação zObjetivo yProtótipo para avaliação das decisões de projeto de Haskell # ; zFerramentas IBM SP2 yArquitetura Alvo: IBM SP2; GHC yCompilação de códigos Haskell: GHC (Glasgow Haskell Compiler); MPI yInstanciação e Comunicação: MPI (Message Passing Library).

48 48 MPIStubMPIStub AMBIENTE MPIAMBIENTE MPI C Haskell RTS unpack pack Valores Haskell buffer de envio buffer de recepção MPI_Ssend MPI_Recv Haskell # - Implementação Ambiente MPI processo funcional processo funcional processo funcional processo funcional

49 49 Haskell # - Implementação GHC mód. funcionais *.o mód. auxiliares *..o comunicação Channels.o instanciação Main.o def. gerais HHash.o mpcc Executável mód. funcionais *.hs mód. auxiliares *.hs def. gerais HHash.hs Biblioteca MPI Config. *.hcl Classes de nós nodeclasses nós nodeid protocolos Protocols..hs pré-processador Haskell pré-processador HCL ProgramaPrincipal instanciação Main.hs comunicação Channels.hs alocação host.list inicialização

50 50 Haskell # - Implementação Módulo Funcional Módulo Funcional Módulo Funcional Instanciação e Controle Main.hs Comunicação Channels.hs Definições Globais HHash.hs

51 51 Estrutura da Dissertação Capítulo 1 Introdução Capítulo 2 Haskell # Capítulo 3 Aspectos da Construção de Aplicações Haskell # Capítulo 4 Implementação de Haskell # Capítulo 5 Conclusões e Trabalhos Futuros

52 52 Haskell # - Conclusões aplicações de alto-desempenho desempenhoconfiabilidadeportabilidade simplicidade de programaçãoHaskell # adequa-se a implementação de aplicações de alto-desempenho, tendo em vista sobretudo os aspectos de desempenho, confiabilidade, portabilidade e simplicidade de programação

53 53 Haskell # - Trabalhos Futuros zImplementação sobre o compilador Haskell/ CMC; zSuporte ao não-determinismo; zRelaxamento das condições de sincronia dos canais de comunicação; zcomunicação de streams (listas infinitas); zPossibilidade do reuso de configurações; zFacilidade ao suporte do paralelismo de dados; zAnálise de desempenho com aplicações reais;

54 54 ?


Carregar ppt "1 Haskell # Uma Extensão Paralela Para Haskell Universidade Federal de Pernambuco Centro de Informática Pós-Graduação em Ciências da Computação Dissertação."

Apresentações semelhantes


Anúncios Google