cuda中的流过滤器

Posted

技术标签:

【中文标题】cuda中的流过滤器【英文标题】:Stream filter in cuda 【发布时间】:2011-12-12 09:41:24 【问题描述】:

我有一个值数组和一个索引链接列表。现在,我只想保留与 LL 中的索引相对应的数组中的那些值。是否有标准算法可以做到这一点。可以的话请举个例子

所以,假设我有一个数组 1,2,5,6,7,9 我有一个链表 2->3

所以,我想保留索引 2 和 3 处的值。即保留 5 和 6。 因此我的函数应该返回 5 和 6

【问题讨论】:

不清楚你到底想做什么——你可能应该在 C 中发布一些正常的标量代码来做你想做的事情,然后可能会告诉你如何在 CUDA 中实现它。跨度> 链表中的条目是否保证以某种可预测的方式排序(如排序)? @talonmies:是的,索引已排序。 【参考方案1】:

一般来说,链表本质上是串行的。拥有一台并行机器不会加快列表的遍历速度,因此问题的步数不能低于 O(n),其中 n 是列表的大小。

但是,如果您有其他方法可以访问该列表,您可以对它进行一些操作。 例如,列表的所有元素都可以存储在一个固定大小的数组中(尽管不一定以连续的方式)。列表成员可以使用以下结构在数组中表示。

struct ListNode 
    bool isValid;
    T data;
    int next;

isValid 设置数组中的给定单元格是否被有效的列表成员占用,或者它只是一个空单元格。

现在,并行算法会一次读取所有单元格,检查它是否代表有效数据,如果是,则对其进行处理。

第二部分:每个线程,具有输入数组A 的有效索引idx 必须标记A[idx] 不被删除。一旦我们知道应该删除A 的哪些元素,哪些不应该删除,就可以应用并行压缩算法。

【讨论】:

以上是关于cuda中的流过滤器的主要内容,如果未能解决你的问题,请参考以下文章

基于另一个列表的 1 个列表的流过滤器

基于另一个列表的 1 个列表的流过滤器

流过滤器返回 null findFirst 获取异常

Java 8,流过滤器,反射,NoSuchMethodException [重复]

FFmpegffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )

Java 8,流过滤器,反射,NoSuchMethodException [重复]