Uma coleção de estudos de caso sobre o uso da linguagem Halide de domínio-específico em processamento de imagens e arquiteturas paralelas

Orientador: Roberto de Alencar Lotufo === Dissertação (mestrado) - Universidade Estadual de Campinas, Faculdade de Engenharia Elétrica e de Computação === Made available in DSpace on 2018-08-24T09:58:17Z (GMT). No. of bitstreams: 1 Oliveira_VictorMatheusdeAraujo_M.pdf: 5485933 bytes, checksum: 54457...

Full description

Bibliographic Details
Main Author: Oliveira, Victor Matheus de Araujo, 1988-
Other Authors: UNIVERSIDADE ESTADUAL DE CAMPINAS
Format: Others
Published: [s.n.] 2013
Subjects:
Online Access:OLIVEIRA, Victor Matheus de Araujo. Uma coleção de estudos de caso sobre o uso da linguagem Halide de domínio-específico em processamento de imagens e arquiteturas paralelas. 2013. 54 f. Dissertação (mestrado) - Universidade Estadual de Campinas, Faculdade de Engenharia Elétrica e de Computação, Campinas, SP. Disponível em: <http://www.repositorio.unicamp.br/handle/REPOSIP/259825>. Acesso em: 24 ago. 2018.
http://repositorio.unicamp.br/jspui/handle/REPOSIP/259825
Description
Summary:Orientador: Roberto de Alencar Lotufo === Dissertação (mestrado) - Universidade Estadual de Campinas, Faculdade de Engenharia Elétrica e de Computação === Made available in DSpace on 2018-08-24T09:58:17Z (GMT). No. of bitstreams: 1 Oliveira_VictorMatheusdeAraujo_M.pdf: 5485933 bytes, checksum: 54457856261050bf86360bc7acbb2e5b (MD5) Previous issue date: 2013 === Resumo: Um novo desenvolvimento no campo de Linguagens de Domínio-Específico são linguagens de programação que podem funcionar tanto em CPUs multi-núcleo quanto em GPUs. Nesta dissertação, avaliamos Halide, uma Linguagem de Domínio Específico (DSL) para processamento de imagens. Halide funciona tanto em CPUs como em GPUs e almeja ser uma forma mais simples e eficiente, em termos de desempenho, de expressar algoritmos da área do que as alternativas tradicionais. Para mostrar o potencial e as limitações da linguagem Halide, fazemos nesta dissertação alguns estudos de caso com algoritmos que acreditamos ser bons exemplos de categorias-chave em Processamento de Imagens, especialmente em manipulação e edição de Imagens. Comparamos o desempenho e simplicidade de implementação desses problemas com implementações em C++ usando \emph{threads} e vetorização, para arquiteturas CPU multi-núcleo, e OpenCL, para CPUs e GPUs. Mostramos que há problemas na implementação atual de Halide e que alguns tipos de algoritmos da área não podem ser bem expressos na linguagem, o que limita a sua aplicabilidade prática. Entretanto, onde isso é possível, Halide tem performance similar à implementações em OpenCL, onde vemos que há de fato ganho em termos de produtividade do programador. Halide é, portanto, apropriado para um grande conjunto de algoritmos usados em imagens e é um passo na direção certa para um modo de desenvolvimento mais fácil para aplicações de alto desempenho na área === Abstract: A development in the field of Domain-Specific Languages (DSL) are programming languages that can target both Multi-Core CPUs and accelerators like GPUs. We use Halide, a Domain-Specific Language that is suited for Image Processing tasks and that claims to be a more simple and efficient (performance-wise) way of expressing imaging algorithms than traditional alternatives. In order to show both potential and limitations of the Halide language, we do several case studies with algorithms we believe are representatives of key categories in today's Image Processing, specially in the area of Image Manipulation and Editing. We compare performance and simplicity of Halide implementations with multi-threaded C++ (for multi-core architectures) and OpenCL (for CPU and GPUs). We show that there are problems in the current implementation of the DSL and that many imaging algorithms cannot be efficiently expressed in the language, which limits its practical application; Nevertheless, in the cases where it is possible, Halide has similar performance to OpenCL and is much more simple to develop for. So we find that Halide is appropriate for a big class of image manipulation algorithms and is a step in the right direction for an easier way to use GPUs in imaging applications === Mestrado === Engenharia de Computação === Mestre em Engenharia Elétrica