Skip to main content
QUICK REVIEW

[論文レビュー] Fast and Simple Compact Hashing via Bucketing

Dominik Köppl, Simon J. Puglisi|arXiv (Cornell University)|Jan 1, 2020
Algorithms and Data Compression被引用数 4
ひとこと要約

本稿では、別々のチェインリングとコンパクトハッシュを組み合わせることで、配置データを格納しない高速な挿入を実現しながら、高いメモリ効率を達成するコンパクトなハッシュテーブルを提案する。バケットに動的配列を使用し、キーと値を分離することで、メモリオーバーヘッドを低減しつつ、高速な構築を実現し、現代のアーキテクチャにおける大規模なサテライトデータの文脈で、従来のコンパクトハッシュテーブルよりもメモリ使用量と挿入速度で優れる。

ABSTRACT

Compact hash tables store a set S of n key-value pairs, where the keys are from the universe U = {0,…,u-1}, and the values are v-bit integers, in close to B(u, n) + nv bits of space, where {b(u, n)} = log₂ binom(u,n) is the information-theoretic lower bound for representing the set of keys in S, and support operations insert, delete and lookup on S. Compact hash tables have received significant attention in recent years, and approaches dating back to Cleary [IEEE T. Comput, 1984], as well as more recent ones have been implemented and used in a number of applications. However, the wins on space usage of these approaches are outweighed by their slowness relative to conventional hash tables. In this paper, we demonstrate that compact hash tables based upon a simple idea of bucketing practically outperform existing compact hash table implementations in terms of memory usage and construction time, and existing fast hash table implementations in terms of memory usage (and sometimes also in terms of construction time). A related notion is that of a compact Hash ID map, which stores a set Ŝ of n keys from U, and implicitly associates each key in Ŝ with a unique value (its ID), chosen by the data structure itself, which is an integer of magnitude O(n), and supports inserts and lookups on Ŝ, while using close to B(u,n) bits. One of our approaches is suitable for use as a compact Hash ID map.

研究の動機と目的

  • オープンアドレッシングでは無駄なメモリ使用(空間の浪費)が生じるか、別々のチェインリングでは追加のポインタが必要になる、従来のハッシュテーブルのメモリ非効率性を是正すること。
  • コンパクトハッシュにおいて通常必要とされる、キー再構築のための配置情報の必要性を排除すること。
  • 構築時の高いパフォーマンスを維持しながら、メモリフットプリントを最小限に抑えたコンパクトハッシュテーブルを設計すること。
  • 最適化されたメモリレイアウトと現代のキャッシュ階層を考慮した場合、別々のチェインリングがコンパクトハッシュにおいて競争力のあるアプローチであることを示すこと。

提案手法

  • バケットとして動的配列を使用し、キーと値を別々に格納する同等サイズの配列にすることで、キャッシュ局所性を向上させる。
  • キーを商-剰余ペアにマップする単射関数を適用し、商はハッシュテーブルに格納し、剰余はキーから導出する。
  • バケットサイズに閾値 bmax を設け、バケットが容量に達するとテーブルの再サイズを開始し、バケット数を倍増させ、要素を再配分する。
  • 2段階構築法を採用:まず、bmax に達するまで要素をバケットに挿入する。その後、バケット数を2倍にした新しいテーブルを作成し、要素を移行する。
  • キャッシュラインにバケットをアラインメントさせ、キー配列と値配列を分離することで、検索時のデータ局所性を向上させる。
  • ビット並列演算を用いて、コンパクト表現における商の検索を高速化し、SIMD風のビット操作により複数の商を効率的に比較する。

実験結果

リサーチクエスチョン

  • RQ1オープンアドレッシング方式で必要な配置データを格納しないで、別々のチェインリングをコンパクトハッシュにおいてメモリ効率的に実装できるか?
  • RQ2別々のチェインリングに基づくコンパクトハッシュテーブルの挿入速度とメモリ使用量は、既存のコンパクトハッシュテーブルと比較してどの程度優れているか?
  • RQ3動的リサイズにおいて、メモリオーバーヘッドとパフォーマンスのバランスを最適化するためのバケットサイズ閾値 bmax の最適値は何か?
  • RQ4キーと値を別々の配列に分離することで、コンパクトハッシュテーブルにおけるキャッシュ効率が向上し、検索時間が短縮されるか?
  • RQ5ビット並列技術を用いることで、ハッシュテーブルのコンパクト表現における商の検索がどの程度高速化できるか?

主な発見

  • 現代のコンピュータアーキテクチャにおいて、十分に大きなサテライトデータを格納する場合、本手法は、従来に知られるあらゆるコンパクトハッシュテーブルよりも挿入パフォーマンスが速いか、またはより少ないメモリ使用量を達成する。
  • 本手法は、従来のコンパクトハッシュテーブルと比較して、特にポインタおよびメタデータのオーバーヘッドが低減されることにより、構築時のメモリフットプリントが小さい。
  • 別々のキー配列と値配列の使用により、データ局所性が向上し、大きな値と小さなキーに対してパフォーマンスが向上する。
  • 本手法では、配置情報の必要性が排除され、データ構造が単純化され、複雑性が低減される。
  • リサイズは、バケット全体を移行することで段階的に実行され、従来の動的配列のようにリサイズ時に3m個の要素分のメモリを事前に確保するというピークメモリ使用を回避する。
  • 要素数が十分に多く、別々のキー・値配列のオーバーヘッドを相殺できる場合には、本手法は特に効果的であり、大規模なサテライトデータを扱うアプリケーションに適している。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。