Parallel Sparse Matrix Storage via Fixed-Block Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Massively parallel processing cannot extend to storing a matrix in CSR format due to the need for knowledge of earlier results, specifically the number of nonzero values in each row, which necessitates serial processing.

Innovation Solution

A method for storing sparse matrix data that allows parallel processing by storing non-zero values and indices for each row or column, with a predetermined number of values including null or zero values, eliminating the need for a third array like ridx, and enabling compatibility with existing linear solvers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If CSR format is used to store sparse matrices, then memory requirements are reduced, but parallel processing capability is lost due to dependency on earlier computation results

Engineering Contradiction:
Improvememory requirementsVSAvoidparallel processing capability
Core Design Contradiction:
Quantity of substanceVSProductivity

Solution Approach 1:

The invention segments the storage of sparse matrix data into fixed-size blocks, where each block contains a predetermined number of non-zero elements and their indices. This segmentation allows each processing unit to work independently on its assigned block without needing to know the total number of non-zero elements in advance, thereby enabling parallel processing while maintaining memory efficiency similar to CSR format.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The invention performs preliminary actions by pre-allocating fixed-size blocks for storing matrix data before parallel processing begins. Each processing unit is assigned a specific block with a predetermined capacity, eliminating the need for dynamic memory allocation during parallel computation and removing dependencies on earlier computation results.

Inventive Principle:
Principle #10Preliminary action

2Ease of manufacture

If serial processing is used to determine the number of non-zero values in each row, then CSR format can be created, but computational efficiency is reduced

Engineering Contradiction:
ImproveCSR format creationVSAvoidcomputational efficiency
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

Instead of first counting non-zero elements and then storing them (the traditional serial approach), the invention inverts the process by directly allocating fixed-size blocks that can accommodate any number of non-zero elements up to the block capacity. This allows parallel processing units to write data simultaneously without coordination, dramatically improving computational efficiency while still enabling CSR format creation.

Inventive Principle:
Principle #13The other way round (Inversion)

3Productivity

If parallel processing is applied to matrix computation, then speed is increased, but additional hardware and software organization is required

Engineering Contradiction:
Improvecomputational speedVSAvoidhardware and software organization
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The invention changes the storage parameter from dynamic (variable block sizes based on actual non-zero element counts) to fixed (predetermined block capacities). This parameter change simplifies the hardware and software organization required for parallel processing, as each processing unit operates on uniformly sized blocks without requiring complex coordination mechanisms, while still achieving high computational speed.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS9146902B2Parallel computation of matrix problems
Publication Date: 2015.09.29 DICKENSON PAUL FREDERICK CILGRIM
  • US9146902B2 patent drawing
  • US9146902B2 patent drawing
  • US9146902B2 patent drawing

AI summary

In order to perform computation concerning a large sparse matrix of values, a computer stores in its memory the nonzero values of each row and as many null or preferably zero values as are required to make up a predetermined number of stored values for each row. Associated column indices are also stored. Storage in this format can be carried out by massively parallel processing using a graphics processing unit. The format is acceptable input for programs written to expect input in conventional compressed sparse row format yet avoids the constraints which enforce serial processing in order to store in that conventional format.