gpt4 book ai didi

c++ - 推力位移 vector

转载 作者:行者123 更新时间:2023-11-30 00:55:58 25 4
gpt4 key购买 nike

我正在研究一个涉及在线(流)数据的项目。我想使用该数据的滑动窗口。例如,假设我想在我的 vector 中保存 10 个值。当值 11 出现时,我想删除值 1,将所有内容都移过来,然后将值 11 放在值 10 所在的位置。

长路会是这样的:

int n = 9;
thrust::device_vector<float> val;
val.resize(n+1,0);

// Shift left
for(int i=0; i != n-1; i++){
val[i] = val[i+1];
}

// add the new value to the last position
val[n] = newValue;

有没有一种“快速”的方法可以用推力做到这一点?我正在查看的项目将有大约 500 个 vector 需要同时完成此操作。

谢谢!

最佳答案

正如我所说,Ring buffer是你需要的。不需要移到那里,只有一个计数器和一个固定大小的数组。

让我们想想如何处理 500 个环形缓冲区。

如果你想拥有 500(让它是 512)个滑动窗口并在 GPU 上处理它们,那么你可以将它们打包到一个大的 2D 纹理中,其中每一列都是同一时刻的样本数组。

如果您一次为每个 vector 获取新样本(我的意思是在一个处理步骤中为每 512 个缓冲区获取一个新样本),那么这个“环形纹理”(如圆柱体)只需要更新一次(在每一步上传新样本数组)你只需要一个计数器。

关于c++ - 推力位移 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11300662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com