我的应用程序需要数百万条输入记录,每条记录 8 个字节,并将每条记录散列到两个或更多输出箱中。也就是说,每个输入密钥 K 创建少量对 (B1,K)、(B2,K)... 每个密钥的输出 bin 数量在处理该密钥之前是未知的。通常为 2 个,但有时也可能为 10 个或更多。
所有这些输出对最终都需要存储在一个数组中,因为每个 bin 中的所有键稍后将一起处理。如何有效地做到这一点?
使用原子增量从全局数组中重复保留一对听起来非常慢。另一个明显的方法是将哈希表初始化为指向每个容器某种存储的指针数组。这样看起来比较慢。
我正在考虑在块共享数组中为每个输入记录预先保留 2 对,然后根据需要获取更多空间(即重新实现 STL 向量保留操作),然后让每个块中的最后一个线程复制共享块数组到全局内存。
但我并不期待实施这一点。帮助?谢谢。