OpenCL 中的障碍

2023-12-19

在 OpenCL 中,我的理解是你可以使用barrier()同步工作组中线程的函数。我(通常)确实了解它们的用途以及何时使用它们。我还知道工作组中的所有线程都必须遇到障碍,否则会出现问题。然而,到目前为止,每次我尝试使用屏障时,似乎都会导致我的视​​频驱动程序崩溃,或者出现有关访问某种无效内存的错误消息。到目前为止,我已经在 2 个不同的显卡(1 个 ATI、1 个 NVIDIA)上看到了这一点。

所以,我的问题是:

  1. 知道为什么会发生这种情况吗?
  2. 有什么区别barrier(CLK_LOCAL_MEM_FENCE) and barrier(CLK_GLOBAL_MEM_FENCE)?我阅读了文档,但我不清楚。
  3. 是否有关于何时使用的一般规则barrier(CLK_LOCAL_MEM_FENCE) vs. barrier(CLK_GLOBAL_MEM_FENCE)?
  4. 是否有一个时刻在呼唤barrier()错误的参数类型会导致错误吗?

正如您所说,屏障只能同步线程在同一个工作组中。无法同步内核中的不同工作组。

现在回答你的问题,我也不清楚该规范,但在我看来,第 6.11.9 节包含了答案:

CLK_LOCAL_MEM_FENCE – 屏障函数将刷新任何 变量存储在本地内存中或在内存栅栏中排队以确保 对本地内存的内存操作的正确顺序。

CLK_GLOBAL_MEM_FENCE – 屏障函数将对内存栅栏进行排队 确保内存操作对全局内存的正确排序。 例如,当工作项写入缓冲区或 图像内存对象,然后要读取更新的数据。

因此,根据我的理解,在写入和读取时应该使用 CLK_LOCAL_MEM_FENCE__local内存空间,以及写入和读取时的 CLK_GLOBAL_MEM_FENCE__global内存空间。

我还没有测试这是否更慢,但大多数时候,当我需要屏障并且我怀疑哪个内存空间受到影响时,我只是使用两者的组合,即:

barrier(CLK_LOCAL_MEM_FENCE | CLK_GLOBAL_MEM_FENCE);

这样,您就不应该遇到任何内存读取\写入顺序问题(只要您确定组中的每个线程都通过屏障,但您知道这一点)。

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCL 中的障碍 的相关文章

  • 确定 OpenCL 工作组大小的限制因素?

    我正在尝试在资源较少的嵌入式 GPU 上运行一些为桌面显卡编写的 OpenCL 内核 特别是 桌面版本假设始终支持至少 256 个工作组大小 但基于 Mali T628 ARM 的 GPU 仅保证 64 工作组大小 事实上 一些内核报告CL
  • 为什么 Cuda/OpenCL 的全局内存中不存在库冲突?

    我还没有弄清楚并且谷歌没有帮助我的一件事是 为什么有可能与共享内存发生银行冲突 但在全局内存中却没有 银行与寄存器会存在冲突吗 UPDATE哇 我真的很感谢 Tibbit 和 Grizzly 的两个回答 看来我只能给一个答案打绿色复选标记
  • 固定内存OpenCL,有人成功使用过吗?

    我用的是CL MEM ALLOC HOST PTR与我的旗帜clCreateBuffer调用 但计算分析器将我的所有 主机内存传输类型 显示为可分页 我在两种不同的内核设置中尝试过它 但分析器不会显示我正在使用固定内存 当内核开始使用固定内
  • 在多 GPU 系统中,如何将 OpenCL 设备与给定 PCI 供应商、设备和总线 ID 的特定 GPU 相匹配?

    我希望能够在由 PCI ID 标识的多 GPU 系统上将 OpenCL 设备与系统中的 GPU 进行匹配 例如 如果我的系统具有多个 GPU 可能来自不同的供应商 我可以通过枚举 PCI 总线来列出设备 这为我提供了 PCI 供应商 设备和
  • OpenCL 内核未矢量化

    我正在尝试构建一个内核来进行并行字符串搜索 为此 我倾向于使用有限状态机 fsm 的转换表位于内核参数状态中 代码 kernel void Find constant char text const int offset const int
  • 在 OpenCL 中以编程方式选择最佳 GPU 的最佳方法是什么?

    我的笔记本电脑上有两个显卡 Intel Iris 和 Nvidia GeForce GT 750M 我正在尝试使用简单的向量相加OpenCL 我知道 Nvidia 卡速度更快 并且可以更好地完成工作 原则上 我可以把if代码中的语句将查找N
  • 内存复制速度对比 CPU<->GPU

    我现在正在学习 boost compute openCL 包装库 我的复制过程非常慢 如果我们将 CPU 到 CPU 的复制速度调整为 1 那么 GPU 到 CPU GPU 到 GPU CPU 到 GPU 复制的速度有多快 我不需要精确的数
  • OpenCL 动态并行/GPU 生成的线程?

    CUDA 5 刚刚被释放 http nvidianews nvidia com Releases NVIDIA Releases CUDA 5 Making Programming With World s Most Pervasive P
  • CMake找不到NVIDIA的opencl sdk

    我刚刚安装了 NVIDIA CUDA 工具套件 用它在 Windows 8 1 上开发 OpenCL 应用程序 我遇到了一些问题 1 FinedOpenCl cmake 不起作用 因为 Nvidia 工具包未设置 opencl dir cm
  • OpenCL clGetPlatformIDs 异常

    我使用此包安装附带的示例中的 HelloWorld 示例 AMD 套件 http developer amd com tools and sdks heterogeneous computing amd accelerated parall
  • 合理化我的简单 OpenCL 内核中有关全局内存的情况

    const char programSource kernel void vecAdd global int a global int b global int c int gid get global id 0 for int i 0 i
  • opencl支持布尔变量吗?

    openCL 支持布尔变量吗 我目前正在使用 JOCL java 编写我的 openCL 调用代码 但我没有看到任何有关布尔值的信息 tl dr 是的 但是你应该在内核函数签名中避免它 是的 但a的大小bool is not定义的 因此 它
  • 多个 OpenCl 内核

    我只是想问 是否有人可以提醒我在相继使用几个简单内核时要注意什么 我可以用同样的吗CommandQueue 我可以跑几次吗clCreateProgramWithSource cl program与不同的cl program 我忘记了什么 T
  • 空的 openCL 程序抛出弃用警告

    我下载了 AMD APP 3 0 SDK 一旦包含 include
  • 使用 OpenCL 或其他 GPGPU 框架在现代 x86 硬件上的 CPU 和 GPU 之间共享数据

    AMD Kaveri 的 hUMA 异构统一内存访问 和 Intel 第四代 CPU 证明了 CPU 和 GPU 硬件的不断统一 应该允许 CPU 和 GPU 之间进行无副本的数据共享 我想知道 最新的 OpenCL 或其他 GPGPU 框
  • 如何在屏障处正确同步线程

    我遇到一个问题 我很难判断应该使用哪个同步原语 我正在创建 n 个在内存区域上工作的并行线程 每个线程都分配给该区域的特定部分 并且可以独立于其他线程完成其任务 在某些时候 我需要收集所有线程的工作结果 这是使用屏障的一个很好的例子 这就是
  • 使用 OpenCL 支持构建 OpenCV

    在 CMake 中 我使用 OpenCL Enable ON 构建了 OpenCV 它自动检测到OPENCL INCLUDE DIR路径但是OPENCL LIBRARY即使单击配置后也是空的 为了OPENCL LIBRARY我也没有看到浏览
  • OpenCL 与 OpenMP 性能对比 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否有研究比较 OpenCL 与 OpenMP 的性能 具体来说 我对使用 OpenCL 启动线程的开销成本感兴趣 例如 如果将域分解
  • OpenCL 何时使用全局、私有、本地、常量地址空间

    我正在尝试学习 OpenCL 但我很难决定使用哪些地址空间 因为我只找到组装的资源声明这些地址空间是什么 但没有声明它们为什么存在或何时使用它们 资源至少太分散了 所以带着这个问题我希望把所有这些信息汇总一下 所有地址空间是什么 它们为什么
  • OpenCL 内核在 Nvidia GPU 上每个线程使用多少寄存器?

    我的第一个问题是如何获取 Nvidia GPU 上 OpenCL 内核代码的寄存器使用信息 因为 nvcc 编译器给出了相同的使用信息nvcc ptxas options vCUDA 内核代码的标志 我还从 AMD GPU for Open

随机推荐

  • 和与异质和之间的一般同构

    是否有 Haskell 库提供 或协助编写 总和类型与关联的异构总和类型之间的通用同构 采用以下总和类型 data TR TR Index TR Inner R 现在我们将它与异质和联系起来NS I xs https hackage has
  • HQL:变量列

    我可以为 where 限制设置变量值 Query criteria session createQuery select test col1 test col2 test col3 from Test test where test col
  • Facebook Android SDK 的密钥哈希

    我不知道如何获取使用 Facebook Android SDK 所需的密钥哈希 我发现我可以使用keytool使用这些命令 keytool exportcert alias alias keystore keystore openssl s
  • 使用“已禁用”属性更改“选项”颜色

    我想更改字体颜色
  • 使用 CSS3 Resize 属性分割窗格

    我一直在尝试使用 CSS3 属性来调整分割窗格的大小 这是代码 div class left Lorem ipsum dolor sit amet consectetuer adipiscing elit div div class rig
  • 如何从另一个文件A中删除文件B上出现的行?

    我有一个大file A 由电子邮件组成 每封邮件一行 我还有另一个file B其中包含另一组邮件 我将使用哪个命令从文件 A 中删除文件 B 中出现的所有地址 因此 如果文件 A 包含 A B C 文件 B 包含 B D E 那么文件 A
  • Elixir/Phoenix:如何在配置文件中使用第三方模块?

    看来phoenix中的配置文件加载和编译的方式在使用第三方模块时会出现问题config exs or dev exs prod exs test exs 示例 设置Guardian https github com ueberauth gu
  • 对于 UUID 类型列,返回 H2 数据库中插入新行时默认生成的主键值

    当使用UUID https en wikipedia org wiki Universally unique identifier data type http h2database com html datatypes html uuid
  • Rails 6 中的自定义文件夹不会自动重新加载

    在 Rails 5 及更低版本中 我曾经在application rb config autoload paths Dir config root app services Rails 6 指南state https guides ruby
  • EF Core - 字符串或二进制数据将被截断[重复]

    这个问题在这里已经有答案了 当您有 80 列可供选择时 如何确定哪一列是罪魁祸首 使用 Net Core netcoreapp2 2 和 EF Core 2 2 4 选择了一些现有代码 并尝试跟踪失败的列 然而 它不起作用 我已经查看了此处
  • 如何显示带有自定义时区的日期?

    假设我有一个代表日期的字符串 如下所示 2009 年 7 月 8 日星期三 17 08 48 GMT 所以我将该字符串解析为日期对象 如下所示 DateFormat formatter new SimpleDateFormat EEE MM
  • java中的URLConnection如何重用池中的连接

    任何人都可以帮我提供 URLConnection 如何重用连接的示例代码吗 URLConnection con new URL http www someurl com openConnection 我正在使用上面的代码来创建 URLCon
  • 关于createUserWithEmailAndPassword的问题

    我来自中国 当我做作业时 我发现了一些问题 但我无法解决它 这是我的代码 控制台信息 2021 05 28 16 41 32 525 5706 5746 com example chat W System 忽略标头 X Firebase L
  • Android 构建的 ltrace

    伙计们 我正在尝试从这个 repo 构建适用于 Android 的 stracehttps android googlesource com platform external ltrace https android googlesour
  • 更新到 ARC 错误

    我正在尝试将项目更新为 ARC 虽然我看过一些关于更新到 ARC 的帖子 但我见过的帖子都没有处理这个特定问题 我有多个错误 大多数是 ARC Issue Pointer to non const type id with no expli
  • xml 文件未复制到目标 intellij idea

    我在源文件夹中有一些 xml 文件以及 java 文件 Intellij Idea 不会将它们复制到目标文件夹 我希望这些 xml 文件与目标中的类一起出现 Eclipse 做得很好 谁能告诉我如何在 Intellij Idea 中实现这一
  • Java 8 ImageIO 在 Linux 中错误读取 JPEG

    我正在尝试读取用户上传的 JPEG 图像 任意 以在服务器应用程序中创建缩略图 系统在 Windows7 Oracle Java 8u11 中运行良好 但我在服务器上的 CentOS 下遇到颜色模型问题 原始图像是 http studio
  • 如何使用自定义指令作为类在 AngularJS 中使用日期选择器?

    下面是我使用的 HTML 和 Javascript 代码 HTML 代码 div div
  • MySQL 是否有类似 SQL Server TIMESTAMP 列的功能?

    我的初步研究表明 不 我在 SQL Server 中有一个数据库应用程序 它使用 SQL Server 时间戳列来跟踪更改 也就是说 我可以浏览该表并知道 如果我看到时间戳 gt 某个参考时间戳 则该行已被更改添加或更新 我正在寻找 MyS
  • OpenCL 中的障碍

    在 OpenCL 中 我的理解是你可以使用barrier 同步工作组中线程的函数 我 通常 确实了解它们的用途以及何时使用它们 我还知道工作组中的所有线程都必须遇到障碍 否则会出现问题 然而 到目前为止 每次我尝试使用屏障时 似乎都会导致我