我有一个应用程序需要并行处理多个图像以保持实时速度。
据我了解,我不能在单个 CUDA 设备上以多线程方式调用 OpenCV 的 GPU 函数。我尝试了一个 OpenMP 代码结构,如下所示:
#pragma omp parallel for
for(int i=0; i<numImages; i++){
for(int j=0; j<numChannels; j++){
for(int k=0; k<pyramidDepth; k++){
cv::gpu::multiply(pyramid[i][j][k], weightmap[i][k], pyramid[i][j][k]);
}
}
}
这似乎可以正确编译和执行,但不幸的是,它似乎是在同一个 CUDA 设备上串行执行 numImages 线程。
如果我有多个 CUDA 设备,我应该能够并行执行多个线程,对吗?为了获得多个 CUDA 设备,我需要多个视频卡吗?
有谁知道 nVidia GTX 690 双芯片卡是否可以作为两个独立的 CUDA 设备使用 OpenCV 2.4 或更高版本?我发现确认它可以与 OpenCL 一起工作,但没有关于 OpenCV 的确认。