A large number of scientific applications have been shown to accelerate using GPGPU. However, porting legacy scientific applications to GPGPU is a challenging task. An important part of this challenge is to identify vectorizable loops in the program as well as try and vectorize non-vectorizable loops. In this paper we present GPUX: A tool-chain for porting legacy applications to GPGPU by analyzing program traces. GPUX identifies vectorizable loops and diagnose loop-carried dependencies in non-vectorizable loops thereby helping programmers to vectorize them. We demonstrate the workings of GPUX using a representative set of common loop constructs. GPUX correctly identifies all the loops, loop-carried dependencies and their properties including dependence types, dependence distances as well as the source line numbers and variable names.

GPUX is the culmination of the work I started during my MSc at the Computer Architecture research group. Last year, I was able to publish some preliminary results in a local conference. Please check out the paper below.

Full Text (pdf)