1. A method for scheduling work for processing by a GPU, comprising: tracking, by a scheduling kernel executing in the GPU, completed work items of a plurality of work items through a GPU pipeline in a work completion data structure comprised in the scheduling kernel; tracking, by the scheduling kernel, pending work items of the plurality of work items and a plurality of dependencies corresponding to the pending work items through the GPU pipeline in a work tracking data structure comprised in the scheduling kernel; performing dependency logic analysis based on the work completion data and the work tracking data structures to determine when all dependencies corresponding to a first pending work item are satisfied; and launching the first pending work item into the GPU by using a software work item launch interface when all dependencies corresponding to the first pending work item are satisfied, wherein the tracking the completed and pending work items and the plurality of dependencies corresponding to the pending work items is performed by GPU hardware.