Skip to content

Add AthXRT service and AthExXRT example (ATLINFR-5117)

Quentin Berthet requested to merge qberthet/athena:xrt_integration into main

This MR add the AthXRT service and AthExXRT example to Athena.

This service is a prototype to interact with AMD FPGA accelerators from Athena. It is quite basic and can only be used to enumerate and program the FPGA with a configuration file (bitstream) at the moment. It is used for the exploration of EFCalo topoclustering FPGA acceleration, and might be useful for other Run4 FPGA acceleration prototypes (EFTracking have also used this code). The structure is heavily inspired from AthCUDA and AthExCUDA and is intended to be the common entry point for AMD FPGA accelerators in Athena.

The AthExXRT example illustrates how to use the AthXRT service to run a dummy vector addition kernel from Athena. An HLS code and build procedure is also provided to produce the required bitstream (Note that some public Apache 2.0 licensed code from AMD/Xilinx is used there).

This code requires the XRT library and it is currently not provided in any Atlas standard environments (See this ticket for the discussion on XRT inclusion in AtlasExternals). Because of this, these new packages are not compiled if XRT library is not available.

Note to reviewer: this is my first MR, and the first code that I ever written for Athena, so I expect modifications to be required before merging.

Edit 1 (2024.06.06): The service and associated examples have been rewritten since the initial MR creation and now support both OpenCL and XRT API, and have been extensively tested with mutli-API, multiple device, multiple athena algorithms and mutiple kernels use-cases.

Edited by Quentin Berthet

Merge request reports

Loading