1. A computer-implemented method for translating an 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; and inserting a loop around at least one region of the partitioned application program to produce a translated application program for execution by the general purpose processor, wherein the loop iterates over a cooperative thread array dimension that corresponds to a number of threads that are concurrently executed by a parallel processor within the multi-core graphics processing unit.