A Compiler to Enable C++/OpenMP Programs to Run on the GPU
|
IP.com Disclosure Number: IPCOM000171304D
|
Publication Date: 25-Jun-2008 |
Publishing Venue
The IP.com Journal (v8n6B)
Related People
Juergen Carstens - Contact
juergen.carstens@siemens.com; phone +49-89-636-82995
Abstract
Copyright
SIEMENS AG 2008
Language
English (United States)
Country
India
Document File
2 pages / 31.6 KB
A Compiler to Enable C++/OpenMP Programs to Run on the GPU
Idea: Vijay Agneeswaran, IN-Bangalore; Ranajoy Malakar, IN-Bangalore; Donny Daniel, IN- Bangalore; Yogesh Nagappa, IN-Bangalore; Ljubisa Goganovic,IN-Bangalore
GPUs (Graphic Processing Units) are usually used for graphical computations. Further, the GPUs are optimized for digital signal processing, scene rendering and volumetric image processing. It turned out that the GPU can also be used for the implementation of complex computing problems such as high speed database sorting and searching, genetic algorithms or pattern recognition. Due to the pipeline architecture, the traditional sequential programming model can not be applied. At present, in the direct GPU programming the programmer maps low level details such as vertex processing to his problem domain. However, the programming effort is huge and the developed code is locked on the current GPU platform.
Therefore, a novel tool is proposed which can be used by programmers in order to write code which can be executed on the GPU hardware. The schematic diagram of the proposed solution is depicted in Figure 1. The original code is endued with parallelization hints (see Figure 1, a). The parallelization hints are used to mark the section of code which can be run in parallel. Thus, the compiler gets informed about the parallel code sections and the kind of shared data management which should be performed. This leads to an expressive parallel programming environment so that the programmer does not have to to deal with low-level details for the parallel execution of the program. Furthermore, the parallelization hints are conform to or extend the OpenMP directives if needed (OpenMP: Open Multi Processing). Therefore, the parallelization hints demarcate the parallel and non-parallel executable c...