Providing an optimized service-based pipeline
View Patent ↗An optimized service-based pipeline includes a resource manager that receives a request that includes a description of a workload from a workload initiator such as an application. The resource manager identifies runtime utilization metrics of a plurality of processing resources, where the plurality of processing resources includes at least a first graphics processing unit (GPU) and a second GPU. The resource manager determines, based on the utilization metrics and one or more policies, a workload allocation recommendation for the workload. Thus, the workload initiator can determine whether placing a workload on a particular processing resource is preferable based on runtime behavior of the system and policies established of the workload.
1 . A method of providing a service-based pipeline, the method comprising:
inspecting, in response to a request that includes a description of a workload received from a workload initiator, runtime utilization metrics of a plurality of processing resources, wherein the plurality of processing resources includes at least a first graphics processing unit (GPU) and a second GPU;
generating, by a resource manager and based on the utilization metrics and one or more policies, a workload allocation recommendation; and
providing, to the workload initiator in response to the request, the workload allocation recommendation, wherein the workload initiator is to allocate the workload to one or more of the processing resources for execution by making a call to an operating system.
2 . The method of claim 1 , wherein the first GPU is an integrated GPU that is integrated with a central processing unit (CPU); and wherein the second GPU is a discrete GPU, and wherein the workload allocation recommendation specifies whether to utilize the integrated GPU or the discrete GPU for executing the workload.
3 . The method of claim 1 , wherein the plurality of processing resources further includes at least one of a video encoding/decoding accelerator, an audio encoding/decoding accelerator, a display controller, a bus interface controller, and a memory subsystem controller, and wherein the resource manager and the workload initiator are both included within a system memory.
4 . The method of claim 1 further comprising:
exposing, to the workload initiator, an application programming interface (API) for submitting the request via an API call to the resource manager to request a recommended allocation, wherein the description of the workload is included as one or more arguments to the API call; and
providing the workload allocation recommendation to the workload initiator as a response to the API call.
5 . The method of claim 1 ,
wherein the workload initiator comprises an application, wherein the workload is generated by the application, and wherein the application receives the workload allocation recommendation from the resource manager and selects the one or more of the processing resources based on the received workload allocation recommendation.
6 . The method of claim 1 further comprising:
identifying the runtime utilization metrics and the one or more policies based at least on the description of the workload.
7 . The method of claim 1 , wherein generating, based on the utilization metrics and one or more policies, a workload allocation recommendation includes:
predicting, based on the runtime utilization metrics, a utilization impact on the plurality of processing resources in a particular workload allocation.
8 . The method of claim 7 , wherein a plurality of workload allocations is described in the one or more policies.
9 . The method of claim 7 , wherein generating, based on the utilization metrics and one or more policies, a workload allocation recommendation also includes:
scoring a plurality of workload allocations based on one or more factors specified in the one or more policies.
10 . The method of claim 1 further comprising:
registering the workload initiator for a resource management notification; and
notifying the workload initiator of resource availability in response to at least one of a change in capabilities and a change in utilization.
11 . An apparatus for providing a service-based pipeline, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed therein computer program instructions that, when executed by the computer processor, cause the apparatus to:
inspect, in response to a request that includes a description of a workload received from a workload initiator, runtime utilization metrics of a plurality of processing resources, wherein the plurality of processing resources includes at least a first graphics processing unit (GPU) and a second GPU;
generate, by a resource manager and based on the utilization metrics and one or more policies, a workload allocation recommendation; and
provide, to the workload initiator in response to the request, the workload allocation recommendation, wherein the workload initiator is to allocate the workload to one or more of the processing resources for execution by making a call to an operating system.
12 . The apparatus of claim 11 , wherein generate, based on the utilization metrics and one or more policies, a workload allocation recommendation includes:
predict, based on the runtime utilization metrics, a utilization impact on the plurality of processing resources in a particular workload allocation.
13 . The apparatus of claim 12 , wherein a plurality of workload allocations is described in the one or more policies.
14 . The apparatus of claim 12 wherein generate, based on the utilization metrics and one or more policies, a workload allocation recommendation also includes:
score a plurality of workload allocations based on one or more factors specified in the one or more policies.
15 . The apparatus of claim 11 further comprising computer program instructions that, when executed, cause the apparatus to:
register the workload initiator for a resource management notification; and
notify the workload initiator of resource availability in response to at least one of a change in capabilities and a change in utilization.
16 . A computer program product for providing a service-based pipeline, the computer program product disposed upon a non-transitory computer readable storage medium, the computer program product comprising computer program instructions that, when executed, cause a computer to:
inspect, in response to a request that includes a description of a workload received from a workload initiator, runtime utilization metrics of a plurality of processing resources, wherein the plurality of processing resources includes at least a first graphics processing unit (GPU) and a second GPU;
generate, by a resource manager and based on the utilization metrics and one or more policies, a workload allocation recommendation; and
provide, to the workload initiator in response to the request, the workload allocation recommendation, wherein the workload initiator is to allocate the workload to one or more of the processing resources for execution by making a call to an operating system.
17 . The computer program product of claim 16 , wherein generate, based on the utilization metrics and one or more policies, a workload allocation recommendation includes:
predict, based on the runtime utilization metrics, a utilization impact on the plurality of processing resources in a particular workload allocation.
18 . The computer program product of claim 17 , wherein generate, based on the utilization metrics and one or more policies, a workload allocation recommendation is performed atomically for a plurality of streams in a workload.
19 . The computer program product of claim 17 , wherein generate, based on the utilization metrics and one or more policies, a workload allocation recommendation also includes:
score a plurality of workload allocations based on one or more factors specified in the one or more policies.
20 . The computer program product of claim 16 further comprising computer program instructions that, when executed, cause the computer to:
register the workload initiator for a resource management notification; and
notify the workload initiator of resource availability in response to at least one of a change in capabilities and a change in utilization.