【发布时间】:2013-01-15 04:02:22
【问题描述】:
我有一个推力 device_vector 分成 100 个块(但在 GPU 内存上完全连续),我想删除每个块的最后 5 个元素,而不必重新分配一个新的 device_vector 来复制它。
// Layout in memory before (number of elements in each contiguous subblock listed):
// [ 95 | 5 ][ 95 | 5 ][ 95 | 5 ]........
// Layout in memory after cutting out the last 5 of each chunk (number of elements listed)
// [ 95 ][ 95 ][ 95 ].........
thrust::device_vector v;
// call some function on v;
// so elements 95-99, 195-99, 295-299, etc are removed (assuming 0-based indexing)
我怎样才能正确地实现它?最好我想避免在 GPU 内存中分配一个新的向量来保存转换。我知道有处理这些类型的操作的推力模板函数,但我很难将它们串在一起。 Thrust 提供的东西可以做到这一点吗?
【问题讨论】:
-
块的大小都一样吗?
-
是的,块的大小都一样
-
并行执行这个操作似乎很难,但如果你愿意分配临时存储,只需调用
thrust::copy_if。
标签: cuda thrust cublas bspline