Ho un'applicazione che richiede l'elaborazione di più immagini in parallelo per mantenere la velocità in tempo reale.Calcolo GPU parallelo usando OpenCV
È a mia conoscenza che non posso chiamare le funzioni GPU di OpenCV in modo multithread su un singolo dispositivo CUDA. Ho provato un costrutto di codice OpenMP come la seguente:
#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]);
}
}
}
Questo sembra compilare ed eseguire correttamente, ma purtroppo sembra eseguire i fili numImages in serie sul medesimo dispositivo CUDA.
Dovrei essere in grado di eseguire più thread in parallelo se ho più dispositivi CUDA, corretto? Per ottenere più dispositivi CUDA, ho bisogno di più schede video?
Qualcuno sa se la scheda dual-chip nVidia GTX 690 funziona come due dispositivi CUDA indipendenti con OpenCV 2.4 o successivo? Ho trovato conferma che può funzionare come tale con OpenCL, ma nessuna conferma riguardo a OpenCV.
Forse la risposta è nel codice sorgente per OpenCV? –