我是相对较新的数据自动化系统,目前是在一个项目加快计算机视觉应用在嵌入式系统与gpu的附加(NVIDIA TX1)。我要做的是在两个库中进行选择: OpenCV和VisionWorks(包括OpenVX)。
目前,我已经编写了测试代码来运行Canny边缘检测算法,两个库显示了不同的执行时间(VisionWorks实现所需的时间减少了30%~40%)。
因此,我想知道原因是什么,因此描述了花费时间最多的内核:来自OpenCV4Tegra的'canny::edgesHysteresisLocalKernel‘,它占据了整个应用程序的37.2% (来自OpenCV实现和VisionWorks实现)和来自VisionWorks的'edgesHysteresisLocal’。
我遵循了“引导分析”,分析器建议应用程序都是延迟限制的,下面是来自VisionWorks的‘VisionWorks’和来自OpenCV4Tegra的'canny::edgesHysteresisLocalKernel‘的捕获。
OpenCV4Tegra - canny::edgesHysteresisLocalKernel
VisionWorks - edgesHysteresisLocal
所以我的问题是
-顺便说一下,据我所知,NVIDIA没有提供VisionWorks和OpenCV4Tegra的源代码。如果我错了就纠正我。
提前谢谢你的回答。
发布于 2017-05-02 14:54:16
1/两个库之间的shared_memory使用情况不同,这可能是导致性能差异的原因。
[2]通常使用三种度量来了解我的算法是否对CUDA设备进行了很好的编码:
我认为互联网上有很多东西.
另一件事:
如果您只想对lib的使用进行限定以选择最佳的实现,那么为什么需要了解每个实现(这很有趣,但不是先决条件)?
为什么不使用循环时间和生成结果的质量来度量算法的性能(假阳性,已知结果的平均误差,.)
https://stackoverflow.com/questions/43739609
复制相似问题