Opencl 使用相同的GPU memeoy对象

Opencl 使用相同的GPU memeoy对象,opencl,Opencl,假设您创建两个线程并使它们都进入一个循环,在那里它们都启动使用相同opencl内存对象的相同内核(在我的例子中是cl.hpp中的缓冲区)。它能正常工作吗?opencl是否允许使用同一内存对象在同一时间运行不同的内核 (我使用OpenCL C++包装器.HPP和BeigNET英特尔开源库)< P>对相同OpenCL内存对象的读操作,并发内核不会引起任何功能问题。在写操作的情况下,它肯定会导致功能问题 同时运行多个内核的目标是什么?请检查类似的问题。如果两个线程使用相同的顺序命令队列,它将正常工作;

假设您创建两个线程并使它们都进入一个循环,在那里它们都启动使用相同opencl内存对象的相同内核(在我的例子中是cl.hpp中的缓冲区)。它能正常工作吗?opencl是否允许使用同一内存对象在同一时间运行不同的内核


(我使用OpenCL C++包装器.HPP和BeigNET英特尔开源库)

< P>对相同OpenCL内存对象的读操作,并发内核不会引起任何功能问题。在写操作的情况下,它肯定会导致功能问题


同时运行多个内核的目标是什么?请检查类似的问题。

如果两个线程使用相同的顺序命令队列,它将正常工作;这就成了一场竞赛,看哪个线程先让他们的工作排队。从OpenCL运行时的角度来看,它只是队列中的命令

OpenCL1.1(及更新版本)是线程安全的,除了给定内核的clSetKernelArg和ClenqueEndRangeKernel;你需要把它锁起来

但是,如果您的线程使用两个不同的命令队列,那么您不应该在不使用OpenCL事件对象进行同步的情况下使用相同的内存对象。除非它是只读的;那应该很好