Generic Vectorized D-Heap Splitting Key Values

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current heap data structures, particularly binary heaps, are inefficient for large datasets due to high cache misses and virtual memory page faults, and lack support for arbitrary and complex data types using limited horizontal aggregation SIMD instructions.

Innovation Solution

A generic vectorized d-heap implementation that splits key values into prefix and suffix values, using a prefix heap and multiple suffix heaps, allowing for efficient operations with arbitrary data types and reducing the number of comparisons needed through horizontal aggregation SIMD instructions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If binary heaps are used for large datasets, then the data structure is simple to implement, but cache misses and virtual memory page faults increase significantly

Engineering Contradiction:
Improveease of implementationVSAvoidcache performance
Core Design Contradiction:
Ease of manufactureVSReliability

Solution Approach 1:

The heap is divided into multiple segments or levels that can be managed separately. This segmentation allows for better cache utilization by keeping frequently accessed heap elements in cache memory while reducing the need for virtual memory page faults, thus improving cache performance without sacrificing implementation simplicity

Inventive Principle:
Principle #1Segmentation

2Productivity

If traditional d-heaps are used to reduce tree depth, then insert operations become faster, but support for arbitrary and complex data types is limited

Engineering Contradiction:
Improveinsert operation speedVSAvoiddata type support
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The d-heap structure is enhanced with template-based or generic programming techniques that allow it to work with arbitrary and complex data types while maintaining the reduced tree depth structure. This makes the data structure universal and adaptable to different data types without sacrificing insert operation speed

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

3Productivity

If vectorized d-heaps with horizontal aggregation SIMD instructions are used, then performance improves, but support for arbitrary data types is restricted by limited SIMD instruction availability

Engineering Contradiction:
Improveoperation performanceVSAvoiddata type flexibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The implementation uses parameter changes by dynamically selecting and applying different SIMD instructions based on the data type being processed. This allows the vectorized d-heap to maintain high performance through horizontal aggregation while supporting arbitrary data types by adapting the instruction set used

Inventive Principle:
Principle #35Parameter changes

4Productivity

If the number of comparisons in heap operations is reduced, then operation speed increases, but the complexity of maintaining heap property increases

Engineering Contradiction:
Improveoperation speedVSAvoidheap property maintenance complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The heap structure is pre-organized or pre-sorted in a way that reduces the number of comparisons needed during insert and extract operations. This preliminary arrangement allows for faster operations while the heap property is maintained through structured insertion algorithms that minimize complexity

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11379232B2Method for generic vectorized d-heaps
Publication Date: 2022.07.05 ORACLE INT CORP
  • US11379232B2 patent drawing
  • US11379232B2 patent drawing
  • US11379232B2 patent drawing

AI summary

Techniques are provided for obtaining generic vectorized d-heaps for any data type for which horizontal aggregation SIMD instructions are not available, including primitive as well as complex data types. A generic vectorized d-heap comprises a prefix heap and a plurality of suffix heaps. Each suffix heap of the plurality of suffix heaps comprises a d-heap. A plurality of key values stored in the heap are split into key prefix values and key suffix values. Key prefix values are stored in the prefix heap and key suffix values are stored in the plurality of suffix heaps. Each entry in the prefix heap includes a key prefix value of the plurality of key values and a reference to the suffix heap of the plurality of suffix heaps that includes all key suffix values of the plurality of key values that share the respective key prefix value.