【发布时间】:2017-08-08 02:39:30
【问题描述】:
我是 CUDA 新手,正在尝试编写自己的内核。
在 CPU 方面,我有一系列包含整数的向量(一个向量/GPU 线程)。
我希望每个 GPU 线程从其向量中删除一些元素,然后将其复制回主机。在 CPU 方面,可比较的操作是:
vector.erase(element_number);
我的理解是GPU不支持stl类型向量,我真的不能用Thrust(因为我用的是自己的内核)。
但是,我可以将 CPU 向量转换为数组(包括元素数量的数据),然后将数组复制到 GPU。然后,如果我确定要删除的元素,我可以将下面的所有元素向上移动并减少元素的总数。
在我重新创建轮子并编写它之前,我的问题是:是否有一些 CUDA 支持的操作已经这样做了?
【问题讨论】:
-
CUDA 中没有内置任何东西来提供类似的向量操作或数组操作。尽管这些操作对程序员来说似乎很方便,但它们的性能并不是特别高,因此您可能想提出一种不需要那种插入/删除操作的不同数据管理方案。