【发布时间】:2010-08-15 02:45:18
【问题描述】:
我有一个大数组(比如 512K 元素),驻留在 GPU 中,其中只有一小部分元素(比如 5K 随机分布的元素 - 集合 S)需要处理。找出哪些元素属于 S 的算法非常有效,因此我可以轻松地创建一个数组 A,其中包含指向集合 S 中元素的指针或索引。
仅在 S 中的元素上运行 CUDA 或 OpenCL 内核的最有效方法是什么?我可以在数组 A 上运行内核吗?到目前为止,我看到的所有示例都处理连续的 1D、2D 或 3D 数组。引入一层间接有什么问题吗?
【问题讨论】:
-
大型阵列是否已经驻留在 GPU 上?我记得到 GPU 的传输速率不是那么好,所以仅将 A 复制到 GPU 可能会节省时间,特别是如果 A-ness 的测试是 O(1)。
-
它是 GPU 常驻的(我编辑了问题以反映这一点)。
-
CUDA 架构暴露了不同类型的内存。你用的是哪个?
-
我还没有做过任何 CUDA 或 OpenCL 编程。我对 GPGPU 有相当好的一般理解,但没有实践经验。回答这个问题将帮助我确定 GPGPU 是否适用于我的一系列问题。