EPJ Web of Conferences (Jan 2024)

APEIRON: A Framework for High Level Programming of Dataflow Applications on Multi-FPGA Systems

  • Ammendola Roberto,
  • Biagioni Andrea,
  • Chiarini Carlotta,
  • Ciardiello Andrea,
  • Cretaro Paolo,
  • Frezza Ottorino,
  • Lo Cicero Francesca,
  • Lonardo Alessandro,
  • Martinelli Michele,
  • Paolucci Pier Stanislao,
  • Pontisso Luca,
  • Simula Francesco,
  • Rossi Cristian,
  • Turisini Matteo,
  • Vicini Piero

DOI
https://doi.org/10.1051/epjconf/202429511002
Journal volume & issue
Vol. 295
p. 11002

Abstract

Read online

High Energy Physics (HEP) Trigger and Data Acquisition systems (TDAQs) need ever increasing throughput and real-time data analytics capabilities either to improve particle identification accuracy and further suppress background events in trigger systems or to perform an efficient online data reduction for trigger-less ones. As for the requirements imposed by HEP TDAQs applications in the class of real-time dataflow processing, FPGA devices are a good fit inasmuch they can not only provide adequate compute, memory and I/O resources but also a smooth programming experience thanks to the availability of High-Level Synthesis (HLS) tools. The main motivation for the design and development of the APEIRON framework is that the currently available HLS tools do not natively support the deployment of applications over multiple FPGA devices, which severely chokes the scalability of problems that this approach could tackle. To overcome this limitation, we envisioned APEIRON as an extension of the Xilinx Vitis framework able to support a network of FPGA devices interconnected by a lowlatency direct network as the reference execution platform. Developers can define scalable applications, using a dataflow programming model inspired by Kahn Process Networks, that can be efficiently deployed on a multi-FPGAs system: the APEIRON communication IPs allow low-latency communication between processing tasks deployed on FPGAs, even if they are hosted on different computing nodes. Thanks to the use of HLS tools in the workflow, processing tasks are described in C++ as HLS kernels, while communication between tasks is expressed through a lightweight C++ API based on non-blocking send() and blocking receive() operations.