DawnCC: a Source-to-Source Automatic Parallelizer of C and C++ Programs

Breno Campos Ferreira Guimaraes, Gleison Souza Diniz Mendonca, Fernando Magno Quintao Pereira
Departamento de Ciencia da Computacao – UFMG, Av. Antonio Carlos, 6627 – 31.270-010 – Belo Horizonte – MG – Brazil
CBSoft Tools, 2016


   title={DawnCC: a Source-to-Source Automatic Parallelizer of C and C++ Programs},

   author={Guimaraes, Breno Campos Ferreira and Mendonca, Gleison Souza Diniz and Pereira, Fernando Magno Quintao},



Download Download (PDF)   View View   Source Source   



Dedicated graphics processing chips have become a standard component in most modern systems, making their powerful parallel computing capabilities more accessible to developers. Amongst the tools created to aid programmers in the task of parallelizing applications, directive-based standards are some of the most widely used. These standards, such as OpenACC and OpenMP, facilitate the conversion of sequential programs into parallel ones with minimum human intervention. However, inserting pragmas into production code is a difficult and error-prone task, often requiring familiarity with the target program. This difficulty restricts the ability of developers to annotate code that they have not written themselves. This paper describes DawnCC, a tool that solves this problem. DawnCC is a source-to-source compiler module that automatically annotates sequential C code with OpenACC or OpenMP directives; thus, effectively producing parallel programs out of sequential semantics. DawnCC is equipped with a number of static program analyses that: (i) infer bounds of memory regions referenced in source code to copy them between host and device; and (ii) discover parallel loops in sequential code. To validate its effectiveness, we have used DawnCC to automatically annotate the benchmarks in the Polybench/GPU suite with proper OpenACC directives. These annotations let us parallelize these benchmarks, leading to speedups of up to 78x.
No votes yet.
Please wait...

* * *

* * *

HGPU group © 2010-2021 hgpu.org

All rights belong to the respective authors

Contact us: