IP Library Granted Patent US 9,947,068
Granted Patent B2
US 9,947,068 · App. 15/067,038 · Granted Apr 17, 2018

System and method for GPU scheduling

Inventor: Yuval Sarna (Qiryat Tivon, IL)
Assignee: Gamefly Israel Ltd.
G06T1/20G06F9/4881G06T1/60
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,947,068
App. No.
15/067,038
Granted
Apr 17, 2018
Kind
B2
Abstract

A computer-implemented method, apparatus and computer program product for scheduling tasks, the method comprising: receiving a request from a context for processing a frame by a Graphic Processing Unit (GPU); allocating frame processing time for the context in association with the frame; receiving a command buffer associated with the frame; subject to a pending command buffer collection being empty, submitting the command buffer for processing by the GPU; determining priorities for all command buffers in the pending command buffer collection, including a priority for the command buffer; if the highest priority command buffer is the command buffer, submitting the command buffer for processing; otherwise adding the command buffer to the pending command buffer collection, wherein the frame processing time allocated for the context is reduced by an amount of time related to a time a previous frame associated with the context exceeded its allocated processing time.

Claims (66)

1. A computer-implemented method performed by a computerized device, comprising:

a. receiving a request from a context for processing a frame by a Graphic Processing Unit (GPU);

b. allocating frame processing time for the context in association with the frame;

c. receiving a command buffer associated with the frame;

d. subject to a pending command buffer collection being empty, submitting the command buffer for processing by the GPU;

e. determining priorities for all command buffers in the pending command buffer collection, and for the command buffer;

f. if the highest priority command buffer is the command buffer, submitting the command buffer for processing;

g. otherwise adding the command buffer to the pending command buffer collection,

wherein determining the frame processing time comprises:

subject to processing time used by all contexts is zero, the frame processing time is determined as a frame time;

subject to processing time used by all contexts being below the maximal processing time, the frame processing time is determined as a portion of the maximal processing time relative to a ratio between processing time of a previous frame associated with the context, and sum of processing times of previous frames associated with all contexts; and

subject to processing time used by all contexts exceeding the maximal processing time, the frame processing time is determined as processing time of a previous frame associated with the context, reduced by a factor proportional to how much processing time of a previous frame associated with the context deviated from expected frame time, and

wherein the frame processing time allocated for the context is reduced by an amount of time related to a time a previous frame associated with the context exceeded its allocated processing time.

2. The method of claim 1 , wherein steps b-g are performed by a GPU scheduler.

3. The method of claim 1 , further comprising repeating steps c-g until all command buffers associated with the frame have been processed.

4. The method of claim 1 , further comprising repeating steps f-g until the command buffer has been processed.

5. The method of claim 1 , further comprising reducing from processing time of the frame a processing time required for processing the command buffer, upon completion of processing the command buffer.

6. The method of claim 1 , further comprising:

receiving a notification that a command buffer has finished processing;

performing time allocation for all contexts;

determining priorities for all pending command buffers;

determining a selected command buffer having the highest priority; and

submitting the selected command buffer.

7. The method of claim 6 , wherein the selected command buffer is selected as a command buffer having an earliest deadline, from a group associated with highest priority factors from the multiplicity of groups.

8. The method of claim 1 , wherein subject to the context having no time left, the context is suspended until frames by other contexts are processed.

9. The method of claim 1 , wherein determining priorities for all command buffers in a pending command queue comprises:

determining a priority factor for each command buffer in the pending command queue; and

grouping all command buffers into a multiplicity of groups, in accordance with the priority factor determined for each command buffer.

10. A computerized apparatus having a processor, and a graphic processing unit (GPU), the processor being adapted to receiving a request from a context for processing a frame by a Graphic Processing Unit (GPU), the GPU associated with a GPU scheduler adapted to:

a. allocating frame processing time for the context in association with the frame;

b. receiving a command buffer associated with the frame;

c. subject to a pending command buffers collection being empty, submitting the command buffer for processing by the GPU;

d. determining priorities for all command buffers in the pending command buffers collection, and for the command buffer;

e. if the highest priority command buffer is the command buffer, submitting the command buffer for processing; and

f. otherwise adding the command buffer to the pending command buffer collection,

wherein determining the frame processing time comprises:

subject to processing time used by all contexts is zero, the frame processing time is determined as a frame time;

subject to processing time used by all contexts being below the maximal processing time, the frame processing time is determined as a portion of the maximal processing time relative to a ratio between processing time of a previous frame associated with the context, and sum of processing times of previous frames associated with all contexts; and

subject to processing time used by all contexts exceeding the maximal processing time, the frame processing time is determined as processing time of a previous frame associated with the context, reduced by a factor proportional to how much processing time of a previous frame associated with the context deviated from expected frame time, and

wherein a processing time allocated for a context is reduced by an amount of time related to a time a previous frame associated with the context exceeded its allocated processing time.

11. The computerized apparatus of claim 10 , wherein the GPU scheduler is further adapted to repeat steps e-f until the command buffer has been processed.

12. The computerized apparatus of claim 10 , wherein the GPU scheduler is further adapted to reduce from processing time of the frame a processing time required for processing the command buffer, upon completion of processing the command buffer.

13. The computerized apparatus of claim 10 , wherein the GPU scheduler is further adapted to:

receive a notification that a command buffer has finished processing;

perform time allocation for all contexts;

determine priorities for all pending command buffers;

determine a selected command buffer having the highest priority; and

submit the selected command buffer.

14. The computerized apparatus of claim 13 , wherein the selected command buffer is selected as a command buffer having an earliest deadline, from a group associated with highest priority factors from the multiplicity of groups.

15. The computerized apparatus of claim 10 , wherein subject to the context having no time left, the context is suspended until frames by other contexts are processed.

16. The computerized apparatus of claim 10 , wherein determining priorities for all command buffers in a pending command queue comprises:

determining a priority factor for each command buffer in the pending command queue; and

grouping all command buffers into a multiplicity of groups, in accordance with the priority factor determined for each command buffer.

17. A computer program product comprising a non-transitory computer readable storage medium retaining program instructions, which program instructions when read by a processor, cause the processor to perform a method comprising:

a. receiving a request from a context for processing a frame by a Graphic Processing Unit (GPU);

b. allocating frame processing time for the context in association with the frame;

c. receiving a command buffer associated with the frame;

d. subject to a pending command buffer collection being empty, submitting the command buffer for processing by the GPU;

e. determining priorities for all command buffers in the pending command buffer collection, and for the command buffer;

f. if the highest priority command buffer is the command buffer, submitting the command buffer for processing;

g. otherwise adding the command buffer to the pending command buffer collection,

wherein determining the frame processing time comprises:

subject to processing time used by all contexts is zero, the frame processing time is determined as a frame time;

subject to processing time used by all contexts being below the maximal processing time, the frame processing time is determined as a portion of the maximal processing time relative to a ratio between processing time of a previous frame associated with the context, and sum of processing times of previous frames associated with all contexts; and

subject to processing time used by all contexts exceeding the maximal processing time, the frame processing time is determined as processing time of a previous frame associated with the context, reduced by a factor proportional to how much processing time of a previous frame associated with the context deviated from expected frame time, and

wherein the frame processing time allocated for the context is reduced by an amount of time related to a time a previous frame associated with the context exceeded its allocated processing time.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2018
From: GAMEFLY, INC.; GAMEFLY ISRAEL LTD.
To: ELECTRONIC ARTS INC.
Reel/Frame 045873/0598 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2016
From: SARNA, YUVAL
To: GAMEFLY ISRAEL LTD.
Reel/Frame 037956/0385 →
Continuity (1)
Related Publication 20170262952A1 · Sep 14, 2017