OPENCL 1.2失效执行不起作用
OpenCL 1.2 out of order execution does not work
我正在尝试以序列基础图像 -> filter1-> filter2->读取图像应用过滤器。我曾经使用cl1.1(c(在其中有事件,因此Filter2需要等待Filter1事件完成和阅读将需要等待Filter2事件完成。
在Cl 1.2(C (中不再是这种情况,因为它现在要求事件向量。但是我下面的代码仍然有效并产生正确的结果,我不明白为什么与CL1.1(c(那样行不通。
cl::CommandQueue queue(context, device, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, &err);
...
err = queue.enqueueNDRangeKernel(filter1Kernel, cl::NullRange, globalWorkSize, cl::NullRange, nullptr, nullptr);
err = queue.enqueueNDRangeKernel(filter2Kernel, cl::NullRange, globalWorkSize, cl::NullRange, nullptr, nullptr);
err = queue.enqueueReadImage(filter2Image, CL_FALSE, origin, region, 0, 0, ResultImage, nullptr, nullptr);
我也可以使用非阻止调用并获取正确的输出。不再需要同步吗?
仅仅是因为您说启用了排序执行的队列并不意味着它将是,或者是因为它无缘无故地将内核放出订单。因此,您要么最终以固定队列或按要顺序运行内核的订购队列。
如果您的工作是串行的,为什么请要求订购的队列?
P.S。您可以使用1.1或1.2的C 包装器,并且可以使用1.1和1.2的C API。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么 std::chrono 在测量循环和编译器优化的并行 OpenMP 的执行时间时不起作用?
- OPENCL 1.2失效执行不起作用
- C++循环不起作用时执行
- 程序在C++ Tutor中执行时有效,但在其他任何地方都不起作用
- 由于某种原因,使用 OR 运算符执行操作不起作用
- 向在C++中不起作用的可执行文件传递参数
- try() 和 catch() 不起作用;程序崩溃,从不执行 catch() 块
- 执行命令在Geany(Windows 10)中不起作用
- “执行时”循环不起作用
- 执行/虽然循环不起作用
- Cin 执行不起作用 (程序.exe <文件与数据.txt)
- VS 2013 单元测试不起作用 =设置执行上下文时出现>错误