CUDA数组/矢量删除

时间:2017-03-16 18:36:22

标签: arrays vector cuda

我是CUDA的新手,正在尝试编写自己的内核。

在CPU方面,我有一系列包含整数的向量(一个向量/ GPU线程)。

我希望每个GPU线程都从其向量中删除一些元素,然后我将其复制回主机。在CPU方面,可比较的操作是:

vector.erase(element_number);

我的理解是GPU上不支持stl类型向量,我实际上不能使用Thrust(因为我使用自己的内核)。

但是,我可以将CPU矢量转换为数组(包括元素数量的数据),然后将数组复制到GPU。然后,如果我确定了要删除的元素,我可以将所有元素向下移动并减少元素的总数。

在我重新创建轮子并写下之前,我的问题是:是否有一些CUDA支持的操作已经这样做了?

1 个答案:

答案 0 :(得分:1)

不是真的。您必须按照描述的方式编写自己的矢量类。

如果您不关心向量中元素的顺序,可以通过使用向量中的最后一个元素交换要擦除的元素,然后递减大小来实现擦除操作,而不是移动一切。