【问题标题】:Using multiple command queues in OpenCL and mapped buffers. Do I get a conflict?在 OpenCL 和映射缓冲区中使用多个命令队列。我有冲突吗?
【发布时间】:2015-07-14 18:46:14
【问题描述】:

我在骁龙 800 平台上使用OpenCL。由于GPU 内存是共享的,我可以将内存缓冲区映射到主内存中,并可以直接在其上写入。这避免了GPU 和 RAM 之间的内存复制。

我想知道,我是否可以用我的 CPU 写入映射内存并同时执行其他命令队列中的其他 OpenCL 程序。

如果你想要一点背景,继续阅读:

我正在使用网络摄像头来捕获图像,并且网络摄像头库具有 getImage() 之类的功能。只要有新帧,此功能就会阻止执行。对于 30 fps,最坏情况下为 33 毫秒。在此期间,我的缓冲区被映射,因为 OpenCL 给了我一个指针,我必须将此指针转发给网络摄像头库。调用完成后,我可以取消映射OpenCL 缓冲区。 我在GPU 上实现了高级图像处理算法,但并非所有算法都使用映射缓冲区。

【问题讨论】:

    标签: c image-processing opencl gpu gpgpu


    【解决方案1】:

    如果映射了缓冲区,则执行任何使用该缓冲区的命令都是无效的。如果你想执行使用不同缓冲区的命令,那很好。

    在 OpenCL 2.0 中,新的共享虚拟内存功能允许您同时从主机和设备访问缓冲区。

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 2017-08-07
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      相关资源
      最近更新 更多