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