c - 在 OpenCL 和映射缓冲区中使用多个命令队列。我会遇到冲突吗?

标签 c image-processing opencl gpu gpgpu

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

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

如果您想了解一些背景知识,请继续阅读:

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

最佳答案

虽然缓冲区已映射,但执行使用该缓冲区的任何命令都是无效的。如果您想执行使用不同缓冲区的命令,那没问题。

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

关于c - 在 OpenCL 和映射缓冲区中使用多个命令队列。我会遇到冲突吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30046111/

相关文章:

python - 将内核存储在单独的文件中 - PyOpenCL

opencv - 如何在没有默认YUV2RGB-> RGB2GRAY转换的情况下从H264 4:2:0视频读取Y分量

c - 如何检查在 C 位域中设置的单个域

objective-c - "Reference to ' ' is ambiguous"将纯 C header 包含到 Obj-C iOS 项目时

c - 从标准输入 block 读取大约。 60 KB

python - 将标记图像转换为 { label : [coordinates] } 字典的快速方法

opencl - 我可以使用外部 OpenCl 库吗?

c++ - 是否有任何宏来确定我的代码是否正在编译到 Windows?

opencv - 使用内部和外部相机参数进行图像匹配

java - 图像尺寸与像素不匹配