Sparse Matrix Multiplication With Tiled Scratchpad Memory Caching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Sparse matrix multiplication is computationally intensive and resource-inefficient due to the need to handle large matrices with many zero elements, and existing memory management techniques face bottlenecks in performance and storage efficiency, especially when dealing with compressed representations and partitioning.

Innovation Solution

The approach involves logically dividing a compressed sparse matrix into partitions and tiles, dynamically determining the size of partitions to remain cached in scratchpad memory, and fetching elements as tiles to maximize memory bandwidth, allowing for efficient multiplication without repeatedly moving data between main and scratchpad memory.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If sparse matrices are stored in compressed format to save memory, then storage efficiency is improved, but computational overhead increases due to the complexity of managing partitions and tiles

Engineering Contradiction:
Improvememory storage efficiencyVSAvoidcomputational overhead
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The compressed sparse matrix is divided into multiple partitions, where each partition contains a subset of the matrix data. This segmentation allows the system to process smaller chunks of data individually, reducing the memory footprint while maintaining the ability to perform computations on the full matrix through systematic processing of partitions.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Within each partition, the data is further organized into tiles that are nested within the partition structure. This hierarchical nesting (matrix → partitions → tiles) enables multi-level optimization where tiles can be cached in scratchpad memory while partitions remain in main memory, efficiently managing the trade-off between storage efficiency and computational accessibility.

Inventive Principle:
Principle #7Nested doll (Nesting)

2Speed

If data is frequently moved between main memory and scratchpad memory during multiplication, then computational speed is improved, but memory bandwidth is consumed

Engineering Contradiction:
Improvecomputational speedVSAvoidmemory bandwidth consumption
Core Design Contradiction:
SpeedVSLoss of energy

Solution Approach 1:

The necessary tile data is pre-loaded into scratchpad memory before the actual multiplication computation begins. By performing this preliminary data transfer in advance, the system ensures that all required data is already in the fast scratchpad memory when computation starts, eliminating the need for repeated data movement during the computational phase and thus conserving memory bandwidth while maintaining high computational speed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The multiplication computation is designed to proceed continuously once the data is in scratchpad memory, without interruption for additional data transfers. The partitioned and tiled structure ensures that all necessary data for each computational step is already available in scratchpad memory, enabling uninterrupted computation that maximizes speed while minimizing memory bandwidth consumption to the initial loading phase only.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS10452744B2Memory management for sparse matrix multiplication
Publication Date: 2019.10.22 ORACLE INT CORP
  • US10452744B2 patent drawing
  • US10452744B2 patent drawing
  • US10452744B2 patent drawing

AI summary

Techniques related to memory management for sparse matrix multiplication are disclosed. Computing device(s) may perform a method for multiplying a row of a first sparse matrix with a second sparse matrix to generate a product matrix row. A compressed representation of the second sparse matrix is stored in main memory. The compressed representation comprises a values array that stores non-zero value(s). Tile(s) corresponding to row(s) of second sparse matrix are loaded into scratchpad memory. The tile(s) comprise set(s) of non-zero value(s) of the values array. A particular partition of an uncompressed representation of the product matrix row is generated in the scratchpad memory. The particular partition corresponds to a partition of the second sparse matrix comprising non-zero value(s) included in the tile(s). When a particular tile is determined to comprise non-zero value(s) that are required to generate the particular partition, the particular tile is loaded into the scratchpad memory.