IP Library › Granted Patent US 11,822,925
Granted Patent B2
US 11,822,925 · App. 17/201,855 · Granted Nov 21, 2023

Intelligent scheduling of coprocessor execution

Inventors: Mazhar Memon (Austin, TX); Aidan Cully (St. Augustine, FL)
Assignee: VMware, Inc.
G06F9/3855G06F9/3851G06F9/54G06N3/02G06F9/3836G06F9/3838G06F9/3877G06F9/4843G06F9/4881G06F9/545
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 11,822,925
App. No.
17/201,855
Granted
Nov 21, 2023
Kind
B2
Abstract

Execution of multiple execution streams is scheduled on at least one coprocessor. A software layer located logically between applications and the at least one coprocessor intercepts a first API call from an application and determines that a first execution stream is to be executed. Before scheduling the first execution stream, the software layer transmits a response to the application indicating that the at least one coprocessor is ready to execute another execution stream. The software layer intercepts a second API call from the application and determines that a second execution stream including one or more kernels is to be executed. The software layer determines that the one or more kernels does not have a dependency on the first execution stream. The software layer schedules the one or more kernels for execution prior to when the at least one coprocessor has completed execution of the first execution stream.

Claims (44)

1. A method of scheduling execution of multiple execution streams on at least one coprocessor, comprising:

intercepting a first application programming interface (API) call from an application, wherein the first API call is intercepted by an interception software layer that is installed in a non-privileged, user space, between the application and kernel-level software running on a hardware platform that includes the at least one coprocessor;

determining by the interception software layer from the first API call that a first execution stream is to be executed on the at least one coprocessor;

before scheduling the first execution stream for execution on the at least one coprocessor, transmitting by the interception software layer a response to the application indicating that the at least one coprocessor is ready to execute another execution stream;

after transmitting the response to the application, intercepting by the interception software layer a second API call from the application;

determining by the interception software layer from the second API call that a second execution stream including one or more first kernels and one or more second kernels is to be executed on the at least one coprocessor;

determining by the interception software layer that the one or more first kernels does not have an execution dependency on the first execution stream and that the one or more second kernels has an execution dependency on the first execution stream; and

scheduling by the interception software layer the one or more first kernels for execution on the at least one coprocessor prior to when the at least one coprocessor has completed execution of the first execution stream.

2. The method of claim 1 , further comprising scheduling by the interception software layer the one or more second kernels for execution on the at least one coprocessor after the at least one coprocessor has completed execution of the first execution stream.

3. The method of claim 2 , wherein the at least one coprocessor includes first and second coprocessors, and wherein the interception software layer schedules the first execution stream for execution on the first coprocessor and the second execution stream for execution on the second coprocessor.

4. The method of claim 1 , further comprising: before scheduling the first execution stream for execution on the at least one coprocessor, generating an object in response to the first API call indicating that executable code of the first execution stream has been compiled and loaded into the at least one coprocessor.

5. The method of claim 1 , further comprising:

determining the execution dependency of the one or more second kernels statically;

adding the first and second execution streams to an execution queue; and

determining the execution dependency of the one or more second kernels from the first and second execution streams when they are in the execution queue.

6. The method of claim 1 , further comprising determining the execution dependency of the one or more second kernels dynamically, while the first and second execution streams are executing.

7. The method of claim 1 , wherein the execution dependency of the one or more second kernels is a function of contents of memory, and wherein the interception software layer loads contents of a memory device of a host computing device to a memory buffer that is allocated to the interception software layer before transferring the loaded contents of the memory device from the separate memory buffer to memory of the at least one coprocessor.

8. The method of claim 1 , wherein the execution dependency of the one or more second kernels is a function of execution speed.

9. The method of claim 1 , wherein the execution dependency of the one or more second kernels is a function of data that must be received over a network, and wherein the interception software layer does not schedule the one or more second kernels for execution on the at least one coprocessor until receiving the data over the network.

10. The method of claim 1 , wherein the scheduling of the first and second execution streams is performed using a neural network, Bayesian optimization, decision trees, or greedy bin-packing.

11. A data processing system comprising:

a hardware platform that includes a processor and a kernel-level software running on the hardware platform;

an application comprising computer-executable code executable on the processor;

at least one coprocessor, the application generating a plurality of execution streams for execution on the at least one coprocessor; and

an interception software layer installed in a non-privileged, user space, logically located between the application and the kernel-level software, and being provided for:

intercepting a first application programming interface (API) call from the application;

determining from the first API call that a first execution stream is to be executed on the at least one coprocessor;

before scheduling the first execution stream for execution on the at least one coprocessor, transmitting a response to the application indicating that the at least one coprocessor is ready to execute another execution stream;

after transmitting the response to the application, intercepting a second API call from the application;

determining from the second API call that a second execution stream including one or more first kernels and one or more second kernels is to be executed on the at least one coprocessor;

determining that the one or more first kernels does not have an execution dependency on the first execution stream and that the one or more second kernels has an execution dependency on the first execution stream; and

scheduling the one or more first kernels for execution on the at least one coprocessor prior to when the at least one coprocessor has completed execution of the first execution stream.

12. The data processing system of claim 11 , wherein the interception software layer is further provided for scheduling the one or more second kernels for execution on the at least one coprocessor after the at least one coprocessor has completed execution of the first execution stream.

13. The data processing system of claim 12 , wherein the at least one coprocessor includes first and second coprocessors, and wherein the interception software layer schedules the first execution stream for execution on the first coprocessor and the second execution stream for execution on the second coprocessor.

14. The data processing system of claim 11 , wherein the interception software layer is further provided for: before scheduling the first execution stream for execution on the at least one coprocessor, generating an object in response to the first API call indicating that executable code of the first execution stream has been compiled and loaded into the at least one coprocessor.

15. The data processing system of claim 11 , wherein the interception software layer is further provided for:

determining the execution dependency of the one or more second kernels statically;

adding the first and second execution streams to an execution queue; and

determining the execution dependency of the one or more second kernels from the first and second execution streams when they are in the execution queue.

16. The data processing system of claim 11 , wherein the interception software layer is further provided for determining the execution dependency of the one or more second kernels dynamically, while the first and second execution streams are executing.

17. The data processing system of claim 11 , wherein the execution dependency of the one or more second kernels is a function of contents of memory, and wherein the interception software layer loads contents of a memory device of a host computing device to a memory buffer that is allocated to the interception software layer before transferring the loaded contents of the memory device from the separate memory buffer to memory of the at least one coprocessor.

18. The data processing system of claim 11 , wherein the execution dependency of the one or more second kernels is a function of execution speed.

19. The data processing system of claim 11 , wherein the execution dependency of the one or more second kernels is a function of data that must be received over a network, and wherein the interception software layer does not schedule the one or more second kernels for execution on the at least one coprocessor until receiving the data over the network.

20. The data processing system of claim 11 , wherein the scheduling of the first and second execution streams is performed using a neural network, Bayesian optimization, decision trees, or greedy bin-packing.

Assignments (1)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
Continuity (2)
Continuation 16226695 · Dec 20, 2018
Related Publication 20210200553A1 · Jul 1, 2021