我有很多随机浮点数驻留在全局 GPU 内存中。我也有“桶”,指定他们将接受的数字范围和他们将接受的数字容量。
即:数字:-2 0 2 4 个桶(大小=1):[-2, 0], [1, 5]
我想运行一个过滤过程来产生我
filters_nums: -2 2(其中 filters_nums 可以是一个新的内存块)
但是我采取的每一种方法都会在尝试跨桶计数器同步线程时遇到巨大的开销。如果我尝试使用单线程,算法会成功完成,但需要的时间非常长(比最初生成数字慢 100 倍以上)。
我要求的是一种通用的高级、高效、尽可能简单的方法算法,您可以使用它来过滤这些数字。
编辑 我将处理 10 个桶和 50 万个数字。所有数字恰好落入 10 个桶范围中的 1 个。每个桶将容纳 43000 个元素。(有多余的元素,因为目标是填满每个桶,许多数字将被丢弃)。
第二次编辑 重要的是要指出桶不必单独存储。目标只是丢弃不适合存储桶的元素。