Sparse Triangular Solve on GPUs Using Completion Arrays

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing parallel computing systems face inefficiencies in performing sparse triangular solves (SpTS) due to the difficulty in determining data dependencies in large matrices, leading to poor performance on highly parallel architectures like GPUs, and require separate analysis stages that consume significant time and resources.

Innovation Solution

A high-performance SpTS mechanism that dynamically manages parallel workers by using a completion array to indicate when factors of the vector have been solved, allowing threads to calculate values without grouping rows and factors into levels, and reduces memory contention through spin loops that time-out and resume later, enabling SpTS on matrices stored in Compressed Sparse Row (CSR) format without converting to Compressed Sparse Column (CSC) format.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If separate analysis stages are used to determine data dependencies in large matrices, then the SpTS can be performed systematically, but the time and computational resources required increase significantly

Engineering Contradiction:
Improvesystematic dependency determinationVSAvoidanalysis stage time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent pre-calculates and stores completion flags for each factor in the vector during an analysis phase, indicating whether that factor can be solved in parallel. This preliminary action allows the runtime system to quickly determine execution order without performing complex dependency analysis during actual computation, thus resolving the contradiction between systematic dependency determination and time consumption.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If rows and factors are grouped into levels for parallel processing, then data dependencies can be managed systematically, but the device complexity and processing overhead increase

Engineering Contradiction:
Improvedata dependency managementVSAvoidlevel grouping structure
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent extracts the dependency management information into a separate completion flag array that is independent of the matrix data structure. Each factor has its own completion flag that can be independently checked, eliminating the need for complex level grouping structures while maintaining systematic dependency management. This separation reduces device complexity while preserving reliability.

Inventive Principle:
Principle #2Taking out (Extraction)

3Productivity

If format conversion from CSR to CSC is performed to enable efficient SpTS, then the computational efficiency improves, but the time and memory resources required for conversion increase

Engineering Contradiction:
ImproveSpTS computational efficiencyVSAvoidformat conversion time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent creates a logical copy of the completion status information in the form of completion flags that mirror the structure of the CSR matrix. Instead of physically converting the matrix format from CSR to CSC, the invention copies the necessary dependency information into a flag array that can be efficiently accessed during computation, achieving the benefits of CSC-like efficiency while maintaining CSR storage.

Inventive Principle:
Principle #26Copying

4Adaptability or versatility

If spin loops continuously check completion flags without time-out, then parallel workers can dynamically adapt to data availability, but memory contention increases significantly

Engineering Contradiction:
Improvedynamic parallelismVSAvoidmemory contention
Core Design Contradiction:
Adaptability or versatilityVSObject-generated harmful factors

Solution Approach 1:

The patent implements periodic action by having spin loops check completion flags at intervals rather than continuously. The spin loop checks the completion flag, and if not set, it waits for a predetermined time before checking again. This periodic checking pattern maintains dynamic adaptability to data availability while significantly reducing memory contention compared to continuous checking, as threads yield the memory bus during wait periods.

Inventive Principle:
Principle #19Periodic action

Data Source

PatentUS10691772B2High-performance sparse triangular solve on graphics processing units
Publication Date: 2020.06.23 ADVANCED MICRO DEVICES INC
  • US10691772B2 patent drawing
  • US10691772B2 patent drawing
  • US10691772B2 patent drawing

AI summary

A method includes storing a sparse triangular matrix as a compressed sparse row (CSR) dataset. For each factor of a plurality of factors in a first vector, a value of the factor is calculated by identifying for the factor a set of one or more antecedent factors in the first vector, where the value of the factor is dependent on each of the one or more antecedent factors. In response to a completion array indicating that all of the one or more antecedent factor values are solved, the value of the factor is calculated based on one or more elements in a row of the matrix and a product value corresponding to the row. In the completion array, a first completion flag for the factor is asserted, indicating that the factor is solved.