Tengo una aplicación que requiere procesar varias imágenes en paralelo para mantener la velocidad en tiempo real.Computación en paralelo de GPU con OpenCV
Tengo entendido que no puedo llamar a las funciones de la GPU de OpenCV de forma multiproceso en un solo dispositivo CUDA. He tratado de un código de construcción OpenMP tales como los siguientes:
#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]);
}
}
}
Esto parece compilar y ejecutar correctamente, pero por desgracia, aparece para ejecutar los hilos numImages en serie en el mismo dispositivo CUDA.
Debería poder ejecutar varios hilos en paralelo si tengo múltiples dispositivos CUDA, ¿correcto? Para obtener varios dispositivos CUDA, ¿necesito varias tarjetas de video?
¿Alguien sabe si la tarjeta nVidia GTX 690 de doble chip funciona como dos dispositivos CUDA independientes con OpenCV 2.4 o posterior? Encontré la confirmación de que puede funcionar como tal con OpenCL, pero no hay confirmación con respecto a OpenCV.
¿Quizás la respuesta está en el código fuente de OpenCV? –