Multi-threaded GPU Calculation Engine for Concurrent Data Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computing systems face bottlenecks in processing large datasets due to limitations in CPU core multiplication and parallelization, as high-end multicore processors are power and heat constrained, while GPUs offer potential for parallelization but require device-specific algorithm customization and are hindered by path-dependency issues.

Innovation Solution

A system comprising multiple GPUs and CPUs that automatically determines efficient data allocation and algorithm optimization for concurrent execution, converting path-dependent operations into atomic, asynchronous tasks, and using libraries to enhance concurrency, allowing for flexible GPU configurations without requiring programmer-specific optimizations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple GPU devices are used to perform calculations concurrently, then processing speed and computational throughput are improved, but device complexity and algorithm customization requirements increase

Engineering Contradiction:
Improveprocessing speedVSAvoidalgorithm customization
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system performs self-configuration by automatically detecting available GPU devices and their capabilities, then dynamically allocating computational tasks without requiring programmer intervention. The calculation engine autonomously optimizes parallelization strategies based on detected hardware characteristics.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system dynamically adjusts computational parameters such as thread block sizes, grid dimensions, and data partitioning strategies based on the detected GPU configurations. This allows the same algorithm to adapt to different GPU architectures and capabilities automatically.

Inventive Principle:
Principle #35Parameter changes

2Productivity

If path-dependent operations are converted to atomic asynchronous tasks for GPU execution, then computational concurrency is improved, but programming complexity increases

Engineering Contradiction:
Improvecomputational concurrencyVSAvoidprogramming complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The calculation engine acts as an intermediary layer between the programmer's high-level algorithm specification and the low-level GPU execution requirements. It automatically handles the conversion of path-dependent operations into atomic tasks, managing synchronization and data dependencies without exposing this complexity to the programmer.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system replaces manual threading and synchronization mechanisms with an automated task graph execution model. Atomic operations are scheduled and executed asynchronously by the calculation engine, eliminating the need for programmers to manually manage thread synchronization and data dependencies.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

3Productivity

If algorithms are customized for specific GPU device characteristics, then execution efficiency is improved, but adaptability to different device configurations deteriorates

Engineering Contradiction:
Improveexecution efficiencyVSAvoiddevice configuration flexibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The calculation engine provides universal support for multiple GPU devices with different architectures and capabilities through a unified programming interface. A single algorithm submission is automatically adapted to run efficiently on any detected GPU configuration without requiring device-specific code versions.

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

Solution Approach 2:

The system dynamically detects GPU device characteristics at runtime and adjusts execution parameters accordingly. This dynamic adaptation allows the same algorithm to optimize for different GPU architectures, memory capacities, and computational capabilities without pre-compilation or device-specific coding.

Inventive Principle:
Principle #15Dynamics

4Productivity

If data is continuously supplied to multiple GPU cores and threads, then parallel processing efficiency is improved, but memory bandwidth requirements and system complexity increase

Engineering Contradiction:
Improveparallel processing efficiencyVSAvoidmemory bandwidth requirements
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The calculation engine automatically segments large datasets into smaller chunks that can be efficiently processed by multiple GPU threads in parallel. Data is partitioned and distributed to different GPU cores based on their capabilities and current workload, enabling continuous processing without overwhelming memory bandwidth.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary data preparation and staging before GPU execution, pre-processing data into formats optimized for parallel processing. This includes pre-allocation of memory buffers, pre-computation of intermediate results, and pre-organization of data structures to minimize runtime memory access overhead.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8373710B1Method and system for improving computational concurrency using a multi-threaded GPU calculation engine
Publication Date: 2013.02.12 KINETICA DB INC
  • US8373710B1 patent drawing
  • US8373710B1 patent drawing
  • US8373710B1 patent drawing

AI summary

A computing system may include a plurality of GPUs, one or more CPUs, and a data store containing data to be analyzed. A user may register a calculation to be performed on the data, and the system may determine a scheme for allocating portions of the calculation and subsets of the data to different GPUs for concurrent execution. The system may also modify a user-provided algorithm to convert portions of the algorithm that are path-dependent into atomic path-independent operations that may be performed by GPU threads asynchronously. The system may also determine coordination operations sufficient for merging sub-results generated from individual GPU threads' execution of the atomic operations back into a path-dependent computation. The system may be configured to use any number of similar or different GPU devices, and for GPU devices to be added to or removed from the system without requiring programmers to alter their algorithms.