- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在OpenCL中,我的理解是可以使用barrier()
函数来同步工作组中的线程。我(通常)确实了解它们的用途以及何时使用它们。我还知道工作组中的所有线程都必须遇到障碍,否则会出现问题。然而,到目前为止,每次我尝试使用屏障时,似乎都会导致我的视频驱动程序崩溃,或者出现有关访问某种无效内存的错误消息。到目前为止,我已经在 2 个不同的显卡(1 个 ATI、1 个 NVIDIA)上看到了这一点。
所以,我的问题是:
barrier(CLK_LOCAL_MEM_FENCE)
和 barrier(CLK_GLOBAL_MEM_FENCE)
有什么区别?我阅读了文档,但我不清楚。barrier(CLK_LOCAL_MEM_FENCE)
与 barrier(CLK_GLOBAL_MEM_FENCE)
的一般规则?barrier()
可能会导致错误?最佳答案
正如您所说,屏障只能同步同一工作组中的线程。无法同步内核中的不同工作组。
现在回答你的问题,我也不清楚该规范,但在我看来,第 6.11.9 节包含了答案:
CLK_LOCAL_MEM_FENCE – The barrier function will either flush anyvariables stored in local memory or queue a memory fence to ensurecorrect ordering of memory operations to local memory.
CLK_GLOBAL_MEM_FENCE – The barrier function will queue a memory fenceto ensure correct ordering of memory operations to global memory.This can be useful when work-items, for example, write to buffer orimage memory objects and then want to read the updated data.
因此,据我了解,在写入和读取 __local
内存空间时应使用 CLK_LOCAL_MEM_FENCE,在写入和读取 __global
内存空间时应使用 CLK_GLOBAL_MEM_FENCE。
我还没有测试这是否会更慢,但大多数时候,当我需要屏障并且我怀疑哪个内存空间受到影响时,我只是简单地使用两者的组合,即:
barrier(CLK_LOCAL_MEM_FENCE | CLK_GLOBAL_MEM_FENCE);
这样你就不会有任何内存读取\写入顺序问题(只要你确定组中的每个线程都通过屏障,但你知道这一点)。
希望有帮助。
关于opencl - OpenCL 中的障碍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890302/
我正在尝试从标准输入中获取一行。据我所知,我们永远不应该使用gets的手册页中所说的gets: Never use gets(). Because it is impossible to tell w
很多问题SO和文章/书籍,例如https://mirrors.edge.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.201
我认为 Coffeescript 是一门很棒的语言!我正在寻找一些将静态分析添加到 Coffeescript 的项目/问题/功能。然而,经过一番搜索后,我发现 Coffeescript faq和 th
以下查询返回过去 12 个月(针对特定客户)每周的订单总量: SELECT DATEPART(year, orderDate) AS [year], DATEPART(month, or
我觉得这可能是一个错误,任何人都可以重现或看到我做事方式的一些错误。 我正在尝试将 GKPolygonObstacle 添加到 iOS 或 macOS Playground 中的 GKMeshGrap
我的 SKSpriteKit 应用程序中有一个单独的“Floor”类。当我第一次创建这个类时,我使用 在整个框架周围设置了一个屏障 self.physicsBody = SKPhysicsBody(e
我有我正在尝试建模的半连续数据(许多精确的零和连续的正结果)。我从 Zuur 和 Ieno 的 R 中零膨胀模型初学者指南中学到了大量关于零质量的建模数据,它区分了零膨胀 Gamma 模型和他们所描述
以下代码实现了一些无锁(且无原子!)的线程间通信,这些通信需要使用存储和加载内存屏障,但是C++ 11 release-acquire语义不适当,也不保证正确性。实际上,该算法暴露了对发布获取语义的某
我指的是在 https://developer.android.com/training/constraint-layout/index.html#constrain-to-a-barrier 上使用
我正在一个非常好的 IBM x 服务器(4 个 8 核 CPU)上运行一些模拟应用程序的 x64 版本。操作系统是 Linux - redhat 5.6 x64 内核。因此,此应用恰好在需要超过 2
我是一名优秀的程序员,十分优秀!