空间哈希:高度并行算法的优化与应用
空间哈希算法是一种高度并行的算法,在处理空间网格操作方面具有重要作用。本文将详细介绍其在邻居查找、非结构化网格面邻居查找、重映射操作等方面的优化方法和具体实现。
1. 邻居查找的优化与紧凑哈希
在自适应网格细化(AMR)网格中,简单的完美哈希算法在处理少量网格细化级别时表现良好。但当细化级别达到六级或更多时,会出现负载不平衡和线程发散的问题。例如,粗网格单元会写入64个哈希桶,而细网格单元只需写入一个,这会导致并行实现中线程工作量差异大,最终线程需等待最慢的线程完成。
为了解决这些问题,可以对完美哈希算法进行优化:
- 减少写入操作 :邻居查询通常只涉及单元的外部哈希桶,因此无需对内部进行写入。进一步分析发现,只需查询哈希中单元表示的角点或中点,从而进一步减少写入次数。
- 优化写入和读取策略 :可以将每个单元的写入操作优化为一次,并在存在更细、相同大小或更粗邻居单元的条目处进行多次读取。此技术需要将哈希表初始化为哨兵值(如 -1)以表示无条目。
由于写入的数据减少,哈希表会出现大量空空间,即稀疏性。可以将哈希表压缩至低至条目数量的1.25倍,从而大大降低算法的内存需求。哈希负载因子定义为填充的哈希表条目数除以哈希表大小,通常使用较小的负载因子(约0.333,即大小乘数为3),以避免并行处理中某个处理器速度过慢。
创建紧凑哈希时,可能会出现冲突。可采用开放寻址法解决冲突,即寻找哈希表中的下一个开放槽位来存储值。开放寻址法有以下几种选择:
- 线性探测 :按顺序查找
超级会员免费看
订阅专栏 解锁全文

848

被折叠的 条评论
为什么被折叠?



