1. A computer-implemented method for promoting thread-local memory references of application program as part of translating the application program for execution by a general purpose processor, the method comprising: receiving the application program written using a parallel programming model for execution on a multi-core graphics processing unit; partitioning the application program into regions of synchronization independent instructions to produce a partitioned application program; identifying a thread-local memory reference of the partitioned application program that contributes to a result of a first vector statement in the partitioned application program; and promoting the thread-local memory reference to a vector reference to produce a translated application program.