Skip to content

A hash join implementation optimized for many-core processors with die-stacked HBMs

License

Notifications You must be signed in to change notification settings

Xtra-Computing/HashJoin_HMA

Repository files navigation

HashJoin_HMA

A hash join implementation optimized for many-core processors with die-stacked HBMs.

Overview

Many-core and die-stacked HBM

Recently, die-stacked high bandwidth memory (HBM) has emerged in CPU architectures. The high bandwidth of the HBM makes the HBM a good partner for many-core processors which are usually bandwidth-hungry when coupled with only the off-package main memory. For example, the Intel KNL many-core CPU has equipped with a 16 GB HBM that achieves the peak memory bandwidth of about 400 GB/s and up to 72 x86-based CPU cores.

Motivation

In main-memory databases, hash tables are important data structures for query processing whose application are heavily influenced by the underlying memory. An efficient deployment of hash tables on the many-core processor with die-stacked HBMs is technically challenging because of the heterogeneity of hardware resources as well as the random access pattern on the hash table. The state-of-the-art deployment algorithms designed for multi-core processors assume a single type of memory with a consistent memory bandwidth across NUMA nodes. This assumption no longer holds for the die-stacked HBMs and many-core processors, and new performance optimizations must be developed for hash table deployment.

Contribution

In this implementation of hash joins, we propose and apply a deployment algorithm for hash tables which optimize the placement of hash tables between the die-stacked HBMs and main memory, and the scheduling of threads accessing the hash table on many-core architectures. We perform the experiments on the Intel KNL many-core CPU. Evaluation results show that our proposed deployment of hash table can achieve about two times performance improvement over the state-of-the-art hash join algorithms.

Prerequisites

Hardware

  • Intel Xeon Phi Many-core processor of the Knights Landing Architecture

Software

Download

git clone https://github.com/PatrickXC/HashJoin_HMA.git

Build

make hj_hma

Generate inputs

make write
./write [size of outer relation] [size of inner relation] [number of threads]

Run

./hj_hma [size of outer relation] [size of inner relation] [number of threads]

Cite this work

If you use it in your paper, please cite our work (full version).

@inproceedings{10.1145/3357384.3358015,
author = {Cheng, Xuntao and He, Bingsheng and Lo, Eric and Wang, Wei and Lu, Shengliang and Chen, Xinyu},
title = {Deploying Hash Tables on Die-Stacked High Bandwidth Memory},
year = {2019},
isbn = {9781450369763},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3357384.3358015},
doi = {10.1145/3357384.3358015},
booktitle = {Proceedings of the 28th ACM International Conference on Information and Knowledge Management},
pages = {239–248},
numpages = {10},
keywords = {die-stacked high bandwidth memory, hash joins},
location = {Beijing, China},
series = {CIKM ’19}
}

Related publications

About

A hash join implementation optimized for many-core processors with die-stacked HBMs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published