Parallel Prefix Sum Algorithm for GPU Thread Arrays
Find Innovative SolutionsGenerate 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
Engineering 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
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.
2Adaptability or versatility
If the GPU processes data with low processor utilization, then certain operations can be performed, but overall system performance is reduced
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.
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.
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
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.
Data Source
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.


