|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 实验说明 I+ _3 R) k: X/ M% I# p
本例程测试功能:读取指定的图像数据,然后对图像进行灰度转换和Canny算法处理,计算处理过程所耗的时间,并将处理后的图像保存到当前目录下。4 Q G. k: `( A# o: T O) G
本例程主要是测试OpenCL是否对这两种算法有优化效果,分别从禁用OpenCL和使能OpenCL两种情况来计算处理图像数据所用的时间,将测试的结果与官方提供的测试结果进行对比和验证。5 l Y/ @& P1 ^# _: _# s' I
例程源码路径:光盘“Demo/OpenCL/OpenCL_performance_test/src”3 V% ?. }; m+ S. W
可执行文件以及测试脚本路径:光盘“Demo/OpenCL/OpenCL_performance_test/bin”
$ Q- i6 b2 @. g' E0 U测试使用的图片路径:光盘“Demo/OpenCL/OpenCL_performance_test/data”
6 i( Y3 y. `& z) F0 m! a4 X测试平台:广州创龙TL5728-IDK开发板: Y' X+ G o! D$ X+ B
开发板简介:: P. @$ }. c& d* }: J+ v$ |
基于TI AM5728浮点双DSPC66x+双ARMCortex-A15工业控制及高性能音视频处理器;
) U2 e; y# @" V 强劲的视频编解码能力,支持1路1080P60或2路720P60或4路720P30视频硬件编解码,支持H.265视频软解码;
3 v3 M* M8 @, j: c0 u Z0 f! D 双核PRU-ICSS工业实时控制子系统,支持EtherCAT、EtherNet/IP、PROFIBUS等工业协议;
( p" |6 o* r- F% k$ y. |% [ 外设接口丰富,GPMC、USB 2.0、UART、SPI、QSPI、I2C、DCAN等工业控制总线和接口,支持高速接口PCle Gen2、USB 3.0、SATA 2.0;
9 d6 ?5 G+ [7 |: D4 n7 } 应用于工业 PC&HMI、工业机器人、机器视觉、 医疗影像、电力自动化等领域。
A5 Y7 ~* M1 N `$ `# Q6 W: x
+ w. d8 Z& k: f. N
/ y4 M3 w$ c0 K6 p
: x4 j8 b( D% t: |
2 例程编译5 i8 w7 J( V' @' N- ~5 H& k
将光盘资料“Demo/OpenCL/OpenCL_performance_test/src”例程源码拷贝到Ubuntu任意目录,进入该源码目录执行以下命令对源码进行编译:
Z3 G D, P' [7 gHost# cd AM57xx/OpenCL_performance_test/src/7 J* N5 t- f# q$ C4 S, r( }
Host# make SDK_INSTALL_PATH=/home/tronlong/ti-processor-sdk-linux-am57xx-evm-03.01.00.06( k$ `5 M5 x, A g6 Q
; B) x k6 ?6 a: k
% z! p3 z$ V( [* M, Y8 v( ~- A0 c$ C9 i/ D1 j
编译完成之后会在当前目录下生成可执行文件canny,将其拷贝到开发板文件系统的“/home/root/”目录下。' m- ~5 t8 n, I+ k
将光盘资料“Demo/OpenCL/OpenCL_performance_test”下的bin文件夹以及data文件夹拷贝到开发板文件系统的“/home/root/”目录下。bin文件夹下包含opencl_off.sh和opencl_on.sh测试脚本,data文件夹下是两张大小和格式不同的图片文件TL5728_1080p.jpg和lena.png。
) I8 f# w1 J+ b% @9 @+ ~$ w8 b% d3 U% D# N
/ x" p: ]. L4 _, M p9 z
& @: I+ y V" C) z0 b8 X, }) @3 例程测试2 H7 C& n0 H H8 @6 _8 J% A
以下分别从禁用OpenCL功能和使能OpenCL功能来进行对比测试,分别采用data文件夹下的图片TL5728_1080p.jpg和lena.png来测试。
2 X2 v/ [* t! Q! ^7 x* ?3.1 禁用OpenCL
3 k" U8 e4 `0 ?- I: |9 b2 e" h" n执行以下命令进行测试,先禁止运行OpenCL功能,然后清理缓存再进行测试,重复清理缓存和测试的步骤5次,如下图所示:" e( ?4 [ f+ D0 k4 @% ~3 U! z
Target# source bin/opencl_off.sh' q) }7 Y k' v) a/ J% ^% \
Target# sync; echo 3 >/proc/sys/vm/drop_caches
; t' V7 ]; L$ l$ V2 GTarget# ./canny data/TL5728_1080p.jpg
, D/ j! V3 g- T1 C% G6 j+ C9 u1 _- @: }) C! k/ F
& f( z0 ~9 W% w
) h7 g! S/ h4 ~; _1 W1 ~ y7 W取以上5次测试结果的平均值:
7 t1 p$ X* h' x+ ~ p5 \! Q# \! G BGR2GRAY tdiff=55.01ms- {: j2 R* K; y$ I5 u5 h; }
Canny tdiff=95.50ms+ I( ]+ L I" u3 M
3.2 使能OpenCL
9 d6 }. A8 j- W' v0 O& U3 O6 J执行以下命令进行测试,先使能OpenCL功能,然后清理缓存再进行测试,重复清理缓存和测试的步骤6次,如下图所示:
: ^% L# f9 G d STarget# source bin/opencl_on.sh
6 b* V4 ]$ K2 d2 X: w0 b6 I0 dTarget# sync; echo 3 >/proc/sys/vm/drop_caches& u/ [* _0 _6 n Q" u B: K- n/ E
Target# ./canny data/TL5728_1080p.jpg4 u5 O5 t1 k: w: x, c0 @. k3 H
6 j8 U0 l/ Y3 z( c
: {5 ]) D+ X# s" G( V# Y+ b6 }6 G; p" E# `4 h
如上一共测试了6次,每一次测试之前记得先将系统内核缓存清理干净,否则测试结果有误。因为第一次运行时,内核在AM57xx上编译,OpenCL使能时会有额外的延迟,延迟时间大约为几十秒,所以第一次测试结果不作为参考。官方解释如下:
, P0 z: g2 X% vPlease note that the first run, with OpenCL on, has additional delay of ~1min, due to kernel compilation on AM57xx. This is constrained to first run only, if "TI_OCL_CACHE_KERNELS" environemnt variable is set.
% h& G) p* {$ e5 Z由以上6次的测试结果,取最后5次测试结果的平均值:
T$ l n8 k7 w2 g6 T BGR2GRAY tdiff=185.38ms5 _/ m& K0 G$ k$ H
Canny tdiff=17.71ms# d+ r! \! i+ ]3 C$ T
3.3 测试结果对比
. u! T1 U8 @! R J) g2 q% U同理,按照如上操作步骤在分别禁用OpenCL和使能OpenCL的情况下,计算处理lena.png图片所用的时间,并对5次测试的数据取平均值。对比以上测试结果,如下表所示:0 m! {% t$ e0 H9 W- n
4 q7 L0 i9 u0 y9 _; B
6 C8 o0 e6 |/ @+ d0 K2 [0 `
1 o0 t4 X% X! Y' c# h# x作用率=禁用OpenCL计算处理图像数据所用的时间/使能OpenCL计算处理图像数据所用的时间。
; p* J! G+ V, A6 S* h以下是官方的测试数据:
9 `# @4 U0 ]/ Z6 h! ^# l9 ]0 R( w
: v- z( a7 I( m7 n2 t; y
: D* N' @3 g! R% @0 QBGR2GRAY作用率=0.3458 a8 Z$ K" s q2 o
Canny作用率=1.6904 ^. y# n. N& N- f9 D
从测试结果可以看出来,本次测试与官方测试结论是一致的:OpenCL对BRG2GRAY算法不但没有性能上的提升反而存在着负面的效果;而对Canny算法则有着非常明显的提升效果,与官方的作用率进行对比,本次测试得出的作用率要大于官方提供的作用率数据,这与待测试的图像文件有一定的关系。- M9 k- o5 R7 J& G
官方提供的其他OpenCL内核的测试数据:
% `) u. m, T3 d8 h: W, R }; O链接:http://processors.wiki.ti.com/index.php/OpenCV2 @7 R. p$ _1 o
: C4 D, @, p, _; {, T5 `: w! f/ p
' O; l& P/ M6 K, W: }8 b1 A) m$ p6 q
) @! h6 Y! s; @9 W: v
2 _$ n* [0 q! I6 G5 C
3 Y/ r; ~8 F( F _- _6 h3 a- F+ X
5 _9 W I3 v1 `+ O; U! c5 i
9 M! R. p X) _5 C) s; T9 n
, j- u# h5 _ t- P _) K n* L; X |
|