并行哈希技术全解析
1. 并行哈希基础与问题
在并行计算中,哈希表的操作包含查找、条件插入和可能的写访问。可以使用并发操作 insertOrUpdate 来处理,代码示例如下:
forall m ∈M do∥T.insertOrUpdate(m,1,+)
当多个处理元素(PE)同时使用相同的键调用此操作时,会转化为多个原子递增操作。若键之前不存在,其中一个并发调用会将计数器初始化为 1,其他调用则执行原子递增操作。
不过,这里存在潜在的性能问题。假设示例中 M 的大多数元素具有相同的键,上述并行循环会对单个表项执行大量原子递增操作,这会导致高竞争和低性能。
为了解决这个问题,可以使用本地哈希表。每个 M 元素会在本地表中计数,最后将本地表合并到全局表。若 M 中的元素数量远大于 p 乘以不同键的数量,合并操作的成本可忽略不计,能获得良好的并行性能。但当不同键的数量很大时,不仅合并成本高,并行程序的总内存占用可能比顺序程序大 p 倍,可能出现顺序程序在缓存中运行,而并行程序频繁随机访问主内存的情况。
2. 分布式内存哈希
2.1 分布式哈希表的基本实现
实现分布式哈希表的一种简单方法是让每个处理器负责表的 1/p 部分,并处理对该部分的所有请求。具体来说,将哈希表 t[0
超级会员免费看
订阅专栏 解锁全文
2173

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



