|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 实验说明' \4 j& x4 V: w7 ?6 {
本例程测试功能:读取指定的图像数据,然后对图像进行灰度转换和Canny算法处理,计算处理过程所耗的时间,并将处理后的图像保存到当前目录下。
/ K2 V0 Q% f( ]/ E' q本例程主要是测试OpenCL是否对这两种算法有优化效果,分别从禁用OpenCL和使能OpenCL两种情况来计算处理图像数据所用的时间,将测试的结果与官方提供的测试结果进行对比和验证。
2 R' C. ~' e6 }/ K; d例程源码路径:光盘“Demo/OpenCL/OpenCL_performance_test/src”
9 ]) I9 Q1 W3 n" i可执行文件以及测试脚本路径:光盘“Demo/OpenCL/OpenCL_performance_test/bin”
( F1 v! x5 k! J, a/ {+ t测试使用的图片路径:光盘“Demo/OpenCL/OpenCL_performance_test/data”
$ J* U) [; X! |5 k, V测试平台:广州创龙TL5728-IDK开发板3 P6 D3 e/ W# d3 b8 P
开发板简介:
3 m% H, g8 D4 K! I' n' N 基于TI AM5728浮点双DSPC66x+双ARMCortex-A15工业控制及高性能音视频处理器;( F2 O8 e$ R; _7 ^4 m" }
强劲的视频编解码能力,支持1路1080P60或2路720P60或4路720P30视频硬件编解码,支持H.265视频软解码;+ m- Y- t* B- R( Z
双核PRU-ICSS工业实时控制子系统,支持EtherCAT、EtherNet/IP、PROFIBUS等工业协议;
4 r: z2 K/ m: F0 n( p; x! r 外设接口丰富,GPMC、USB 2.0、UART、SPI、QSPI、I2C、DCAN等工业控制总线和接口,支持高速接口PCle Gen2、USB 3.0、SATA 2.0;, T3 l0 U# Z+ N3 q
应用于工业 PC&HMI、工业机器人、机器视觉、 医疗影像、电力自动化等领域。
+ N) q E) D& j0 ?4 m7 r' b1 D) u8 r5 ?; b& ~
0 \3 C1 i5 q' n0 g
3 y" f1 l# w0 @5 e* [8 k2 例程编译
/ p% c/ X: h3 k R1 q4 F' N' [& @将光盘资料“Demo/OpenCL/OpenCL_performance_test/src”例程源码拷贝到Ubuntu任意目录,进入该源码目录执行以下命令对源码进行编译:; G1 V1 M$ ~7 Z( z
Host# cd AM57xx/OpenCL_performance_test/src/
; l( h6 E- I# ^ z2 J8 m8 yHost# make SDK_INSTALL_PATH=/home/tronlong/ti-processor-sdk-linux-am57xx-evm-03.01.00.06$ {5 y" o" v9 |+ h2 _
* S: c H- O1 y% g
; _ T' i0 ]. n6 c* a5 O; p. a! I9 H: E4 ]7 Y; @$ [' _
编译完成之后会在当前目录下生成可执行文件canny,将其拷贝到开发板文件系统的“/home/root/”目录下。& ^% I- o4 m- P( Y0 p1 L; T
将光盘资料“Demo/OpenCL/OpenCL_performance_test”下的bin文件夹以及data文件夹拷贝到开发板文件系统的“/home/root/”目录下。bin文件夹下包含opencl_off.sh和opencl_on.sh测试脚本,data文件夹下是两张大小和格式不同的图片文件TL5728_1080p.jpg和lena.png。1 z2 h' J2 ?0 u q6 @
J3 X' u( q& r/ ^% A3 M
5 p9 X0 v+ Y% E. W" n& J: S
' k: y% E" k" q! j; o( O: }
3 例程测试
! z+ w% ?5 C6 Q' O. Z. R! g! N6 P" k以下分别从禁用OpenCL功能和使能OpenCL功能来进行对比测试,分别采用data文件夹下的图片TL5728_1080p.jpg和lena.png来测试。
% ?6 V# Z7 G ~. S+ i3.1 禁用OpenCL3 p: `0 [6 L( v9 U
执行以下命令进行测试,先禁止运行OpenCL功能,然后清理缓存再进行测试,重复清理缓存和测试的步骤5次,如下图所示:( R0 A( x. C" |7 i, R4 d4 a* c
Target# source bin/opencl_off.sh" l, T G) ]1 m# A7 f* S' W3 @
Target# sync; echo 3 >/proc/sys/vm/drop_caches
}7 }' i3 C% {1 qTarget# ./canny data/TL5728_1080p.jpg" i3 q* X u( G6 v
+ J; b- u6 D( ?8 s, L: C" H
1 g; B2 B( u7 C- k* j% i
4 j3 G, ]" z* ?+ G取以上5次测试结果的平均值:" ] x: |" J, |4 d
BGR2GRAY tdiff=55.01ms8 v6 n$ Y0 V" G/ q: Y+ z- R
Canny tdiff=95.50ms. {2 V/ R# j6 [& x" `0 [
3.2 使能OpenCL
+ z _% F: B% @' c- z4 L t( _* G执行以下命令进行测试,先使能OpenCL功能,然后清理缓存再进行测试,重复清理缓存和测试的步骤6次,如下图所示:
- Q: ]) L8 I* G- ?# pTarget# source bin/opencl_on.sh7 O4 y0 m! O7 |
Target# sync; echo 3 >/proc/sys/vm/drop_caches
2 m) d! J1 V) A9 e9 Y. LTarget# ./canny data/TL5728_1080p.jpg" {' t7 c) r. c+ M9 x3 m+ F, p
/ {9 g- S4 d8 `: l
1 S8 ~; M" m2 F
1 o9 |# v$ C8 ~& v+ c% I2 N6 w9 i$ e
如上一共测试了6次,每一次测试之前记得先将系统内核缓存清理干净,否则测试结果有误。因为第一次运行时,内核在AM57xx上编译,OpenCL使能时会有额外的延迟,延迟时间大约为几十秒,所以第一次测试结果不作为参考。官方解释如下:
; k* k# R* m5 {8 tPlease 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.8 f! e1 D/ F- }0 G8 @8 x1 r" p$ S
由以上6次的测试结果,取最后5次测试结果的平均值:
# t Z% t+ U, ]" _ BGR2GRAY tdiff=185.38ms, p7 D* u L% e8 X% ^
Canny tdiff=17.71ms. U$ v8 Z+ V& Z& \
3.3 测试结果对比3 a8 B) l$ u' L2 \, G
同理,按照如上操作步骤在分别禁用OpenCL和使能OpenCL的情况下,计算处理lena.png图片所用的时间,并对5次测试的数据取平均值。对比以上测试结果,如下表所示:
$ J: U4 A) q/ P
) D9 N j. s6 s) p# C
2 y4 c( y; e! y7 X- D# y3 q% W% h8 e# F
作用率=禁用OpenCL计算处理图像数据所用的时间/使能OpenCL计算处理图像数据所用的时间。( f+ p; @2 b1 f% n" ]0 z" M
以下是官方的测试数据:
, ]7 y& |4 K/ f. T# I: ?7 l- r3 N2 }" }! R s
" N! D0 Y- a3 T8 A l) B/ C5 T. y% b, n
BGR2GRAY作用率=0.345
9 {% `; Z9 y0 j! o0 N. vCanny作用率=1.690
9 |+ n4 I D) D' a从测试结果可以看出来,本次测试与官方测试结论是一致的:OpenCL对BRG2GRAY算法不但没有性能上的提升反而存在着负面的效果;而对Canny算法则有着非常明显的提升效果,与官方的作用率进行对比,本次测试得出的作用率要大于官方提供的作用率数据,这与待测试的图像文件有一定的关系。! F0 T2 s! K) Q& j- V8 e. m
官方提供的其他OpenCL内核的测试数据:
" r1 M w E e链接:http://processors.wiki.ti.com/index.php/OpenCV
5 I- v( L( F: f6 X' }# m& Z2 ?- ]. R2 P7 v( P$ @
" R, T7 O- E3 d% C, O6 w
+ _' Y& C& T7 t* h' x
, F3 f9 [2 E) j! C. s# M! l2 w
) z* R. l1 k) P, R1 B1 x
# }1 C% V# J# b2 Y7 O8 X9 ^2 D/ s
& w/ T6 y) r3 _* t. e
6 \! P( {8 [7 T |
|