gpt4 book ai didi

c++ - 如何从数组中并行删除零值

转载 作者:可可西里 更新时间:2023-11-01 18:29:37 25 4
gpt4 key购买 nike

如何使用 CUDA 高效地从数组中并行删除零值。有关零值数量的信息可提前获得,这应该可以简化这项任务。

重要的是数字保持源数组中的顺序,当被复制到结果数组时。


例子:

数组例如包含以下值:[0, 0, 19, 7, 0, 3, 5, 0, 0, 1]附加信息是 5 个值是零。所需的最终结果将是另一个包含以下内容的数组:[19, 7, 3, 5, 1]

最佳答案

要从数组中删除一些元素,您可以使用 Thrust Library's reordering operations .给定一个谓词 is_not_zero,对于零值返回 false,对于其他值返回 true,您可以这样编写操作

thrust::copy_if(in_array, in_array + size, out_array, is_not_zero);

输出数组将仅包含非零值,因为谓词表明如此。

您还可以将“remove_if”函数与反向谓词一起使用,它为零返回 true,为其他返回 false..

thrust::remove_if(in_array, in_array + size, is_zero);

我建议您看一下 Thrust 库的压缩示例,或者一般的压缩概念。

https://github.com/thrust/thrust/blob/master/examples/stream_compaction.cu

关于c++ - 如何从数组中并行删除零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12463693/

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