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

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

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.