Author

Derek White

Graduation Semester and Year

2014

Language

English

Document Type

Dissertation

Degree Name

Doctor of Philosophy in Computer Science

Department

Computer Science and Engineering

First Advisor

Ishfaq Ahmad

Abstract

Powerful Graphics Processing Units (commonly called GPUs) are proliferatingrapidly and are becoming a viable choice for a wide range of user applications. Forperforming computationally intensive tasks on these processors, it is highly desirable to have software tools that can facilitate writing effective programming codewhile taking advantage of the full potential offered by these processors. Multi-levelmemory hierarchy, extensive data transfer, and the utilization of a large number ofprocessing cores are daunting challenges in writing code for data-parallel computingtasks. The programming experience becomes more cumbersome due to the significantrestrictions imposed by the OpenCL specification including the inability to allocatememory dynamically. The contribution of this dissertation is developing a methodicalframework that can assist the programmer in writing efficient code using a modern,expressive programming language combined with creative uses of static and dynamicprogram analysis that can alleviate some of the challenges mentioned above. Ourmethodology allows writing codes with object-oriented programming style that cantake advantage of the GPU capabilities. Our framework addresses the problem ofdynamic memory allocation and proposes a memory usage analysis that gives programmers the advantage of dynamic memory allocation while operating within theconstraints of OpenCL devices. We have also developed a sofware tool that performsstatic analysis on GPU kernels written in the Scala programming language using theFirepile GPU programming library. The tool computes an upper bound on memoryusage and utilizes this bound to pre-allocate memory needed to successfully executethe kernel on the GPU. Addressing the problem of dynamic memory allocation, we present a memory usage analysis that gives programmers the illusion of dynamic memory allocation while operating within the constraints of OpenCL devices. Static analysis is performed on GPU kernels written in the Scala programming language using the Firepile GPU programming library. An upper bound on memory usage of the kernel is computed. This bound is used to pre-allocate memory needed to successfully execute the kernel on the GPU. Our experiments show that the analysis finds a conservative upper bound with respect to actual memory allocated by execution of the program on the JVM.

Disciplines

Computer Sciences | Physical Sciences and Mathematics

Comments

Degree granted by The University of Texas at Arlington

Share

COinS