Program Transformation for Automatic GPU-Offloading with OpenMP
TimeWednesday, 17 November 20218:30am - 5pm CST
LocationSecond Floor Atrium
DescriptionThanks to its ability to manage large data parallelism with low power consumption, heterogeneous GPU computing has risen in the past decade. However, writing an application for GPUs is an intensive manual effort that may include re-engineering data structures, as well as modifying large regions of code, to make effective use of the GPU’s computational power while keeping overheads moderate. Directive based programming models, such as OpenMP, are an attractive approach due to their productivity benefits. Yet, programmers using OpenMP confront various hurdles, including programmability, data handling, and parallelism. In this research, we design and build a compiler framework that can automatically discover OpenMP kernels, recommend several potential OpenMP variants for offloading that kernel to the GPU, and using a novel static neural network-based compile time cost model, predict and return the most optimal of those variants. We divide our framework into 3 modules, each of which functions independently. Module 1 detects and analyzes an OpenMP kernel and suggests several variants, by applying various potential code level transformations, for offloading that kernel to a GPU. In module 2, we define COMPOFF, which employs ML techniques (for the first time in OpenMP) to predict the Cost of OpenMP OFFloading statically. In module 3, we modify the original source code using the analysis and prediction from the other modules to modify the source code and returns newly generated code that supports GPU offloading. Our preliminary findings indicate that our framework will aid scientists transfer their programs to the new heterogeneous computing environment.