Matrix Element Assignment for Sparse Data Contiguousness

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing parallel processing architectures, optimized for dense matrices, exhibit suboptimal performance when operating on sparse matrices due to incoherent memory accesses and work imbalance among processing threads.

Innovation Solution

A system and method that assign matrix elements to processing threads using an algorithm to increase contiguousness, optionally reordering the matrix to utilize shared and global memory efficiently, thereby reducing scattered memory accesses and optimizing thread workload.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If parallel processing architectures process sparse matrices using conventional methods, then processing can be performed, but performance is suboptimal due to incoherent memory accesses and work imbalance

Engineering Contradiction:
Improveprocessing performanceVSAvoidmemory access coherence
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent applies preliminary action by reordering the sparse matrix elements before processing to create a more coherent access pattern. The matrix is pre-processed to group non-zero elements in a way that enables sequential memory access during parallel computation, eliminating the need for random memory accesses during the actual processing phase.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent changes the parameter of element ordering/arrangement in the matrix. By transforming the matrix from its original sparse format to a reordered format where non-zero elements are positioned to maximize memory access coherence, the system achieves better performance without changing the fundamental processing architecture.

Inventive Principle:
Principle #35Parameter changes

2Productivity

If parallel processing architectures process sparse matrices using conventional methods, then processing can be performed, but work is unbalanced amongst processing threads

Engineering Contradiction:
Improveprocessing performanceVSAvoidworkload distribution
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent applies preliminary action by pre-distributing matrix elements to processing threads in a balanced manner. Before the actual parallel processing begins, the matrix elements are sorted and assigned to threads such that each thread receives a roughly equal amount of work, preventing workload imbalance during execution.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent changes the parameter of element distribution across threads. By modifying how matrix elements are assigned to processing threads—from conventional methods to the sorting-based assignment method described—the system achieves more uniform workload distribution and better parallel processing efficiency.

Inventive Principle:
Principle #35Parameter changes

3Device complexity

If sparse matrices are processed without reordering, then processing is simpler, but memory accesses are scattered and inefficient

Engineering Contradiction:
Improveprocessing complexityVSAvoidmemory access efficiency
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent applies preliminary action by performing a one-time reordering operation on the sparse matrix before processing. This initial sorting step, while adding some complexity, enables efficient sequential memory access during the actual processing phase, significantly improving memory access efficiency without requiring complex processing logic during computation.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9135214B2System, method, and computer program product for assigning elements of a matrix to processing threads with increased contiguousness
Publication Date: 2015.09.15 NVIDIA CORP
  • US9135214B2 patent drawing
  • US9135214B2 patent drawing
  • US9135214B2 patent drawing

AI summary

A system, method, and computer program product are provided for assigning elements of a matrix to processing threads. In use, a matrix is received to be processed by a parallel processing architecture. Such parallel processing architecture includes a plurality of processors each capable of processing a plurality of threads. Elements of the matrix are assigned to each of the threads for processing, utilizing an algorithm that increases a contiguousness of the elements being processed by each thread.