Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Beehive Lab: ​ Open source software for​ HW/SW co-design

zakkak
October 31, 2018

Beehive Lab: ​ Open source software for​ HW/SW co-design

zakkak

October 31, 2018
Tweet

More Decks by zakkak

Other Decks in Research

Transcript

  1. WHAT IS BEEHIVE LAB ABOUT? HiPEAC CSW Heraklion 2018 1

    31/10/2018 https://github.com/beehive-lab Providing an ecosystem that: 1. Enables HW/SW Co-design 2. Is modular & easily extensible 3. Supports multiple hardware architectures 4. Supports multiple programming languages 5. Supports heterogeneous systems 6. Has realistic & diverse simulation infrastructures 7. Integrates popular research tools
  2. BEEHIVE: APPLICATIONS LAYER • Multiple guest languages • Native language

    support for C, C++, Java • Guest language (Ruby, R, etc.) support via Truffle/Graal • LLVM-IR to Truffle – enable LLVM compiled languages • Benchmark Suites: • SPEC, PARSEC, DaCapo, etc. • Computer vision applications • Simultaneous Localization & Mapping (SLAM) algorithms • Big Data applications and frameworks • MapReduce, Spark, Flink, etc. HiPEAC CSW Heraklion 2018 3 31/10/2018 https://github.com/beehive-lab
  3. BEEHIVE: RUNTIME LAYER – LANGUAGE VMS • MaxineVM (research) and

    HotSpotVM (production) • Share Truffle runtime framework (enable Ruby, R, etc.) • Share production quality optimizing compiler (Graal) HiPEAC CSW Heraklion 2018 4 31/10/2018 https://github.com/beehive-lab
  4. BEEHIVE: RUNTIME LAYER – HW ACCELERATION • SIMD hardware extensions

    (Indigo compiler plugin) • Colin Barrett, Christos Kotselidis, Foivos S. Zakkak, Nikos Foutris, and Mikel Luján. 2017. Experiences with Building Domain-Specific Compilation Plugins in Graal. In Proceedings of the 14th International Conference on Managed Languages and Runtimes (ManLang 2017). ACM, New York, NY, USA, 73-84. DOI: https://doi.org/10.1145/3132190.3132207 • GPUs and FPGAs (Tornado VM) • Effortless hardware acceleration for managed languages HiPEAC CSW Heraklion 2018 5 31/10/2018 https://github.com/beehive-lab
  5. BEEHIVE: RUNTIME LAYER – SERVICES & DRIVERS • Dynamic Binary

    Translators and Optimizers (MAMBO) • System-level profiling & DVFS management • Enable power management at runtime/application layers HiPEAC CSW Heraklion 2018 6 31/10/2018 https://github.com/beehive-lab
  6. BEEHIVE: SUPPORTED HARDWARE • CPUs • AMD64, ARMv7, AArch64, RISC-V

    • SIMD extensions • GPUs • DSPs • FPGAs • … HiPEAC CSW Heraklion 2018 7 31/10/2018 https://github.com/beehive-lab
  7. BEEHIVE: SIMULATION • GEM5 for accurate power/performance/reliability modeling • integration

    with McPAT, Hotspot, and VoltSpot • … • APTSim for fast (but less accurate) simulations • Customizable accuracy simulation of memory/full- systems using binary instrumentation and FPGAs HiPEAC CSW Heraklion 2018 8 31/10/2018 https://github.com/beehive-lab
  8. BEEHIVE SUMMARY • Enable full-system co-design and exploitation • Beehive

    is work in progress • Components are gradually being open-sourced https://github.com/beehive-lab HiPEAC CSW Heraklion 2018 9 31/10/2018 https://github.com/beehive-lab
  9. MAXINE: A STATE-OF-THE-ART RESEARCH VM • Java 8 support (lambdas,

    invokedynamic, etc.) • 2-tier JIT compilation • Modular design • OpenJDK compatible • Written in Java • AMD64, ARMv7, AArch64, and RISC-V (in progress) • MMTk integration (in progress) • JVMCI integration (in progress) HiPEAC CSW Heraklion 2018 11 31/10/2018 https://github.com/beehive-lab/Maxine-VM
  10. MAXINE: OVERVIEW 31/10/2018 HiPEAC CSW Heraklion 2018 12 Applications X86

    ARMv7 AArch64 RISC-V OS Substrate MMTk JVMCI Truffle Graal CompilationBroker T1X C1X MonitorScheme Etc. https://github.com/beehive-lab/Maxine-VM
  11. MAXINE: PASS-RATES ON JAVA 8U181 HiPEAC CSW Heraklion 2018 13

    31/10/2018 75% 60% 100% 73% 90% 100% 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% AArch64 ARMv7 X86 SPECjvm2008 DaCapo *Compared to OpenJDK 8u181 https://github.com/beehive-lab/Maxine-VM
  12. TORNADO: EFFORTLESS HW ACCELERATION • Java HW acceleration • API

    + Annotation-based • Task-based programming model • Accelerates Java on CPUs, GPUs, and FPGAs • Transparent to the user data transfers/synchronization 31/10/2018 HiPEAC CSW Heraklion 2018 15 https://github.com/beehive-lab/Tornado
  13. TORNADO: EXAMPLE 31/10/2018 HiPEAC CSW Heraklion 2018 16 https://github.com/beehive-lab/Tornado public

    static void add(int[] a, int[] b, int[] c) { for (@Parallel int i = 0; i < c.length; i++) { c[i] = a[i] + b[i]; } } … new TaskSchedule("s0") .task("t0", TestHello::add, a, b, c) .streamOut(c) .execute(); … Standard Compiler Assembler Bytecode Interpreter OCL JIT Compiler Device Heap manager Task migration manager VM in an VM Standard JVM CPUs Integrated GPUs GPUs FPGAs Standard Runtime Heterogeneous hardware Tornado Compiler Data Flow Analyzer Optimizer Tornado Bytecode Generator x86, ARM, Sparc Tornado VM
  14. MAMBO: DYNAMIC BINARY MODIFICATION • Dynamic binary modification • Dynamic

    – at runtime • Binary – at machine code level • JIT (re)compiler of native code • Low overhead HiPEAC CSW Heraklion 2018 19 31/10/2018 https://github.com/beehive-lab/mambo
  15. MAMBO: USE CASES • Micro-architectural simulation • Modify code to

    trigger events in the simulator • Cache Simulation • Modify loads and stores • Program analysis • Instrument calls to create call graph • Debugging • Instrument code without recompilation (e.g., on production code) • Dynamic binary translation • ARMv7 to AAarch64 • … 31/10/2018 HiPEAC CSW Heraklion 2018 20
  16. MAMBO: WHY MAMBO • Variations of API • High-performance •

    Portable • Ease of use • Performance • Lowest base overhead among DBMs for ARM • Good performance scaling for multithreaded apps 31/10/2018 HiPEAC CSW Heraklion 2018 21
  17. MAMBO: CURRENT PLUGINS • branch_count – dynamic execution counters for

    each type of branch (direct, indirect and returns) • cachesim – configurable cache hierarchy simulator • mtrace – records memory access traces • soft_div – dynamically replaces AArch32 hardware divide instructions with an emulation routine • memcheck (upcoming) – detects & reports memory usage errors (e.g. buffer overflows) 31/10/2018 HiPEAC CSW Heraklion 2018 24
  18. MAMBO: UPCOMING TUTORIAL • November 3 @ PACT 2018, Limassol,

    Cyprus 31/10/2018 HiPEAC CSW Heraklion 2018 25 https://github.com/beehive-lab/mambo
  19. ACKNOWLEDGEMENTS • Funded through the EU H2020 projects: • And

    the funded projects: • PAMELA EP/K008730/1 • DOME EP/J016330/ 31/10/2018 HiPEAC CSW Heraklion 2018 26 https://github.com/beehive-lab/mambo European Union’s Horizon H2020 research and innovation programme under grant agreements No 732366 (ACTiCLOUD) and No 780622 (E2Data)