Mam aplikację, która wymaga przetwarzania wielu obrazów równolegle w celu utrzymania prędkości w czasie rzeczywistym.Równoległe przetwarzanie GPU przy użyciu OpenCV
Rozumiem, że nie mogę wywoływać funkcji GPU OpenCV w trybie wielowątkowym na pojedynczym urządzeniu CUDA. Próbowałem się kod konstruktu OpenMP takie jak:
#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]);
}
}
}
To wydaje się skompilować i wykonać poprawnie, ale niestety wydaje się, aby wykonać numImages wątki kolejno na tym samym urządzeniu CUDA.
Powinienem być w stanie wykonywać wiele wątków równolegle, jeśli mam wiele urządzeń CUDA, prawda? Czy w celu uzyskania wielu urządzeń CUDA potrzebuję wielu kart wideo?
Czy ktoś wie, czy karta dual-chipowa nVidia GTX 690 działa jako dwa niezależne urządzenia CUDA z OpenCV 2.4 lub nowszym? Znalazłem potwierdzenie, że może działać jako takie z OpenCL, ale nie ma potwierdzenia w odniesieniu do OpenCV.
Być może odpowiedź jest w kodzie źródłowym dla OpenCV? –