OpenCL™规范 3.2.3设备侧队列

2023-12-19

3.2.3. Device-side enqueue
3.2.3设备侧队列

Device-side enqueue is missing before version 2.0.

​2.0版本之前缺少设备端队列。

Algorithms may need to generate additional work as they execute. In many cases, this additional work cannot be determined statically; so the work associated with a kernel only emerges at runtime as the kernel-instance executes. This capability could be implemented in logic running within the host program, but involvement of the host may add significant overhead and/or complexity to the application control flow. A more efficient approach would be to nest kernel-enqueue commands from inside other kernels. This nested parallelism can be realized by supporting the enqueuing of kernels on a device without direct involvement by the host program; so-called device-side enqueue .

算法在执行时可能需要生成额外的工作。在许多情况下,这种额外的工作量不能静态地确定;因此,与内核相关联的工作仅在运行时内核实例执行时出现。这种能力可以在主机程序内运行的逻辑中实现,但是主机的参与可能会给应用程序控制流增加显著的开销或复杂性。更有效的方法是从其他内核内部嵌套内核入队命令。这种嵌套的并行性可以通过支持内核在设备上的排队来实现,而无需主机程序的直接参与;所谓的设备侧队列。

Device-side kernel-enqueue commands are similar to host-side kernel-enqueue commands. The kernel executing on a device (the parent kernel ) enqueues a kernel-instance (the child kernel ) to a device-side command queue. This is an out-of-order command-queue and follows the same behavior as the out-of-order command-queues exposed to the host program. Commands enqueued to a device side command-queue generate and use events to enforce order constraints just as for the command-queue on the host. These events, however, are only visible to the parent kernel running on the device. When these prerequisite events take on the value CL_COMPLETE , the work-groups associated with the child kernel are launched into the devices work pool. The device then schedules them for execution on the compute units of the device. Child and parent kernels execute asynchronously. However, a parent will not indicate that it is complete by setting its event to CL_COMPLETE until all child kernels have ended execution and have signaled completion by setting any associated events to the value CL_COMPLETE . Should any child kernel complete with an event status set to a negative value (i.e. abnormally terminate), the parent kernel will abnormally terminate and propagate the childs negative event value as the value of the parents event. If there are multiple children that have an event status set to a negative value, the selection of which childs negative event value is propagated is implementation-defined.

​设备端内核入队命令类似于主机端内核入团命令。在设备上执行的内核(父内核)将内核实例(子内核)排入设备端命令队列。这是一个无序的命令队列,其行为与主机程序暴露的无序命令队列相同。排入设备端命令队列的命令生成并使用事件来强制执行顺序约束,就像主机上的命令队列一样。但是,这些事件仅对设备上运行的父内核可见。当这些先决条件事件的值为CL_COMPLETE时,与子内核相关联的工作组将启动到设备工作池中。然后,设备调度它们以便在设备的计算单元上执行。子内核和父内核异步执行。然而,直到所有子内核都结束了执行并通过将任何相关联的事件设置为值CL_complete来发出完成信号,父内核才会通过将其事件设置为CL_complete来指示其完成。如果任何子内核的事件状态设置为负值(即异常终止),则父内核将异常终止并将子内核的负事件值作为父事件的值传播。如果有多个子级的事件状态设置为负值,则传播哪个子级的负事件值的选择是由实现定义的。

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

OpenCL™规范 3.2.3设备侧队列 的相关文章

  • 为 OpenCL 设置 Visual Studio 2010 的正确方法

    设置 VisualStuio 2010 处理 cl 文件的正确方法是什么 我在工具 文本编辑器 文件扩展名下添加了 cl 并将 usertype dat 复制到 common7 ide 文件夹中 但 VS 为 float4 或 cross
  • 何时使用 cudaHostRegister() 和 cudaHostAlloc()? “固定或页面锁定”内存是什么意思? OpenCL 中哪些是等效的?

    我刚刚接触 Nvidia 的 API 有些表达对我来说不太清楚 我想知道是否有人可以帮助我了解何时以及如何以简单的方式使用这些 CUDA 命令 更准确地说 在研究如何通过内核并行执行 例如使用 CUDA 来加速某些应用程序时 在某些时候我面
  • PyOpenCL 中的时间测量

    我正在 FPGA 和 GPU 中使用 PyOpenCL 运行内核 为了测量执行所需的时间 我使用 t1 time event mykernel queue c width c height block size block size d c
  • 预处理器愚蠢的做法(对 #include 进行字符串化)

    注意 这个问题与 OpenCL 本身无关 请检查最后一段以获取我的问题的简洁陈述 但提供一些背景 我正在编写一些使用 OpenCL 的 C 代码 我喜欢将 OpenCL 内核的源代码保存在自己的文件中 以便于编码和维护 而不是直接将源代码作
  • OpenGL/OpenCL 互操作、OpenCL 渲染到纹理的麻烦

    我正在尝试将 OpenCL 渲染为 OpenGL 256x256 纹理 全部编译正确 但仅呈现黑屏 如果关闭纹理 它通常会渲染白色矩形 Setting up OpenCL const char source kernel void Main
  • cl::vector 与 std::vector:不同的迭代器行为

    EDIT 添加了 PlasmaHH 建议的带有内存位置的调试输出 我不明白 OpenCL 的 C 绑定中 cl vector 的不同行为 考虑以下代码 Header Top hpp class Top public void setBool
  • 有关 OpenCL 内核编程的教程或书籍? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我认为这个问题足够具体 只是为了说清楚 我不是在寻找参考 而是在寻找教程 我对内核编程方面特别感兴趣 市
  • OpenCL 本地内存大小和计算单元数量

    每个 GPU 设备 AMD NVidea 或任何其他 都分为多个计算单元 多处理器 每个计算单元都有固定数量的内核 顶点着色器 流处理器 所以 一个人有 Compute Units x VertexShaders compute unit
  • OpenCL 内核是异步执行的吗?

    对于 CUDA 我知道它们是在向默认流 空流 发出启动命令后异步执行的 那么在 OpenCL 中又如何呢 示例代码如下 cl context context cl device id device id cl int err cl kern
  • OpenCL 双精度与 CPU 双精度不同

    我正在 Linux 中使用 GeForce GT 610 卡进行 OpenCL 编程 我的CPU和GPU双精度结果不一致 我可以在这里发布部分代码 但我首先想知道是否有其他人遇到过这个问题 当我运行多次迭代的循环时 GPU 和 CPU 双精
  • OpenCL 产生错误的计算

    我一直尝试使用openCL做一些计算 但结果不正确 我输入了三个 float3 如下所示 300000 0 0 300000 300000 0 300000 300000 300000 进入这个内核 kernel void gravitat
  • OpenCL C/C++ 动态绑定库(win32 及更多)

    我正在尝试 OpenCL 为了将其投入生产 我希望能够动态绑定到 OpenCL DLL 在 Windows 下 以便 优雅地 处理没有 OpenCL 的情况安装在主机上 是否有任何可用的库 或代码片段 可以在 C 或 C 中处理这种动态绑定
  • NVIDIA GPU 的 CUDA 核心和 OpenCL 计算单元之间有什么关系?

    我的电脑有一块 GeForce GTX 960M NVIDIA 声称它有 640 个 CUDA 核心 然而 当我运行 clGetDeviceInfo 来查找计算机中的计算单元数量时 它打印出 5 见下图 听起来 CUDA 核心与 OpenC
  • boost::计算流压缩

    如何使用 boost compute 进行流压缩 例如 如果您只想对数组中的某些元素执行繁重的操作 首先 生成掩码数组 其中包含与要执行操作的元素相对应的元素 mask 0 0 0 1 1 0 1 0 1 然后对掩码数组进行排它扫描 前缀和
  • OpenCL:为什么指向指针的指针不能作为参数传递给内核函数?

    你好 我只是想澄清一下为什么我们不能将 2D 数组指针作为参数传递给内核 为什么不允许 如果我使用它作为参数会发生什么 在内部 因为我知道代码会给出一些错误 请只做那些需要的 因为在 OpenCL 1 x 中设备有一个独立的地址空间 在设备
  • 如何在 Windows 上的 nvidia GPU 的 Visual Studio 2010 中配置 OpenCL?

    我在华硕笔记本电脑上的 Wwindows 7 操作系统上使用 NVIDIA GeForce GTX 480 GPU 我已经为 CUDA 4 2 配置了 Visual Studio 2010 如何在 Visual Studio 2010 上为
  • OpenCL:在内核中手动引发异常

    是否可以在 OpenCL 中手动引发异常 仅用于调试目的 我的代码中有一个非常奇怪的错误 当我计算两个双精度值并将它们相加时 主机报告 CL OUT OF RESOURCE 但是 如果我不添加这两个值 主机不会报告任何错误 OpenCL 不
  • 使用 OpenCL 支持构建 OpenCV

    在 CMake 中 我使用 OpenCL Enable ON 构建了 OpenCV 它自动检测到OPENCL INCLUDE DIR路径但是OPENCL LIBRARY即使单击配置后也是空的 为了OPENCL LIBRARY我也没有看到浏览
  • 如何在 Emgu CV 项目中利用 OpenCL

    我是使用 Emgu CV 的新手 并开始创建小型示例项目 例如面部检测 眼睛检测等 如果我可以利用 OpenCL 来加速使用 GPU 的过程 那就太好了 否则 当我降低scaleFactor时 它会导致大量的CPU利用率 我怎样才能做到这一
  • 如何在 pyopencl 中创建可变大小的 __local 内存?

    在我的 C OpenCL 代码中我使用clSetKernelArg创建 可变尺寸 local我的内核中使用的内存 OpenCL 本身不提供该内存 看我的例子 clSetKernelArg clKernel ArgCounter sizeof

随机推荐

  • 永久删除的文件如何恢复?这3个简单方法可以帮到你!

    我在清理电脑的过程中 一不小心就删除了一些很重要的文件和数据 很想通过某种方法将这些数据找回来 但是不知道应该如何操作 有朋友可以分享一下文件找回的简单方法吗 在日常生活和工作中 我们时常会遇到误删重要文件的情况 一旦文件被永久删除 很多人
  • Mybatis配置-插件(plugins)

    MyBatis允许在映射语句执行的某些点拦截方法调用 默认情况下 MyBatis允许插件拦截以下方法调用 Executor update query flushStatements commit rollback getTransactio
  • 我的创作纪念日365

    机缘 提示 可以和大家分享最初成为创作者的初心 例如 实战项目中的经验分享 日常学习过程中的记录 通过文章进行技术交流 收获 提示 在创作的过程中都有哪些收获 例如 获得了多少粉丝的关注 获得了多少正向的反馈 如赞 评论 阅读量等 认识和哪
  • linux网络版计算机

    文章目录 前言 一 网络版计算机 1 序列化与反序列化 2 网络版计算机实现 3 守护进程 4 json格式 前言 一 网络版计算机 1 序列化与反序列化 协议是一种 约定 sock
  • 评分卡在数字化时代的应用与比较,谁是最强规则引擎?

    在数字化时代 规则引擎在各种业务场景中发挥着越来越重要的作用 评分卡作为规则引擎的一个重要应用 被广泛应用于员工KPI考核 业务评估 授信额度计算等等场景 本文引用了奔跑的小武哥的内容 对市面上的几个规则引擎进行对比展示 就小武哥整理的内容
  • 【开题报告】基于SpringBoot的企业财务管理系统的设计与实现

    1 研究背景 随着全球经济的发展和市场竞争的加剧 企业财务管理变得越来越重要 企业需要一个高效 精确 安全的财务管理系统来管理企业的财务事务 提供准确的财务数据支持决策制定 传统的手工财务管理方式已经无法满足企业的需求 因此 开发一款基于现
  • Error: error:0308010C:digital envelope routines::unsupported

    报错 ERROR Error error 0308010C digital envelope routines unsupported 打开 IDEA 终端 直接输入 env NODE OPTIONS openssl legacy prov
  • [补题记录] Educational Codeforces Round 160 (Rated for Div. 2)(A~C)

    URL https codeforces com contest 1913 problem D 目录 A Problem 题意 Thought 思路 Code 代码 B Problem 题意 Thought 思路 Code 代码 C Pro
  • 字节跳动的OpenAI帐号被封

    关注卢松松 会经常给你分享一些我的经验和观点 字节跳动的账号被Open AI封禁 因其使用GPT训练自家AI大模型 对 你没看错 连字节跳动也有OpenAI帐号 也在用ChatGPT的接口服务 前几天字节跳动的OpenAI帐号被封 外界猜测
  • 清空回收站是彻底删除吗?答案揭晓!

    我经常会有定期清空回收站的习惯 但是最近在清空回收站时 我突然意识到有部分重要文件一同被删除了 那么 清空回收站后文件还能恢复吗 应该怎么操作呢 在数字世界中 我们常常需要处理大量的文件和数据 有时候 我们会选择将不需要的文件或数据放入回收
  • BENTLY 125840-02 低压交流电源输入模块

    BENTLY 125840 02 低压交流电源输入模块 BENTLY 125840 02 低压交流电源输入模块 产品详情 BENTLY 125840 02 低压交流电源输入模块可能是用于提供电源输入并监测其状态的设备 这样的模块通常在工业领
  • 【开题报告】基于SpringBoot+Vue.js的社区管理系统的设计与实现

    1 研究背景 社区管理系统是近年来随着社区发展和居民需求增加而兴起的一种信息化管理工具 传统的社区管理方式存在信息传递不畅 居民参与度低 管理效率低下等问题 因此需要引入现代化的信息技术手段来改善社区管理工作 Spring Boot是一个轻
  • HONEYWELL 05701-A-0301 单通道控制卡

    HONEYWELL 05701 A 0301 单通道控制卡 HONEYWELL 05701 A 0301 单通道控制卡产品详情 HONEYWELL 05701 A 0301 控制卡通常用于监测和控制工业系统中的各种参数 例如温度 压力 流量
  • RTK、PPP与RTK-PPP?一文带您认识高精定位及如何进行高精定位GNSS测试!(一)

    来源 德思特测试测量 德思特干货丨RTK PPP与RTK PPP 一文带您认识高精定位及如何进行高精定位GNSS测试 一 原文链接 https mp weixin qq com s 6Jb3DuJEhRGqFPrH3CX8xQ 欢迎关注虹科
  • 【老生谈算法】matlab实现基于粒子群算法的多目标搜索算法——多目标搜索算法

    Matlab实现基于粒子群算法的多目标搜索算法 1 文档下载 本算法已经整理成文档如下 有需要的朋友可以点击进行下载 说明 文档 点击下载 本算法文档 老生谈算法 matlab实现基于粒子群算法的多目标搜索算法 doc 更多matlab算法
  • 电脑屏幕怎么调大小?分享4个实用操作!

    我最近在使用电脑时总感觉电脑屏幕看起来不太对劲 好像字体被刻意放大了 看起来很不舒服 想问问有什么方法可以解决这个问题吗 电脑屏幕的正常显示是我们使用电脑的重要前提之一 如果电脑屏幕设置或显示不正确 会让用户有不好的视觉体验 电脑屏幕怎么调
  • HONEYWELL 05704-A-0145 四通道控制卡

    HONEYWELL 05704 A 0145 四通道控制卡 HONEYWELL 05704 A 0145 四通道控制卡 产品详情 HONEYWELL 05704 A 0145 控制卡通常用于监测和控制系统中的信号或参数 四通道控制卡可能意味
  • 【flink番外篇】5、flink的window(介绍、分类、函数及Tumbling、Sliding、session窗口应用)介绍及示例(1)- 窗口介绍、分类、函数

    Flink 系列文章 一 Flink 专栏 Flink 专栏 系统介绍某一知识点 并辅以具体的示例进行说明 1 Flink 部署系列 本部分介绍Flink的部署 配置相关基础内容 2 Flink基础系列 本部分介绍Flink 的基础部分 比
  • HONEYWELL 05704-A-0121 船舶控制器模块

    HONEYWELL 05704 A 0121 船舶控制器模块 HONEYWELL 05704 A 0121 船舶控制器模块产品详情 船舶控制器模块通常用于船舶系统中 以实现对船舶的监测 控制和操作 这些模块可能包括各种传感器 执行器和控制逻
  • OpenCL™规范 3.2.3设备侧队列

    3 2 3 Device side enqueue 3 2 3设备侧队列 Device side enqueue is missing before version 2 0 2 0版本之前缺少设备端队列 Algorithms may nee