Wide Key Hash Table for GPU Memory Constraints

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The limited memory capacity of Graphics Processing Units (GPUs) restricts the size of keys that can be used in hash tables, limiting their ability to perform key-value pair mappings efficiently for applications with unbounded key sizes.

Innovation Solution

A wide key hash table is implemented as a multi-level tree of paired hash tables, where keys are segmented into parts within the word size of the GPU's memory, allowing each segment to index into paired hash tables to form complete addresses for key-value mappings, enabling the use of keys of any size.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If keys are stored in a hash table with fixed word size, then memory access is fast and simple, but key size is constrained to the memory word size

Engineering Contradiction:
Improvekey size flexibilityVSAvoidhash table structure
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The key is divided into multiple segments, where each segment fits within the word size of the GPU memory. The first segment is used to index into the hash table to retrieve a pointer, and subsequent segments are used to index into the pointed-to data structure to retrieve the final value. This segmentation allows keys of any size to be accommodated while maintaining efficient memory access through fixed-size word operations.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If GPU memory capacity is increased to accommodate larger keys, then key size flexibility improves, but memory capacity is fixed and cannot be expanded

Engineering Contradiction:
Improvekey size flexibilityVSAvoidmemory capacity
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The solution employs a nested structure where the hash table stores pointers to other data structures rather than storing complete key-value pairs directly. The first level hash table maps key segments to intermediate structures, which then map subsequent key segments to final values. This nested arrangement allows the system to handle arbitrarily large keys without requiring proportional increases in memory capacity, as only the fixed-size hash table entries and minimal intermediate structures reside in GPU memory.

Inventive Principle:
Principle #7Nested doll (Nesting)

3Productivity

If data is copied into GPU memory for processing, then processing speed improves, but memory capacity limitations restrict the amount of data that can be processed

Engineering Contradiction:
Improveprocessing speedVSAvoiddata volume
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent introduces an intermediary data structure that resides in system memory rather than GPU memory. The hash table in GPU memory contains only pointers to this intermediary structure. When processing large datasets, the intermediary structure can hold data that exceeds GPU memory capacity, while the hash table provides fast lookup capability. This intermediary layer acts as a buffer between the limited GPU memory and the larger system memory, enabling processing of larger data volumes without sacrificing the parallel processing speed advantage of the GPU.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS11030714B2Wide key hash table for a graphics processing unit
Publication Date: 2021.06.08 MICROSOFT TECHNOLOGY LICENSING LLC
  • US11030714B2 patent drawing
  • US11030714B2 patent drawing
  • US11030714B2 patent drawing

AI summary

A wide hash key, that exceeds the word size of a GPU memory, is used to perform a key-value mapping by using paired hash tables configured in a multi-level tree configuration. The wide hash key is partitioned into segments, where each segment is used as a key into a respective paired hash table. The paired hash table has one hash table that stores an upper portion of an address and another hash table that stores the lower portion of the address. The upper and lower portions are combined to generate either an address to a paired hash table at the next level in the multi-level tree configuration or the address to the location of the value associated with the wide hash key.