Tôi có một ứng dụng yêu cầu xử lý nhiều hình ảnh song song để duy trì tốc độ thời gian thực.Máy tính GPU song song sử dụng OpenCV
Tôi hiểu rằng tôi không thể gọi chức năng GPU của OpenCV theo kiểu đa luồng trên một thiết bị CUDA duy nhất. Tôi đã cố gắng xây dựng một mã OpenMP như sau:
#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]);
}
}
}
Điều này dường như biên dịch và thực hiện một cách chính xác, nhưng tiếc là nó xuất hiện để thực hiện đề numImages serially trên thiết bị CUDA cùng.
Tôi có thể thực thi nhiều luồng song song nếu tôi có nhiều thiết bị CUDA, đúng không? Để có được nhiều thiết bị CUDA, tôi có cần nhiều thẻ video không?
Có ai biết liệu thẻ dual-chip nVidia GTX 690 hoạt động như hai thiết bị CUDA độc lập với OpenCV 2.4 trở lên không? Tôi tìm thấy xác nhận nó có thể làm việc như vậy với OpenCL, nhưng không có xác nhận liên quan đến OpenCV.
Có lẽ câu trả lời nằm trong mã nguồn cho OpenCV? –