1. A method comprising: compiling source code to generate a program; launching a workload to be executed by a parallel processing unit; collecting one or more records of trace information associated with a plurality of threads configured to execute the program; and correlating the one or more records to one or more corresponding instructions included in the source code, wherein each record in the one or more records includes at least a value of a program counter and a scheduler state of the thread.