Masked Vector Accumulation for Correct Run-Length Encoding

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional techniques for vectorized run-length encoding are inefficient and produce incorrect results when input vectors contain duplicated runs, requiring additional overhead for dynamic checks and serialization, which degrades performance.

Innovation Solution

A vector accumulation instruction and a vector accumulation and compression instruction are introduced, which allow for efficient processing of input vectors with duplicated runs by summing values within blocks defined by an input mask, enabling correct run-length encoding without the need for scalar operations or block splitting.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If conventional vectorized run-length encoding techniques are used, then processing can be performed in parallel, but incorrect results are produced when input vectors contain duplicated runs

Engineering Contradiction:
Improvecorrectness of run-length encodingVSAvoidability to handle arbitrary input vectors
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The input vector is divided into multiple blocks, where each block contains a subset of the input elements. The run-length encoding is performed independently on each block, and the results are then merged. This segmentation allows the algorithm to correctly handle duplicated runs by treating them as separate entities in different blocks, resolving the correctness issue while maintaining parallel processing capability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The algorithm introduces a new dimension by adding a block identifier to each element during the encoding process. This additional dimension allows the merging phase to correctly associate elements from different blocks while handling duplicated runs, enabling the algorithm to produce correct results for arbitrary input vectors without sacrificing parallelism.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Reliability

If dynamic checks and serialization are added to handle duplicated runs, then correctness is improved, but performance degrades due to additional overhead

Engineering Contradiction:
Improvecorrectness of run-length encodingVSAvoidprocessing performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The input vector is pre-divided into blocks before parallel processing begins. This preliminary segmentation eliminates the need for dynamic checks during execution, as the block structure is established in advance. Each processing element can independently encode its assigned block without needing to detect or serialize duplicated runs, maintaining high performance while ensuring correctness.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The block identifier serves as an intermediary that facilitates correct merging of results from parallel processing without requiring dynamic checks. By tagging each element with its block origin, the merging phase can efficiently handle duplicated runs across blocks using simple comparison operations, avoiding the performance penalty of complex dynamic detection and serialization mechanisms.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If scalar operations or block splitting are used to handle duplicated runs, then correctness is improved, but the number of instructions increases

Engineering Contradiction:
Improvecorrectness of run-length encodingVSAvoidnumber of instructions
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The algorithm merges the run-length encoding operation with the block processing structure. Instead of performing separate scalar operations or additional block splitting steps, the merging phase combines results from parallel block encodings in a single vectorized operation. This integration reduces the total number of instructions while maintaining correctness for handling duplicated runs.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The block-based parallel encoding framework serves multiple functions simultaneously: it enables parallel processing, handles duplicated runs correctly, and facilitates efficient merging. This multi-functionality eliminates the need for separate scalar operations or additional block splitting instructions, reducing overall instruction count while maintaining correctness.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS10908898B2Vector instruction for accumulating and compressing values based on input mask
Publication Date: 2021.02.02 INTEL CORP
  • US10908898B2 patent drawing
  • US10908898B2 patent drawing
  • US10908898B2 patent drawing

AI summary

A processor includes a decode circuit to decode an instruction into a decoded instruction and an execution circuit to execute the decoded instruction to sum one or more values of one or more contiguous elements of an input vector that form a block to produce an accumulated value for the block and store the accumulated value for the block in a destination vector, where an input mask dictates the one or more contiguous elements of the input vector that form the block.