Formatted Matrix Data Structure for Sparse Computation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for computing output vector values from sparse matrix data are inefficient due to the high percentage of zero elements, leading to performance issues in applications like structural engineering and computational fluid dynamics.

Innovation Solution

A formatted matrix data structure (FMDS) is created by reorganizing sparse matrix data into slabs, tiles, and slices, allowing for efficient block writing of output values directly into an output vector, minimizing scatter operations and improving cache utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional sparse matrix computation methods are used, then the computation can be performed, but the performance is poor due to high percentage of zero elements causing unnecessary operations

Engineering Contradiction:
Improvecomputation performanceVSAvoidunnecessary operations on zero elements
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent extracts and removes zero elements from the computation process entirely by using a compressed sparse row format that stores only non-zero elements. This extraction principle eliminates the harmful factor of performing operations on zero elements, directly resolving the contradiction between computation performance and unnecessary operations.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent changes the data representation parameters by organizing sparse matrix data into a formatted structure with specific arrays for row indices, column indices, and values. This parameter change transforms the computation from operating on a dense structure with many zeros to operating on a compressed structure with only non-zero elements, improving productivity while reducing wasted operations.

Inventive Principle:
Principle #35Parameter changes

2Productivity

If sparse matrix data is processed using conventional methods, then the computation is straightforward, but cache utilization is poor leading to performance issues

Engineering Contradiction:
Improvecache utilizationVSAvoiddata structure organization
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the sparse matrix data into structured arrays (row indices, column indices, values) and processes data in a formatted sequence that improves cache utilization. This segmentation organizes the data in memory access patterns that are more cache-friendly, resolving the contradiction between productivity and device complexity.

Inventive Principle:
Principle #1Segmentation

3Ease of operation

If output values are stored in scattered locations, then each computation can be stored independently, but scatter operations reduce efficiency

Engineering Contradiction:
Improveoutput storage flexibilityVSAvoidscatter operation efficiency
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent merges the storage of output values by using an output buffer that collects results in a sequential manner before final placement. This combining approach reduces the number of scatter operations needed, improving productivity while maintaining the flexibility of independent computation storage through the buffering mechanism.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS8769216B2Optimizing output vector data generation using a formatted matrix data structure
Publication Date: 2014.07.01 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US8769216B2 patent drawing
  • US8769216B2 patent drawing
  • US8769216B2 patent drawing

AI summary

A computer system retrieves a packet that includes non-zero elements that correspond to sparse-matrix rows. Within the packet, the non-zero elements are stored in predefined fields that each correspond to one of the sparse-matrix rows. The computer system computes output values to correspond with each of the sparse-matrix rows using the non-zero elements and corresponding input values. In turn, the computer system stores the computed output values in consecutive locations within an output buffer and processes the output values accordingly.