【发布时间】:2012-01-13 08:37:25
【问题描述】:
我正在使用 CUDA/Thrust/CUDPP。据我了解,在流压缩中,数组中的某些项目被标记为无效,然后被“删除”。
现在“移除”在这里的真正含义是什么?假设原始数组 A 长度为 6。如果 2 个元素无效(无论我们提供什么条件),那么
系统是否在 GPU 内存中创建一个大小为 4 的 新 数组来存储有效元素以获得最终结果?
或者它是否从内存中物理删除无效元素并缩小原始数组 缩小到 4 只保留有效元素?
对于任何一种情况,这是否意味着动态内存分配是在后台进行的? 但我听说动态内存分配在 CUDA 世界中是不可能的。
【问题讨论】:
-
还有一种可能,就是内存分配的大小不变,前4个元素有效,后2个未定义。但实际上这个问题都是关于实现问题的,谁说 CUDPP 或推力是一样的?
-
ArrayFire 是比 Thrust 更好/更简单的选择,而且也是免费的,至少对于单 GPU 使用而言是这样。 accelereyes.com/arrayfire
标签: algorithm cuda gpu thrust cudpp