Compute task state encapsulation
AssigneeNVIDIA Corporation
InventorsJerome F. Duluk, Jr., Lacky V. Shah, Sean J. Treichler
Life of this patent
Estimating the term…
Abstract
One embodiment of the present invention sets forth a technique for encapsulating compute task state that enables out-of-order scheduling and execution of the compute tasks. The scheduling circuitry organizes the compute tasks into groups based on priority levels. The compute tasks may then be selected for execution using different scheduling schemes. Each group is maintained as a linked list of pointers to compute tasks that are encoded as task metadata (TMD) stored in memory. A TMD encapsulates the state and parameters needed to initialize, schedule, and execute a compute task.
Claims22
A method for encapsulating and scheduling compute tasks in a streaming multiprocessor, the method comprising:
- allocating a first portion of memory for storing a plurality of metadata structures for a plurality of compute tasks, wherein a plurality of pointers to the plurality of metadata structures is stored in a linked list of pointers indicating an execution order associated with the plurality of compute tasks, wherein each metadata structure included in the plurality of metadata structures corresponds to a different compute task included in the plurality of compute tasks, and each pointer included in the plurality of pointers points to a different metadata structure included in the plurality of metadata structures, and wherein the linked list of pointers is stored in a second portion of memory that is separate from the first portion of memory;
- storing initialization parameters in a first metadata structure included in the plurality of metadata structures that configure the streaming multiprocessor to execute a first compute task included in the plurality of compute tasks;
- storing scheduling parameters in the first metadata structure that control the scheduling of the first compute task;
- storing execution parameters in the first metadata structure that control execution of the first compute task by the streaming multiprocessor;
- storing a first pointer and a counter overflow flag that is separate from the first pointer in the first metadata structure, wherein the first pointer points to a queue that stores input data associated with the first compute task and the counter overflow flag indicates when a data pointer pointing to an entry in the queue is to wrap to a beginning of the queue;
- and
- scheduling, based on the linked list of pointers and the scheduling parameters in the first metadata structure, the first compute task for execution in the streaming multiprocessor, wherein the first compute task executes in the streaming multiprocessor based on the execution parameters in the first metadata structure.
A method for encapsulating and scheduling compute tasks in a streaming multiprocessor, the method comprising:
- allocating a first portion of memory for storing a plurality of metadata structures for a plurality of compute tasks, wherein a plurality of pointers to the plurality of metadata structures is stored in a linked list of pointers indicating an execution order associated with the plurality of compute tasks, wherein each metadata structure included in the plurality of metadata structures corresponds to a different compute task included in the plurality of compute tasks, and each pointer included in the plurality of pointers points to a different metadata structure included in the plurality of metadata structures, and wherein the linked list of pointers is stored in a second portion of memory that is separate from the first portion of memory;
- storing initialization parameters in a first metadata structure included in the plurality of metadata structures that configure the streaming multiprocessor to execute a first compute task included in the plurality of compute tasks;
- storing execution parameters in the first metadata structure that control execution of the first compute task by the streaming multiprocessor;
- storing a first pointer in the first metadata structure, wherein the first pointer points to a queue that stores input data associated with the first compute task;
- storing scheduling parameters in the first metadata structure that control the scheduling of the first compute task, wherein the scheduling parameters include a launch parameter that indicates a minimum number of entries needed in the queue for the first compute task to be launched and a coalesce waiting time parameter that indicates a length of time after which the compute task is to be launched even when the queue has fewer than the minimum number of entries;
- and
- scheduling, based on the linked list of pointers and the scheduling parameters in the first metadata structure, the first compute task for execution in the streaming multiprocessor, wherein the first compute task executes in the streaming multiprocessor based on the execution parameters in the first metadata structure.
Dependencies are inferred from the claim text.