首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GPU全局存储器中存储选择元素

在GPU全局存储器中存储选择元素
EN

Stack Overflow用户
提问于 2015-12-11 14:53:14
回答 1查看 115关注 0票数 1

我们使用CUDAfy.NET在GPU上进行比较。为此,我们传递两个数组,其中一个包含数据,另一个存储结果。我只想在满足一定条件的结果数组中存储这些元素。但是数组在条件不满足的情况下以不想要的条目结束。如何从结果数组中过滤这些不需要的条目,并将过滤后的数组返回到主函数?

代码语言:javascript
复制
[Cudafy]
public static void Comparisons(GThread thread, int[] a,int[] c, int iter)
{
    int tx = thread.threadIdx.x;
    if(tx < iter)
    {
        if(a[tx] < tolerance)  //tolerance is some user defined number
        {
            c[tx] = a[tx];
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-11 15:59:32

您必须在多个内核传递中做到这一点。

示例:

A=1,2,1,2,2

公差=2

第一关:

创建一个数组,其中包含1表示“保留元素”,0表示“丢弃元素”

P=1,0,1,1,0

第二关:

在p数组上执行并行前缀和。

I= 0,1,1,2,2,3

(关于这个话题有很多白皮书)

第三关:

使用a,p,和i。

每个元素一个线程。

如果p线程Idx.x等于1,那么将athreadIdx.x放在c[ithreadIdx.x]中。

(您可以在这里使用共享内存更好地合并写入c数组)

结果数组c将包含1,1,1

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34226279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档