9#ifndef EFTRACKING_FPGA_INTEGRATION_F1X0XRTIntegrationAlg_H
10#define EFTRACKING_FPGA_INTEGRATION_F1X0XRTIntegrationAlg_H
20#include "GaudiKernel/ServiceHandle.h"
21#include "GaudiKernel/IChronoSvc.h"
26#include <xrt/xrt_device.h>
27#include <xrt/xrt_kernel.h>
28#include <xrt/xrt_bo.h>
29#include <xrt/xrt_uuid.h>
46 using IntegrationBase::IntegrationBase;
47 virtual StatusCode
initialize()
override final;
48 virtual StatusCode
execute(
const EventContext &ctx)
const override final;
49 virtual StatusCode
finalize()
override final;
63 Gaudi::Property<int>
m_FPGAThreads{
this,
"FPGAThreads", 1,
"number of FPGA threads to initialize"};
66 this,
"xclbin",
"",
"xclbin path and name"};
69 this,
"doF110",
false,
"Run F110 instead of F100"};
72 this,
"PixelEDMPrepKernelName",
"",
"Name of the Pixel EDM kernel"};
75 this,
"StripEDMPrepKernelName",
"",
"Name of the Strip EDM kernel"};
78 this,
"PixelClusterKernelName",
"",
"Name of the pixel clustering kernel"};
81 this,
"StripClusterKernelName",
"",
"Name of the strip clustering kernel"};
84 this,
"PixelL2GKernelName",
"",
"Name of the pixel L2G kernel"};
87 this,
"StripL2GKernelName",
"",
"Name of the strip L2G kernel"};
Benchmark algorithm for FPGA integration and output conversion.
std::atomic< uint64_t > m_pixelEdmPrepTime
Time for pixel EDM preparation (F110)
std::atomic< uint64_t > m_stripClusteringTime
Time for strip clustering.
ServiceHandle< IChronoSvc > m_chronoSvc
Service for timing the algorithm.
std::atomic< uint64_t > m_pixelOutputTime
Time for pixel output buffer read.
Gaudi::Property< std::string > m_stripClusterKernelName
virtual StatusCode execute(const EventContext &ctx) const override final
Should be overriden by derived classes to perform meaningful work.
Gaudi::Property< std::string > m_pixelL2GKernelName
std::vector< xrt::kernel > m_pixelClusteringKernels ATLAS_THREAD_SAFE
SG::ReadHandleKey< int > m_FPGAPixelRDOSize
SG::WriteHandleKey< std::vector< uint32_t > > m_FPGAStripOutput
Gaudi::Property< std::string > m_stripEdmKernelName
SG::ReadHandleKey< std::vector< uint64_t > > m_FPGAPixelRDO
Gaudi::Property< std::string > m_stripL2GKernelName
std::atomic< uint64_t > m_numEvents
Number of events processed.
std::atomic< uint64_t > m_pixelInputTime
Time for pixel input buffer write.
Gaudi::Property< bool > m_doF110
Boolean to run F110 instead of F100.
std::atomic< uint64_t > m_stripEdmPrepTime
Time for strip EDM preparation (F110)
SG::WriteHandleKey< std::vector< uint32_t > > m_FPGAPixelOutput
std::atomic< uint64_t > m_edmPrepTime
Time for EDM preparation (F100)
SG::ReadHandleKey< std::vector< uint64_t > > m_FPGAStripRDO
std::atomic< uint64_t > m_stripOutputTime
Time for strip output buffer read.
void getListofCUs(std::vector< std::string > &cuNames)
Gaudi::Property< std::string > m_pixelEdmKernelName
virtual StatusCode finalize() override final
std::atomic< uint64_t > m_stripL2GTime
Time for strip L2G.
Gaudi::Property< std::string > m_xclbin
Path and name of the xclbin file.
std::atomic< uint64_t > m_stripInputTime
Time for strip input buffer write.
SG::ReadHandleKey< int > m_FPGAStripRDOSize
Gaudi::Property< int > m_FPGAThreads
std::atomic< uint64_t > m_pixelClusteringTime
Time for pixel clustering.
Gaudi::Property< std::string > m_pixelClusterKernelName
std::atomic< uint64_t > m_pixelL2GTime
Time for pixel L2G (F100)
virtual StatusCode initialize() override final
Detect the OpenCL devices and prepare OpenCL context.
std::atomic< uint64_t > m_kernelTime
Time window covering kernel execution.
The base class for the EFTracking FPGA integration development.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
The class for enconding RDO to FPGA format.