EDA365电子工程师网

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

作者: chuanglong    时间: 2018-7-4 10:54
标题: 如何基于AM57x测试OpenCL的加速性能?
1  实验说明9 E, t2 _) F; z, A3 W
本例程测试功能:读取指定的图像数据,然后对图像进行灰度转换和Canny算法处理,计算处理过程所耗的时间,并将处理后的图像保存到当前目录下。
/ c: P8 P' E' W) k' b" r+ W( l7 V+ i本例程主要是测试OpenCL是否对这两种算法有优化效果,分别从禁用OpenCL和使能OpenCL两种情况来计算处理图像数据所用的时间,将测试的结果与官方提供的测试结果进行对比和验证。
" v. T. W5 v0 N" b例程源码路径:光盘“Demo/OpenCL/OpenCL_performance_test/src”4 x' q* x! B0 y& J$ X& B
可执行文件以及测试脚本路径:光盘“Demo/OpenCL/OpenCL_performance_test/bin”3 X$ j+ c* U9 J+ W' k7 z  U2 B5 n: f
测试使用的图片路径:光盘“Demo/OpenCL/OpenCL_performance_test/data”
" Z$ d" [$ ^7 t5 Z7 _* a测试平台:广州创龙TL5728-IDK开发板
7 I/ n3 B# [1 p( i( X' ^3 i开发板简介:
& u/ e: }8 b7 n 基于TI AM5728浮点双DSPC66x+双ARMCortex-A15工业控制及高性能音视频处理器;
. V8 N6 t4 [$ | 强劲的视频编解码能力,支持1路1080P60或2路720P60或4路720P30视频硬件编解码,支持H.265视频软解码;
" c; @* C2 N' y 双核PRU-ICSS工业实时控制子系统,支持EtherCAT、EtherNet/IP、PROFIBUS等工业协议;
2 B: |; r: Q! A& P/ b& i 外设接口丰富,GPMC、USB 2.0、UART、SPI、QSPI、I2C、DCAN等工业控制总线和接口,支持高速接口PCle Gen2、USB 3.0、SATA 2.0;( L0 ~: e. q5 H% L
 应用于工业 PC&HMI、工业机器人、机器视觉、 医疗影像、电力自动化等领域。& F/ b- ]* O4 n$ D

$ Z5 G2 @( E6 ]7 P* K* t! t 7 ^( g2 |  W: Y+ z
- x$ S$ _. ?" l& [' Z
2  例程编译
5 Z1 n0 P0 T! s& Z- n将光盘资料“Demo/OpenCL/OpenCL_performance_test/src”例程源码拷贝到Ubuntu任意目录,进入该源码目录执行以下命令对源码进行编译:
) N6 D( e# C, e$ gHost#        cd AM57xx/OpenCL_performance_test/src/: z; h) t& k# B! [
Host#        make SDK_INSTALL_PATH=/home/tronlong/ti-processor-sdk-linux-am57xx-evm-03.01.00.06
" `1 d. |' M2 Z2 l5 w" u7 U/ t/ J8 o& ~7 r

8 g8 R) I4 R& m
9 g/ ^! j5 Y. e1 i& H3 H: {编译完成之后会在当前目录下生成可执行文件canny,将其拷贝到开发板文件系统的“/home/root/”目录下。, O+ s1 L. Z1 U1 F7 a2 N9 B/ Y
将光盘资料“Demo/OpenCL/OpenCL_performance_test”下的bin文件夹以及data文件夹拷贝到开发板文件系统的“/home/root/”目录下。bin文件夹下包含opencl_off.sh和opencl_on.sh测试脚本,data文件夹下是两张大小和格式不同的图片文件TL5728_1080p.jpg和lena.png。
- ]4 p9 Z7 u- U$ K& v
' U2 F& u, R1 \* D/ a  c
! I  P7 ~% K% Q! Y
/ `+ K) [+ N' Z" E& G  Y$ W- `! r3  例程测试
; u3 o& ^- h0 F, F- I以下分别从禁用OpenCL功能和使能OpenCL功能来进行对比测试,分别采用data文件夹下的图片TL5728_1080p.jpg和lena.png来测试。
, c1 k2 A2 z2 `! F4 h: i5 Z) g7 y3.1        禁用OpenCL
7 o) H2 M$ X$ |执行以下命令进行测试,先禁止运行OpenCL功能,然后清理缓存再进行测试,重复清理缓存和测试的步骤5次,如下图所示:. j! Q6 c4 Y( B% ^1 K
Target#         source bin/opencl_off.sh2 F' e0 b8 t$ L$ @
Target#         sync; echo 3 >/proc/sys/vm/drop_caches
. p: X; z) f) _' A! @9 Q- DTarget#         ./canny data/TL5728_1080p.jpg' e1 O+ p& C/ ~' ]  U+ n7 R

/ V; N7 k% [# ~( J/ x) U 3 y# o! W! H/ e% ]3 S

/ ^: V% _# f6 _" ?5 `' B取以上5次测试结果的平均值:
. M1 e0 s4 N4 U  D% r$ p7 L        BGR2GRAY tdiff=55.01ms
2 S2 T7 l+ w5 a        Canny tdiff=95.50ms
1 @; K* A% M: p- F  o0 g3.2        使能OpenCL  O: d: r: _1 h' {/ f% S+ k" ?& |
执行以下命令进行测试,先使能OpenCL功能,然后清理缓存再进行测试,重复清理缓存和测试的步骤6次,如下图所示:
6 [1 o* Z' h- F  w5 G1 sTarget#         source bin/opencl_on.sh, T7 W0 \* t2 s9 H0 ]
Target#         sync; echo 3 >/proc/sys/vm/drop_caches! c, `3 p& _$ S3 N5 l3 d0 B
Target#         ./canny data/TL5728_1080p.jpg
+ q% m; ^. j2 i7 q
: V: b/ X( Q* d0 h  g6 ~ 3 }3 x: ?, I1 r" J! Z
* P: e' S. p# {
如上一共测试了6次,每一次测试之前记得先将系统内核缓存清理干净,否则测试结果有误。因为第一次运行时,内核在AM57xx上编译,OpenCL使能时会有额外的延迟,延迟时间大约为几十秒,所以第一次测试结果不作为参考。官方解释如下:" O8 R" J' q8 |0 c* A7 {! W
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.& `" K: u. o& z7 [) W
由以上6次的测试结果,取最后5次测试结果的平均值:, H; w6 X" b$ l9 T
        BGR2GRAY tdiff=185.38ms
. n+ G5 V/ D, ~$ x; p        Canny tdiff=17.71ms0 r8 Z( ^, u- u
3.3        测试结果对比/ y" d& m1 @1 k$ E# n; g) r7 q9 f
同理,按照如上操作步骤在分别禁用OpenCL和使能OpenCL的情况下,计算处理lena.png图片所用的时间,并对5次测试的数据取平均值。对比以上测试结果,如下表所示:
" [9 T1 ]2 _. }; O8 N8 `' a" Z
8 c8 K1 ]6 h# a0 ?" K( g4 k 8 z" X" R3 S; q

  J9 e' W3 }2 r- J6 }( L作用率=禁用OpenCL计算处理图像数据所用的时间/使能OpenCL计算处理图像数据所用的时间。
4 K( w' o- r& D* K- _9 N! O! _8 o以下是官方的测试数据:
9 @+ v1 d9 L4 g  T# b4 `2 e; h/ c
7 |5 r& [3 G" P0 y
/ U5 s$ b( A# o* {* L
) k- W8 {# a! f: OBGR2GRAY作用率=0.345* ?1 v  E4 I( S" \3 @
Canny作用率=1.690
4 F' D- B) K9 f: `( o: `; p; e; R从测试结果可以看出来,本次测试与官方测试结论是一致的:OpenCL对BRG2GRAY算法不但没有性能上的提升反而存在着负面的效果;而对Canny算法则有着非常明显的提升效果,与官方的作用率进行对比,本次测试得出的作用率要大于官方提供的作用率数据,这与待测试的图像文件有一定的关系。
' y% w5 X) v  A官方提供的其他OpenCL内核的测试数据:% n$ Y9 X4 {/ f" W; C0 L4 c
链接:http://processors.wiki.ti.com/index.php/OpenCV
! ]4 j9 l- r- Q- c, F, K
6 _" k) ?( g$ I. o8 t/ J5 v% G
( h5 V) s) Q, `; a7 h
8 T, r1 c1 B9 t6 K$ |; H0 f
! ?4 K( i9 L" T6 d6 i8 @/ U* z. h$ s/ ^$ k+ x. ?+ R- f
; j! v: }: ^5 a6 h) t' D4 O" q& A

: p* j7 x' ~# h* W- L! h
. Y% N* i6 f! b/ [: [




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