1. A method comprising: grouping a first plurality of parallel threads into a first workgroup of a set of workgroups and grouping a second plurality of parallel threads into a second workgroup of the set of workgroups, wherein the first workgroup is assigned to a first processor core of a processor and the second workgroup is assigned to a second processor core of the processor; associating the first workgroup with a first operating system thread configured to execute on the first processor core of the processor; mapping a system memory associated with the first processor core to accommodate a memory hierarchy associated with a second processor to enable the scheduling of a parallel thread configured for the second processor to be executed on the first processor core, wherein the processor and the second processor are different processor types and the memory hierarchy associated with the second processor is mapped to the system memory of the first processor core, wherein the memory hierarchy includes a private memory and a local memory, wherein the mapping comprises allocating a plurality of first areas in the system memory coupled to the first processor core of the processor, each of said first areas corresponding to the private memory accessible by one parallel thread from the first workgroup, and allocating a plurality of second areas in the system memory coupled to the first processor core of the processor, each of said second areas corresponding to the local memory associated with all parallel threads from the first workgroup; and scheduling the first plurality of parallel threads within the first operating system thread, wherein the scheduling comprises configuring the first plurality of parallel threads to execute up to a synchronization point and configuring each of the first plurality of parallel threads to restart execution from the synchronization point after all of the first plurality of parallel threads reach the synchronization point.