US 12,379,959 B2
Compute task state encapsulation
Jerome F. Duluk, Jr., Palo Alto, CA (US); Lacky V. Shah, Los Altos Hills, CA (US); and Sean J. Treichler, Piedmont, CA (US)
Assigned to NVIDIA CORPORATION, Santa Clara, CA (US)
Filed by NVIDIA CORPORATION, Santa Clara, CA (US)
Filed on Oct. 5, 2020, as Appl. No. 17/063,705.
Application 17/063,705 is a continuation of application No. 13/292,951, filed on Nov. 9, 2011, granted, now 10,795,722.
Prior Publication US 2021/0019185 A1, Jan. 21, 2021
Int. Cl. G06F 9/48 (2006.01); G06F 9/46 (2006.01); G06F 9/50 (2006.01)
CPC G06F 9/4881 (2013.01) [G06F 9/463 (2013.01); G06F 9/5005 (2013.01); G06F 9/5038 (2013.01); G06F 2209/483 (2013.01); G06F 2209/486 (2013.01)] 22 Claims
OG exemplary drawing
 
1. 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.