GPU Kernel Saving and Loading for Parallel Processing Efficiency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Programming for graphical processing units (GPUs) is complex due to limited support for communications between threads and low memory bandwidth between GPU and host memory, making efficient data transfer and parallel algorithm execution challenging.

Innovation Solution

Systems and methods enable the saving and loading of GPU kernels and arrays to facilitate parallel processing across multiple GPUs, allowing for the combination of GPU kernels and arrays with parallel processing constructs like SPMD or PARFOR commands, enabling efficient execution on local or remote GPUs, including those in a cloud environment.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If data is transferred frequently between GPU and host memory to enable efficient programming, then programming ease is improved, but memory bandwidth is exceeded and transfer time increases

Engineering Contradiction:
Improveprogramming easeVSAvoiddata transfer time
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The patent applies preliminary action by pre-transferring data to GPU memory before computation begins and pre-allocating memory resources. This allows the computational kernel to execute without waiting for data transfers, effectively hiding transfer latency behind computation time and eliminating the need for frequent synchronous transfers during execution.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent segments the computational task into distinct phases: data preparation on host, data transfer to device, kernel execution on GPU, and result retrieval. This segmentation allows independent optimization of each phase and enables overlapping of data transfer with computation in subsequent operations, reducing overall transfer time impact.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If thread communication support is increased on GPU, then programming flexibility is improved, but device complexity increases

Engineering Contradiction:
Improveprogramming flexibilityVSAvoiddevice complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent uses shared memory as an intermediary mechanism for thread communication. Instead of implementing complex direct thread-to-thread communication hardware, threads communicate by reading and writing to shared memory variables, which provides sufficient flexibility for most parallel algorithms while keeping the hardware architecture relatively simple.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent employs copying mechanisms where data is copied between different memory spaces (host memory to device memory, global memory to shared memory) as needed. This copying approach provides flexibility in data movement and thread access patterns without requiring complex inter-thread communication infrastructure.

Inventive Principle:
Principle #26Copying

3Productivity

If memory bandwidth between GPU and host is increased, then data transfer efficiency is improved, but device cost increases

Engineering Contradiction:
Improvedata transfer efficiencyVSAvoiddevice cost
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent maintains continuity of useful action by keeping data resident in GPU memory throughout the computational process. Once data is transferred to the device, it remains there for the duration of the kernel execution and subsequent operations, eliminating repeated transfers and maximizing the utilization of the available (though limited) memory bandwidth.

Inventive Principle:
Principle #20Continuity of useful action

Solution Approach 2:

The patent performs preliminary data transfer and preprocessing operations before the main computational workload begins. This allows large datasets to be staged in GPU memory in advance, so that during the actual computation, the limited memory bandwidth is used for essential data access rather than repeated transfer operations.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8949807B2Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment
Publication Date: 2015.02.03 MATHWORKS INC
  • US8949807B2 patent drawing
  • US8949807B2 patent drawing
  • US8949807B2 patent drawing

AI summary

A device receives, via a technical computing environment, a program that includes a parallel construct and a command to be executed by graphical processing units, and analyzes the program. The device also creates, based on the parallel construct and the analysis, one or more instances of the command to be executed in parallel by the graphical processing units, and transforms, via the technical computing environment, the one or more command instances into one or more command instances that are executable by the graphical processing units. The device further allocates the one or more transformed command instances to the graphical processing units for parallel execution, and receives, from the graphical processing units, one or more results associated with parallel execution of the one or more transformed command instances by the graphical processing units.