1 實(shí)驗(yàn)說(shuō)明 本例程測(cè)試功能:讀取指定的圖像數(shù)據(jù),然后對(duì)圖像進(jìn)行灰度轉(zhuǎn)換和Canny算法處理,計(jì)算處理過(guò)程所耗的時(shí)間,并將處理后的圖像保存到當(dāng)前目錄下。 本例程主要是測(cè)試OpenCL是否對(duì)這兩種算法有優(yōu)化效果,分別從禁用OpenCL和使能OpenCL兩種情況來(lái)計(jì)算處理圖像數(shù)據(jù)所用的時(shí)間,將測(cè)試的結(jié)果與官方提供的測(cè)試結(jié)果進(jìn)行對(duì)比和驗(yàn)證。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif 例程源碼路徑:光盤“Demo/OpenCL/OpenCL_performance_test/src” file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif 可執(zhí)行文件以及測(cè)試腳本路徑:光盤“Demo/OpenCL/OpenCL_performance_test/bin” file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif 測(cè)試使用的圖片路徑:光盤“Demo/OpenCL/OpenCL_performance_test/data” file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif 測(cè)試平臺(tái):廣州創(chuàng)龍TL5728-IDK開發(fā)板 開發(fā)板簡(jiǎn)介: Ø 基于TI AM5728浮點(diǎn)雙DSPC66x+雙ARMCortex-A15工業(yè)控制及高性能音視頻處理器; Ø 強(qiáng)勁的視頻編解碼能力,支持1路1080P60或2路720P60或4路720P30視頻硬件編解碼,支持H.265視頻軟解碼; Ø 雙核PRU-ICSS工業(yè)實(shí)時(shí)控制子系統(tǒng),支持EtherCAT、EtherNet/IP、PROFIBUS等工業(yè)協(xié)議; Ø 外設(shè)接口豐富,GPMC、USB 2.0、UART、SPI、QSPI、I2C、DCAN等工業(yè)控制總線和接口,支持高速接口PCle Gen2、USB 3.0、SATA 2.0; Ø 應(yīng)用于工業(yè) PC&HMI、工業(yè)機(jī)器人、機(jī)器視覺、 醫(yī)療影像、電力自動(dòng)化等領(lǐng)域。 ![]() 將光盤資料“Demo/OpenCL/OpenCL_performance_test/src”例程源碼拷貝到Ubuntu任意目錄,進(jìn)入該源碼目錄執(zhí)行以下命令對(duì)源碼進(jìn)行編譯: Host# cdAM57xx/OpenCL_performance_test/src/ Host# make SDK_INSTALL_PATH=/home/tronlong/ti-processor-sdk-linux-am57xx-evm-03.01.00.06 ![]() 編譯完成之后會(huì)在當(dāng)前目錄下生成可執(zhí)行文件canny,將其拷貝到開發(fā)板文件系統(tǒng)的“/home/root/”目錄下。 將光盤資料“Demo/OpenCL/OpenCL_performance_test”下的bin文件夾以及data文件夾拷貝到開發(fā)板文件系統(tǒng)的“/home/root/”目錄下。bin文件夾下包含opencl_off.sh和opencl_on.sh測(cè)試腳本,data文件夾下是兩張大小和格式不同的圖片文件TL5728_1080p.jpg和lena.png。 ![]() 以下分別從禁用OpenCL功能和使能OpenCL功能來(lái)進(jìn)行對(duì)比測(cè)試,分別采用data文件夾下的圖片TL5728_1080p.jpg和lena.png來(lái)測(cè)試。 3.1 禁用OpenCL執(zhí)行以下命令進(jìn)行測(cè)試,先禁止運(yùn)行OpenCL功能,然后清理緩存再進(jìn)行測(cè)試,重復(fù)清理緩存和測(cè)試的步驟5次,如下圖所示: Target# sourcebin/opencl_off.sh Target# sync;echo 3 >/proc/sys/vm/drop_caches Target# ./cannydata/TL5728_1080p.jpg ![]() 取以上5次測(cè)試結(jié)果的平均值: Ø BGR2GRAY tdiff=55.01ms Ø Canny tdiff=95.50ms 3.2 使能OpenCL執(zhí)行以下命令進(jìn)行測(cè)試,先使能OpenCL功能,然后清理緩存再進(jìn)行測(cè)試,重復(fù)清理緩存和測(cè)試的步驟6次,如下圖所示: Target# sourcebin/opencl_on.sh Target# sync;echo 3 >/proc/sys/vm/drop_caches Target# ./cannydata/TL5728_1080p.jpg ![]() 如上一共測(cè)試了6次,每一次測(cè)試之前記得先將系統(tǒng)內(nèi)核緩存清理干凈,否則測(cè)試結(jié)果有誤。因?yàn)榈谝淮芜\(yùn)行時(shí),內(nèi)核在AM57xx上編譯,OpenCL使能時(shí)會(huì)有額外的延遲,延遲時(shí)間大約為幾十秒,所以第一次測(cè)試結(jié)果不作為參考。官方解釋如下: 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次的測(cè)試結(jié)果,取最后5次測(cè)試結(jié)果的平均值: Ø BGR2GRAY tdiff=185.38ms Ø Canny tdiff=17.71ms 3.3 測(cè)試結(jié)果對(duì)比同理,按照如上操作步驟在分別禁用OpenCL和使能OpenCL的情況下,計(jì)算處理lena.png圖片所用的時(shí)間,并對(duì)5次測(cè)試的數(shù)據(jù)取平均值。對(duì)比以上測(cè)試結(jié)果,如下表所示: ![]() 作用率=禁用OpenCL計(jì)算處理圖像數(shù)據(jù)所用的時(shí)間/使能OpenCL計(jì)算處理圖像數(shù)據(jù)所用的時(shí)間。 以下是官方的測(cè)試數(shù)據(jù): ![]() BGR2GRAY作用率=0.345 Canny作用率=1.690 從測(cè)試結(jié)果可以看出來(lái),本次測(cè)試與官方測(cè)試結(jié)論是一致的:OpenCL對(duì)BRG2GRAY算法不但沒有性能上的提升反而存在著負(fù)面的效果;而對(duì)Canny算法則有著非常明顯的提升效果,與官方的作用率進(jìn)行對(duì)比,本次測(cè)試得出的作用率要大于官方提供的作用率數(shù)據(jù),這與待測(cè)試的圖像文件有一定的關(guān)系。 官方提供的其他OpenCL內(nèi)核的測(cè)試數(shù)據(jù): 鏈接:http://processors.wiki.ti.com/index.php/OpenCV ![]() ![]() ![]() |