SlideShare a Scribd company logo
1 of 38
©SIProp Project, 2006-2008 1
OpenCV acceleration battle:
OpenCL on Firefly-RK3288(MALI-T764)
vs.
FPGA on ZedBoard(Zynq-7020)
Noritsuna Imamura
noritusna@siprop.org
©SIProp Project, 2006-2008 2
Agenda
OpenCV for OpenCL
OpenCV for FPGA
©SIProp Project, 2006-2008 3
!!!!!!ATTENTION!!!!!!
This Slide is NOT
OpenCL for GPU vs. FPGA
©SIProp Project, 2006-2008 4
OpenCL for FPGA
Today’s Agenda
OpenCV for OpenCL
OpenCV for FPGA
©SIProp Project, 2006-2008 5
OpenCL SDK for FPGA
Altera SDK for OpenCL
http://www.altera.com/products/software/opencl/op
encl-index.html
Xilinx SDAccel
http://www.xilinx.com/products/design-
tools/sdx/sdaccel.html
©SIProp Project, 2006-2008 6
Advantage of FPGA
Direct connect Peripherals to FPGA.
GPGPU must bypass CPU/Memory bus.
Ex. Network peripheral
©SIProp Project, 2006-2008 7
About OpenCL for FPGA
Programming Language for FPGA
OpenCL Compiler for RTL(Register Transfer Level)
OpenCL Runtime Library
Why for usage?
For “Software Engineers”
Easy to Program for FPGA
©SIProp Project, 2006-2008 8
Advantage of OpenCL for FPGA
High-Level Synthesis
C/C++/Java/Python for HDL
FPGA features
No Memory
FPGA has SRAM/SDRAM. But small size & big overhead.
Parallel Processing
Input number is Parallel number.
©SIProp Project, 2006-2008 9
Streaming Processing for No Memory
Ex. Effect(pixel by pixel)
©SIProp Project, 2006-2008 10
Pipeline Processing for Parallel
Ex. OpenGL Architecture
©SIProp Project, 2006-2008 11
OpenCV for OpenCL
©SIProp Project, 2006-2008 12
About OpenCL for OpenCV 1/2
OpenCL Functions for OpenCV
cv::ocl::xxx
Wrapped Functions as OpenCV Functions
1. #include <opencv2/ocl/ocl.hpp>
2. int main(int argc, char** argv) {
3. cv::Mat matIn = cv::imread("hoge.png"), matDisp;
4. cv::ocl::oclMat oclIn(matIn), oclOut;
5. cv::ocl::cvtColor(oclIn, oclOut, cv::COLOR_BGR2GRAY);
6. oclOut.download(matDisp);
7. return 0;
8. }
©SIProp Project, 2006-2008 13
About OpenCL for OpenCV 2/2
Customized OpenCL for OpenCV
Header
opencv2/ocl/ocl.hpp
modules/core/src/opencl/runtime/generator/
Source Code
modules/core/src/opencl/*.cl
OpenCL feature
NOT Binary Compatibility
©SIProp Project, 2006-2008 14
Problem on Android
Required put *.CL files on same place of App
But Android App is APK file. Not single binary.
-> MUST build OpenCV.so w/your CL file
“OpenCV with OpenCL for Android NDK”
How to Build OpenCV for Android System
https://github.com/noritsuna/OpenCVwithOpenCL4Android
NDK
©SIProp Project, 2006-2008 15
OpenCV for FPGA
©SIProp Project, 2006-2008 16
Zynq-7000 Series
Dual ARM Cortex-A9 + FPGA
©SIProp Project, 2006-2008 17
Zynq + FPGA(IP Core)
Zynq + PWM IP Core
©SIProp Project, 2006-2008 18
Zynq Development Board
ZedBoard
USD495, Zynq-7020
ZYBO
USD189, Zynq-7010
Checkpoint
With Vivado(IDE) License?
http://www.digilentinc.com/
©SIProp Project, 2006-2008 19
Advantage of ARM + FPGA
Full Functions of OpenCV
-> Required Super Large FPGA
OpneCV Functions
Good Fit for CPU
Functions
Good Fit for FPGA
Functions
©SIProp Project, 2006-2008 20
OpenCV Sample App for Zynq
“Accelerating OpenCV Applications with Zynq-
7000 All Programmable SoC using Vivado HLS
Video Libraries”
http://www.xilinx.com/support/documentation/application_n
otes/xapp1167.pdf
Development Tools
Vivado HLS(High-Level Synthesizer)
Developing Environment for HLS
Vivado
IP Designer for Xilinx FPGA
ISE
Expired
©SIProp Project, 2006-2008 21
OpenCV is included in Vivado HSL
©SIProp Project, 2006-2008 22
Not Found…
©SIProp Project, 2006-2008 23
I guess “hls_opencv.h” is OpenCV for HLS.
Can’t Use…
©SIProp Project, 2006-2008 24
Not Synthesizable…
©SIProp Project, 2006-2008 25
“hls_video.h” has OpenCV for HLS
©SIProp Project, 2006-2008 26
OpenCV Sample App for Zynq
“Accelerating OpenCV Applications with Zynq-
7000 All Programmable SoC using Vivado HLS
Video Libraries”
http://www.xilinx.com/support/documentation/application_n
otes/xapp1167.pdf
Detail
Dilate Filter with FAST feature point for FullHD
Video(1920x1080) Streaming
©SIProp Project, 2006-2008 27
1. void image_filter(AXI_STREAM& input, AXI_STREAM& output, int rows, int cols)
2. {
3. //Create AXI streaming interfaces for the core
4. #pragma HLS RESOURCE variable=input core=AXIS metadata="-bus_bundle
INPUT_STREAM"
5. #pragma HLS RESOURCE variable=output core=AXIS metadata="-bus_bundle
OUTPUT_STREAM"
6. #pragma HLS interface ap_stable port=rows
7. #pragma HLS interface ap_stable port=cols
8. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _src(rows,cols);
9. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _dst(rows,cols);
10. #pragma HLS dataflow
11. hls::AXIvideo2Mat(input, _src);
12. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src0(rows,cols);
13. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src1(rows,cols);
14. #pragma HLS stream depth=20000 variable=src1.data_stream
15. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> mask(rows,cols);
16. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> dmask(rows,cols);
17. hls::Scalar<3,unsigned char> color(255,0,0);
18. hls::Duplicate(_src,src0,src1);
19. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> gray(rows,cols);
20. hls::CvtColor<HLS_BGR2GRAY>(src0,gray);
21. hls::FASTX(gray,mask,20,true);
22. hls::Dilate(mask,dmask);
23. hls::PaintMask(src1,dmask,_dst,color);
24. hls::Mat2AXIvideo(_dst, output);
25. }
©SIProp Project, 2006-2008 28
FAST() function
FAST (Features from Accelerated Segment
Test) algorithm
One of the features detection algorithm
©SIProp Project, 2006-2008 29
Dilate() function
Dilating pixels function
One of the filter function
©SIProp Project, 2006-2008 30
How to Implement ARM + FPGA?
Full Functions of OpenCV
-> Required Super Large FPGA
OpneCV Functions
Good Fit for CPU
Functions
Good Fit for FPGA
Functions
©SIProp Project, 2006-2008 31
Generated “IP Core + Header”=“Driver”
©SIProp Project, 2006-2008 32
Zynq + FPGA(IP Core)
Zynq + PWM IP Core on Vivado(≠Vivado HSL)
©SIProp Project, 2006-2008 33
1. void image_filter(AXI_STREAM& input, AXI_STREAM& output, int rows, int cols)
2. {
3. //Create AXI streaming interfaces for the core
4. #pragma HLS RESOURCE variable=input core=AXIS metadata="-bus_bundle
INPUT_STREAM"
5. #pragma HLS RESOURCE variable=output core=AXIS metadata="-bus_bundle
OUTPUT_STREAM"
6. #pragma HLS interface ap_stable port=rows
7. #pragma HLS interface ap_stable port=cols
8. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _src(rows,cols);
9. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _dst(rows,cols);
10. #pragma HLS dataflow
11. hls::AXIvideo2Mat(input, _src);
12. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src0(rows,cols);
13. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src1(rows,cols);
14. #pragma HLS stream depth=20000 variable=src1.data_stream
15. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> mask(rows,cols);
16. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> dmask(rows,cols);
17. hls::Scalar<3,unsigned char> color(255,0,0);
18. hls::Duplicate(_src,src0,src1);
19. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> gray(rows,cols);
20. hls::CvtColor<HLS_BGR2GRAY>(src0,gray);
21. hls::FASTX(gray,mask,20,true);
22. hls::Dilate(mask,dmask);
23. hls::PaintMask(src1,dmask,_dst,color);
24. hls::Mat2AXIvideo(_dst, output);
25. }
©SIProp Project, 2006-2008 34
How to USE “IP Core & Headers”
Build Binaries
FSBL(1st Boot Loader) = x-loader, u-boot
Linux Kernel for Your System
Ubuntu/Android for System (Option)
How to Build Android 5.0 for ZedBoard
http://www.slideshare.net/noritsuna/zedroid-
android-50-and-later-on-zedboard
©SIProp Project, 2006-2008 35
1. void image_filter(AXI_STREAM& input, AXI_STREAM& output, int rows, int cols)
2. {
3. //Create AXI streaming interfaces for the core
4. #pragma HLS RESOURCE variable=input core=AXIS metadata="-bus_bundle
INPUT_STREAM"
5. #pragma HLS RESOURCE variable=output core=AXIS metadata="-bus_bundle
OUTPUT_STREAM"
6. #pragma HLS interface ap_stable port=rows
7. #pragma HLS interface ap_stable port=cols
8. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _src(rows,cols);
9. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _dst(rows,cols);
10. #pragma HLS dataflow
11. hls::AXIvideo2Mat(input, _src);
12. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src0(rows,cols);
13. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src1(rows,cols);
14. #pragma HLS stream depth=20000 variable=src1.data_stream
15. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> mask(rows,cols);
16. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> dmask(rows,cols);
17. hls::Scalar<3,unsigned char> color(255,0,0);
18. hls::Duplicate(_src,src0,src1);
19. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> gray(rows,cols);
20. hls::CvtColor<HLS_BGR2GRAY>(src0,gray);
21. hls::FASTX(gray,mask,20,true);
22. hls::Dilate(mask,dmask);
23. hls::PaintMask(src1,dmask,_dst,color);
24. hls::Mat2AXIvideo(_dst, output);
25. }
©SIProp Project, 2006-2008 36
Can’t Use All Standard C/C++ Libs
©SIProp Project, 2006-2008 37
OpenCV acceleration battle:
OpenCL on Firefly-RK3288(MALI-T764)
vs.
FPGA on ZedBoard(Zynq-7020)
Noritsuna Imamura
noritusna@siprop.org
©SIProp Project, 2006-2008 38
Which way is faster?
A. OpenCV for FPGA >>>> OpenCV for OpenCL
According to Xilinx “1000 times over faster”.
Clock Speed
FPGA = 150MHz, ARM-T764 = 650MHz
Direct connect Peripherals to FPGA.
GPGPU must bypass CPU/Memory bus.

More Related Content

What's hot

【CNDO2021】Calicoのデプロイをミスって本番クラスタを壊しそうになった話
【CNDO2021】Calicoのデプロイをミスって本番クラスタを壊しそうになった話【CNDO2021】Calicoのデプロイをミスって本番クラスタを壊しそうになった話
【CNDO2021】Calicoのデプロイをミスって本番クラスタを壊しそうになった話katsuya kawabe
 
Introduction to OpenCL, 2010
Introduction to OpenCL, 2010Introduction to OpenCL, 2010
Introduction to OpenCL, 2010Tomasz Bednarz
 
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The UglyMin-Yih Hsu
 
02 ai inference acceleration with components all in open hardware: opencapi a...
02 ai inference acceleration with components all in open hardware: opencapi a...02 ai inference acceleration with components all in open hardware: opencapi a...
02 ai inference acceleration with components all in open hardware: opencapi a...Yutaka Kawai
 
Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
 
Software Define your Current Storage with Opensource
Software Define your Current Storage with OpensourceSoftware Define your Current Storage with Opensource
Software Define your Current Storage with OpensourceAntonio Romeo
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopLinaro
 
OpenCV DNN module vs. Ours method
OpenCV DNN module vs. Ours method OpenCV DNN module vs. Ours method
OpenCV DNN module vs. Ours method Ryosuke Tanno
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能Kohei Tokunaga
 
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, KyivKubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, KyivAleksey Asiutin
 
Best practices for optimizing Red Hat platforms for large scale datacenter de...
Best practices for optimizing Red Hat platforms for large scale datacenter de...Best practices for optimizing Red Hat platforms for large scale datacenter de...
Best practices for optimizing Red Hat platforms for large scale datacenter de...Jeremy Eder
 
A Kernel of Truth: Intrusion Detection and Attestation with eBPF
A Kernel of Truth: Intrusion Detection and Attestation with eBPFA Kernel of Truth: Intrusion Detection and Attestation with eBPF
A Kernel of Truth: Intrusion Detection and Attestation with eBPFoholiab
 
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6David Pasek
 
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver MeetupDaneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver MeetupShannon McFarland
 
Using Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated ApplicationsUsing Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated ApplicationsNVIDIA
 
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...Linaro
 
ARM Cortex-A53 Errata on Andoid
ARM Cortex-A53 Errata on AndoidARM Cortex-A53 Errata on Andoid
ARM Cortex-A53 Errata on Andoidhidenorly
 

What's hot (20)

【CNDO2021】Calicoのデプロイをミスって本番クラスタを壊しそうになった話
【CNDO2021】Calicoのデプロイをミスって本番クラスタを壊しそうになった話【CNDO2021】Calicoのデプロイをミスって本番クラスタを壊しそうになった話
【CNDO2021】Calicoのデプロイをミスって本番クラスタを壊しそうになった話
 
Introduction to OpenCL, 2010
Introduction to OpenCL, 2010Introduction to OpenCL, 2010
Introduction to OpenCL, 2010
 
LEGaTO Integration
LEGaTO IntegrationLEGaTO Integration
LEGaTO Integration
 
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
 
02 ai inference acceleration with components all in open hardware: opencapi a...
02 ai inference acceleration with components all in open hardware: opencapi a...02 ai inference acceleration with components all in open hardware: opencapi a...
02 ai inference acceleration with components all in open hardware: opencapi a...
 
Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Using Qt under LGPLv3
Using Qt under LGPLv3Using Qt under LGPLv3
Using Qt under LGPLv3
 
Software Define your Current Storage with Opensource
Software Define your Current Storage with OpensourceSoftware Define your Current Storage with Opensource
Software Define your Current Storage with Opensource
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
OpenCV DNN module vs. Ours method
OpenCV DNN module vs. Ours method OpenCV DNN module vs. Ours method
OpenCV DNN module vs. Ours method
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, KyivKubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
 
Best practices for optimizing Red Hat platforms for large scale datacenter de...
Best practices for optimizing Red Hat platforms for large scale datacenter de...Best practices for optimizing Red Hat platforms for large scale datacenter de...
Best practices for optimizing Red Hat platforms for large scale datacenter de...
 
A Kernel of Truth: Intrusion Detection and Attestation with eBPF
A Kernel of Truth: Intrusion Detection and Attestation with eBPFA Kernel of Truth: Intrusion Detection and Attestation with eBPF
A Kernel of Truth: Intrusion Detection and Attestation with eBPF
 
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
 
Andes open cl for RISC-V
Andes open cl for RISC-VAndes open cl for RISC-V
Andes open cl for RISC-V
 
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver MeetupDaneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
 
Using Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated ApplicationsUsing Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated Applications
 
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
 
ARM Cortex-A53 Errata on Andoid
ARM Cortex-A53 Errata on AndoidARM Cortex-A53 Errata on Andoid
ARM Cortex-A53 Errata on Andoid
 

Viewers also liked (8)

Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
 
Radiation Test -Raspberry PI Zero-
Radiation Test -Raspberry PI Zero-Radiation Test -Raspberry PI Zero-
Radiation Test -Raspberry PI Zero-
 
How to setup mastodon in chinese
How to setup mastodon in chineseHow to setup mastodon in chinese
How to setup mastodon in chinese
 
Protocol of the DNA Extraction in Kitchen
Protocol of the DNA Extraction in KitchenProtocol of the DNA Extraction in Kitchen
Protocol of the DNA Extraction in Kitchen
 
將DNA在廚房抽出的程序
將DNA在廚房抽出的程序將DNA在廚房抽出的程序
將DNA在廚房抽出的程序
 
5000円で誰でも作れる新世代衛星地上局
5000円で誰でも作れる新世代衛星地上局5000円で誰でも作れる新世代衛星地上局
5000円で誰でも作れる新世代衛星地上局
 
All list of the measuring machines for microwave
All list of the measuring machines for microwaveAll list of the measuring machines for microwave
All list of the measuring machines for microwave
 
衛星追尾用パラボラアンテナ建設記
衛星追尾用パラボラアンテナ建設記衛星追尾用パラボラアンテナ建設記
衛星追尾用パラボラアンテナ建設記
 

Similar to OpenCV acceleration battle:OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on ZedBoard(Zynq-7020)

“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the CoreC4Media
 
SFScon 22 - Roberto Innocenti - Start Enjoy Yourself with Open Hardware POWER...
SFScon 22 - Roberto Innocenti - Start Enjoy Yourself with Open Hardware POWER...SFScon 22 - Roberto Innocenti - Start Enjoy Yourself with Open Hardware POWER...
SFScon 22 - Roberto Innocenti - Start Enjoy Yourself with Open Hardware POWER...South Tyrol Free Software Conference
 
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATIONFROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATIONieijjournal
 
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATIONFROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATIONieijjournal
 
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATIONFROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATIONieijjournal1
 
Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)Logico
 
LEGaTO: Software Stack Runtimes
LEGaTO: Software Stack RuntimesLEGaTO: Software Stack Runtimes
LEGaTO: Software Stack RuntimesLEGATO project
 
06 EPI: the European approach for Exascale ages
06 EPI: the European approach for Exascale ages06 EPI: the European approach for Exascale ages
06 EPI: the European approach for Exascale agesRCCSRENKEI
 
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linaro
 
LCU14 310- Cisco ODP v2
LCU14 310- Cisco ODP v2LCU14 310- Cisco ODP v2
LCU14 310- Cisco ODP v2Linaro
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceSamsung Open Source Group
 
Pushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationPushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationDavid Delabassee
 
An Update on the European Processor Initiative
An Update on the European Processor InitiativeAn Update on the European Processor Initiative
An Update on the European Processor Initiativeinside-BigData.com
 
Instant scaling and deployment of Vitis Libraries on Alveo clusters using InA...
Instant scaling and deployment of Vitis Libraries on Alveo clusters using InA...Instant scaling and deployment of Vitis Libraries on Alveo clusters using InA...
Instant scaling and deployment of Vitis Libraries on Alveo clusters using InA...Christoforos Kachris
 
RISC-V growth and successes in technology and industry - embedded world 2021
RISC-V growth and successes in technology and industry - embedded world 2021RISC-V growth and successes in technology and industry - embedded world 2021
RISC-V growth and successes in technology and industry - embedded world 2021RISC-V International
 

Similar to OpenCV acceleration battle:OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on ZedBoard(Zynq-7020) (20)

“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core
 
Varun_resume
Varun_resumeVarun_resume
Varun_resume
 
SFScon 22 - Roberto Innocenti - Start Enjoy Yourself with Open Hardware POWER...
SFScon 22 - Roberto Innocenti - Start Enjoy Yourself with Open Hardware POWER...SFScon 22 - Roberto Innocenti - Start Enjoy Yourself with Open Hardware POWER...
SFScon 22 - Roberto Innocenti - Start Enjoy Yourself with Open Hardware POWER...
 
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATIONFROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
 
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATIONFROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
 
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATIONFROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
FROM FPGA TO ASIC IMPLEMENTATION OF AN OPENRISC BASED SOC FOR VOIP APPLICATION
 
FPGA MeetUp
FPGA MeetUpFPGA MeetUp
FPGA MeetUp
 
Tools for FPGA Development
Tools for FPGA DevelopmentTools for FPGA Development
Tools for FPGA Development
 
Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)
 
LEGaTO: Software Stack Runtimes
LEGaTO: Software Stack RuntimesLEGaTO: Software Stack Runtimes
LEGaTO: Software Stack Runtimes
 
06 EPI: the European approach for Exascale ages
06 EPI: the European approach for Exascale ages06 EPI: the European approach for Exascale ages
06 EPI: the European approach for Exascale ages
 
How to Use OpenMP on Native Activity
How to Use OpenMP on Native ActivityHow to Use OpenMP on Native Activity
How to Use OpenMP on Native Activity
 
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
 
LCU14 310- Cisco ODP v2
LCU14 310- Cisco ODP v2LCU14 310- Cisco ODP v2
LCU14 310- Cisco ODP v2
 
OCP-SPIRIT-Final-v5
OCP-SPIRIT-Final-v5OCP-SPIRIT-Final-v5
OCP-SPIRIT-Final-v5
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
 
Pushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationPushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home Automation
 
An Update on the European Processor Initiative
An Update on the European Processor InitiativeAn Update on the European Processor Initiative
An Update on the European Processor Initiative
 
Instant scaling and deployment of Vitis Libraries on Alveo clusters using InA...
Instant scaling and deployment of Vitis Libraries on Alveo clusters using InA...Instant scaling and deployment of Vitis Libraries on Alveo clusters using InA...
Instant scaling and deployment of Vitis Libraries on Alveo clusters using InA...
 
RISC-V growth and successes in technology and industry - embedded world 2021
RISC-V growth and successes in technology and industry - embedded world 2021RISC-V growth and successes in technology and industry - embedded world 2021
RISC-V growth and successes in technology and industry - embedded world 2021
 

More from Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)

More from Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院) (17)

What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
半導体製造(TinyTapeout)に挑戦しよう!
半導体製造(TinyTapeout)に挑戦しよう!半導体製造(TinyTapeout)に挑戦しよう!
半導体製造(TinyTapeout)に挑戦しよう!
 
Introduction of ISHI-KAI with OpenMPW
Introduction of ISHI-KAI with OpenMPWIntroduction of ISHI-KAI with OpenMPW
Introduction of ISHI-KAI with OpenMPW
 
Kernel/VMレイヤーを自分色に染める!By ISHI会
Kernel/VMレイヤーを自分色に染める!By ISHI会Kernel/VMレイヤーを自分色に染める!By ISHI会
Kernel/VMレイヤーを自分色に染める!By ISHI会
 
Principle Representation of The 8 Qubits Quantum Computer by RaspberryPi
Principle Representation of The 8 Qubits Quantum Computer by RaspberryPiPrinciple Representation of The 8 Qubits Quantum Computer by RaspberryPi
Principle Representation of The 8 Qubits Quantum Computer by RaspberryPi
 
Microwaveguquantum
MicrowaveguquantumMicrowaveguquantum
Microwaveguquantum
 
The easiest way of setup QuTiP on Windows
The easiest way of setup QuTiP on WindowsThe easiest way of setup QuTiP on Windows
The easiest way of setup QuTiP on Windows
 
GNU Radio Study for Super beginner
GNU Radio Study for Super beginnerGNU Radio Study for Super beginner
GNU Radio Study for Super beginner
 
The Self-Contained SDR Satellite Grand Station with Raspberry Pi 3
The Self-Contained SDR Satellite Grand Station with Raspberry Pi 3The Self-Contained SDR Satellite Grand Station with Raspberry Pi 3
The Self-Contained SDR Satellite Grand Station with Raspberry Pi 3
 
Self‐Contained SDR Grand Station with Raspberry Pi 3
Self‐Contained SDR Grand Station with Raspberry Pi 3Self‐Contained SDR Grand Station with Raspberry Pi 3
Self‐Contained SDR Grand Station with Raspberry Pi 3
 
3D Printed Google Cardboard for workshop
3D Printed Google Cardboard for workshop3D Printed Google Cardboard for workshop
3D Printed Google Cardboard for workshop
 
計算機(物理)
計算機(物理)計算機(物理)
計算機(物理)
 
Resume
ResumeResume
Resume
 
How to Make a Scanning Drone in Chinese
How to Make a Scanning Drone in ChineseHow to Make a Scanning Drone in Chinese
How to Make a Scanning Drone in Chinese
 
How to Use OpenGL/ES on Native Activity
How to Use OpenGL/ES on Native ActivityHow to Use OpenGL/ES on Native Activity
How to Use OpenGL/ES on Native Activity
 
How to Make Hand Detector on Native Activity with OpenCV
How to Make Hand Detector on Native Activity with OpenCVHow to Make Hand Detector on Native Activity with OpenCV
How to Make Hand Detector on Native Activity with OpenCV
 
How to Customize Android Framework&System
How to Customize Android Framework&SystemHow to Customize Android Framework&System
How to Customize Android Framework&System
 

Recently uploaded

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Recently uploaded (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

OpenCV acceleration battle:OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on ZedBoard(Zynq-7020)

  • 1. ©SIProp Project, 2006-2008 1 OpenCV acceleration battle: OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on ZedBoard(Zynq-7020) Noritsuna Imamura noritusna@siprop.org
  • 2. ©SIProp Project, 2006-2008 2 Agenda OpenCV for OpenCL OpenCV for FPGA
  • 3. ©SIProp Project, 2006-2008 3 !!!!!!ATTENTION!!!!!! This Slide is NOT OpenCL for GPU vs. FPGA
  • 4. ©SIProp Project, 2006-2008 4 OpenCL for FPGA Today’s Agenda OpenCV for OpenCL OpenCV for FPGA
  • 5. ©SIProp Project, 2006-2008 5 OpenCL SDK for FPGA Altera SDK for OpenCL http://www.altera.com/products/software/opencl/op encl-index.html Xilinx SDAccel http://www.xilinx.com/products/design- tools/sdx/sdaccel.html
  • 6. ©SIProp Project, 2006-2008 6 Advantage of FPGA Direct connect Peripherals to FPGA. GPGPU must bypass CPU/Memory bus. Ex. Network peripheral
  • 7. ©SIProp Project, 2006-2008 7 About OpenCL for FPGA Programming Language for FPGA OpenCL Compiler for RTL(Register Transfer Level) OpenCL Runtime Library Why for usage? For “Software Engineers” Easy to Program for FPGA
  • 8. ©SIProp Project, 2006-2008 8 Advantage of OpenCL for FPGA High-Level Synthesis C/C++/Java/Python for HDL FPGA features No Memory FPGA has SRAM/SDRAM. But small size & big overhead. Parallel Processing Input number is Parallel number.
  • 9. ©SIProp Project, 2006-2008 9 Streaming Processing for No Memory Ex. Effect(pixel by pixel)
  • 10. ©SIProp Project, 2006-2008 10 Pipeline Processing for Parallel Ex. OpenGL Architecture
  • 11. ©SIProp Project, 2006-2008 11 OpenCV for OpenCL
  • 12. ©SIProp Project, 2006-2008 12 About OpenCL for OpenCV 1/2 OpenCL Functions for OpenCV cv::ocl::xxx Wrapped Functions as OpenCV Functions 1. #include <opencv2/ocl/ocl.hpp> 2. int main(int argc, char** argv) { 3. cv::Mat matIn = cv::imread("hoge.png"), matDisp; 4. cv::ocl::oclMat oclIn(matIn), oclOut; 5. cv::ocl::cvtColor(oclIn, oclOut, cv::COLOR_BGR2GRAY); 6. oclOut.download(matDisp); 7. return 0; 8. }
  • 13. ©SIProp Project, 2006-2008 13 About OpenCL for OpenCV 2/2 Customized OpenCL for OpenCV Header opencv2/ocl/ocl.hpp modules/core/src/opencl/runtime/generator/ Source Code modules/core/src/opencl/*.cl OpenCL feature NOT Binary Compatibility
  • 14. ©SIProp Project, 2006-2008 14 Problem on Android Required put *.CL files on same place of App But Android App is APK file. Not single binary. -> MUST build OpenCV.so w/your CL file “OpenCV with OpenCL for Android NDK” How to Build OpenCV for Android System https://github.com/noritsuna/OpenCVwithOpenCL4Android NDK
  • 15. ©SIProp Project, 2006-2008 15 OpenCV for FPGA
  • 16. ©SIProp Project, 2006-2008 16 Zynq-7000 Series Dual ARM Cortex-A9 + FPGA
  • 17. ©SIProp Project, 2006-2008 17 Zynq + FPGA(IP Core) Zynq + PWM IP Core
  • 18. ©SIProp Project, 2006-2008 18 Zynq Development Board ZedBoard USD495, Zynq-7020 ZYBO USD189, Zynq-7010 Checkpoint With Vivado(IDE) License? http://www.digilentinc.com/
  • 19. ©SIProp Project, 2006-2008 19 Advantage of ARM + FPGA Full Functions of OpenCV -> Required Super Large FPGA OpneCV Functions Good Fit for CPU Functions Good Fit for FPGA Functions
  • 20. ©SIProp Project, 2006-2008 20 OpenCV Sample App for Zynq “Accelerating OpenCV Applications with Zynq- 7000 All Programmable SoC using Vivado HLS Video Libraries” http://www.xilinx.com/support/documentation/application_n otes/xapp1167.pdf Development Tools Vivado HLS(High-Level Synthesizer) Developing Environment for HLS Vivado IP Designer for Xilinx FPGA ISE Expired
  • 21. ©SIProp Project, 2006-2008 21 OpenCV is included in Vivado HSL
  • 22. ©SIProp Project, 2006-2008 22 Not Found…
  • 23. ©SIProp Project, 2006-2008 23 I guess “hls_opencv.h” is OpenCV for HLS. Can’t Use…
  • 24. ©SIProp Project, 2006-2008 24 Not Synthesizable…
  • 25. ©SIProp Project, 2006-2008 25 “hls_video.h” has OpenCV for HLS
  • 26. ©SIProp Project, 2006-2008 26 OpenCV Sample App for Zynq “Accelerating OpenCV Applications with Zynq- 7000 All Programmable SoC using Vivado HLS Video Libraries” http://www.xilinx.com/support/documentation/application_n otes/xapp1167.pdf Detail Dilate Filter with FAST feature point for FullHD Video(1920x1080) Streaming
  • 27. ©SIProp Project, 2006-2008 27 1. void image_filter(AXI_STREAM& input, AXI_STREAM& output, int rows, int cols) 2. { 3. //Create AXI streaming interfaces for the core 4. #pragma HLS RESOURCE variable=input core=AXIS metadata="-bus_bundle INPUT_STREAM" 5. #pragma HLS RESOURCE variable=output core=AXIS metadata="-bus_bundle OUTPUT_STREAM" 6. #pragma HLS interface ap_stable port=rows 7. #pragma HLS interface ap_stable port=cols 8. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _src(rows,cols); 9. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _dst(rows,cols); 10. #pragma HLS dataflow 11. hls::AXIvideo2Mat(input, _src); 12. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src0(rows,cols); 13. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src1(rows,cols); 14. #pragma HLS stream depth=20000 variable=src1.data_stream 15. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> mask(rows,cols); 16. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> dmask(rows,cols); 17. hls::Scalar<3,unsigned char> color(255,0,0); 18. hls::Duplicate(_src,src0,src1); 19. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> gray(rows,cols); 20. hls::CvtColor<HLS_BGR2GRAY>(src0,gray); 21. hls::FASTX(gray,mask,20,true); 22. hls::Dilate(mask,dmask); 23. hls::PaintMask(src1,dmask,_dst,color); 24. hls::Mat2AXIvideo(_dst, output); 25. }
  • 28. ©SIProp Project, 2006-2008 28 FAST() function FAST (Features from Accelerated Segment Test) algorithm One of the features detection algorithm
  • 29. ©SIProp Project, 2006-2008 29 Dilate() function Dilating pixels function One of the filter function
  • 30. ©SIProp Project, 2006-2008 30 How to Implement ARM + FPGA? Full Functions of OpenCV -> Required Super Large FPGA OpneCV Functions Good Fit for CPU Functions Good Fit for FPGA Functions
  • 31. ©SIProp Project, 2006-2008 31 Generated “IP Core + Header”=“Driver”
  • 32. ©SIProp Project, 2006-2008 32 Zynq + FPGA(IP Core) Zynq + PWM IP Core on Vivado(≠Vivado HSL)
  • 33. ©SIProp Project, 2006-2008 33 1. void image_filter(AXI_STREAM& input, AXI_STREAM& output, int rows, int cols) 2. { 3. //Create AXI streaming interfaces for the core 4. #pragma HLS RESOURCE variable=input core=AXIS metadata="-bus_bundle INPUT_STREAM" 5. #pragma HLS RESOURCE variable=output core=AXIS metadata="-bus_bundle OUTPUT_STREAM" 6. #pragma HLS interface ap_stable port=rows 7. #pragma HLS interface ap_stable port=cols 8. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _src(rows,cols); 9. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _dst(rows,cols); 10. #pragma HLS dataflow 11. hls::AXIvideo2Mat(input, _src); 12. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src0(rows,cols); 13. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src1(rows,cols); 14. #pragma HLS stream depth=20000 variable=src1.data_stream 15. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> mask(rows,cols); 16. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> dmask(rows,cols); 17. hls::Scalar<3,unsigned char> color(255,0,0); 18. hls::Duplicate(_src,src0,src1); 19. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> gray(rows,cols); 20. hls::CvtColor<HLS_BGR2GRAY>(src0,gray); 21. hls::FASTX(gray,mask,20,true); 22. hls::Dilate(mask,dmask); 23. hls::PaintMask(src1,dmask,_dst,color); 24. hls::Mat2AXIvideo(_dst, output); 25. }
  • 34. ©SIProp Project, 2006-2008 34 How to USE “IP Core & Headers” Build Binaries FSBL(1st Boot Loader) = x-loader, u-boot Linux Kernel for Your System Ubuntu/Android for System (Option) How to Build Android 5.0 for ZedBoard http://www.slideshare.net/noritsuna/zedroid- android-50-and-later-on-zedboard
  • 35. ©SIProp Project, 2006-2008 35 1. void image_filter(AXI_STREAM& input, AXI_STREAM& output, int rows, int cols) 2. { 3. //Create AXI streaming interfaces for the core 4. #pragma HLS RESOURCE variable=input core=AXIS metadata="-bus_bundle INPUT_STREAM" 5. #pragma HLS RESOURCE variable=output core=AXIS metadata="-bus_bundle OUTPUT_STREAM" 6. #pragma HLS interface ap_stable port=rows 7. #pragma HLS interface ap_stable port=cols 8. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _src(rows,cols); 9. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> _dst(rows,cols); 10. #pragma HLS dataflow 11. hls::AXIvideo2Mat(input, _src); 12. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src0(rows,cols); 13. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC3> src1(rows,cols); 14. #pragma HLS stream depth=20000 variable=src1.data_stream 15. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> mask(rows,cols); 16. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> dmask(rows,cols); 17. hls::Scalar<3,unsigned char> color(255,0,0); 18. hls::Duplicate(_src,src0,src1); 19. hls::Mat<MAX_HEIGHT,MAX_WIDTH,HLS_8UC1> gray(rows,cols); 20. hls::CvtColor<HLS_BGR2GRAY>(src0,gray); 21. hls::FASTX(gray,mask,20,true); 22. hls::Dilate(mask,dmask); 23. hls::PaintMask(src1,dmask,_dst,color); 24. hls::Mat2AXIvideo(_dst, output); 25. }
  • 36. ©SIProp Project, 2006-2008 36 Can’t Use All Standard C/C++ Libs
  • 37. ©SIProp Project, 2006-2008 37 OpenCV acceleration battle: OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on ZedBoard(Zynq-7020) Noritsuna Imamura noritusna@siprop.org
  • 38. ©SIProp Project, 2006-2008 38 Which way is faster? A. OpenCV for FPGA >>>> OpenCV for OpenCL According to Xilinx “1000 times over faster”. Clock Speed FPGA = 150MHz, ARM-T764 = 650MHz Direct connect Peripherals to FPGA. GPGPU must bypass CPU/Memory bus.