Towards User Transparent GPU Programming

From Master Projects
Jump to: navigation, search

Towards User Transparent GPU Programming
status: finished
Master: project within::Parallel and Distributed Computer Systems
Student name: student name::Ben van Werkhoven
number: student number::1477226
Start start date:=2010/02/01
End end date:=2010/08/31
Supervisor: Frank Seinstra
Second reader: has second reader::Jason Maassen
Poster: has poster::Media:Media:Posternaam.pdf

Signature supervisor



The landscape of real-world distributed systems is currently experiencing a major transformation. The platform for these systems consists of a collection of compute resources from clouds, grids, clusters, desktop machines and mobile devices. Recent developments, however, show the deployment of massively parallel devices, such as Graphics Processing Units (GPUs), anywhere across this platform. The already very heterogeneous collection of compute resources is thus becoming even more chaotic with GPUs being added at every possible location.

Many scientific and commercial applications can benefit from the compute power of GPUs. However, an urgent problem in this field is that application developers need to be experts in both the application domain and programming GPUs. Writing performance optimized programs for the GPU is well-known to be an extremely difficult task. Developing a GPU-enabled distributed application that is able to run on a collection of clusters, desktops and grids is even harder.

Ibis is a Java-based framework that is developed to drastically simplify the process of programming and deploying large-scale distributed applications. The Ibis philosophy is that large-scale distributed applications should be developed on a local workstation and simply be launched from there. This ’writeand- go’ philosophy implies that most of the (native) libraries will be sent along with the application. However, Ibis currently has no support for writing GPU-enabled distributed applications.

As a starting point a GPU-enabled version of the image processing library Parallel Horus will be implemented. Parallel Horus is a user transparent parallel programming library that offers users exactly the same sequential interface as the sequential version, named Horus. However, Parallel Horus uses message passing to distribute images among compute nodes in a cluster, instead of processing them locally on a single machine. The GPU-enabled version of Parallel Horus will be able to utilize the compute power of GPUs present at a single host or any of the compute nodes in the cluster.

Implementing a GPU-enabled version of Parallel Horus will provide a better understanding of the process and difficulties of writing applications for the GPU. These experiences will be used to further investigate how we can make life easier for application developers in other application domains as well.