1 haskell # uma extensão paralela para haskell universidade federal de pernambuco centro de...

54
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 Juni Orientador: Prof. Dr. Rafael Dueire Lin

Upload: internet

Post on 17-Apr-2015

109 views

Category:

Documents


1 download

TRANSCRIPT

Page 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

1

Haskell#

Uma Extensão Paralela Para Haskell

Universidade Federal de PernambucoCentro de InformáticaPós-Graduação em Ciências da Computação

Dissertação de Mestrado

Autor: Francisco Heron de Carvalho JuniorOrientador: Prof. Dr. Rafael Dueire Lins

Page 2: 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

2

Objetivo

“Desenvolver uma extensão para a linguagem funcional Haskell, para

exploração do paralelismo”Premissas

paralelismo eficiente; arquiteturas de memória distribuída; desenvolvimento modular de programas; raciocínio sobre programas paralelos;

modelo de paralelismo de OCCAMOCCAM;

Page 3: 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

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

Page 4: 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

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

Page 5: 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

5

Linguagens Funcionais

Origem LISP, -calculus;

Principais características e virtudes;Compilação de programas funcionais

avanços obtidos nos últimos anos;Ling. funcionais e processamento

paralelo;“linguagens funcionais constituem uma alternativa real para o processamento

paralelo”

Page 6: 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

6

Linguagens Funcionais

Haskell linguagem funcional pura e não-estrita; elaborada por um comitê científico, constituído

em 1987 durante a conferência FPCA’87; suporte asuporte 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.;

Page 7: 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

7

Linguagens Funcionais

Haskell (cont.)

Haskell tornou-se um padrão para pesquisa e desenvolvimento em linguagens funcionais;

Rico conjunto de implementações eficientes (NHC, GHC, Hugs, CMC/Haskell, ...);

O padrão HaskellHaskell 98 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”

Page 8: 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

8

Processamento Paralelo

Motivações para o processamento paralelo;

Modelos e Arquiteturas de Suporte: SIMD - Single Instruction Multiple Data; MIMD - Multiple Instruction Multiple Data;

Memória Distribuída X Memória Compartilhada;

Transparência do paralelismo:Paralelismo Implícito X Paralelismo Explícito;

Page 9: 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

9

Processamento Paralelo

Limitações e Desafios Gerenciamento do paralelismo; Granularidade; Inconvenientes do paradigma imperativo; Dificuldade de programação; Portabilidade; Engenharia de programas; Raciocínio sobre programas paralelos;

Page 10: 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

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

Page 11: 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

11

Hierarquização entre os sub-conjuntos seqüencial (funcional) e paralelo; Modularidade; Raciocínio e prova de propriedades sobre

programas paralelos (redes de Petri); Facilidades para implementação;

Paralelismo de grossa granularidade;Arquiteturas de memória distribuída;Alocação estática e explícita de processos; Comunicação estática e explícita entre processos;

Haskell# - Características

Page 12: 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

12

Haskell# Configuration Language

Haskell# - Características

HaskellHaskell

Haskell

Haskell

Haskell

Haskell# Configuration LanguageHCL

Page 13: 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

13

Haskell# - Subconjunto Seqüencial

Linguagem Haskell padrão;Módulos Funcionais

constituem módulos Haskell;

module Compressor(main) where

main :: [FContents] -> IO [FContents]

main contents = return (compress contents)

(...)

constituem unidades de particionamento funcional de aplicações Haskell#;

Page 14: 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

14

Haskell# - Subconjunto Paralelo

HCL - Haskell# Configuration Language Instanciação de processos funcionais;

declarações module;

Construção da rede de processos funcionais;declarações connect;

Alocação dos processos funcionais aos nós;declarações alloc;

Inicialização a aplicação;declarações start;

Page 15: 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

15

Haskell# - Subconjunto Paralelo

Instanciação de Processos Funcionais A partir do conjunto de módulos funcionais; Portas de comunicação (interface);

nome, protocolo e direção;

PROCESSO FUNCIONAL

funçãomain

A1

A2

An

V1

V2

Vm

INT

ER

FA

CE

DE

E

NT

RA

DA

INT

ER

FA

CE

DE

SA

ÍDA

(V1,V2,...Vm)

A1

A2

An

Page 16: 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

16

Haskell# - Subconjunto Paralelo

<module_declaration> ::=

module M

input p1::t1,p2::t2,... pn::tn

output q1::u1,q2::u2,... qm::um

instances i1,i2,... in

M é o nome do módulo funcional;pi e qj são nomes de portas de entrada e saída, respectivamente;

ti e uj são tipos Haskell (protocolos);

ik são nomes de processos funcionais;

OBS.: as declarações input e output são facultativas;

Page 17: 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

17

Haskell# - Subconjunto Paralelo

Construção da rede de processos funcionais Canais de Comunicação;

mapeamento entre duas portas de comunicação de processos distintos;

tipados, unidirecionais, ponto-a-ponto e síncronos;

Regras para construção de canais:as portas devem ter o mesmo protocolo;as portas devem possuir direções opostas;cada porta deve ser conectada a um único canal;

Page 18: 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

18

Haskell# - Subconjunto Paralelo

<connect_declaration> ::=

connect pfi.opjip to pfk.iplkp

ik;pfn é um nome de processo funcional;

ipxyz é o nome da x-ésima porta de entrada do processo funcional pfy, com protocolo z;

opxyz é o nome da x-ésima porta de saída do processo funcional pfy, com protocolo z.

Page 19: 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

19

Alocação dos processos funcionais aos nós estática; muitos-para-um; por classes de nós;

modelagem de arquiteturas heterogêneas;arquivos nodeclasses e nodeid;estratégia orientada à arquitetura;

• favorece eficiência;

estratégia orientada à aplicação;• favorece portabilidade;

Haskell# - Subconjunto Paralelo

Page 20: 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

20

NósFísicos

Nó n3

Nó n1

Nó n2

Nó n4

Nós Virtuais

Haskell# - Subconjunto Paralelo

d

h

g

e

f

c

b

a

ProcessosFuncionais

Page 21: 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

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

nodeclasses nodeid

Exemplo de Classificação

de Nós

Page 22: 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

22

Haskell# - Subconjunto Paralelo

<alloc_declaration> ::=

alloc(c1,c2,...cn) pf1,pf2,...pfm

ci é o nome de uma classe de nó;

pfi é um nome de processo funcional;

n0; (é permitido não fazer-se restrição de classe)m1; (pelo menos um processo deve ser alocado a um nó)

Page 23: 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

23

Haskell# - Subconjunto Paralelo

Execução de uma Aplicação Haskell# Estados de execução de um processo funcional;

Executando;bloqueado em leitura;bloqueado em escrita;finalizado;

Estado de execução da aplicação; Inicialização da Aplicação;

configuração do estado inicial da aplicação;

Aplicações finalizáveis e não-finalizáveis;

Page 24: 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

24

Haskell# - Subconjunto Paralelo

<start_declaration> ::=

start pfi arg1 arg2 ... argn

pfi é um nome de processo funcional;

argj é um argumento para a função main do processo funcional;

n0;

Page 25: 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

25

a

b

c

de

nó 1

nó 2

o1

o2

o1o2o3

o2

o2

o1

i1

i2

i1

i2 i3

f

i1 i2

i1

application Ex with final state

module C_Example input i1::String, i2 ::Int output o1::[Int] instances c

<Declarações dos demais módulos>

connect a.o1 to f.i1connect a.o2 to c.i1connect b.o1 to c.i2connect b.o2 to d.i1connect b.o3 to e.i1connect c.o1 to f.i2connect d.o1 to f.i3connect d.o2 to e.i2

alloc (wide,fast) a, c, falloc slow b, d, e

start astart b

bloqueado em leituraexecutando

bloqueado em escritafinalizado

tempo

t0 t1 t2 t3 t4 t5 t6 t7

abcdef

{o1,o2}

{o2,o3}

{o1}{i1}

{o2}{i1}

{i1}

{i1}

{i2}

{i2}

{i2}

{i3}

{o1}

{o1}

Page 26: 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

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

Page 27: 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

27

Balanceamento de Carga;Configurações válidas;

conectividade da rede de processos; deadlocks;

Determinismo;Engenharia de Programas.

Haskell# - Aspectos da ...

Page 28: 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

28

Balanceamento de Carga;Balanceamento de Carga;Configurações válidas;

conectividade da rede de processos; deadlocks;

Determinismo;Engenharia de Programas.

Haskell# - Aspectos da ...

Page 29: 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

29

Haskell# - Balanc. de Carga

Mecanismos dinâmicos e automáticos(ling. funcionais paralelas em geral)

XMecanismos estáticos e explícitos

(proposta para Haskell#)

“nossa proposta visa reduzir a sobrecarga do mecanismo de balanceamento sobre o

desempenho da aplicação”

Page 30: 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

30

Haskell# - Balanc. de Carga

Otimizando o Balanceamento de Carga O que queremos...

Evitar ociosidade de processadores;Minimizar o custo da comunicação;

Ferramentas disponíveis em Haskell#Alocação de processos a um mesmo nó;Classificação de nós;

Page 31: 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

31

Haskell# - Aplicações Válidas

Definição (Aplicação VálidaAplicaçã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”

Page 32: 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

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 naj-ésima porta de saída

Finalizado

E

P

P

S

j

iS

Bloqueado em Escrita naj-ésima porta de saída

Bloqueado em Leitura na i-ésima porta de entrada

Valor está sendo transmitidopelo canal

Int

Page 33: 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

33

Haskell# - Aplicações Válidas

compressor_2

write_file_2

write_file_3

compressor_3

write_file_4

compressor_1

write_file_1

compressor_4

read_file

E

E

E

E

E

E

E

E

S

E

S

E

S

S

E

E

[FContents]

[FContents]

[FContents]

[FContents]

1

2

1

1

1

2

2

2

1

1

1

1

1

1

1

1

S

[FContents]

[FContents]

[FContents]

S

S

S

S

S

S

S

[FName]

[FName]

[FName]

[FName]

[FContents]

1

2

3

45678

Page 34: 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

34

Haskell# - Aplicações Válidas

Deadlocks“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”

Causas de deadlocks em aplicações Haskell#Interdependência de dados entre proc. funcionais;Má ordenação de portas de comunicação;

Prevenção estática, em tempo de programação;Proposta de Haskell#;

Evitando sobrecarga de tempo e espaço;

Page 35: 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

35

Haskell# - Aplicações Válidas

A

B

E

C

F

D

G

S

E

S

E

ES

S

S

E S S

S

E

E

E

E

1 2

1

1

1 11 1

1

1

1 1

2

2 2

1

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”

Page 36: 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

36

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

Haskell# - Aplicações Válidas

a

b c

S

E

S E

S

E

a

b c

S

E

S E

S

E

Finalizável Não-finalizável

APLICAÇÃOAPLICAÇÃOBLOQUEADA !!!BLOQUEADA !!!

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

Page 37: 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

37

Haskell# - Aplicações Válidas

BC

A

S

ES

E

S

E

i

lD

S

E

B

A

S

E

E

S

C=D

E

S

k

i

k

i

j j

B=C

A=D

E

S

jE

Sk

l

l

c c c

Critério de Ordenação VálidaCritério de Ordenação Válidal j e k i

Page 38: 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

38

Haskell# - Aplicações Válidas

a

b

c

S

E

S E

SE

1

2

2

1

1

1

a

b

c

S

E

S E

SE

2

1

2

1

1

1

a

b

c

S

E

S E

SE

1

2

2

1

1

1

a

b

c

S

E

S E

SE

2

1

2

1

1

1

a

b

c

S

E

S E

SE

1

2

2

1

1

1

a

b

c

S

E

S E

SE

1

2

2

1

1

1

a

b

c

S

E

S E

SE

1

2

2

1

1

1

a

b

c

S

E

S E

SE

1

2

2

1

1

1

a

b

c

S

E

S E

SE

1

2

2

1

1

1

Ordenação Válida Ordenação Inválida

DEADLOCK !!!DEADLOCK !!!

Page 39: 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

39

Haskell# - Aplicações Válidas

Regras para construção de aplicações válidas: A rede de processos deve estar conectada; Aplicações que possuem um ou mais

conjuntos de processos funcionais interdependentes devem ser configuradas como não-finalizáveis;

Pelo menos um processo em cada conjunto de processos interdependentes na aplicação deve ser ativado explicitamente;

Page 40: 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

40

Haskell# - Aplicações Válidas

Regras para construção de aplicações válidas (continuação)

A ordenação das portas deve obedecer o critério de ordenação válida;

Os processos raízes devem ser ativados explicitamente;

Em uma aplicação finalizável, um processo que não é raiz nunca deve ser ativado explicitamente;

Page 41: 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

41

Balanceamento de Carga;Configurações válidas;

conectividade da rede de processos; deadlocks;

Determinismo;Determinismo;Engenharia de Programas.

Haskell# - Aspectos da ...

Page 42: 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

42

Haskell# - Determinismo

Facilitar o tratamento formal de aplicações;Determinismo em Haskell#

a nível seqüencial: determinismo de Haskell; a nível paralelo: canais ponto-a-ponto e síncronos;

Importância do não-determinismo para modelagem do comportamento dinâmico da aplicação e da arquitetura alvo; Separação entre os sub-conjuntos determinístico

e não-determinístico da linguagem;

Page 43: 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

43

Balanceamento de Carga;Configurações válidas;

conectividade da rede de processos; deadlocks;

Determinismo;Engenharia de Programas.Engenharia de Programas.

Haskell# - Aspectos da ...

Page 44: 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

44

Haskell# - Eng. de Programas

Modularidade Importante atributo em Engenharia de Software; Vantagens

Redução da complexidade das aplicações;Reuso de componentes;

Independência funcional entre os módulosAlto grau de coesão;Baixo grau de acoplamento;

InerenteInerente ao modelo de aplicações Haskell#;

Page 45: 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

45

Construçãodos Módulos

Relatório de Custos de Computação paracada Mód. Funcional

Mód. FuncionaisImplementados

Mapeamento dos Processos Funcionaisaos 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 dosMódulos Funcionais

Integração Preliminar

Rede de ProcessosFuncionais Preliminar

Decomposiçãodo Domínio

Rede de Processos Funcionais Final

Page 46: 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

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

Page 47: 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

47

Haskell# - Implementação

Objetivo Protótipo para avaliação das decisões de

projeto de Haskell#;

Ferramentas Arquitetura Alvo: IBM SP2IBM SP2; Compilação de códigos Haskell: GHCGHC

(Glasgow Haskell Compiler); Instanciação e Comunicação: MPIMPI (Message

Passing Library).

Page 48: 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

48

MPI

Stub

AMBIENTE

MPI

C HaskellRTS

unpack

pack

ValoresHaskell

bufferde envio

bufferde recepção

MPI_Ssend

MPI_Recv

Haskell# - Implementação

Ambiente MPI

processo funcional

processo funcional

processo funcional

processo funcional

Page 49: 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

49

Haskell# - Implementação

GHC

GHC

GHC

GHC

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

BibliotecaMPI

Config.

*.hcl

Classes de nós

nodeclasses

nós

nodeid

protocolos

Protocols..hs

pré-processadorHaskell

pré-processadorHCL

ProgramaProgramaPrincipalPrincipal

instanciação

Main.hs

comunicação

Channels.hs

alocação

host.list

inicialização

<nome_apl>

Page 50: 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

50

Haskell# - Implementação

MóduloFuncional

MóduloFuncional

MóduloFuncional

Instanciaçãoe Controle

Main.hs

Comunicação

Channels.hs

DefiniçõesGlobais

HHash.hs

Page 51: 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

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

Page 52: 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

52

Haskell# - Conclusões

“Haskell# adequa-se a implementação de aplicações de alto-desempenhoaplicações de alto-desempenho,

tendo em vista sobretudo os aspectos de desempenhodesempenho,

confiabilidadeconfiabilidade, portabilidadeportabilidade e simplicidade de programaçãosimplicidade de programação”

“Haskell# adequa-se a implementação de aplicações de alto-desempenhoaplicações de alto-desempenho,

tendo em vista sobretudo os aspectos de desempenhodesempenho,

confiabilidadeconfiabilidade, portabilidadeportabilidade e simplicidade de programaçãosimplicidade de programação”

“Haskell# adequa-se a implementação de aplicações de alto-desempenhoaplicações de alto-desempenho,

tendo em vista sobretudo os aspectos de desempenhodesempenho,

confiabilidadeconfiabilidade, portabilidadeportabilidade e simplicidade de programaçãosimplicidade de programação”

“Haskell# adequa-se a implementação de aplicações de alto-desempenhoaplicações de alto-desempenho,

tendo em vista sobretudo os aspectos de desempenhodesempenho,

confiabilidadeconfiabilidade, portabilidadeportabilidade e simplicidade de programaçãosimplicidade de programação”

“Haskell# adequa-se a implementação de aplicações de alto-desempenhoaplicações de alto-desempenho,

tendo em vista sobretudo os aspectos de desempenhodesempenho,

confiabilidadeconfiabilidade, portabilidadeportabilidade e simplicidade de programaçãosimplicidade de programação”

Page 53: 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

53

Haskell# - Trabalhos Futuros

Implementação sobre o compilador Haskell/CMC;

Suporte ao não-determinismo;Relaxamento das condições de sincronia dos

canais de comunicação;comunicação de streams (listas infinitas);Possibilidade do reuso de configurações;Facilidade ao suporte do paralelismo de dados;Análise de desempenho com aplicações reais;

Page 54: 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

54?