Automatic Parallelism for Stencils using Comonads

Published:

Um stencil é um mapa que leva elementos em uma matriz n-dimensional a um novo valor baseando-se apenas no elemento e sua vizinhança. Um exemplo simples é um filtro gaussiano de imagem. Stencils são utilizados em diversas aplicações práticas como dinâmica dos fluidos computacional, processamento de sinais (convoluções) e resolução de equações diferenciais ordinárias (EDOs). Em particular, stencils e EDOs são utilizados em simulações para prospecção de poços de petróleo e gás, imageamentos médico e via satélite, previsão do tempo, dentre outras. Em linguagens funcionais, comônadas definem estruturas que permitem efetuar computação utilizando contextos. Por exemplo, para extrair a média móvel de um Stream de dados podemos utilizar comônadas e criar apenas uma função que retorne a média para apenas um dos pontos da stream. A aplicação em toda a stream é feita de forma automática e, como cada aplicação independe das outras, é inerentemente paralelizável. Neste projeto de pesquisa será feita a integração de técnicas de paralelismo para stencils com o conceito de comônadas, típico de linguagens funcionais. O objetivo é permitir que um programador de uma linguagem funcional possa (de uma maneira simples, eficiente e paralela) definir, executar e obter o resultado da execução de um stencil.

Desired knowledges: programming (Haskell), parallel programming

Related publications: