DawnCC
The DawnCC tool is a compiler module that estimates the size of dynamically allocated data structures, such as arrays and vectors, in C and C++ programs. It was developed as part of our Dawn project, whose goal is to automatically detect parallelizable code in C/C++ programs, and statically alter their source code to include OpenACC or OpenMP directives that can then be interpreted by compatible compilers to generate machine code that optimizes parallel tasks to be run on SIMD architectures, when available.
You can see the tool in action by submitting your own C/C++ code. Simply type a valid program in the box, or upload the program's source file to run the analysis, and you will receive a modified version of your program's code with the parallelization directives automatically inserted, when applicable. For an interesting use case and examples of annotated code, you can read
this presentation
, where DawnCC was used to compile FFmpeg and VLC Media player. More information about our tool is available in the following publications:
Automatic Insertion of Copy Annotation in Data-Parallel Programs (
Paper
,
Slides
)
DawnCC: a Source-to-Source Automatic Parallelizer of C and C++ Programs (
Paper
)
DawnCC: Automatic Annotation for Data Parallelism and Offloading (
Paper
)
ACM TACO
.
/* Example code, simple array accessing */ void func(int a) { int n[100]; int i; for (i = 0; i < a; i++) { n[i+1] = n[i+1] + 1; } }
Type the code in the box above or select a C/C++ file to upload.
?
Choose the output:
Pass statistics.
?
Only annotate parallel loops.
?
Coalesce memory copies.
?
Choose the type of pragmas to be annotated:
OpenACC
OpenMP 4.0
?
DawnCC Tutorial
Source Code