Directive-based Approach to Heterogeneous Computing

Ruyman Reyes Castro
Departamento de Estadistica, Investigacion Operativa y Computacion, Universidad de La Laguna
Universidad de La Laguna, 2012


   title={Directive-based Approach to Heterogeneous Computing},

   author={Castro, Ruyman Reyes},



Download Download (PDF)   View View   Source Source   Source codes Source codes




The main result of my Ph.D dissertation was accULL, an implementation of the OpenACC standard. This implementation is based on two pieces of software I designed, YaCF (Yet Another Compiler Framework) and Frangollo. YaCF is basically a Python StS toolkit, heavily based on the pycparser project. It uses the C99 Frontend with some extensions to generate an Internal Representation (IR) of the source code. Then, it is possible to implement code transformations (named Mutations) to transform the IR onto a different code. The pieces of code to be transformed can be found using Filters. After the transformation is ready, it is possible to write back the C code using a Writer class. Frangollo is a runtime capable of handling the execution of code on accelerators (e.g GPUs). It is written in C++, with CUDA and OpenCL components to support execution on both platforms. Both pieces of software are very flexible, and based on a layered design. This facilitates working on a particular layer without affecting the other pieces of the package, hence allowing the extension of the software architecture with a low development effort. Implementation details can be found in the dissertation itself. The first version of accULL released (0.1) covered the basic implementation and offered support for both CUDA and OpenCL platforms. We have released version 0.2, which is more stable and offers improved support for the parallel, if and update directives. It also contains a set of validation tests (currently around 20), a testing script and a wrapper to the YaCF driver that facilitates the compilation of the source. Details about this release can be found in the accULL blog, and my article about OpenACC and accULL have been published in the EPCC web-page. Working in accULL has been very instructive and interesting. I’ve learned many things, compilers, runtimes, C/C++, Python, CUDA, OpenCL and many many other things. However, the major outcome of this work – at least for me – has been having the opportunity of working with so many different people, and in particular with the peope at La Laguna – The "boss" Kiko and the students Juanjo, Lucas and Ivan. Their untiring enthusiasm has forced me to keep me up-to-date with the project (even after finishing my Ph.D). In order to answer their questions, I’ve been forced to properly think several ideas that otherwise wouldn’t be fully developed. Many thanks to all of them. Since I am no longer full time on the project, the role of my involvement has necessarily changed. Juanjo and Lucas are progressively taking over the development, whilst I am moving to a "management" role. I’ll explain how the management of the accULL releases works once the next release date is set. I can tell you that my loved Kanban is involved!
No votes yet.
Please wait...

* * *

* * *

HGPU group © 2010-2024 hgpu.org

All rights belong to the respective authors

Contact us: