{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,7,30]],"date-time":"2025-07-30T15:47:41Z","timestamp":1753890461003,"version":"3.41.2"},"reference-count":17,"publisher":"Frontiers Media SA","license":[{"start":{"date-parts":[[2024,6,19]],"date-time":"2024-06-19T00:00:00Z","timestamp":1718755200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/501100002341","name":"Research Council of Finland","doi-asserted-by":"publisher","award":["336805","339327","339756","345701","347795"],"award-info":[{"award-number":["336805","339327","339756","345701","347795"]}],"id":[{"id":"10.13039\/501100002341","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["frontiersin.org"],"crossmark-restriction":true},"short-container-title":["Front. Comput. Sci."],"abstract":"<jats:p>Scientific computing has become increasingly parallel and heterogeneous with the proliferation of graphics processing unit (GPU) use in data centers, allowing for thousands of simultaneous calculations accessing high-bandwidth memory. Adoption of these resources may require re-design of scientific software. Hashmaps are a widely used data structure linking unsorted unique keys with values for fast data retrieval and storage. Several parallel libraries exist for performing hashmap operations utilizing GPU hardware, but none have yet supported GPUs and CPUs interchangeably. We introduce Hashinator, a novel portable hashmap designed to operate efficiently on both CPUs and GPUs using CUDA or HIP\/ROCm Unified Memory, offering host access methods, in-kernel access methods, and efficient GPU offloading capability on both NVIDIA and AMD hardware. Hashinator utilizes open addressing with Fibonacci hashing and power-of-two capacity. By comparing against existing implementations, we showcase the excellent performance and flexibility of Hashinator, making it easier to port scientific codes that rely heavily on the use of hashmaps to heterogeneous architectures.<\/jats:p>","DOI":"10.3389\/fcomp.2024.1407365","type":"journal-article","created":{"date-parts":[[2024,6,19]],"date-time":"2024-06-19T04:41:26Z","timestamp":1718772086000},"update-policy":"https:\/\/doi.org\/10.3389\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Hashinator: a portable hybrid hashmap designed for heterogeneous high performance computing"],"prefix":"10.3389","volume":"6","author":[{"given":"Konstantinos","family":"Papadakis","sequence":"first","affiliation":[]},{"given":"Markus","family":"Battarbee","sequence":"additional","affiliation":[]},{"given":"Urs","family":"Ganse","sequence":"additional","affiliation":[]},{"given":"Yann","family":"Pfau-Kempf","sequence":"additional","affiliation":[]},{"given":"Minna","family":"Palmroth","sequence":"additional","affiliation":[]}],"member":"1965","published-online":{"date-parts":[[2024,6,19]]},"reference":[{"key":"B1","doi-asserted-by":"publisher","DOI":"10.48550\/arXiv.2108.07232","article-title":"Better GPU hash tables","author":"Awad","year":"2022","journal-title":"arXiv [Preprint]"},{"key":"B2","first-page":"33","article-title":"\u201cAnalyzing and implementing GPU hash tables,\u201d","volume-title":"SIAM Symposium on Algorithmic Principles of Computer Systems","author":"Awad","year":"2023"},{"key":"B3","doi-asserted-by":"publisher","first-page":"79","DOI":"10.1016\/j.entcs.2007.10.021","article-title":"Shared hash tables in parallel model checking","volume":"198","author":"Barnat","year":"2008","journal-title":"Elect. Notes Theoret. Comp. Sci"},{"key":"B4","doi-asserted-by":"crossref","DOI":"10.1145\/1572769.1572795","article-title":"\u201cEfficient stream compaction on wide SIMD many-core architectures,\u201d","volume-title":"Proceedings of the Conference on High Performance Graphics 2009","author":"Billeter","year":"2009"},{"key":"B5","doi-asserted-by":"publisher","first-page":"2831","DOI":"10.1109\/TPS.2010.2064310","article-title":"PIConGPU: A fully relativistic particle-in-cell code for a GPU cluster","volume":"38","author":"Burau","year":"2010","journal-title":"IEEE Trans. Plasma Sci"},{"key":"B6","article-title":"\u201cA fast retrieval algorithm based on fibonacci hashing for audio fingerprinting systems,\u201d","volume-title":"Advances in Intelligent Systems Research","author":"Chen","year":"2013"},{"key":"B7","first-page":"221","volume-title":"Introduction to Algorithms","author":"Cormen","year":""},{"key":"B8","first-page":"277","volume-title":"Introduction to Algorithms","author":"Cormen","year":""},{"key":"B9","article-title":"\u201cThe agile library for image reconstruction in biomedical sciences using graphics card hardware acceleration,\u201d","volume-title":"Technical report, Karl-Franzens Universit\u00e4t Graz, Technische Universit\u00e4t Graz","author":"Freiberger","year":"2012"},{"key":"B10","doi-asserted-by":"crossref","DOI":"10.1109\/IPDPS.2018.00054","article-title":"\u201cWarpDrive: Massively parallel hashing on multi-GPU nodes,\u201d","volume-title":"2018 IEEE International Parallel and Distributed Processing Symposium (IPDPS)","author":"J\u00fcnger","year":"2018"},{"journal-title":"Warpcore: A Library for Fast Hash Tables on GPUS","year":"2020","author":"J\u00fcnger","key":"B11"},{"volume-title":"The Art of Computer Programming, Volume 3, Sorting and Searching","year":"1998","author":"Knuth","key":"B12"},{"key":"B13","doi-asserted-by":"publisher","first-page":"237","DOI":"10.1109\/TPDS.2019.2929768","article-title":"Data-parallel hashing techniques for GPU architectures","volume":"31","author":"Lessley","year":"2020","journal-title":"IEEE Trans. Parallel Distrib. Syst"},{"key":"B14","doi-asserted-by":"crossref","DOI":"10.1109\/CCGrid.2015.105","article-title":"\u201cAn evaluation of unified memory technology on NVIDIA GPUs,\u201d","volume-title":"2015 15th IEEE\/ACM International Symposium on Cluster, Cloud and Grid Computing","author":"Li","year":"2015"},{"key":"B15","doi-asserted-by":"publisher","first-page":"60","DOI":"10.2991\/ijndc.2015.3.1.7","article-title":"Comparison of hash table performance with open addressing and closed addressing: an empirical study","volume":"3","author":"Liu","year":"2015","journal-title":"IJNDC"},{"volume-title":"fmihpc\/hashinator: v1.0.1 Hashinator stable","year":"2024","author":"Papadakis","key":"B16"},{"key":"B17","first-page":"108","article-title":"\u201cNon-blocking hashtables with open addressing,\u201d","volume-title":"Lecture Notes in Computer Science","author":"Purcell","year":"2005"}],"container-title":["Frontiers in Computer Science"],"original-title":[],"link":[{"URL":"https:\/\/www.frontiersin.org\/articles\/10.3389\/fcomp.2024.1407365\/full","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,6,19]],"date-time":"2024-06-19T04:41:37Z","timestamp":1718772097000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.frontiersin.org\/articles\/10.3389\/fcomp.2024.1407365\/full"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,6,19]]},"references-count":17,"alternative-id":["10.3389\/fcomp.2024.1407365"],"URL":"https:\/\/doi.org\/10.3389\/fcomp.2024.1407365","relation":{},"ISSN":["2624-9898"],"issn-type":[{"type":"electronic","value":"2624-9898"}],"subject":[],"published":{"date-parts":[[2024,6,19]]},"article-number":"1407365"}}