A Framework for Automatic OpenMP Code Generation
Department of Computer Science and Engineering, Indian Institute of Technology, Madras
Indian Institute of Technology, 2011
@phdthesis{raghesh2011framework,
title={A Framework for Automatic OpenMP Code Generation},
author={RAGHESH, A.},
year={2011},
school={INDIAN INSTITUTE OF TECHNOLOGY, MADRAS}
}
It is always a tedious task to manually analyze and detect parallelism in programs. When we deal with autoparallelism the task becomes more complex. Frameworks such as OpenMP is available through which we can manually annotate the code to realize parallelism and take the advantage of underlying multi-core architecture. But the programmer’s life becomes simple when this is done automatically. In this report we present a framework for autoparallelism through Polly, a project to enable polyhedral optimizations in LLVM and the work done towards automatically generating OpenMP library calls for relevant parts of the code. Various powerful polyhedral techniques exist to optimize computation intensive programs effectively. Applying these techniques on any non-trivial program is still surprisingly difficult and often not as effective as expected. Most polyhedral tools are limited to a specific programming language. Even for this language, relevant code needs to match specific syntax that rarely appears in existing code. It is therefore hard or even impossible to process existing programs automatically. In addition, most tools target C or OpenCL code, which prevents effective communication with compiler internal optimizers. As a result target architecture specific optimizations are either little effective or not approached at all. Polly automatically detects and transforms relevant program parts in a languageindependent and syntactically transparent way. Therefore, it supports programs written in most common programming languages and constructs like C++ iterators, goto based loops and pointer arithmetic. Internally it provides a stateof-the-art polyhedral library with full support for Z-polyhedra, advanced data dependency analysis and support for external optimizers. Through LLVM, machine code for CPUs and GPU accelerators, C source code and even hardware descriptions can be targeted.
October 7, 2011 by hgpu