gpu::OpenCV和openMP

gpu::OpenCV和openMP,opencv,gpu,openmp,Opencv,Gpu,Openmp,我尝试使用openMP并行化包含gpu::openCV调用的循环。虽然我在循环中创建了一个对象(因此每个线程都不同),但结果并不正确。只有当我用“#pragma omp critical”括起gpu::openCV函数时,它们才变得正确,但这样我就没有了并行化的加速,而是增加了开销 我的问题是,为什么用openMP并发执行gpu::openCV调用的不同实例会产生错误的结果?可能gpu::openCV使用了一种共享全局状态,这使得它是非线程安全的。您的系统包含多少个gpu?如果答案是一,是什么让

我尝试使用openMP并行化包含gpu::openCV调用的循环。虽然我在循环中创建了一个对象(因此每个线程都不同),但结果并不正确。只有当我用“#pragma omp critical”括起gpu::openCV函数时,它们才变得正确,但这样我就没有了并行化的加速,而是增加了开销


我的问题是,为什么用openMP并发执行gpu::openCV调用的不同实例会产生错误的结果?

可能
gpu::openCV
使用了一种共享全局状态,这使得它是非线程安全的。您的系统包含多少个gpu?如果答案是一,是什么让你认为使用多线程可以提高性能(撇开潜在的线程安全问题不谈)?@Hristo,我也认为是这样,但有没有办法克服它?当我运行多个实例(通过命令行)时,程序工作正常,这可能意味着它是进程安全的,而不是线程安全的。@Talonmes,我有1个Gpu,但利润将来自多个cpu核。