EDA365电子工程师网

标题: 如何基于AM57x测试OpenCL的加速性能? [打印本页]

作者: chuanglong    时间: 2018-7-4 10:54
标题: 如何基于AM57x测试OpenCL的加速性能?
1  实验说明
3 P6 s1 @' ?3 v* y! c4 d5 c% s7 ]% X本例程测试功能:读取指定的图像数据,然后对图像进行灰度转换和Canny算法处理,计算处理过程所耗的时间,并将处理后的图像保存到当前目录下。: N/ \  g; a, }& r# }
本例程主要是测试OpenCL是否对这两种算法有优化效果,分别从禁用OpenCL和使能OpenCL两种情况来计算处理图像数据所用的时间,将测试的结果与官方提供的测试结果进行对比和验证。
6 A! P" n/ ]5 D# v4 ^例程源码路径:光盘“Demo/OpenCL/OpenCL_performance_test/src”
/ n) V* r2 M+ g$ \可执行文件以及测试脚本路径:光盘“Demo/OpenCL/OpenCL_performance_test/bin”
: b4 O% n% b8 Q, `' q测试使用的图片路径:光盘“Demo/OpenCL/OpenCL_performance_test/data”5 X& s8 i9 V" n3 O. r. o
测试平台:广州创龙TL5728-IDK开发板+ A7 O* l8 H  L' J7 x. ]1 |( P& G# e
开发板简介:6 X$ r; m4 l8 E7 w0 j1 O0 C/ q
 基于TI AM5728浮点双DSPC66x+双ARMCortex-A15工业控制及高性能音视频处理器;! Z; L! K. t, X6 U% D  \" U
 强劲的视频编解码能力,支持1路1080P60或2路720P60或4路720P30视频硬件编解码,支持H.265视频软解码;3 Y+ Q, k! Q: G0 L
 双核PRU-ICSS工业实时控制子系统,支持EtherCAT、EtherNet/IP、PROFIBUS等工业协议;
3 F; p" o+ B% \ 外设接口丰富,GPMC、USB 2.0、UART、SPI、QSPI、I2C、DCAN等工业控制总线和接口,支持高速接口PCle Gen2、USB 3.0、SATA 2.0;  l" r7 T9 i. @6 G) U" e9 N
 应用于工业 PC&HMI、工业机器人、机器视觉、 医疗影像、电力自动化等领域。
( l) T( N/ n+ l" Z/ K6 o0 M0 F. A1 K
9 z! x7 f! j$ v! i

- p' Q# X+ Q1 K7 g' ^2  例程编译$ l, ]8 I+ w" b0 P
将光盘资料“Demo/OpenCL/OpenCL_performance_test/src”例程源码拷贝到Ubuntu任意目录,进入该源码目录执行以下命令对源码进行编译:
" {1 h( F5 N' X5 f! HHost#        cd AM57xx/OpenCL_performance_test/src/
6 D0 i$ a+ n. u4 lHost#        make SDK_INSTALL_PATH=/home/tronlong/ti-processor-sdk-linux-am57xx-evm-03.01.00.06
  i: L4 T2 M0 F% m
9 o# ^; c' h* f& u0 d/ s 1 F% s& l: x& K5 j
: {& m. I: {/ E4 q
编译完成之后会在当前目录下生成可执行文件canny,将其拷贝到开发板文件系统的“/home/root/”目录下。  |7 z$ E/ r  L1 |+ o
将光盘资料“Demo/OpenCL/OpenCL_performance_test”下的bin文件夹以及data文件夹拷贝到开发板文件系统的“/home/root/”目录下。bin文件夹下包含opencl_off.sh和opencl_on.sh测试脚本,data文件夹下是两张大小和格式不同的图片文件TL5728_1080p.jpg和lena.png。
5 w4 B! ~3 l3 S% z$ W# G3 \; q4 x* |8 G1 L5 v' q, `5 Y- z; |
: l' N3 C7 D$ y2 X1 c

$ z2 U! y" _) ^6 f0 C+ S3 W& P& d3  例程测试: j4 y" W) G" X- Q- ]- U8 r
以下分别从禁用OpenCL功能和使能OpenCL功能来进行对比测试,分别采用data文件夹下的图片TL5728_1080p.jpg和lena.png来测试。
0 @  N' a* R$ [( V8 e3.1        禁用OpenCL; x) q3 H2 b/ p5 n) s' ~% L% [
执行以下命令进行测试,先禁止运行OpenCL功能,然后清理缓存再进行测试,重复清理缓存和测试的步骤5次,如下图所示:2 m+ b0 l6 J% E" z' H' y' T
Target#         source bin/opencl_off.sh
3 }& ^6 |2 V3 q4 NTarget#         sync; echo 3 >/proc/sys/vm/drop_caches" H3 o, W/ b: ?2 X. K; n
Target#         ./canny data/TL5728_1080p.jpg& B  [3 Z) }; m2 R

2 T  Q4 u' I% x8 J& m. M9 _& L" i
( d; f' d$ c* X6 |% m5 ^# ^" S( @. ^3 h1 L
取以上5次测试结果的平均值:$ w9 o# a8 {% J* r% o2 t' b% f
        BGR2GRAY tdiff=55.01ms( [- g0 S. x0 {) K; W. a
        Canny tdiff=95.50ms6 ^) q* }; j6 P2 p
3.2        使能OpenCL
3 G/ }$ d* k; X0 d4 b4 Q3 p, W执行以下命令进行测试,先使能OpenCL功能,然后清理缓存再进行测试,重复清理缓存和测试的步骤6次,如下图所示:
! S5 O1 @; ^$ V3 @7 TTarget#         source bin/opencl_on.sh- c3 B2 x: x4 L& I) X
Target#         sync; echo 3 >/proc/sys/vm/drop_caches- b. t$ _- J, R' {/ u
Target#         ./canny data/TL5728_1080p.jpg/ \0 C; J  j" p& w4 V
* V( ?, ~8 k" V, _
* [( D1 |% \2 F4 a! w
. ?! V% o, `$ \, k, E
如上一共测试了6次,每一次测试之前记得先将系统内核缓存清理干净,否则测试结果有误。因为第一次运行时,内核在AM57xx上编译,OpenCL使能时会有额外的延迟,延迟时间大约为几十秒,所以第一次测试结果不作为参考。官方解释如下:
, |6 \  C: M- M; ?Please 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.+ a: a, c+ S/ _* X
由以上6次的测试结果,取最后5次测试结果的平均值:0 G2 u# W( {$ M* V7 r
        BGR2GRAY tdiff=185.38ms
- o( A* c6 X0 L$ P$ H; R* e        Canny tdiff=17.71ms
/ Z( i# U0 y" |" t5 A3.3        测试结果对比
4 H, G0 {; ]" _: y7 f同理,按照如上操作步骤在分别禁用OpenCL和使能OpenCL的情况下,计算处理lena.png图片所用的时间,并对5次测试的数据取平均值。对比以上测试结果,如下表所示:$ z: u; A0 n; I- y6 K  W

9 G+ M  @& L# w" A$ [ 6 G- ^  B: G5 p

+ b+ V3 @7 l$ L2 u- g; l3 h9 |作用率=禁用OpenCL计算处理图像数据所用的时间/使能OpenCL计算处理图像数据所用的时间。% O3 z2 v! C5 K: s$ C
以下是官方的测试数据:
( Y) z3 S' Q  ]. A) p
- v! u3 d7 b/ B. t/ j) C* X
( g9 C; b; Q, R3 z! n1 v! I5 E. r7 U+ n- ~
BGR2GRAY作用率=0.345
( }0 m0 v. U) R: B# e2 Y, QCanny作用率=1.690# L' r2 ^/ e' v/ V; ~
从测试结果可以看出来,本次测试与官方测试结论是一致的:OpenCL对BRG2GRAY算法不但没有性能上的提升反而存在着负面的效果;而对Canny算法则有着非常明显的提升效果,与官方的作用率进行对比,本次测试得出的作用率要大于官方提供的作用率数据,这与待测试的图像文件有一定的关系。
* ^( ?! ~! s) g( E! P9 Z官方提供的其他OpenCL内核的测试数据:& S! k5 e& e" o5 K& l8 q1 e
链接:http://processors.wiki.ti.com/index.php/OpenCV
- q8 u0 X" s1 R8 y' J0 ^( ^
' k/ }/ F  ~+ [7 q ) C2 U5 n4 `1 ~( O
) e- u9 q7 o. V) S7 j

  ?+ Z8 y+ C7 R, T" h- O3 Y2 q# z) O( y9 O) \

, e/ s" E7 y, h7 c; j5 u) Y, Y& Q3 H0 X  J6 D% G" J6 q8 s

8 q, Y+ [( {, G8 m  y




欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2