SIMD Sparse Vector Compression for Contiguous Memory Storage
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Sparse data vectors with invalid data elements lead to inefficient computation and storage due to the processing of unnecessary data, resulting in hardware inefficiency and increased costs when compressing data within processing pipelines.
Innovation Solution
A system that stores valid data from sparse data vectors at contiguous memory addresses using a SIMD processor, employing scatter instructions and parallel-prefix valid count instructions to generate a compressed data vector, thereby separating and processing only valid data values efficiently.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If sparse data vectors are compressed within the processing pipeline by shifting data elements, then valid data elements can be adjacent to one another, but this results in a relatively large number of data vectors with complex addressing schemes and increased hardware costs
Solution Approach 1:
The patent extracts only the valid data elements from sparse data vectors and stores them in a separate valid data structure, removing invalid data elements entirely. This extraction approach eliminates the need for complex addressing schemes to handle invalid data, while maintaining processing efficiency by working only with valid data elements.
Solution Approach 2:
The patent segments the data storage into two distinct parts: a valid data structure containing only valid data elements, and an invalid data structure containing invalid data elements. This segmentation allows the system to handle valid and invalid data separately, simplifying the addressing scheme for valid data while efficiently managing invalid data in the segmented structure.
2Productivity
If sparse data vectors are compressed within the processing pipeline, then valid data elements can be adjacent to one another, but this results in increased hardware costs
Solution Approach 1:
The patent implements a universal data structure that can accommodate both valid and invalid data elements using the same storage mechanism. The valid data structure and invalid data structure use identical hardware resources, allowing the system to process sparse data efficiently without requiring specialized hardware components, thereby reducing overall hardware costs.
Solution Approach 2:
The system automatically manages the separation and organization of valid and invalid data elements through self-service mechanisms. The processing pipeline autonomously identifies, separates, and stores valid and invalid data elements in their respective structures without requiring additional complex hardware control logic, reducing hardware costs while maintaining processing efficiency.
3Adaptability or versatility
If invalid data elements are included in data vectors, then data vectors can represent sparse data, but this leads to inefficient computation and storage due to processing of unnecessary data
Solution Approach 1:
The patent extracts invalid data elements from the processing pipeline and stores them separately in an invalid data structure. By removing invalid data from the valid data structure, the system computes only on valid data elements, significantly improving computation efficiency while maintaining the ability to represent sparse data through the separate invalid data structure.
Solution Approach 2:
The patent applies partial action by processing only the valid portion of sparse data vectors rather than the entire vector including invalid elements. The system performs computation on valid data elements while managing invalid data elements separately, avoiding the excessive processing of unnecessary invalid data and improving overall computation efficiency.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
A method for storing data at contiguous memory addresses includes, at a single-instruction-multiple-data (SIMD) processor, executing a parallel-prefix valid count instruction to determine a first offset of a first data vector and to determine a second offset of a second data vector that includes valid data and invalid data. The second offset is based on the first offset and a number of positions in the first data vector that are associated with valid data. The method also includes storing first valid data from the first data vector at a first memory address of a memory and storing second valid data from the second data vector at a particular memory address of the memory. The first memory address is based on the first offset and the particular memory address is based on the second offset.