2016-12-30 5 views
3

в CMake, я построил OpenCV с OpenCL Enable ON (он автоматически обнаружил путь OPENCL_INCLUDE_DIR, но OPENCL_LIBRARY был пуст, даже после нажатия кнопки config. Для OPENCL_LIBRARY я не вижу кнопку просмотра либо после генерации OpenCV исполняемые файлы, то я запускаю код нижеBuild OpenCV с поддержкой OpenCL

#include <iostream> 
#include <fstream> 
#include <string> 
#include <iterator> 
#include <opencv2/opencv.hpp> 
#include <opencv2/core/ocl.hpp> 

int main() 
{ 
    if (!cv::ocl::haveOpenCL())  
     cout << "OpenCL is not avaiable..." << endl;   
    else cout << "OpenCL is AVAILABLE! :) " << endl; //this is the output 

    cv::ocl::setUseOpenCL(true); 

    cout << context.ndevices() << " GPU devices are detected." << endl; 
    for (int i = 0; i < context.ndevices(); i++) 
    { 
    cv::ocl::Device device = context.device(i); 
    cout << "name:    " << device.name() << endl; 
    cout << "available:   " << device.available() << endl; 
    cout << "imageSupport:  " << device.imageSupport() << endl; 
    cout << "OpenCL_C_Version: " << device.OpenCL_C_Version() << endl; 
    cout << endl; 
    } //this works & i can see my video card name & opencl version 
    cv::ocl::Device(context.device(0)); 
} 

Когда я сделать использование UMat для измерения производительности, производительность с (UMAT) или без (Mat) OpenCL не имеет никакого значения.

Я скачал AMD-APP-SDK от этого link и попробовал для сборки, но не было открытых файлов OpenCL (вместо этого я увидел файлы opengl dll [glew32.dll & glut32.dll]. Как я могу создать OpenCV с OpenCL, связав OPENCL_LIBRARY?

ответ

1

Я считаю, что у вас есть OpenCL, следовательно, результат вашего звонка haveOpenCL и из запроса на версию. Я не уверен, что результаты вашего теста производительности равны тому, что у вас нет OpenCL.

Если вы хотите понять OpenCL, я бы сделал шаг назад и сначала разобрался, а затем попытаюсь понять OpenCV.

Ваша ссылка не работает, вы попробовали this. Он имеет ссылку на текущий AMD APP SDK (3.0). Я бы прошел через эту настройку и убедился, что вы можете создавать или работать с образцами OpenCL в своей системе, а затем вы должны устранить неполадку, почему он не работает в OpenCV (если это действительно не так).

Что касается производительности, ну, это зависит. Каждый раз, когда вы отправляете данные на и с видеокарты, это происходит за счет стоимости; Transparent API был разработан, чтобы сделать этот выбор для вас: если отправка его на карту для более быстрой обработки стоит поездки туда и обратно ..., если это не стоит поездки, вы действительно будете хуже работать. Кроме того, не все библиотеки будут работать на GPU. См. Некоторые пояснения к opencv.org.

+0

Я нашел opencl.dll в C:/windows/System32, удалил его. Однако GPU был использован. также вы можете ответить [это] (http://stackoverflow.com/questions/41688751/understanding-the-usage-of-opencl-in-opencv-mat-umat-objects?noredirect1_comment70603090_41688751) Вопрос –

Смежные вопросы