Parallel Prefix Sum Algorithm for GPU Thread Arrays

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional systems are inefficient in performing prefix sum operations on graphics processing units (GPUs), leading to reduced performance and utilization, especially when dealing with larger lists.

Innovation Solution

A method is introduced that partitions an input list into sub-lists, performs prefix sum operations on each sub-list, and then combines the results to achieve an efficient distribution of work across multiple threads on the GPU, avoiding access conflicts and improving overall system performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If conventional prefix sum operations are performed on GPUs, then the operation can be completed, but the processor utilization is low and work-efficiency is reduced

Engineering Contradiction:
Improveprefix sum operation efficiencyVSAvoidprocessor utilization
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The input list is divided into multiple sub-lists that can be processed independently and in parallel by different threads. Each thread computes the prefix sum for its assigned sub-list, and the results are then combined. This segmentation enables efficient parallel processing while maintaining correctness by properly handling the accumulation across sub-list boundaries.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If the GPU processes data with low processor utilization, then certain operations can be performed, but overall system performance is reduced

Engineering Contradiction:
Improveoperation flexibilityVSAvoidsystem performance
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The computation is segmented into phases: first computing prefix sums for individual sub-lists in parallel, then combining results. This allows the GPU to maintain high utilization during the parallel phase while still achieving the required computational flexibility.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The input data is pre-processed by dividing it into sub-lists before the prefix sum computation begins. This preliminary organization enables the subsequent parallel processing to proceed efficiently without requiring complex coordination during the computation itself.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If the CPU performs processing steps instead of the GPU, then certain processing can be completed, but overall performance and efficiency are reduced

Engineering Contradiction:
Improveprocessing capabilityVSAvoidoverall performance
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The prefix sum operation is segmented into independent sub-tasks that can be executed in parallel on the GPU. Each thread handles a specific sub-list, eliminating the need for sequential CPU processing while maintaining the operational capability to handle complex computations.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS7877573B1Work-efficient parallel prefix sum algorithm for graphics processing units
Publication Date: 2011.01.25 NVIDIA CORP
  • US7877573B1 patent drawing
  • US7877573B1 patent drawing
  • US7877573B1 patent drawing

AI summary

One embodiment of the present invention sets forth a technique for computing a parallel prefix sum using one or more cooperative thread arrays (CTA) within a graphics processing unit. The prefix sum input list is partitioned and distributed to each CTA. Within each CTA, the input list is further partitioned for processing by individual threads in a way that avoids access conflicts to memory. Each list partition within the CTA is assigned to one of a plurality of concurrent threads, which executes a prefix sum operation the partition. The final values of the prefix sum operations form a list that is then subjected to a second prefix sum operation. Each element of the second prefix sum operation is added to each element of the subsequent partition, completing the prefix sum operation within the CTA. This technique may be extended to prefix sum operations that span two or more CTAs.