ubuntu18.04 Mali-T860 GPU 浮点加速无效


我调用opencv的canny边缘检测的函数进行浮点运算,使用umat格式的数据参数,opencv会自动调用opencl的接口进行GPU加速,但是opencl 返回报错说是无效的设备,错误截图如上。测试代码如下:
#include
#include “opencv2/opencv.hpp”
#include “opencv2/core/ocl.hpp”
#include “opencv2/imgcodecs.hpp”
#include “opencv2/videoio/videoio.hpp”
#include “opencv2/highgui/highgui.hpp”
#include “opencv2/imgproc/imgproc.hpp”

using namespace std;
using namespace cv;
using namespace cv::ocl;

#define DSP 1

int main()
{
double t = 0.0;
#if DSP
std::vectorcv::ocl::PlatformInfo plats;
cv::ocl::getPlatfomsInfo(plats);
const cv::ocl::PlatformInfo *platform = &plats[0];
cout << “Platform Name:” << platform->name().c_str() << endl;

cv::ocl::Device c_dev;
platform->getDevice(c_dev,0);
cout << "Device name:" << c_dev.name().c_str() << endl;
c_dev.set(0);
cv::ocl::setUseOpenCL(true);
cout << "Use the OpenCL Deivice?" << cv::ocl::useOpenCL() << endl;

cv::UMat Ori = cv::imread("./bigKeyboard.bmp").getUMat(cv::ACCESS_RW),Res,Canny;

t = (double)cv::getTickCount();
cv::cvtColor(Ori,Res,cv::COLOR_RGB2GRAY);
cv::Canny(Res,Res,0,30);
t = ((double)cv::getTickCount() - t) / cv::getTickFrequency();
std::cout << "TI AM57x Accelerate Time Cost:" << t << "s" << std::endl;
cv::imshow("Test",Ori);
cv::imshow("Gray",Res);

#else
Mat I = imread(“./bigKeyboard.bmp”),gray;

t = (double)cv::getTickCount();
cv::cvtColor(I,gray,cv::COLOR_RGB2GRAY);
cv::Canny(gray,gray,0,30);
t = ((double)cv::getTickCount() - t) / cv::getTickFrequency();
std::cout << "CPU Time Cost:" << t << "s" << std::endl;
cv::imshow("Ori",I);
cv::imshow("Res",gray);

#endif

for (;;)
{
    int key = waitKey();
    if (key == 27/*ESC*/ || key == 'q' || key == 'Q')
        break;
}
return 0;

}

有知道原因的大神,请帮忙解答下,深表感谢!