Dynamic CPU GPU Resource Allocation via Compute Identifiers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current data processing systems struggle to leverage both CPUs and GPUs for data parallel computations due to vendor-specific programming environments and the inability to utilize available processing resources across different vendors and devices.

Innovation Solution

The solution involves generating compute device identifiers to specify physical compute devices, such as CPUs and GPUs, for executing threads in parallel, allowing applications to dynamically allocate processing resources based on capability requirements through API calls, enabling seamless utilization of both CPUs and GPUs from different vendors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If vendor-specific programming environments are used for GPUs, then GPU processing capability is utilized, but compatibility with CPUs and other vendor GPUs is lost

Engineering Contradiction:
Improveprocessing capability utilizationVSAvoidcross-vendor and CPU-GPU compatibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent implements a universal programming interface that allows the same application code to execute on multiple types of processors (CPUs, GPUs from different vendors) without modification. The system abstracts the underlying hardware differences through a common API layer, enabling one program to serve multiple processing platforms simultaneously, thus resolving the contradiction between specialized GPU performance and cross-platform compatibility.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The patent introduces an intermediary layer (runtime system and abstraction layer) between the application program and the physical processors. This intermediary translates high-level programming instructions into processor-specific operations, allowing applications to leverage GPU acceleration while maintaining CPU compatibility and cross-vendor interoperability through a standardized interface.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Manufacturing precision

If separate programming environments are used for CPUs and GPUs, then each processor type can be optimized independently, but resource allocation flexibility is reduced

Engineering Contradiction:
Improveprocessor-specific optimizationVSAvoidresource allocation flexibility
Core Design Contradiction:
Manufacturing precisionVSEase of operation

Solution Approach 1:

The patent implements dynamic resource allocation where the runtime system can automatically select and switch between CPU and GPU execution based on workload characteristics, available resources, and performance requirements. This dynamic approach allows the system to optimize for processor-specific capabilities while maintaining flexibility in resource allocation, as the same application can dynamically utilize different processing units without reprogramming.

Inventive Principle:
Principle #15Dynamics

3Productivity

If dedicated GPU programs are required, then GPU performance is maximized, but application portability and ease of deployment are reduced

Engineering Contradiction:
ImproveGPU processing performanceVSAvoidapplication portability
Core Design Contradiction:
ProductivityVSEase of manufacture

Solution Approach 1:

The patent creates a universal computing platform where a single application binary can execute on multiple processor types including CPUs and various GPU architectures. The system achieves this by implementing a layered architecture with hardware-specific optimizations available but not mandatory, allowing applications to portably deploy across different hardware configurations while still accessing GPU acceleration when available.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS10552226B2Data parallel computing on multiple processors
Publication Date: 2020.02.04 APPLE INC
  • US10552226B2 patent drawing
  • US10552226B2 patent drawing
  • US10552226B2 patent drawing

AI summary

A method and an apparatus that allocate one or more physical compute devices such as CPUs (Central Processing Unit) or GPUs (Graphics Processing Unit) attached to a host processing unit running an application for executing one or more threads of the application are described. The allocation may be based on data representing a processing capability requirement from the application for executing an executable in the one or more threads. A compute device identifier may be associated with the allocated physical compute devices to schedule and execute the executable in the one or more threads concurrently in one or more of the allocated physical compute devices concurrently.