IP Library Granted Patent US 10,970,129
Granted Patent B2
US 10,970,129 · App. 16/156,550 · Granted Apr 6, 2021

Intelligent GPU scheduling in a virtualization environment

Inventors: Kun Tian (Shanghai, CN); Zhiyuan Lv (Beijing, CN); Yao Zu Dong (Shanghai, CN)
Assignee: Intel Corporation
G06F9/52G06F9/455G06F9/45558G06F9/4881G06F9/505G06T1/20G06F2009/4557G06F2009/45579
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 10,970,129
App. No.
16/156,550
Granted
Apr 6, 2021
Kind
B2
Abstract

Technologies for scheduling workload submissions for a graphics processing unit (GPU) in a virtualization environment include a GPU scheduler embodied in a computing device. The virtualization environment includes a number of different virtual machines that are configured with a native graphics driver. The GPU scheduler receives GPU commands from the different virtual machines, dynamically selects a scheduling policy, and schedules the GPU commands for processing by the GPU.

Claims (36)

1. At least one machine-readable storage device for use in connection with a graphics processing unit (GPU) having a first engine and a second engine capable of executing commands in parallel with each other, the at least one machine-readable storage device comprising instructions that, when executed, cause at least one processor to at least:

populate a first command queue with a first GPU command, the first engine capable of executing commands in the first command queue, the first engine not capable of executing commands in a second command queue;

populate the second command queue with a second GPU command, the second engine capable of executing commands in the second command queue;

populate the second command queue with a wait operation to cause serial execution of the first GPU command by the first engine and execution of the second GPU command by the second engine;

cause the first engine to execute the first GPU command; and

cause the second engine to execute the second GPU command after the first engine has completed the execution of the first GPU command.

2. The at least one machine-readable storage device of claim 1 , wherein the instructions, when executed, cause the at least one processor to schedule execution of a privileged command for execution by the second engine prior to execution of the second GPU command.

3. The at least one machine-readable storage device of claim 1 , wherein the copy command queue is to operate as a ring buffer.

4. The at least one machine-readable storage device of claim 1 , wherein the second command, when executed, causes the second engine to perform a 3D rendering task.

5. The at least one machine-readable storage device of claim 4 , wherein the first command, when executed, causes the first engine to perform a copy task.

6. The at least one machine-readable storage device of claim 1 , wherein the first command is to drive the first engine.

7. The at least one machine-readable storage device of claim 6 , wherein the second command is to drive the second engine.

8. A computing device comprising:

memory;

at least one graphics processing unit (GPU) including a first engine and a second engine, the first engine capable of executing commands in a first command queue, the first engine not capable of executing commands in a second command queue, the second engine capable of executing commands in the second command queue;

at least one processor to execute instructions to at least:

populate the first command queue with a first GPU command;

populate the second command queue with a second GPU command, the second command queue being a 3D rendering queue;

populate a wait operation in the second command queue to cause serial execution of the first GPU command by the first engine and execution of the second GPU command by the second engine;

cause the first engine to execute the first GPU command;

cause the second engine to execute the second GPU command after the first engine has completed the execution of the first GPU command due to the wait operation.

9. The computing device of claim 8 , wherein the at least one processor is to schedule execution of a privileged command for execution by the second engine prior to execution of the second GPU command.

10. The computing device of claim 8 , wherein the first command queue is to operate as a ring buffer.

11. The computing device of claim 8 , wherein the second command, when executed, causes the second engine to perform a 3D rendering task.

12. The computing device of claim 11 , wherein the first command, when executed, causes the first engine to perform a copy task.

13. The computing device of claim 8 , wherein the first command is to drive the first engine.

14. The computing device of claim 13 , wherein the second command is to drive the second engine.

15. An apparatus for use in connection with a graphics processing unit (GPU) having a first engine and a second engine capable of executing commands in parallel with each other, the apparatus comprising:

means for populating to populate a first command queue with a first GPU command, the first engine capable of executing commands in the first command queue, the first engine not capable of executing commands in a second command queue, the means for populating to populate the second command queue with the second GPU command, the second engine capable of executing commands in the second command queue, the means for populating to populate to utilize a wait operation in the second command queue to cause serial execution of the first GPU command by the first engine and execution of the second GPU command by the second engine; and

means for causing the first engine to execute the first GPU command, the means for causing to cause the second engine to execute the second GPU command after the first engine has completed the execution of the first GPU command due to the wait operation.

16. The apparatus of claim 15 , further including means for scheduling execution of a privileged command for execution by the second engine prior to execution of the second GPU command.

17. The apparatus of claim 15 , wherein the copy command queue is to operate as a ring buffer.

18. The apparatus of claim 17 , wherein the second command, when executed, causes the second engine to perform a 3D rendering task.

19. The apparatus of claim 15 , wherein the first command, when executed, causes the first engine to perform a copy task.

20. The apparatus of claim 19 , wherein the first command is to drive the first engine.

21. The apparatus of claim 15 , wherein the second command is to drive the second engine.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2021
From: TIAN, KUN; LV, ZHIYUAN; DONG, YAO ZU
To: INTEL CORPORATION
Reel/Frame 055005/0511 →
Continuity (2)
Continuation 14779234 · Sep 22, 2015
Related Publication 20190286479A1 · Sep 19, 2019
Cited By (1)
US 12,217,078