1. A method comprising: compiling source code to generate a program; launching a workload to be executed by a parallel processing unit, wherein the workload includes one or more tasks to be executed by the parallel processing unit, and at least one task of the one or more tasks executes a thread block configured to execute the program; 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 a value of a program counter, a thread block identifier, and a scheduler state that comprises a stall vector having at least two bits, each bit in the at least two bits representing a different reason for a thread block to be stalled.