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中的流过滤器的主要内容,如果未能解决你的问题,请参考以下文章
Java 8,流过滤器,反射,NoSuchMethodException [重复]
FFmpegffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )