This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM5728:OpenCV 优化

Guru**** 2050740 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663016/linux-am5728-opencv-optimization

器件型号:AM5728

工具/软件:Linux

您好,专家,

我的客户 现在使用 http://processors.wiki.ti.com/index.php/OpenCV#OpenCL_kernel_dispatch_from_OpenCV_application.2C_using_standard_OpenCL_dispatch_with_access_to_OpenCV_data_objects 的方法来优化 OCL_goodFeaturesToTrack()的 OpenCV 功能

他们发现  OCL_FeaturesToTrack()和 gftt.cl 中的函数之间的 args 存在差异。

在 OCL_goodFeaturesToTrack()中,maxEigenVal 的 args 为

k.args (eigarg、eIG.cols、(int) eIG.total ()、dbarg);

但在 gftt.cl 中的 maxEigenVal()中、arg 是

(__global const uchar * srcptr、int src_step、int src_offset、int cols、int total、__global uchar * dstptr)

那么、eigarg 和全局 const uchar * srcptr、int src_step、int src_offset 之间的关系是什么?

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢! OCL_FeaturesToTrack()函数位于 OpenCV/modules/imgproc/src/featureselect.cpp 中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是 OpenCV 基线代码(与 TI 修改无关)。 下面是 featureselect.cpp 中的代码片段:
    …μ A
    OCL:::KernelArg eigarg = OCL::KernelArg::ReadOnlyNoSize (EIG)、
    dbarg = OCL::KernelArg::PtrWriteOnly (maxEigenValue)、
    maskarg = OCL::KernelArg::ReadOnlyNoSize (MASK)、
    cornsarg = OCL::KernelArg::PtrWriteOnly (cornes_buffer);

    IF (haveMask)
    K.args (eigarg、EIG.cols、(int) EIG.total ()、dbarg、maskarg);
    其他
    k.args (eigarg、eIG.cols、(int) eIG.total ()、dbarg);

    size_t globalsize = dbsize * WGS;
    if (!k.run(1、globalsize、&WGS、false))
    返回 false;
    …μ A
    OpenCV 在文件./modules/core/includes/opencv2/core/ocl.hpp 中提供类 KernelArg
    他们可以看到返回了多个参数(设置了默认值、如果在上述调用中未显式设置、则为额外的两个参数设置)。
    例如
    静态 KernelArg ReadOnlyNoSize (const UMat & m、int wscale=1、int iwscale=1)
    {return KernelArg (read_only+no_size、(UMAT*)&m、wscale、iwscale);}
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、

    感谢您的支持!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    客户最近提出一个问题:由于 OpenCV 使用数据结构"UMat"和 OpenCL 使用数据结构"Buffer"进行日期传输,由于客户使用 OptionB,是否有任何函数()可以将"UMat"传输到"Buffer"与以下函数类似:

    void cv::OCL:::convertFromBuffer  ( void *  cl_mem_buffer、 size_t  step、 int  rows、 int  cols、 int  type、  UMat 和  DST )    

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    在 OpenCV-OpenCL 优化期间、OpenCV 中的 MAT 结构与 OpenCL 中的 UMAT 结构之间有许多数据传输、客户发现这种数据传输会导致 CPU 占用过多、从而导致其他操作产生影响、因为 UMAT 和 MAT 都在 DDR 中、 我们是否有任何方法可以优化此数据传输?