Patent ID: 11860737
Assignee: VMWARE LLC
Field: Computer technology (Electrical engineering)
Classification: CPC G | IPC G

Claim 18:
19. A data processing system comprising:
a central processing unit (CPU);
a plurality of graphics processing units (GPUs), the plurality of GPUs including a first GPU;
at least one application comprising computer-executable code executable on the CPU; and
an interception layer logically located between the at least one application and the plurality of GPUs, and including a plurality of replay logs associated respectively with the plurality of GPUs, wherein the interception layer is executed on the CPU to:
intercept a data and command stream issued by the at least one application to an application program interface (API) of the first GPU for execution of the intercepted data and command stream on the first GPU, and acquire and store execution state information for the first GPU;
store at least a portion of the intercepted data and command stream in a replay log associated with the first GPU;
detect a redirection condition, which is one of: (1) the first GPU failing or otherwise being unavailable to service the stored portion of the intercepted data and command stream, (2) a new GPU being made available to the interception layer during runtime of the at least one application, (3) computational loads among the plurality of GPUs being determined to be unbalanced, (4) the ability to divide the intercepted data and command stream into a plurality of parts to be executed simultaneously, and (5) the ability to decrease power consumption of the plurality of GPUs or to increase processing speed of the stored portion of the intercepted data and command stream by redirecting execution of the stored portion of the intercepted data and command stream; and
in response to detecting the redirection condition: select one of the plurality of GPUs other than the first GPU as a second GPU, and then read out from the replay log associated with the first GPU the stored portion of the intercepted data and command stream and submit the stored portion of the intercepted data and command stream, as well as the stored execution state information, to the second GPU for the second GPU to service the stored portion of the intercepted data and command stream instead of the first GPU.