Intelligent scheduling of coprocessor execution
AssigneeVMware, Inc.
InventorsMazhar Memon, Aidan Cully
Life of this patent
Estimating the term…
Abstract
Execution of multiple execution streams is scheduled on a plurality of coprocessors. A software layer located logically between applications and the coprocessors determines dependencies within the execution streams, each said dependency being a condition in one of the execution streams that must be satisfied in order for execution of at least one other of the execution streams to proceed on corresponding ones of the coprocessors. The dependencies are then represented in a data structure and an optimized execution schedule is determined for the execution streams according to the dependencies. Simultaneous execution of a plurality of the execution streams is then dynamically reordered according to the optimized execution schedule.
Claims31
A method of scheduling execution of multiple execution streams on a plurality of coprocessors, comprising:
- intercepting application program interface (API) calls from an application, wherein the API calls are 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 coprocessors;
- determining by the interception software layer from the intercepted API calls that a first execution stream is to be executed on a first coprocessor and that a second execution stream including one or more first kernels and one or more second kernels is to be executed on a second coprocessor;
- determining by the interception software layer that the one or more first kernels of the second execution stream does not have an execution dependency on the first execution stream and that the one or more second kernels of the second execution stream has an execution dependency on the first execution stream;
- scheduling by the interception software layer the first execution stream for execution on the first coprocessor;
- and
- scheduling by the interception software layer the one or more first kernels for execution on the second coprocessor prior to when the first execution stream has completed execution.
A data processing system comprising:
- a hardware platform that includes at least one processor and a kernel-level software running on the hardware platform;
- at least one application comprising computer-executable code executable on the at least one processor;
- a plurality of coprocessors, said application generating a plurality of execution streams for execution on the plurality of coprocessors;
- an interception software layer installed in a non-privileged, user space, logically located between the at least one application and the kernel-level software, and being provided for:
- intercepting application program interface (API) calls from the application;
- determining from the intercepted API calls that a first execution stream is to be executed on a first coprocessor and that a second execution stream including one or more first kernels and one or more second kernels is to be executed on a second coprocessor;
- determining that the one or more first kernels of the second execution stream does not have an execution dependency on the first execution stream and that the one or more second kernels of the second execution stream has an execution dependency on the first execution stream;
- scheduling the first execution stream for execution on the first coprocessor;
- and
- scheduling the one or more first kernels for execution on the second coprocessor prior to when the first execution stream has completed execution.
Dependencies are inferred from the claim text.