Scheduling tasks in a GPU by having a task scheduling engine that selects a task type by identifying a candidate Data Master identifier 402, based on wakeup event state data, and the contents of a task queue. It then selects one of the Data Master identifiers 404. In the second part 401, the task scheduling engine selects a task of the given type by first identifying the oldest non-executing task of that type 406. It then checks whether or not all of that task’s dependent task have been completed, or met 408. If they have not it clears the wakeup event state data for that task’s task type ID so that it will not be selected again until its dependences are met 412. If its dependencies have been met, then the task is selected for execution and sent to a processing block to be executed. Its state data in the task queue is set to indicate that this has happened 410.
展开▼