CUDA流压缩算法

CUDA流压缩算法,第1张

CUDA流压缩算法

您需要的是一种经典的并行算法,称为 流压缩 1。

如果选择“推力”,则可以简单地使用

thrust::copy_if
。这是一种稳定的算法,它保留所有元素的相对顺序。

草图:

#include <thrust/copy.h>template<typename T>struct is_non_zero {    __host__ __device__    auto operator()(T x) const -> bool {        return T != 0;    }};// ... your input and output vectors herethrust::copy_if(input.begin(), input.end(), output.begin(), is_non_zero<int>());

如果 没有 选择“ 推力”,则可以自己实现流压缩(有关该主题的文献很多)。这是一个有趣且相当简单的练习,同时也是更复杂的并行基元的基本构建块。

(1) 严格来说,这不是 正好 流传统意义上的压缩,作为流压缩传统上是稳定的算法,但你的要求不包括稳定。放宽要求可能会导致更有效的实施?



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5643322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存