У меня есть приложение, которое требует обработки нескольких изображений параллельно, чтобы поддерживать скорость в реальном времени.
Насколько я понимаю, я не могу назвать функции GPU 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.