专注于射频工程师,天线工程师和电子硬件工程师的培养
首页 > 技术文库 > 硬件设计 > 测试测量 > 测试OpenCL是否对灰度转换和Canny算法处理有优化效果?

测试OpenCL是否对灰度转换和Canny算法处理有优化效果?

时间:2020-12-14 点击:

1  实验说明

本例程测试功能:读取指定的图像数据,然后对图像进行灰度转换和 Canny 算法处理,计算处理过程所耗的时间,并将处理后的图像保存到当前目录下。

本例程主要是测试 OpenCL 是否对这两种算法有优化效果,分别从禁用 OpenCL 和使能 OpenCL 两种情况来计算处理图像数据所用的时间,将测试的结果与官方提供的测试结果进行对比和验证。

例程源码路径:光盘“Demo/OpenCL/OpenCL_performance_test/src”

可执行文件以及测试脚本路径:光盘“Demo/OpenCL/OpenCL_performance_test/bin”

测试使用的图片路径:光盘“Demo/OpenCL/OpenCL_performance_test/data”

测试平台:广州创龙 TL5728-IDK 开发板

开发板简介:

Ø 基于 TI AM5728 浮点双 DSPC66x+双 ARMCortex-A15 工业控制及高性能音视频处理器;
Ø 强劲的视频编解码能力,支持 1 路 1080P60 或 2 路 720P60 或 4 路 720P30 视频硬件编解码,支持 H.265 视频软解码;
Ø 双核 PRU-ICSS 工业实时控制子系统,支持 EtherCAT、EtherNet/IP、PROFIBUS 等工业协议;
Ø 外设接口丰富,GPMC、USB 2.0、UART、SPI、QSPI、I2C、DCAN 等工业控制总线和接口,支持高速接口 PCle Gen2、USB 3.0、SATA 2.0;
Ø 应用于工业 PC&HMI、工业机器人、机器视觉、 医疗影像、电力自动化等领域。

2  例程编译

将光盘资料“Demo/OpenCL/OpenCL_performance_test/src”例程源码拷贝到 Ubuntu 任意目录,进入该源码目录执行以下命令对源码进行编译:

Host#    cdAM57xx/OpenCL_performance_test/src/

Host#    make SDK_INSTALL_PATH=/home/tronlong/ti-processor-sdk-linux-am57xx-evm-03.01.00.06

编译完成之后会在当前目录下生成可执行文件 canny,将其拷贝到开发板文件系统的“/home/root/”目录下。

将光盘资料“Demo/OpenCL/OpenCL_performance_test”下的 bin 文件夹以及 data 文件夹拷贝到开发板文件系统的“/home/root/”目录下。bin 文件夹下包含 opencl_off.sh 和 opencl_on.sh 测试脚本,data 文件夹下是两张大小和格式不同的图片文件 TL5728_1080p.jpg 和 lena.png。

3  例程测试

以下分别从禁用 OpenCL 功能和使能 OpenCL 功能来进行对比测试,分别采用 data 文件夹下的图片 TL5728_1080p.jpg 和 lena.png 来测试。

3.1    禁用 OpenCL

执行以下命令进行测试,先禁止运行 OpenCL 功能,然后清理缓存再进行测试,重复清理缓存和测试的步骤 5 次,如下图所示:

Target#      sourcebin/opencl_off.sh

Target#      sync;echo 3 >/proc/sys/vm/drop_caches

Target#      ./cannydata/TL5728_1080p.jpg

取以上 5 次测试结果的平均值:

Ø  BGR2GRAY tdiff=55.01ms

Ø  Canny tdiff=95.50ms

3.2    使能 OpenCL

执行以下命令进行测试,先使能 OpenCL 功能,然后清理缓存再进行测试,重复清理缓存和测试的步骤 6 次,如下图所示:

Target#      sourcebin/opencl_on.sh

Target#      sync;echo 3 >/proc/sys/vm/drop_caches

Target#      ./cannydata/TL5728_1080p.jpg

如上一共测试了 6 次,每一次测试之前记得先将系统内核缓存清理干净,否则测试结果有误。因为第一次运行时,内核在 AM57xx 上编译,OpenCL 使能时会有额外的延迟,延迟时间大约为几十秒,所以第一次测试结果不作为参考。官方解释如下:

Please note that the first run, with OpenCL on, hasadditional delay of ~1min, due to kernel compilation on AM57xx. This isconstrained to first run only, if "TI_OCL_CACHE_KERNELS" environemntvariable is set.

由以上 6 次的测试结果,取最后 5 次测试结果的平均值:

Ø  BGR2GRAY tdiff=185.38ms

Ø  Canny tdiff=17.71ms

3.3    测试结果对比

同理,按照如上操作步骤在分别禁用 OpenCL 和使能 OpenCL 的情况下,计算处理 lena.png 图片所用的时间,并对 5 次测试的数据取平均值。对比以上测试结果,如下表所示:

作用率=禁用 OpenCL 计算处理图像数据所用的时间 / 使能 OpenCL 计算处理图像数据所用的时间。

以下是官方的测试数据:

BGR2GRAY 作用率=0.345

Canny 作用率=1.690

从测试结果可以看出来,本次测试与官方测试结论是一致的:OpenCL 对 BRG2GRAY 算法不但没有性能上的提升反而存在着负面的效果;而对 Canny 算法则有着非常明显的提升效果,与官方的作用率进行对比,本次测试得出的作用率要大于官方提供的作用率数据,这与待测试的图像文件有一定的关系。

官方提供的其他 OpenCL 内核的测试数据:

链接:https://processors.wiki.ti.com/index.php/OpenCV

CopyRight © 2009-2021,易迪拓培训 All Rights Reserved,沪ICP备05048810-2号 版权所有

网站地图

Top