У меня есть приложение, которое требует обработки нескольких изображений параллельно, чтобы поддерживать скорость в реальном времени.Параллельные вычисления с использованием OpenCV
Насколько я понимаю, я не могу назвать функции графического процессора OpenCV многопоточным способом на одном устройстве CUDA. Я попробовал код конструкции 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]);
}
}
}
Это, кажется, компилировать и выполнять правильно, но, к сожалению, по-видимому, выполнить numImages темы последовательно на одном устройстве CUDA.
Я должен иметь возможность выполнять несколько потоков параллельно, если у меня есть несколько устройств CUDA, правильно? Чтобы получить несколько устройств CUDA, нужны ли мне несколько видеокарт?
Кто-нибудь знает, работает ли двухчиповая карта nVidia GTX 690 как два независимых устройства CUDA с OpenCV 2.4 или новее? Я нашел подтверждение, что он может работать как таковой с OpenCL, но без подтверждения относительно OpenCV.
Возможно, ответ находится в исходном коде OpenCV? –