如何使用OpenCL

时间:2017-04-20 09:08:09

标签: opencv

※我是日本人和初学者。

■引言

您好。我是一名图像处理软件开发人员并使用OpenCV3.2.0。

我打算使用OpenCL。因此,我通过CMake构建了OpenCV,如下所示。

OpenCL:                        <Dynamic loading of OpenCL library>
  Include path:                C:/opencv/opencv320/sources/3rdparty/include/opencl/1.2
  Use AMDFFT:                  NO
  Use AMDBLAS:                 NO

■我尝试了什么

我做了一些图像处理测试。

  

CPU:Intel Xeon E5645 2.40GHz

     

iGPU: -

     

dGPU:amd firepro w9100

TEST 1:cv :: add()

argMat = png,16bit,1ch,8000x8000

void class::mf_plus(const double argVal, cv::Mat* argMat)
{
    cv::ocl::setUseOpenCL(m_enableUMat);

    cv::UMat tmpMat;
    (*argMat).copyTo(tmpMat);

    cv::add(tmpMat, cv::Scalar(argVal), tmpMat);

    tmpMat.copyTo(*argMat);
}

速度测量(10次)

m_enableUMat = true

| 281ms | 93ms | 94ms | 94ms | 93ms | 78ms | 93ms | 93ms | 94ms | 94ms |

m_enableUMat = false

| 296ms | 281ms | 281ms | 280ms | 296ms | 281ms | 296ms | 281ms | 296ms | 296ms |

TEST 2:cv :: minMaxLoc()

argMat = png,16bit,1ch,8000x8000

void class::mf_minMax(cv::Mat* argMat, double* argMin, double* argMax)
{
    cv::ocl::setUseOpenCL(m_enableUMat);

    cv::UMat tmpMat;
    (*argMat).copyTo(tmpMat);

    cv::minMaxLoc(tmpMat, argMin, argMax);
}

速度测量(10次)

m_enableUMat = true

| 202ms | 109ms | 110毫秒| 125ms的| 109ms | 109ms | 109ms | 110毫秒| 109ms | 109ms |

m_enableUMat = false

| 172ms | 172ms | 172ms | 171ms | 171ms | 171ms | 171ms | 171ms | 172ms | 187ms |

TEST 3:cv :: matchTemplate()

m_matProc = png,16bit,1ch,8000x8000

argMat = png,16bit,1ch,4000x4000

void class::mf_templateMatching(cv::Mat& argMat)
{
    cv::ocl::setUseOpenCL(m_enableUMat);

    cv::UMat tmpMatSource, tmpMatTemplate, matResult;
    m_matProc.convertTo(tmpMatSource, CV_32F);
    argMat.convertTo(tmpMatTemplate, CV_32F);

    cv::matchTemplate(tmpMatSource, tmpMatTemplate, matResult, CV_TM_SQDIFF);
}

速度测量(10次)

m_enableUMat = true

| 6162ms | 6162ms | 6162ms | 6162ms | 6162ms | 6193ms | 6099ms | 6177ms | 6193ms | 6116ms |

m_enableUMat = false

| 5788ms | 5522ms | 5475ms | 5491ms | 5554ms | 5492ms | 5491ms | 5538ms | 5507ms | 5523ms |

■问题

Q1。

在CMake日志中,什么是AMDFFT和AMDBLAS? 如果它标记为NO,OpenCL是否正常工作?

Q2。

当m_enableUMat = true时,为什么处理时间仅增加第一次?

Q3。

尽管使用高端GPU,但我所支持的效果并不大。 我能否正确获得OpenCL的好处? 有办法检查吗?

提前致谢。

0 个答案:

没有答案