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!
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

* * *

* * *

Follow us on Twitter

HGPU group

1513 peoples are following HGPU @twitter

Like us on Facebook

HGPU group

260 people like HGPU on Facebook

* * *

Free GPU computing nodes at hgpu.org

Registered users can now run their OpenCL application at hgpu.org. We provide 1 minute of computer time per each run on two nodes with two AMD and one nVidia graphics processing units, correspondingly. There are no restrictions on the number of starts.

The platforms are

Node 1
  • GPU device 0: nVidia GeForce GTX 560 Ti 2GB, 822MHz
  • GPU device 1: AMD/ATI Radeon HD 6970 2GB, 880MHz
  • CPU: AMD Phenom II X6 @ 2.8GHz 1055T
  • RAM: 12GB
  • OS: OpenSUSE 13.1
  • SDK: nVidia CUDA Toolkit 6.5.14, AMD APP SDK 3.0
Node 2
  • GPU device 0: AMD/ATI Radeon HD 7970 3GB, 1000MHz
  • GPU device 1: AMD/ATI Radeon HD 5870 2GB, 850MHz
  • CPU: Intel Core i7-2600 @ 3.4GHz
  • RAM: 16GB
  • OS: OpenSUSE 12.3
  • SDK: AMD APP SDK 3.0

Completed OpenCL project should be uploaded via User dashboard (see instructions and example there), compilation and execution terminal output logs will be provided to the user.

The information send to hgpu.org will be treated according to our Privacy Policy

HGPU group © 2010-2015 hgpu.org

All rights belong to the respective authors

Contact us: