Uma proposta de implementação de árvores rubro-negras em Haskell de forma concorrente

Documentos relacionados
Linguagens de Programação

Capítulo 1 Introdução

Mecanismos de Interrupção e de Exceção, Barramento, Redes e Sistemas Distribuídos. Sistemas Operacionais, Sistemas

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

iversidade Federal do Rio Grande do Sul PARALELISMO NA LINGUAGEM HASKELL Vagner Franco Pereira Rodrigo Machado Lucas Mello Schnorr

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02

USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO DE IMAGENS

Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO

Sistemas Distribuídos e Paralelos

OpenMP: Variáveis de Ambiente

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Paralelismo em Computadores com Tecnologia Multicore

Programação Estruturada Orientada a Objetos

Aspectos preliminares

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Dados Gerais. Conteúdo. Tipos de Dados. Profa. Renata de Matos Galante

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.

Introdução OpenMP. Nielsen Castelo Damasceno

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)

Computadores e Programação (DCC/UFRJ)

Processos Concorrentes

Sistemas Operacionais

Programação Concorrente. Prof. Hugo Vieira Neto

Palavras-chave: Memórias Transacionais, Haskell, Linguagem Funcional, Estrutura de Dados Concorrentes

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência

Microarquiteturas Avançadas

Memória Transacional de Software

Fundamentos de Programação 1

Capítulo 1. Aspectos Preliminares

DDL). O resultado da compilação dos parâmetros DDLs é

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

Concorrência em Processos

What is? Eduardo Viola Nicola Disciplina de IPPD

INF Prof. Daltro José Nunes Profa. Renata de Matos Galante. Estruturas de Dados. tica

Análise e Complexidade de Algoritmos

ÁRVORE RUBRO- NEGRA. Prof. André Backes. Também conhecida como árvore vermelhopreto

Utilização de grafo não bloqueante em programação paralela

Bibliografia em processamento paralelo

Implementação da Especificação de Tempo Real Java para o EPOS

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias -

Figura 4.2: Matriz Curricular

UNIVERSIDADE DA BEIRA INTERIOR

Modelo de Programação Paralela

SSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella

Introdução a Programação de Jogos

TECNOLOGIA EM REDES DE COMPUTADORES. computadores. Aula 5

Sistemas de Informação. Sistemas Operacionais

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1

Linguagens de Programação

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio

Linguagens de Programação. Trabalhos. Carlos Bazilio

Paradigmas de Linguagem de Programação. Aspectos Básicos

Aula 2: Tipos de Sistemas Operacionais. Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela

Sistemas Distribuídos

Apresentação. Informação geral + Conceitos iniciais

Linguagens de Programação. Trabalhos. Carlos Bazilio

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Informações. Programação Funcional. Por que um curso de programação funcional? O que é Programação Funcional? Objetivos da programação funcional

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

Comunicação entre processos (2)

Linguagens de Programação Aula 3

Introdução à Inteligência Artificial MAC MAC 415. Exercício Programa 1 Busca

Árvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore

Sistemas Operacionais

Universidade Estadual do Oeste do Paraná - UNIOESTE Implementação de uma lupa digital baseada em captura de imagens Deivide Possamai, Fernando

Ferramentas para Programação em Processadores Multi-Core

a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1.

Uso de Paralelismo de Dados em Algoritmos de Processamento de Imagens Utilizando Haskell

Teoria da computabilidade Indecidíveis Decidíveis

Análise de complexidade

Organização de Computadores 2005/2006 Processamento Paralelo

Compiladores. Análise Semântica

INE5384 Estruturas de Dados. Sumário

Apresentação. Sistemas Operacionais. Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D.

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

INF 1005 Programação I

Linguagens de Programação Programação Funcional (Haskell)

AED2 - Aula 01 Apresentação, estruturas de dados, tabelas de símbolos e hash tables

Introdução à Programação Estruturada Parte 2. Material da Prof. Ana Eliza

Slide 01 16/03/2017. Estruturas de Dados. Prof. Cleziel Franzoni da /Cleziel.

Compiladores. Conceitos Básicos

Universidade Federal do Espírito Santo. Programação II. CT IX - Sala 206 Departamento de Informática Centro Tecnológico

Técnicas de Programação III Análise de Algoritmos (Continuação)

Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2012.

Fundamentos de Sistemas Operacionais

Ferramentas de Suporte

CONCEITO DE ALGORITMO

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa

Introdução à Programação

Paradigmas de Programação

Ementário das disciplinas do curso de Engenharia de Software

Atividades Práticas no Ensino Introdutório de Sistemas Operac

Algoritmos e Estruturas de Dados I

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Transcrição:

Uma proposta de implementação de árvores rubro-negras em Haskell de forma concorrente AUTOR: THAÍS S. HÜBNER BOLSISTA PBIP/UFPEL EMAIL: TSHUBNER@INF.UFPEL.EDU.BR ORIENTADOR ANDRÉ RAUBER DU BOIS

Sumário Processadores multicore Memória Transacional Motivação A linguagem Haskell Métodos de sincronismo STM Haskell Proposta de implementação Tipos de dados algébricos Conclusão

Processadores Multicore Possui dois ou mais núcleos completos de processamento no mesmo chip Necessita que a programação seja realizada de forma concorrente, para explorar o máximo desempenho da arquitetura Utilização de bloqueios(locks) é o modelo mais usual de sincronização porém são de difícil utilização e muito propensos a erros de programação

Memória Transacional Nova abstração para programação baseada na ideia de transações de banco de dados Maior facilidade de programação Ausência de deadlocks Composabilidade de código Árvores rubro negras são uma aplicação clássica para testar memórias transacionais porque possuem baixa taxa de conflitos

Motivação Árvores rubro negras possuem um bom pior caso de tempo de execução (O(log n)) Mais eficientes em inserção, remoção e busca Apesar dessa estrutura ser uma das mais usadas para testar memórias transacionais, não existe uma implementação em STM Haskell O objetivo deste trabalho é implementar árvores rubro negras em STM Haskell e comparar essa implementação com outros métodos de sincronização disponíveis em Haskell

A linguagem Haskell Estilo declarativo não há conceito de comandos como atribuição, a exemplo de outras linguagens, e sim de casamento de padrões Conceitos sofisticados polimorfismo, funções generalizadoras de alta-ordem, avaliação de expressões/funções sob demanda ou preguiçosa (lazy evaluation) Recursividade Fácil e rápido aprendizado Aplicações prototipação em geral, ensino de programação, inteligência artificial, construção de compiladores, etc.

Métodos de sincronismo Haskell possui diferentes abstrações para realizar o sincronismo entre threads STM Haskell Variáveis de sincronização (MVars) Acesso a instruções de baixo nível (IORef + AtomicModifyIORef) Estas abstrações aliadas a facilidade da linguagem funcional Haskell fornecem uma excelente ferramenta para o desenvolvimento de programas paralelos

STM Haskell Uma biblioteca da linguagem funcional Haskell que fornece a abstração de memórias transacionais para programação paralela Baseada em transações de bancos de dados Sincronismo realizado pelo sistema transacional, evitando deadlocks

Proposta de implementação Estudar alguns algoritmos de árvores rubro-negras concorrentes Implementar as árvores rubro-negras na linguagem funcional Haskell Utilizar os três métodos de sincronismo (MVar, IORef + atomicmodifyioref e STM Haskell) Analisar os resultados e determinar qual método apresentará melhor desempenho e facilidade de implementação

Tipo de dados algébricos Um tipo algébrico permite definir novos tipos de dados através da especificação do formato de seus elementos Tipos algébricos podem ser tipos compostos formados pela combinação de outros tipos já existentes Definimos um tipo algébrico através da enumeração dos construtores dos elementos do tipo sendo definido

Exemplo data Cor = Vermelho Preto data Arvore = Nodo {var:: TVar Int, esquerda::tvar Arvore, direita:: TVar Arvore, pai::tvar Arvore, cor:: TVar Cor } Null

Conclusão - Estado atual da implementação - Próximos passos - Estudo de algoritmos concorrentes para árvores rubro negras - Implementação desses algoritmos utilizando as outras abstrações de sincronismo de Haskell - Testes e análise de resultados

Uma proposta de implementação de árvores rubro-negras em Haskell de forma concorrente AUTOR: THAÍS S. HÜBNER BOLSISTA PBIP/UFPEL EMAIL: TSHUBNER@INF.UFPEL.EDU.BR ORIENTADOR ANDRÉ RAUBER DU BOIS