Scalable Parallel Processing via Thread Array Grids

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing parallel processing systems require explicit code modifications to exploit available parallelism, making them non-scalable across different hardware configurations, leading to inefficiencies as code needs to be rewritten or recompiled for varying numbers of processing cores.

Innovation Solution

The method involves defining threads into thread arrays, which can be grouped into grids, allowing automatic distribution across available processing cores, enabling scalable exploitation of parallelism without requiring specific code modifications for different hardware configurations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If explicit code modifications are made to exploit parallelism, then processing efficiency is improved, but adaptability to different hardware configurations deteriorates

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidadaptability to different hardware configurations
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The system enables processing tasks to automatically distribute themselves across available processing cores without requiring explicit code modifications. The task manager and scheduling mechanisms allow the system to self-organize and exploit parallelism based on the actual hardware configuration at runtime, resolving the contradiction between efficiency and adaptability.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The parallel processing system dynamically adapts to different hardware configurations by detecting the number of available cores and adjusting task distribution accordingly. This dynamic behavior allows the same code to efficiently exploit parallelism on systems with varying numbers of cores, maintaining both processing efficiency and adaptability.

Inventive Principle:
Principle #15Dynamics

2Productivity

If code is rewritten or recompiled for different core configurations, then processing efficiency is improved, but device complexity increases

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

Solution Approach 1:

The system implements a universal task management architecture that can handle parallel processing across different hardware configurations without requiring different code versions. The task manager and scheduling mechanisms provide multi-functional capabilities that adapt to various core counts, eliminating the need for code rewriting and reducing overall system complexity.

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

Solution Approach 2:

A task manager intermediary layer is introduced between the processing tasks and the hardware cores. This intermediary automatically manages task distribution and core assignment, shielding the code from hardware-specific details and eliminating the need for code modifications while maintaining processing efficiency.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If parallel processing is implemented without automatic distribution, then processing efficiency is improved, but ease of operation deteriorates

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidease of code deployment
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The system implements self-service mechanisms where processing tasks automatically discover and distribute themselves across available cores without manual intervention. The task manager and scheduling infrastructure enable tasks to self-organize for parallel execution, maintaining efficiency while dramatically simplifying deployment operations.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS8099584B2Methods for scalably exploiting parallelism in a parallel processing system
Publication Date: 2012.01.17 NVIDIA CORP
  • US8099584B2 patent drawing
  • US8099584B2 patent drawing
  • US8099584B2 patent drawing

AI summary

Parallelism in a parallel processing subsystem is exploited in a scalable manner. A problem to be solved can be hierarchically decomposed into at least two levels of sub-problems. Individual threads of program execution are defined to solve the lowest-level sub-problems. The threads are grouped into one or more thread arrays, each of which solves a higher-level sub-problem. The thread arrays are executable by processing cores, each of which can execute at least one thread array at a time. Thread arrays can be grouped into grids of independent thread arrays, which solve still higher-level sub-problems or an entire problem. Thread arrays within a grid, or entire grids, can be distributed across all of the available processing cores as available in a particular system implementation.