我有一个向量,我想使用 CUDA 和推力转换执行以下操作:
// thrust::device_vector v;
// for k times:
// calculate constants a and b as functions of k;
// for (i=0; i < v.size(); i++)
// v[i] = a*v[i] + b*v[i+1];
我应该如何正确实现这一点?我可以做到的一种方法是使用向量 w,然后将推力::变换应用于 v 并将结果保存到 w。但是k提前是未知的,我不想创建w1,w2,...浪费大量的GPU内存空间。最好我想尽量减少数据复制的数量。但我不确定如何使用一个向量来实现这一点,而这些值不会相互影响。Thrust 提供的东西可以做到这一点吗?