ATLAS Offline Software
F110StreamIntegrationAlg.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
9 #ifndef EFTRACKING_FPGA_INTEGRATION_F110StreamIntegrationAlg_H
10 #define EFTRACKING_FPGA_INTEGRATION_F110StreamIntegrationAlg_H
11 
12 // EFTracking include
16 
17 // Athena include
20 #include "GaudiKernel/ServiceHandle.h"
21 #include "GaudiKernel/IChronoSvc.h"
24 
26 {
34  {
35  public:
36  using IntegrationBase::IntegrationBase;
37  virtual StatusCode initialize() override final;
38  virtual StatusCode execute(const EventContext &ctx) const override final;
39  virtual StatusCode finalize() override final;
40 
41  private:
43 
44  SG::ReadHandleKey<std::vector<uint64_t>> m_FPGAPixelRDO{this, "FPGAEncodedPixelKey", "FPGAEncodedPixelRDOs", "Pixel RDO converted to FPGA format"};
45  SG::ReadHandleKey<std::vector<uint64_t>> m_FPGAStripRDO{this, "FPGAEncodedStripKey", "FPGAEncodedStripRDOs", "Strip RDO converted to FPGA format"};
46 
47  SG::ReadHandleKey<int> m_FPGAPixelRDOSize{this, "FPGAEncodedPixelSizeKey", "FPGAEncodedPixelSizeRDOs", "Pixel RDO converted to FPGA format"};
48  SG::ReadHandleKey<int> m_FPGAStripRDOSize{this, "FPGAEncodedStripSizeKey", "FPGAEncodedStripSizeRDOs", "Strip RDO converted to FPGA format"};
49 
50  SG::WriteHandleKey<std::vector<uint32_t>> m_FPGAPixelOutput{this, "FPGAOutputPixelKey", "FPGAPixelOutput", "Pixel output from FPGA format"};
51  SG::WriteHandleKey<std::vector<uint32_t>> m_FPGAStripOutput{this, "FPGAOutputStripKey", "FPGAStripOutput", "Strip output from FPGA format"};
52 
53  Gaudi::Property<int> m_FPGAThreads{this, "FPGAThreads", 1, "number of FPGA threads to initialize"};
54 
55  Gaudi::Property<std::string> m_xclbin{this, "xclbin", "", "xclbin path and name"};
56 
57  Gaudi::Property<std::string> m_pixelStartClusterKernelName{this, "PixelStartClusterKernelName", "", "Name of the pixel clustering start kernel"};
58  Gaudi::Property<std::string> m_pixelEndClusterKernelName{this, "PixelEndClusterKernelName", "", "Name of the pixel clustering end kernel"};
59 
60  Gaudi::Property<std::string> m_stripStartClusterKernelName{this, "StripStartClusterKernelName", "", "Name of the strip clustering start kernel"};
61  Gaudi::Property<std::string> m_stripEndClusterKernelName{this, "StripEndClusterKernelName", "", "Name of the strip clustering end kernel"};
62 
63 
64  mutable std::atomic<ulonglong> m_numEvents{0};
65  mutable std::atomic<cl_ulong> m_pixelInputTime{0};
66  mutable std::atomic<cl_ulong> m_stripInputTime{0};
67 
68  mutable std::atomic<cl_ulong> m_pixelPipelineTime{0};
69  mutable std::atomic<cl_ulong> m_stripPipelineTime{0};
70  mutable std::atomic<cl_ulong> m_pixelOutputTime{0};
71  mutable std::atomic<cl_ulong> m_stripOutputTime{0};
72 
73  // Kernels
74  // Clustering
75  mutable std::vector<cl::Kernel> m_pixelStartClusteringKernels ATLAS_THREAD_SAFE;
76  mutable std::vector<cl::Kernel> m_pixelEndClusteringKernels ATLAS_THREAD_SAFE;
77  mutable std::vector<cl::Kernel> m_stripStartClusteringKernels ATLAS_THREAD_SAFE;
78  mutable std::vector<cl::Kernel> m_stripEndClusteringKernels ATLAS_THREAD_SAFE;
79 
80  // Buffers for input
81  std::vector<cl::Buffer> m_pixelClusterInputBufferList;
82  std::vector<cl::Buffer> m_stripClusterInputBufferList;
83 
84  // EDMPrep
85  std::vector<cl::Buffer> m_edmPixelOutputBufferList;
86  std::vector<cl::Buffer> m_edmStripOutputBufferList;
87 
88  // Command queue
89  std::vector<cl::CommandQueue> m_acc_queues;
90  void getListofCUs(std::vector<std::string>& cuNames);
91 
92 
93  };
94 }
95 
96 #endif // EFTRACKING_FPGA_INTEGRATION_F110StreamIntegrationAlg_H
EFTrackingFPGAIntegration::F110StreamIntegrationAlg
This is the class for the benchmark algorithm specific to the FPGA integration and output conversion.
Definition: F110StreamIntegrationAlg.h:34
IRegSelTool.h
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_stripPipelineTime
std::atomic< cl_ulong > m_stripPipelineTime
Time for strip pipeline.
Definition: F110StreamIntegrationAlg.h:69
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_chronoSvc
ServiceHandle< IChronoSvc > m_chronoSvc
Service for timing the algorithm.
Definition: F110StreamIntegrationAlg.h:42
IntegrationBase
The base class for the EFTracking FPGA integration development.
Definition: IntegrationBase.h:38
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_FPGAPixelOutput
SG::WriteHandleKey< std::vector< uint32_t > > m_FPGAPixelOutput
Definition: F110StreamIntegrationAlg.h:50
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_pixelStartClusterKernelName
Gaudi::Property< std::string > m_pixelStartClusterKernelName
Name of the pixel clustering kernel start.
Definition: F110StreamIntegrationAlg.h:57
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_FPGAPixelRDOSize
SG::ReadHandleKey< int > m_FPGAPixelRDOSize
Definition: F110StreamIntegrationAlg.h:47
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::initialize
virtual StatusCode initialize() override final
Detect the OpenCL devices and prepare OpenCL context.
Definition: F110StreamIntegrationAlg.cxx:16
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_pixelPipelineTime
std::atomic< cl_ulong > m_pixelPipelineTime
Time for pixel pipeline.
Definition: F110StreamIntegrationAlg.h:68
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_acc_queues
std::vector< cl::CommandQueue > m_acc_queues
Definition: F110StreamIntegrationAlg.h:89
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_FPGAPixelRDO
SG::ReadHandleKey< std::vector< uint64_t > > m_FPGAPixelRDO
Definition: F110StreamIntegrationAlg.h:44
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_FPGAThreads
Gaudi::Property< int > m_FPGAThreads
Definition: F110StreamIntegrationAlg.h:53
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::finalize
virtual StatusCode finalize() override final
Definition: F110StreamIntegrationAlg.cxx:228
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_pixelClusterInputBufferList
std::vector< cl::Buffer > m_pixelClusterInputBufferList
Definition: F110StreamIntegrationAlg.h:81
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_pixelOutputTime
std::atomic< cl_ulong > m_pixelOutputTime
Time for pixel output buffer read.
Definition: F110StreamIntegrationAlg.h:70
IntegrationBase.h
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_numEvents
std::atomic< ulonglong > m_numEvents
Number of events processed.
Definition: F110StreamIntegrationAlg.h:64
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::ATLAS_THREAD_SAFE
std::vector< cl::Kernel > m_stripStartClusteringKernels ATLAS_THREAD_SAFE
Definition: F110StreamIntegrationAlg.h:77
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_stripClusterInputBufferList
std::vector< cl::Buffer > m_stripClusterInputBufferList
Definition: F110StreamIntegrationAlg.h:82
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_xclbin
Gaudi::Property< std::string > m_xclbin
Path and name of the xclbin file.
Definition: F110StreamIntegrationAlg.h:55
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::ATLAS_THREAD_SAFE
std::vector< cl::Kernel > m_stripEndClusteringKernels ATLAS_THREAD_SAFE
Definition: F110StreamIntegrationAlg.h:78
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::ATLAS_THREAD_SAFE
std::vector< cl::Kernel > m_pixelEndClusteringKernels ATLAS_THREAD_SAFE
Definition: F110StreamIntegrationAlg.h:76
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_stripStartClusterKernelName
Gaudi::Property< std::string > m_stripStartClusterKernelName
Name of the strip clustering kernel start.
Definition: F110StreamIntegrationAlg.h:60
SCT_RDO_Container.h
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::ATLAS_THREAD_SAFE
std::vector< cl::Kernel > m_pixelStartClusteringKernels ATLAS_THREAD_SAFE
Definition: F110StreamIntegrationAlg.h:75
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_FPGAStripRDOSize
SG::ReadHandleKey< int > m_FPGAStripRDOSize
Definition: F110StreamIntegrationAlg.h:48
EFTrackingFPGAIntegration
The class for enconding RDO to FPGA format.
Definition: F100DataEncodingAlg.h:27
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_pixelEndClusterKernelName
Gaudi::Property< std::string > m_pixelEndClusterKernelName
Name of the pixel clustering kernel start.
Definition: F110StreamIntegrationAlg.h:58
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_stripInputTime
std::atomic< cl_ulong > m_stripInputTime
Time for strip input buffer write.
Definition: F110StreamIntegrationAlg.h:66
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_pixelInputTime
std::atomic< cl_ulong > m_pixelInputTime
Time for pixel input buffer write.
Definition: F110StreamIntegrationAlg.h:65
EFTrackingTransient.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_edmPixelOutputBufferList
std::vector< cl::Buffer > m_edmPixelOutputBufferList
Definition: F110StreamIntegrationAlg.h:85
PixelRDO_Container.h
xAODClusterMaker.h
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_stripEndClusterKernelName
Gaudi::Property< std::string > m_stripEndClusterKernelName
Name of the strip clustering kernel start.
Definition: F110StreamIntegrationAlg.h:61
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Should be overriden by derived classes to perform meaningful work.
Definition: F110StreamIntegrationAlg.cxx:97
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_edmStripOutputBufferList
std::vector< cl::Buffer > m_edmStripOutputBufferList
Definition: F110StreamIntegrationAlg.h:86
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_stripOutputTime
std::atomic< cl_ulong > m_stripOutputTime
Time for strip output buffer read.
Definition: F110StreamIntegrationAlg.h:71
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_FPGAStripOutput
SG::WriteHandleKey< std::vector< uint32_t > > m_FPGAStripOutput
Definition: F110StreamIntegrationAlg.h:51
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::getListofCUs
void getListofCUs(std::vector< std::string > &cuNames)
Definition: F110StreamIntegrationAlg.cxx:246
EFTrackingFPGAIntegration::F110StreamIntegrationAlg::m_FPGAStripRDO
SG::ReadHandleKey< std::vector< uint64_t > > m_FPGAStripRDO
Definition: F110StreamIntegrationAlg.h:45
TrigRoiDescriptorCollection.h
ServiceHandle< IChronoSvc >