首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCL数据同步

OpenCL数据同步
EN

Stack Overflow用户
提问于 2017-04-10 18:18:35
回答 1查看 64关注 0票数 0

我将一个矩阵的行乘以该行的主对角线元素的逆数。我已经用一维并行代码实现了它。所有线程都运行此代码

代码语言:javascript
复制
1.read the principle diagonal element
2.calculate the inverse of that element
3.multiply inverse with the element indexed at the thread id

当第i行中的第i个线程在其他线程执行步骤1之前执行步骤3时,问题就出现了。它在其他线程可以读取主对角线元素之前更改了它的值。

OpenCL是否有任何屏障,只允许一个线程在所有线程执行步骤1之后执行步骤3?

我不想使用空循环,因为在最坏的情况下,它可能会失败。

EN

回答 1

Stack Overflow用户

发布于 2017-04-14 22:49:46

一种方法是添加barrier(CLK_CL_LOCAL_MEM_FENCE)

另一种方法是将工作放在两个内核中,但您可以将从步骤1的内核计算的cl_mem直接传递到步骤3的kernel.This不会导致CPU/GPU。

对角线矩阵乘以稠密矩阵是一组点积,可以使用reduce来完成。这将使您的函数更快。

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

https://stackoverflow.com/questions/43320591

复制
相关文章

相似问题

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