1 |
Rewriting Concurrent Haskell programs to STMSilva Neto, Francisco Miranda Soares da 27 February 2014 (has links)
Submitted by Luiz Felipe Barbosa (luiz.fbabreu2@ufpe.br) on 2015-03-09T13:43:25Z
No. of bitstreams: 2
license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5)
DISSERTAÇÃO Francisco Miranda Soares da Silva Neto.pdf: 1968720 bytes, checksum: 60383d7751d95b545cae9a16a83f611c (MD5) / Made available in DSpace on 2015-03-09T13:43:26Z (GMT). No. of bitstreams: 2
license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5)
DISSERTAÇÃO Francisco Miranda Soares da Silva Neto.pdf: 1968720 bytes, checksum: 60383d7751d95b545cae9a16a83f611c (MD5)
Previous issue date: 2014-02-27 / In recent years, the diminishing rate with which we can increase the amount of transistors
in a processor core has slowed down the increase of computers’ power. Moore’s Law appears to
be drawing to an end. With it, the assumption that software written today will be more efficiently
executed in the future simply due to processors’ evolution is being challenged. On the other
hand, parallel applications can still be made more efficient by distributing work among different
processors to be executed at the same time, thus reducing overall execution time. To enable
parallelization, we must have multiple processor cores. This has led to the popularization of
multicore architectures.
However, writing parallel applications is not trivial. A program must be either written
from the start to be executed in parallel, or later adapted for parallel execution. The programmer
has the error-prone task of parallelizing the application through use of concurrency and
parallelism constructs. Locking, the most common concurrency option, presents risks for inexperienced
programmers, such as the famous Deadlock and Livelock problems. As we move from
single core architectures to multicore, our programming languages need to make it easier for
the programmers to use concurrency. Many researchers have pointed at Software Transactional
Memory (STM) as an answer to that issue, as it is a lock-free, abstract way to guarantee isolated
access to shared resources. But adapting for STM a program that uses lock is not simple. Besides
being an error-prone task, technical details of the language might require special attention to
preserve the program’s behavior.
In this dissertation, we propose a set of program transformations for concurrency constructs
in Haskell, a purely functional programming language. They may be used to refactor
a program’s existing locks into transactional constructs from Haskell’s STM implementation.
This allows a programmer to gain the benefits of working on STM even for programs which
were already developed using locks. Each transformation is accompanied by execution examples
and a discussion on its ability to preserve program behavior. We also present a supporting
study, in which a controlled experiment was used to evaluate the benefits of locks or STM for
the development of Haskell programs. Although subjects’ opinions tended to favor lock-based
concurrency, those which used STM overall committed significantly fewer mistakes and required
on average 12% less time to finish their assignments. / Recentemente, a queda na taxa de crescimento da quantidade de transístores integráveis
em processadores tem desacelerado o crescimento de poder computacional. A lei de Moore
parece aproximar-se de seu fim. Com isso, é desafiada a premissa de que software escrito
hoje terá melhor desempenho no futuro simplesmente devido à evolução dos processadores.
Ainda assim, aplicações paralelas ainda podem se tornar mais eficientes ao se distribuir trabalho
entre diferentes processadores para execução simultânea. Para permitir a paralelização, são
necessários múltiplos núcleos de processamento, o que tem levado à popularização de arquiteturas
multinúcleo.
Entretanto, a escrita de aplicações paralelas não é trivial. Deve-se escrever um programa
para execução paralela desde sua concepção, ou adaptá-lo posteriormente para execução paralela.
O programador tem a difícil tarefa de paralelização da aplicação através do uso de construções de
concorrência e paralelismo. Travas, a mais comum opção para concorrência, apresentam riscos
para programadores inexperientes, tais quais os famosos problemas de Deadlock e Livelock.
Ao adaptarem-se de arquiteturas de um único núcleo para as de multinúcleo, as linguagens
de programação precisam facilitar o uso de concorrência para os programadores. Muitos
pesquisadores têm indicado Memória Transacional em Software (STM, do inglês Software
Transactional Memory) como a resposta para esse problema, por ser uma forma abstrata e não
bloqueante para garantia de acesso isolado a recursos compartilhados. Mas adaptar para STM
programas que usam travas não é simples. Além de ser uma atividade propensa a erros, detalhes
técnicos da linguagem podem requerer cuidados para se preservar o comportamento do programa.
Nesta dissertação, é proposto um conjunto de transformações de programas para construções
de concorrência em Haskell, uma linguagem de programação puramente funcional. Elas
podem ser usadas para refatorar travas de um programa para uso de construções transacionais
da implementação de STM em Haskell. Isso permite ao programador aproveitar os benefícios
do trabalho com STM mesmo para programas já desenvolvidos com uso de travas. Cada
transformação é acompanhada de exemplos de execução e uma discussão sobre sua capacidade
de preservar o comportamento do programa. Também é apresentado um estudo de apoio, no
qual um experimento controlado foi usado para avaliar os benefícios do uso de travas ou STM
no desenvolvimento de programas em Haskell. Apesar das opiniões dos participantes terem
favorecido o uso de travas, aqueles que usaram STM cometeram em geral menos erros e em
média precisaram de 12% a menos de tempo para terminar suas tarefas.
|
2 |
Desenvolvimento de um aplicativo para simulação e controle de manipuladores roboticos com enfase em aplicações didaticasPasseto, Fabio 09 January 2000 (has links)
Orientador: João Mauricio Rosario / Dissertação (mestrado) - Universidade Estadual de Campinas, Faculdade de Engenharia Mecanica / Made available in DSpace on 2018-07-27T12:20:38Z (GMT). No. of bitstreams: 1
Passeto_Fabio_M.pdf: 9238512 bytes, checksum: f981b121fef2f23afa3144d0bac731c0 (MD5)
Previous issue date: 2000 / Resumo: O trabalho investiga a utilização de robôs em atividades de ensino, identificando os recursos disponíveis no momento e os fundamentos que justificam sua utilização. Dentro deste contexto, foi desenvolvido um manipulador robótico de baixo custo e de construção simplificada que pode ser conectado a um computador IBM - PC através da porta seria!. Para efetuar seu controle, foi criado um aplicativo computacional dotado de um interpretador de comandos que permite a criação de programas estruturados. O aplicativo também possui um simulador que permite visualizar a movimentação e cálculo da posição e orientação de um modelo de manipulador criado a partir dos parâmetros de Denavit-Hartenberg. O sistema formado pelo aplicativo computacional e a parte construtiva constituem uma ferramenta funcional que pode ser utilizada para desenvolver atividades de ensino ligadas a manipuladores robóticos, oferecendo uma melhor funcionalidade em relação a sistemas semelhantes já desenvolvidos / Abstract: This investigation describes the use of robots on teaching activities, identifying the presently available resources and basis that justify its use. In this context there have been developed a 10w-cost and simplified construction robotic manipulator that can be connected to an IBM-PC computer by the serial porto To implement its control there has been created a software provided with a command interpreter that allows the creation of structured programs. The software has also a simulator that allows visualize the movement and ca1culate the position and orientation of a model of a manipulator eated by using the Denavit-Hartenberg parameters. The system formed by the computer software and the physical part constitute a functional tool that can be utilized to develop learning activities related to robotic manipulators, offering a better functionality compared to similar systems already existent / Mestrado / Mecanica dos Sólidos e Projeto Mecanico / Mestre em Engenharia Mecânica
|
3 |
Uma implementação paralela do AIRS em Scala / A parallel implementation of AIRS in ScalaSalgado, Filipe Ferraz 15 September 2010 (has links)
Com o avanço tecnológico dos últimos anos passou a ser normal vermos microprocessadores com múltiplos núcleos (cores). A expectativa é de que o crescimento da quantidade de núcleos passe a ser maior do que o crescimento da velocidade desses núcleos. Assim, além de se preocuparem em otimizar algoritmos sequenciais, os programadores começaram a dar mais atenção às possibilidades de aproveitamento de toda a capacidade oferecida pelos diversos cores. Existem alguns modelos de programação que permitem uma abordagem concorrente. O modelo de programação concorrente mais adotado atualmente é o baseado em threads, que utiliza memória compartilhada e é adotado em Java. Um outro modelo é o baseado em troca de mensagens, no qual as entidades computacionais ativas são denominadas atores. Nesse trabalho, estudamos a linguagem Scala e seu modelo de atores. Além disso, implementamos em Scala uma versão paralela de um algoritmo de classicação que simula o sistema imunológico dos animais, o AIRS paralelo, e comparamos seu desempenho com a versão em Java. / With the technological advance of the last years it has been normal to see microprocessors with multiple cores. The expectation is that the growth of number of cores becomes greater than the growth of the speed of these cores. This way, besides worrying about optimizing sequential algorithms, developers started to give more attention to the possibilities of proting from all capacity offered by the cores. There exists a few programming models that allow a concurrent approach. In these days, the most adopted concurrent programming model is the one based on threads, which uses shared memory and is adopted in Java. Other model is based on message passing, on which the active computational entities are called actors. In this project, we studied Scala language and its model based on actors. Besides that, we implemented in Scala a parallel version of a classification algorithm that simules the immune system of the animals, parallel AIRS, and compared its performance with the Java version.
|
4 |
Uma implementação paralela do AIRS em Scala / A parallel implementation of AIRS in ScalaFilipe Ferraz Salgado 15 September 2010 (has links)
Com o avanço tecnológico dos últimos anos passou a ser normal vermos microprocessadores com múltiplos núcleos (cores). A expectativa é de que o crescimento da quantidade de núcleos passe a ser maior do que o crescimento da velocidade desses núcleos. Assim, além de se preocuparem em otimizar algoritmos sequenciais, os programadores começaram a dar mais atenção às possibilidades de aproveitamento de toda a capacidade oferecida pelos diversos cores. Existem alguns modelos de programação que permitem uma abordagem concorrente. O modelo de programação concorrente mais adotado atualmente é o baseado em threads, que utiliza memória compartilhada e é adotado em Java. Um outro modelo é o baseado em troca de mensagens, no qual as entidades computacionais ativas são denominadas atores. Nesse trabalho, estudamos a linguagem Scala e seu modelo de atores. Além disso, implementamos em Scala uma versão paralela de um algoritmo de classicação que simula o sistema imunológico dos animais, o AIRS paralelo, e comparamos seu desempenho com a versão em Java. / With the technological advance of the last years it has been normal to see microprocessors with multiple cores. The expectation is that the growth of number of cores becomes greater than the growth of the speed of these cores. This way, besides worrying about optimizing sequential algorithms, developers started to give more attention to the possibilities of proting from all capacity offered by the cores. There exists a few programming models that allow a concurrent approach. In these days, the most adopted concurrent programming model is the one based on threads, which uses shared memory and is adopted in Java. Other model is based on message passing, on which the active computational entities are called actors. In this project, we studied Scala language and its model based on actors. Besides that, we implemented in Scala a parallel version of a classification algorithm that simules the immune system of the animals, parallel AIRS, and compared its performance with the Java version.
|
Page generated in 0.1032 seconds