1. A method for executing a plurality of data-parallel threads of a processing logic on a processor core, the method comprising: (a) grouping the plurality of data-parallel threads into one or more workgroups; (b) associating a first workgroup from the one or more workgroups with an operating system thread configured to execute on the processor core; and (c) configuring threads from the first workgroup as user-level threads within the operating system thread.