HERO: Open Heterogeneous Research Platform

Release Announcement

We are delighted to release HERO, our Open Heterogeneous Research Platform, bringing PULP to the next level.

HERO combines a PULP-based open-source parallel manycore accelerator implemented on FPGA with a hard ARM Cortex-A multicore host processor running full-stack Linux. HERO is the first heterogeneous system architecture that mixes a powerful ARM multicore host with a highly parallel and scalable manycore accelerator based on RISC-V cores.

HERO offers a complete hardware and software platform which advances the state of the art of transparent accelerator programming using the OpenMP v4.5 Accelerator Model. The programmer writes a single application source file for the host and uses OpenMP directives for parallelization and accelerator offloading. Lower-level details such as differing ISAs as well as shared virtual memory (SVM) between host and accelerator are handled by our heterogeneous toolchain based on GCC 7, runtime libraries, kernel driver and our open-source hardware IPs.

As such, HERO greatly simplifies heterogeneous systems programming and forms a complete basis for future system-level research and industrial design comprising both the hardware and software side of heterogeneous systems.

The HERO release consists of two main repositories:

  • The bigPULP hardware repository (https://github.com/pulp-platform/bigpulp) contains the accelerator-side system-level architecture for multicluster PULP configurations, interconnect IP including a brand new IOMMU for SVM, as well as top-level wrappers and build scripts to generate the FPGA implementation of the accelerator for different devices.
  • The HERO SDK repository (https://github.com/pulp-platform/hero-sdk) contains the heterogeneous toolchain based on GCC 7, kernel-level Linux driver and runtime library, Linux kernel and root filesystem build scripts, example applications and the PULP SDK. In addition, this repository contains the top-level scripts to build the entire HERO system for implementation on the Xilinx Zynq ZC706 Evaluation Kit.

To try out the HERO platform, we suggest to get started with the HERO SDK repository. During its build process, the required hardware files (FPGA bitstream, first-stage boot loader etc.) are automatically downloaded from our servers. In the provided base configuration for the Xilinx Zynq ZC706 Evaluation Kit, the accelerator features 1 cluster comprising 8 32-bit RI5CY cores, 256 KiB of L1 scratchpad memory and 4 KiB of shared instruction cache. In addition, the accelerator has 256 KiB of shared L2 scratchpad and instruction memory. SVM is enabled by our IOMMU configured to have an L1 TLB with 32 variable-sized entries and an L2 TLB with 1024 page-sized entries.

For additional documentation, please check out our HOWTO website. Visit our www page to learn more, and follow us on Twitter (@pulp_platform).

Your PULP team

HERO Features

  • HERO combines:
    • a hard ARM Cortex-A multicore host processor with
    • a scalable, configurable, and extensible FPGA implementation of an open-source, silicon-proven, cluster-based manycore accelerator.
  • The fully open-sourced, heterogeneous software stack of HERO supports:
    • the OpenMP 4.5 Accelerator Model, and
    • shared virtual memory (SVM),
    which allows for transparent accelerator programming and thereby tremendously simplifies the porting of existing applications to create heterogeneous implementations.
  • The base configuration of HERO for the Xilinx Zynq ZC706 Evaluation Kit features the following accelerator configuration:
    • 1 PULP cluster (Mr. Wolf) comprising 8 32-bit RI5CY cores,
    • 256 KiB of shared L1 scratchpad memory,
    • 4 KiB of shared L1 instruction cache,
    • 256 KiB of shared L2 scratchpad and instruction memory,
    • our brand-new IOMMU with
      • an L1 TLB of 32 variable-sized entries, and
      • an L2 TLB of 1024 page-sized entries.

Get started with HERO now!

You can get the source code for the HERO hardware (released under a permissible SolderPad open-source license) and the HERO software development kit (released under Apache 2.0 and GPL) both from GitHub.

To set up the platform, please check the README of the SDK. For further documentation see our HOWTO website.


Do you need help with PULP?

Most of the discussions are currently held on individual GitHub pages. We are also preparing an online forum. You may find the following helpful, as well:

Mailing list  |  FAQ  |  Contact


HERO is supported by the Eurolab4HPC2 project. Do you want to become a HERO partner, too?

Get in touch with us!