3 research outputs found
Accelerating Halide on an FPGA by using CIRCT and Calyx as an intermediate step to go from a high-level and software-centric IRs down to RTL
Image processing and, more generally, array processing play an essential role in modern life: from applying filters to the images that we upload to social media to running object detection algorithms on self-driving cars. Optimizing these algorithms can be complex and often results in non-portable code. The Halide language provides a simple way to write image and array processing algorithms by separating the algorithm definition (what needs to be executed) from its execution schedule (how it is executed), delivering state-of-the-art performance that exceeds hand-tuned parallel and vectorized code. Due to the inherent parallel nature of these algorithms, FPGAs present an attractive acceleration platform. While previous work has added an RTL code generator to Halide, and utilized other heterogeneous computing languages as an intermediate step, these projects are no longer maintained. MLIR is an attractive solution, allowing the generation of code that can target multiple devices, such as parallelized and vectorized CPU code, OpenMP, and CUDA. CIRCT builds on top of MLIR to convert generic MLIR code to register transfer level (RTL) languages by using Calyx, a new intermediate language (IL) for compiling high-level programs into hardware designs. This thesis presents a novel flow that implements an MLIR code generator for Halide that generates RTL code, adding the necessary wrappers to execute that code on Xilinx FPGA devices. Additionally, it implements a Halide runtime using the Xilinx Runtime (XRT), enabling seamless execution of the generated Halide RTL kernels. While this thesis provides initial support for running Halide kernels and not all features and optimizations are supported, it also details the future work needed to improve the performance of the generated RTL kernels. The proposed flow serves as a foundation for further research and development in the field of hardware acceleration for image and array processing applications using Halide
Optimització de Weston mitjançant atomic mode-setting
Després d’introduir els conceptes bà sics i explicar l’arquitectura dels diversos
components d’un entorn grà fic de Linux, aquest treball mostra com
s’han dut a terme certes optimitzacions i millores al compositor referència
de Wayland: Weston.
En primer lloc es realitza un programa de prova, atomictest, que mostra
com utilitzar el Direct Rendering Manager de Linux des d’una perspectiva
d’usuari. Seguidament, es mostra el disseny i la implementació de les
diverses millores realitzades a Weston, i per últim s’avaluen aquestes i se
n’extreuen les conclusions oportunes.Después de introducir los conceptos básicos y explicar la arquitectura
de los diversos componentes de un entorno gráfico de Linux, este trabajo
muestra cĂłmo se han llevado a cabo ciertas optimizaciones y mejoras al
compositor referencia de Wayland: Weston.
En primer lugar se realiza un programa de prueba, atomictest, que muestra
cĂłmo utilizar el Direct Rendering Manager de Linux desde una perspectiva
de usuario. Seguidamente, se muestra el diseño y la implementación
de las diversas mejoras realizadas a Weston, y por Ăşltimo se evalĂşan estas
y se extraen las conclusiones oportunas.After introducing the basics and explaining the architecture of the various
components of a Linux graphic environment, this paper shows how
some optimizations and improvements have been made to the Wayland’s
reference compositor: Weston.
First of all, a test program called atomictest is developed to show how
to use the Direct Rendering Manager of Linux from a user perspective.
Secondly, the design and implementation of the various improvements made
to Weston are shown, and finally these are evaluated and the appropriate
conclusions are extracted
Optimització de Weston mitjançant atomic mode-setting
Després d’introduir els conceptes bà sics i explicar l’arquitectura dels diversos
components d’un entorn grà fic de Linux, aquest treball mostra com
s’han dut a terme certes optimitzacions i millores al compositor referència
de Wayland: Weston.
En primer lloc es realitza un programa de prova, atomictest, que mostra
com utilitzar el Direct Rendering Manager de Linux des d’una perspectiva
d’usuari. Seguidament, es mostra el disseny i la implementació de les
diverses millores realitzades a Weston, i per últim s’avaluen aquestes i se
n’extreuen les conclusions oportunes.Después de introducir los conceptos básicos y explicar la arquitectura
de los diversos componentes de un entorno gráfico de Linux, este trabajo
muestra cĂłmo se han llevado a cabo ciertas optimizaciones y mejoras al
compositor referencia de Wayland: Weston.
En primer lugar se realiza un programa de prueba, atomictest, que muestra
cĂłmo utilizar el Direct Rendering Manager de Linux desde una perspectiva
de usuario. Seguidamente, se muestra el diseño y la implementación
de las diversas mejoras realizadas a Weston, y por Ăşltimo se evalĂşan estas
y se extraen las conclusiones oportunas.After introducing the basics and explaining the architecture of the various
components of a Linux graphic environment, this paper shows how
some optimizations and improvements have been made to the Wayland’s
reference compositor: Weston.
First of all, a test program called atomictest is developed to show how
to use the Direct Rendering Manager of Linux from a user perspective.
Secondly, the design and implementation of the various improvements made
to Weston are shown, and finally these are evaluated and the appropriate
conclusions are extracted