SlideShare a Scribd company logo
This project has received funding from
the European Union’s Horizon 20 20
research and innovation programme
under grant agreement No 688403
www.tulipp.eu
TULIPP
Title :
Place :
Date :
Tulipp Workshop @ HIPEAC
Towards Ubiquitous Low-power Image
Processing Platforms – tutorial RTOS
HiPEAC, Valencia, Spain
22nd
of January 2019
Antonio Paolillo, Paul Rodriguez
Shortcomings:
● Hard to debug
● Hard to control
● Libraries?
● Threads? Timers? Devices?
● MMU? Security? Multi-task?
● Multi-core?
● FPGA? Real-time? IRQ<->ISR?
Standalone build
The Reference Platform
Processor
IO
Memory
Component
tools
Operating
System
Toolchain
CPU
What is TULIPP?
(the concept)
What is TULIPP?
(the concept)
Operating
System
HiPEAC 2019 Tutorial - Maestro RTOS
HI gh
P erformance
P arallel
E mbedded
R eal-time
O perating
S ystems
HI gh
P erformance
P arallel
E mbedded
R eal-time
O perating
S ystems
HI gh
P erformance
P arallel
E mbedded
R eal-time
O perating
S ystems
HI gh
P erformance
P arallel
E mbedded
R eal-time
O perating
S ystems
HI gh
P erformance
P arallel
E mbedded
R eal-time
O perating
S ystems
HI gh
P erformance
P arallel
E mbedded
R eal-time
O perating
S ystems
This project has received funding from
the European Union’s Horizon 20 20
research and innovation programme
under grant agreement No 688403
Maestro
RTOS
Multi-core made easy
Computing power →
multi-core architecture
Native support
Multi-threaded
applications.
Theoretical guarantees,
practical reliability
Micro-kernel arch
Backed by real-time
research
Classic and more
advanced policies
A familiar environment
Full language support for
C and C++
Posix compliant API
Automated tools to build,
deploy & debug
Emulator support
Pedal to the Metal
More than CPU
Support heterogeneous
architecture
FPGA
Ready for the industry
Philosophy aligned to
industrial standards
e.g. Adaptive AUTOSAR
High performance,
flexible application for
embedded
HiPEAC 2019 Tutorial - Maestro RTOS
Main architecture and design
choices
- Hard real-time operating system
- Embedded targets: ARMv7, ARMv8, PowerPC, IA32
- A new micro-kernel written from scratch
- Built for user needs, i.e. small footprint and adapted policies
- Multi-core architecture based on asymmetric kernel
- Real-time model for user applications
- MMU support and virtual address space
- Resource sharing & IPC protocols (mutexes, semaphores,
message passing, etc.)
- Usual OS services (timers, etc.)
Real-time
- User processes have real-time requirements
- Determinism and bounded guarantees
- Being on-time is more important than being fast
- Real-time scheduling policies
- Resource usage is bounded and checked
New micro-kernel
- No “Linux legacy” or other previous mono-core design
- Design for SMP platform
- Asymmetric kernel design
- One core for heavy scheduling operations
- Other cores working to service tasks
- Most services & drivers in user space
- Multi-core IPC protocol to manage it
OS Modules
USER
SPACE
KERNEL
SPACE
HARDWARE
Memory &
resources
Scheduler IPC
System
calls
Processes Interrupts
Process 1 Process 2 Driver 1
Process 3 Process 4 Driver 2
Process 5 Service 1 Service 2
In practice: build an application
Tasks
HIPPEROS
package
CMake make Application
In practice: deploy an application
MPSoC
U-Boot
Run HIP
script
Designer API
Operating System API
● How to design tasks ?
● How to configure the system real-time run-time
behaviour ?
● How to build an HIPPEROS application ?
● How to configure the RTOS ?
Tasks = C / C++ code
HIPPEROS application
= set of pre-defined tasks
Task set file
•Timing parameters
•Periodicity
•Code
•Core affinities
•Timings
•...
CMakelists.txt: Build configuration
In practice: build an application
Tasks
CMakeLists.txt
Taskset.xml
HIPPEROS
package
CMake make Application
OS configuration
● Memory model: single address space / virtual (MMU)
● Task file format: statically linked / ELF format
● Kernel architecture: mono-core / multi-core / many-core
● Scheduling policies: Rate Monotonic / EDF, Partitioned /
Global, ...
● Activate power management features
Let’s play
Lab 1: How to Maestro
Lesson: use an OS
Benefits:
● easier resource management
● robustness
● multitasking
● modularity
● and so on
Activities during this lab
● Develop an example image processing application
for Maestro
● Use the Maestro build system and task
configuration
● Compile, deploy and run with Maestro tools
Develop an application
1. Go to
workspace/maestroLabs/lab1/workspace
2. Open src/main.cpp
3. Fill the main function in using image processing
calls from include/filters.h
STHEM
In STHEM, open the custom project in the
maestro_lab1 directory.
Click cmake, make to compile the project, then
profile it.
Deploying files and running app
$ ./run.py
What happened?
We used the Maestro build system to help us
through the whole development process of a pure
software application.
We used CMake and make through STHEM to
compile, deploy, run and analyse our application.
Going further
You can add tasks with the taskSet.ats file.
Using POSIX and Maestro APIs, tasks can interact
with devices, the kernel and each other.
Lab 2: Maestro and OpenMP
Lesson: use parallelism, use tools to help
Benefits:
● better performance
● low energy
● better scalability
● Maestro and OpenMP make this accessible
What is OpenMP?
OpenMP is a library providing functions and pragmas
to parallelize code easily between multiple threads.
Maestro is packaged with an OpenMP
implementation which we are going to use in this
lab.
HiPEAC 2019 Tutorial - Maestro RTOS
Activities during this lab
● Take the example application from Lab 1 and add
OpenMP pragmas
● Compile with OpenMP activated
● Deploy and run
● Measure the performance delta
Develop an application
1. Go to lab2
2. Open src/main.cpp
3. Fill in the main function using image processing
calls from filters.h
Use OpenMP pragmas to run your code on multiple
threads in parallel
STHEM
In STHEM, open the custom project in the
maestro_lab2 directory.
Click cmake, make to compile the project, then
profile it.
Getting serial output
$ ./run.py -l
What happened?
We used the Maestro implementation of OpenMP to
accelerate our image processing application using
parallelism without manually managing threads.
Under the hood, the CMakeLists.txt file defines that
the toolchain to use is Clang and that the application
has to be linked against the OpenMP library.
Going further
Adapt the filters of the image processing library to
use OpenMP
Vary the number of cores and measure the results
Lab 3: Maestro and SDSoC
Lesson: use automatic hardware acceleration
Benefits:
● huge gains in performance
● tools make this accessible
SDSoC
Here we will use the Maestro integration of SDSoC
hardware acceleration tools.
To toggle acceleration of a function, we make
changes in the project definition file.
Activities during this lab
● Take the example application from lab 1, make
sure you are using the predefined filter functions
● Ask SDSoC (through CMake) to accelerate the
hwSobelX filter
● Activate SDSoC in CMakeLists:
○ set(HIPPEROS_TOOLCHAIN "SDSCC")
● Compile, deploy and run
● Measure the performance delta
Get platform files
$ cd /home/tulipp/
$ wget paolillo.be/updateVM.zip
$ unzip updateVM.zip
$ cd updateVM
$ ./updateVM.sh
# sudo password is required
Adapt the application
1. Go to lab1
2. Open CMakeLists.txt
3. Call SDSoC toolchain, in the beginning of the file:
set(HIPPEROS_TOOLCHAIN "SDSCC")
4. Call sdaccel modules:
sdscc_accel(
"${PROJECT_NAME}"
"${APP_DIR}/src/filters.cpp"
"hwSobelX" "0")
Compile for Maestro
$ cd /home/tulipp/workspace/maestroLabs/lab1/solution/
$ mkdir maestro_lab3
$ cd maestro_lab3
$ source /opt/Xilinx/SDx/default/settings64.sh
$ /usr/bin/cmake ..
$ make
# Takes forever...
Deploy and run!
$ ./run.py
Taking forever...
In the interest of time, we’ll do it in front of you with
the pre-built solution.
What happened?
The filter has been accelerated, synthesized, with the
drivers generated, and moved to the FPGA fabric.
The performance gain is huge, like 52x (from debug)
the software version.
Much better than OpenMP multi-core parallelisation,
but requires FPGA to work.
Thank you for
attending!

More Related Content

PDF
Containerizing HPC and AI applications using E4S and Performance Monitor tool
PDF
NANO266 - Lecture 9 - Tools of the Modeling Trade
PDF
Uber's Journey in Distributed Deep Learning
PPTX
Prometheus (Monitorama 2016)
PDF
"Portable Performance via the OpenVX Computer Vision Library: Case Studies," ...
PDF
Parallel Programming in Python: Speeding up your analysis
PDF
MAVRL Workshop 2014 - pymatgen-db & custodian
PDF
FireWorks workflow software
Containerizing HPC and AI applications using E4S and Performance Monitor tool
NANO266 - Lecture 9 - Tools of the Modeling Trade
Uber's Journey in Distributed Deep Learning
Prometheus (Monitorama 2016)
"Portable Performance via the OpenVX Computer Vision Library: Case Studies," ...
Parallel Programming in Python: Speeding up your analysis
MAVRL Workshop 2014 - pymatgen-db & custodian
FireWorks workflow software

What's hot (18)

PDF
SREcon 2016 Performance Checklists for SREs
PDF
SciPy 2019: How to Accelerate an Existing Codebase with Numba
PPTX
An Introduction to TensorFlow architecture
PDF
Contributing to OpenStack
PPTX
Resource Aware Scheduling in Apache Storm
PDF
Highly-scalable Reinforcement Learning RLlib for Real-world Applications
PDF
The hitchhiker’s guide to Prometheus
PDF
Devoxx 2014 [incomplete] summary
PDF
Data Science and Deep Learning on Spark with 1/10th of the Code with Roope As...
PDF
CHEP 2018: A Python upgrade to the GooFit package for parallel fitting
PDF
Data analytics in the cloud with Jupyter notebooks.
PDF
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
PPTX
GPU and Deep learning best practices
PDF
DIANA: Recent developments in GooFit
PPTX
PPTX
Apache Storm
PDF
Intro to Machine Learning for GPUs
PDF
MAVRL Workshop 2014 - Python Materials Genomics (pymatgen)
SREcon 2016 Performance Checklists for SREs
SciPy 2019: How to Accelerate an Existing Codebase with Numba
An Introduction to TensorFlow architecture
Contributing to OpenStack
Resource Aware Scheduling in Apache Storm
Highly-scalable Reinforcement Learning RLlib for Real-world Applications
The hitchhiker’s guide to Prometheus
Devoxx 2014 [incomplete] summary
Data Science and Deep Learning on Spark with 1/10th of the Code with Roope As...
CHEP 2018: A Python upgrade to the GooFit package for parallel fitting
Data analytics in the cloud with Jupyter notebooks.
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
GPU and Deep learning best practices
DIANA: Recent developments in GooFit
Apache Storm
Intro to Machine Learning for GPUs
MAVRL Workshop 2014 - Python Materials Genomics (pymatgen)
Ad

Similar to HiPEAC 2019 Tutorial - Maestro RTOS (20)

PPTX
DAWN and Scientific Workflows
PDF
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
PPTX
TULIPP at the 10th Intelligent Imaging Event
PDF
Faster Python Programs Through Optimization by Dr.-Ing Mike Muller
PPTX
Reproducibility in artificial intelligence
PDF
Cytoscape: Now and Future
PPTX
Role of python in hpc
PPTX
XPDays-2018
PPT
PDF
IRJET-Clipboard Manager
PDF
Parallel Computing - Lec 6
DOCX
Predicting rainfall with data science in python
PPTX
TULIPP - Leaving a legacy: The ultimate Low-Power Image Processing Handbook
PDF
Performance Evaluation using TAU Performance System and E4S
PDF
Maximize Impact: Learn from the Dual Pillars of Open-Source Energy Planning T...
PDF
HiPEAC 2019 Workshop Overview
PDF
From an idea to production: building a recommender for BBC Sounds
PPTX
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
PDF
How I learned to time travel, or, data pipelining and scheduling with Airflow
PPTX
SC'18 BoF Presentation
DAWN and Scientific Workflows
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
TULIPP at the 10th Intelligent Imaging Event
Faster Python Programs Through Optimization by Dr.-Ing Mike Muller
Reproducibility in artificial intelligence
Cytoscape: Now and Future
Role of python in hpc
XPDays-2018
IRJET-Clipboard Manager
Parallel Computing - Lec 6
Predicting rainfall with data science in python
TULIPP - Leaving a legacy: The ultimate Low-Power Image Processing Handbook
Performance Evaluation using TAU Performance System and E4S
Maximize Impact: Learn from the Dual Pillars of Open-Source Energy Planning T...
HiPEAC 2019 Workshop Overview
From an idea to production: building a recommender for BBC Sounds
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
How I learned to time travel, or, data pipelining and scheduling with Airflow
SC'18 BoF Presentation
Ad

More from Tulipp. Eu (17)

PPTX
What are TULIPP starter kits?
PDF
Quantifying Energy Consumption for Practical Fork-Join Parallelism on an Embe...
PPTX
HIPPEROS's at EMVA 2017
PDF
TULIPP overview
PDF
HiPEAC 2019 Workshop - Vision Processing
PDF
HiPEAC 2019 Workshop - Real-Time Modelling Visual Scenes with Biological Insp...
PDF
HiPEAC 2019 Tutorial - Image Processing Library:HiFlipVX
PDF
HiPEAC 2019 Tutorial - Sthem overview
PDF
HiPEAC 2019 Workshop - Hardware Starter Kit Agri
PDF
HiPEAC 2019 Workshop - Use Cases
PPTX
Tulipp starter-kit-agri
PPTX
TULIPP H2020 Project: Low power high performance real-time computer vision on...
PPTX
TULIPP H2020 Project presentation @ FPGA Network: Implementing Machine Vision...
PDF
Tulipp_H2020_Hipeac'17 Conference_PEPGUM Workshop_January 017
PDF
D1.1 reference platform_v1_20161215
PPTX
Samos July 2016_tulipp-H2020 project presentation
PPTX
Tulipp collaboration Workshop - Advanced Computing and CPS - June 2016
What are TULIPP starter kits?
Quantifying Energy Consumption for Practical Fork-Join Parallelism on an Embe...
HIPPEROS's at EMVA 2017
TULIPP overview
HiPEAC 2019 Workshop - Vision Processing
HiPEAC 2019 Workshop - Real-Time Modelling Visual Scenes with Biological Insp...
HiPEAC 2019 Tutorial - Image Processing Library:HiFlipVX
HiPEAC 2019 Tutorial - Sthem overview
HiPEAC 2019 Workshop - Hardware Starter Kit Agri
HiPEAC 2019 Workshop - Use Cases
Tulipp starter-kit-agri
TULIPP H2020 Project: Low power high performance real-time computer vision on...
TULIPP H2020 Project presentation @ FPGA Network: Implementing Machine Vision...
Tulipp_H2020_Hipeac'17 Conference_PEPGUM Workshop_January 017
D1.1 reference platform_v1_20161215
Samos July 2016_tulipp-H2020 project presentation
Tulipp collaboration Workshop - Advanced Computing and CPS - June 2016

Recently uploaded (20)

PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Complete Guide to Website Development in Malaysia for SMEs
PPTX
Advanced SystemCare Ultimate Crack + Portable (2025)
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
iTop VPN Free 5.6.0.5262 Crack latest version 2025
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Nekopoi APK 2025 free lastest update
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
assetexplorer- product-overview - presentation
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Download FL Studio Crack Latest version 2025 ?
CHAPTER 2 - PM Management and IT Context
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Wondershare Filmora 15 Crack With Activation Key [2025
Complete Guide to Website Development in Malaysia for SMEs
Advanced SystemCare Ultimate Crack + Portable (2025)
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
wealthsignaloriginal-com-DS-text-... (1).pdf
Monitoring Stack: Grafana, Loki & Promtail
iTop VPN Free 5.6.0.5262 Crack latest version 2025
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
How to Choose the Right IT Partner for Your Business in Malaysia
Nekopoi APK 2025 free lastest update
Design an Analysis of Algorithms II-SECS-1021-03
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
assetexplorer- product-overview - presentation
Design an Analysis of Algorithms I-SECS-1021-03
Download FL Studio Crack Latest version 2025 ?

HiPEAC 2019 Tutorial - Maestro RTOS

  • 1. This project has received funding from the European Union’s Horizon 20 20 research and innovation programme under grant agreement No 688403 www.tulipp.eu TULIPP Title : Place : Date : Tulipp Workshop @ HIPEAC Towards Ubiquitous Low-power Image Processing Platforms – tutorial RTOS HiPEAC, Valencia, Spain 22nd of January 2019 Antonio Paolillo, Paul Rodriguez
  • 2. Shortcomings: ● Hard to debug ● Hard to control ● Libraries? ● Threads? Timers? Devices? ● MMU? Security? Multi-task? ● Multi-core? ● FPGA? Real-time? IRQ<->ISR? Standalone build
  • 4. What is TULIPP? (the concept) Operating System
  • 6. HI gh P erformance P arallel E mbedded R eal-time O perating S ystems
  • 7. HI gh P erformance P arallel E mbedded R eal-time O perating S ystems
  • 8. HI gh P erformance P arallel E mbedded R eal-time O perating S ystems
  • 9. HI gh P erformance P arallel E mbedded R eal-time O perating S ystems
  • 10. HI gh P erformance P arallel E mbedded R eal-time O perating S ystems
  • 11. HI gh P erformance P arallel E mbedded R eal-time O perating S ystems
  • 12. This project has received funding from the European Union’s Horizon 20 20 research and innovation programme under grant agreement No 688403 Maestro RTOS
  • 13. Multi-core made easy Computing power → multi-core architecture Native support Multi-threaded applications.
  • 14. Theoretical guarantees, practical reliability Micro-kernel arch Backed by real-time research Classic and more advanced policies
  • 15. A familiar environment Full language support for C and C++ Posix compliant API Automated tools to build, deploy & debug Emulator support
  • 16. Pedal to the Metal More than CPU Support heterogeneous architecture FPGA
  • 17. Ready for the industry Philosophy aligned to industrial standards e.g. Adaptive AUTOSAR High performance, flexible application for embedded
  • 19. Main architecture and design choices - Hard real-time operating system - Embedded targets: ARMv7, ARMv8, PowerPC, IA32 - A new micro-kernel written from scratch - Built for user needs, i.e. small footprint and adapted policies - Multi-core architecture based on asymmetric kernel - Real-time model for user applications - MMU support and virtual address space - Resource sharing & IPC protocols (mutexes, semaphores, message passing, etc.) - Usual OS services (timers, etc.)
  • 20. Real-time - User processes have real-time requirements - Determinism and bounded guarantees - Being on-time is more important than being fast - Real-time scheduling policies - Resource usage is bounded and checked
  • 21. New micro-kernel - No “Linux legacy” or other previous mono-core design - Design for SMP platform - Asymmetric kernel design - One core for heavy scheduling operations - Other cores working to service tasks - Most services & drivers in user space - Multi-core IPC protocol to manage it
  • 22. OS Modules USER SPACE KERNEL SPACE HARDWARE Memory & resources Scheduler IPC System calls Processes Interrupts Process 1 Process 2 Driver 1 Process 3 Process 4 Driver 2 Process 5 Service 1 Service 2
  • 23. In practice: build an application Tasks HIPPEROS package CMake make Application
  • 24. In practice: deploy an application MPSoC U-Boot Run HIP script
  • 26. Operating System API ● How to design tasks ? ● How to configure the system real-time run-time behaviour ? ● How to build an HIPPEROS application ? ● How to configure the RTOS ?
  • 27. Tasks = C / C++ code
  • 28. HIPPEROS application = set of pre-defined tasks
  • 29. Task set file •Timing parameters •Periodicity •Code •Core affinities •Timings •...
  • 31. In practice: build an application Tasks CMakeLists.txt Taskset.xml HIPPEROS package CMake make Application
  • 32. OS configuration ● Memory model: single address space / virtual (MMU) ● Task file format: statically linked / ELF format ● Kernel architecture: mono-core / multi-core / many-core ● Scheduling policies: Rate Monotonic / EDF, Partitioned / Global, ... ● Activate power management features
  • 34. Lab 1: How to Maestro Lesson: use an OS Benefits: ● easier resource management ● robustness ● multitasking ● modularity ● and so on
  • 35. Activities during this lab ● Develop an example image processing application for Maestro ● Use the Maestro build system and task configuration ● Compile, deploy and run with Maestro tools
  • 36. Develop an application 1. Go to workspace/maestroLabs/lab1/workspace 2. Open src/main.cpp 3. Fill the main function in using image processing calls from include/filters.h
  • 37. STHEM In STHEM, open the custom project in the maestro_lab1 directory. Click cmake, make to compile the project, then profile it.
  • 38. Deploying files and running app $ ./run.py
  • 39. What happened? We used the Maestro build system to help us through the whole development process of a pure software application. We used CMake and make through STHEM to compile, deploy, run and analyse our application.
  • 40. Going further You can add tasks with the taskSet.ats file. Using POSIX and Maestro APIs, tasks can interact with devices, the kernel and each other.
  • 41. Lab 2: Maestro and OpenMP Lesson: use parallelism, use tools to help Benefits: ● better performance ● low energy ● better scalability ● Maestro and OpenMP make this accessible
  • 42. What is OpenMP? OpenMP is a library providing functions and pragmas to parallelize code easily between multiple threads. Maestro is packaged with an OpenMP implementation which we are going to use in this lab.
  • 44. Activities during this lab ● Take the example application from Lab 1 and add OpenMP pragmas ● Compile with OpenMP activated ● Deploy and run ● Measure the performance delta
  • 45. Develop an application 1. Go to lab2 2. Open src/main.cpp 3. Fill in the main function using image processing calls from filters.h Use OpenMP pragmas to run your code on multiple threads in parallel
  • 46. STHEM In STHEM, open the custom project in the maestro_lab2 directory. Click cmake, make to compile the project, then profile it.
  • 47. Getting serial output $ ./run.py -l
  • 48. What happened? We used the Maestro implementation of OpenMP to accelerate our image processing application using parallelism without manually managing threads. Under the hood, the CMakeLists.txt file defines that the toolchain to use is Clang and that the application has to be linked against the OpenMP library.
  • 49. Going further Adapt the filters of the image processing library to use OpenMP Vary the number of cores and measure the results
  • 50. Lab 3: Maestro and SDSoC Lesson: use automatic hardware acceleration Benefits: ● huge gains in performance ● tools make this accessible
  • 51. SDSoC Here we will use the Maestro integration of SDSoC hardware acceleration tools. To toggle acceleration of a function, we make changes in the project definition file.
  • 52. Activities during this lab ● Take the example application from lab 1, make sure you are using the predefined filter functions ● Ask SDSoC (through CMake) to accelerate the hwSobelX filter ● Activate SDSoC in CMakeLists: ○ set(HIPPEROS_TOOLCHAIN "SDSCC") ● Compile, deploy and run ● Measure the performance delta
  • 53. Get platform files $ cd /home/tulipp/ $ wget paolillo.be/updateVM.zip $ unzip updateVM.zip $ cd updateVM $ ./updateVM.sh # sudo password is required
  • 54. Adapt the application 1. Go to lab1 2. Open CMakeLists.txt 3. Call SDSoC toolchain, in the beginning of the file: set(HIPPEROS_TOOLCHAIN "SDSCC") 4. Call sdaccel modules: sdscc_accel( "${PROJECT_NAME}" "${APP_DIR}/src/filters.cpp" "hwSobelX" "0")
  • 55. Compile for Maestro $ cd /home/tulipp/workspace/maestroLabs/lab1/solution/ $ mkdir maestro_lab3 $ cd maestro_lab3 $ source /opt/Xilinx/SDx/default/settings64.sh $ /usr/bin/cmake .. $ make # Takes forever...
  • 56. Deploy and run! $ ./run.py
  • 57. Taking forever... In the interest of time, we’ll do it in front of you with the pre-built solution.
  • 58. What happened? The filter has been accelerated, synthesized, with the drivers generated, and moved to the FPGA fabric. The performance gain is huge, like 52x (from debug) the software version. Much better than OpenMP multi-core parallelisation, but requires FPGA to work.