Parallel Computing Interface for CPU-GPU Resource Allocation

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 interfaces and incompatible programming environments, limiting the ability to utilize available processing resources effectively.

Innovation Solution

A parallel computing architecture that allows applications to execute data parallel programs across multiple processors, including CPUs and GPUs, using a programming language with APIs to manage and allocate resources dynamically, enabling execution on various compute devices regardless of vendor or version.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If vendor-specific interfaces are used for GPUs, then GPU performance can be optimized, but applications cannot leverage CPUs or GPUs from different vendors

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidcompatibility across processors
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent creates a universal programming environment that allows applications to execute on multiple types of processors (CPUs, GPUs from different vendors) through a common interface. The system translates high-level parallel computing code into vendor-specific instructions, enabling one application to leverage any available processing resource without being tied to a single vendor's interface.

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

Solution Approach 2:

The patent introduces an intermediary layer (programming environment/runtime system) that sits between the application and the hardware. This intermediary translates generic parallel computing operations into vendor-specific instructions, allowing applications to work with different processors without direct knowledge of their specific interfaces or instruction sets.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If separate programming environments are used for CPUs and GPUs, then each processor type can be optimized, but it becomes difficult to leverage both CPUs and GPUs together

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidprogramming complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent merges separate CPU and GPU programming environments into a single unified programming model. Developers write one parallel computing program that can execute on both CPUs and GPUs through the same interface, eliminating the need to maintain separate codebases for different processor types while still enabling optimization for each hardware architecture.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The unified programming environment provides universal support for multiple processor types through a single interface. The system automatically determines whether to execute operations on CPU or GPU based on available resources and performance requirements, simplifying the development process while maintaining optimization capabilities.

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

3Productivity

If applications are designed to run on specific GPUs, then GPU-specific optimizations can be achieved, but the applications cannot be leveraged across GPUs from different vendors

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidvendor independence
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The programming environment acts as an intermediary that translates vendor-neutral parallel computing operations into vendor-specific GPU instructions. This allows applications to achieve GPU-specific optimizations through the translation layer while maintaining vendor independence at the application level, enabling the same application to run on GPUs from different vendors.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system dynamically changes execution parameters based on the target hardware. The same high-level code can be compiled or translated into different instruction sets optimized for specific GPU architectures, allowing applications to achieve optimal performance on each vendor's hardware while maintaining a single unified codebase.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS11106504B2Application interface on multiple processors
Publication Date: 2021.08.31 APPLE INC
  • US11106504B2 patent drawing
  • US11106504B2 patent drawing
  • US11106504B2 patent drawing

AI summary

A method and an apparatus that execute a parallel computing program in a programming language for a parallel computing architecture are described. The parallel computing program is stored in memory in a system with parallel processors. The parallel computing program is stored in a memory to allocate threads between a host processor and a GPU. The programming language includes an API to allow an application to make calls using the API to allocate execution of the threads between the host processor and the GPU. The programming language includes host function data tokens for host functions performed in the host processor and kernel function data tokens for compute kernel functions performed in one or more compute processors, e.g., GPUs or CPUs, separate from the host processor.