{"id":18800562,"url":"https://github.com/xtra-computing/hashjoin_hma","last_synced_at":"2026-01-03T21:30:15.893Z","repository":{"id":81489460,"uuid":"118632815","full_name":"Xtra-Computing/HashJoin_HMA","owner":"Xtra-Computing","description":"A hash join implementation optimized for many-core processors with die-stacked HBMs","archived":false,"fork":false,"pushed_at":"2020-06-10T08:38:50.000Z","size":2257,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-29T19:05:51.934Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Xtra-Computing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-23T15:54:57.000Z","updated_at":"2024-10-31T01:21:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"8b7b8e29-6bd2-4579-b062-725ec20f68df","html_url":"https://github.com/Xtra-Computing/HashJoin_HMA","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xtra-Computing%2FHashJoin_HMA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xtra-Computing%2FHashJoin_HMA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xtra-Computing%2FHashJoin_HMA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xtra-Computing%2FHashJoin_HMA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xtra-Computing","download_url":"https://codeload.github.com/Xtra-Computing/HashJoin_HMA/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239734440,"owners_count":19688255,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T22:19:07.901Z","updated_at":"2026-01-03T21:30:15.864Z","avatar_url":"https://github.com/Xtra-Computing.png","language":"C++","readme":"# HashJoin_HMA\nA hash join implementation optimized for many-core processors with die-stacked HBMs.\n\n## Overview\n\n### Many-core and die-stacked HBM\nRecently, 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. \n\n### Motivation\nIn 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. \n\n### Contribution\nIn 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.\n\n## Prerequisites\n\n### Hardware\n\n* Intel Xeon Phi Many-core processor of the Knights Landing Architecture \n\n### Software\n\n* Linux \n* Intel C/C++ 17.0.2 20170213\n* The [memkind library](https://github.com/memkind/memkind)\n\n## Download\n\n```bash\ngit clone https://github.com/PatrickXC/HashJoin_HMA.git\n```\n\n## Build\n\n```bash\nmake hj_hma\n```\n\n## Generate inputs\n\n```bash\nmake write\n./write [size of outer relation] [size of inner relation] [number of threads]\n```\n\n## Run\n```bash\n./hj_hma [size of outer relation] [size of inner relation] [number of threads]\n```\n\n## Cite this work\nIf you use it in your paper, please cite our work ([full version](https://www.comp.nus.edu.sg/~hebs/pub/hbm-cikm19.pdf)).\n```\n@inproceedings{10.1145/3357384.3358015,\nauthor = {Cheng, Xuntao and He, Bingsheng and Lo, Eric and Wang, Wei and Lu, Shengliang and Chen, Xinyu},\ntitle = {Deploying Hash Tables on Die-Stacked High Bandwidth Memory},\nyear = {2019},\nisbn = {9781450369763},\npublisher = {Association for Computing Machinery},\naddress = {New York, NY, USA},\nurl = {https://doi.org/10.1145/3357384.3358015},\ndoi = {10.1145/3357384.3358015},\nbooktitle = {Proceedings of the 28th ACM International Conference on Information and Knowledge Management},\npages = {239–248},\nnumpages = {10},\nkeywords = {die-stacked high bandwidth memory, hash joins},\nlocation = {Beijing, China},\nseries = {CIKM ’19}\n}\n\n```\n### Related publications\n* Saurabh Jha, Bingsheng He, Mian Lu, Xuntao Cheng, and Huynh Phung Huynh. 2015. [Improving main memory hash joins on Intel Xeon Phi processors: an experimental approach](http://www.vldb.org/pvldb/vol8/p642-Jha.pdf). Proc. VLDB Endow. 8, 6 (February 2015), 642–653.\n\n* Xuntao Cheng, Bingsheng He, Xiaoli Du, and Chiew Tong Lau. 2017. [A Study of Main-Memory Hash Joins on Many-core Processor: A Case with Intel Knights Landing Architecture](https://www.comp.nus.edu.sg/~hebs/pub/Hash_Join_on_KNL_CIKM17.pdf). In Proceedings of the 2017 ACM on Conference on Information and Knowledge Management (CIKM ’17). Association for Computing Machinery, New York, NY, USA, 657–666. \n\n* Xuntao Cheng, Bingsheng He, Mian Lu, Chiew Tong Lau, Huynh Phung Huynh, and Rick Siow Mong Goh. 2016. [Efficient Query Processing on Many-core Architectures: A Case Study with Intel Xeon Phi Processor](https://dl.acm.org/doi/10.1145/2882903.2899407). In Proceedings of the 2016 International Conference on Management of Data (SIGMOD ’16). Association for Computing Machinery, New York, NY, USA, 2081–2084. \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxtra-computing%2Fhashjoin_hma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxtra-computing%2Fhashjoin_hma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxtra-computing%2Fhashjoin_hma/lists"}