 |
ATLAS Offline Software
|
Go to the documentation of this file.
6 #ifndef EFTRACKING_FPGA_INTEGRATION_F150KERNELTESTERALG_H
7 #define EFTRACKING_FPGA_INTEGRATION_F150KERNELTESTERALG_H
20 #include "xrt/xrt_device.h"
21 #include "xrt/xrt_kernel.h"
22 #include <experimental/xrt_ip.h>
25 #include "CL/cl2xrt.hpp"
28 #include "GaudiKernel/ServiceHandle.h"
29 #include "GaudiKernel/IChronoSvc.h"
34 #define EVENT_COUNT_RST 0x80000000
35 #define USER_CTRL_OFFSET 0x10
42 using IntegrationBase::IntegrationBase;
50 "ChronoStatSvc",
name()};
56 "Tool for creating xAOD cluster containers"};
59 this,
"TestVectorTool",
"TestVectorTool",
"Tool for preparing test vectors"};
62 this,
"FPGADataFormatTool",
"FPGADataFormatTool",
"Tool for formatting FPGA data"};
64 Gaudi::Property<std::string>
m_xclbin{
this,
"xclbin",
"",
"xclbin path and name"};
66 Gaudi::Property<bool>
m_runSE{
this,
"RunSlicing",
"",
"Whether to run slicing engine or not"};
67 Gaudi::Property<bool>
m_runIO{
this,
"RunInsideOut",
"",
"Whether to run inside out or not"};
68 Gaudi::Property<bool>
m_runIOOnSE{
this,
"RunInsideOutOnSlicingEngine",
"",
"Whether to run inside out on the output of the slicing engine"};
75 ToolHandle<OutputConversionTool>
m_outputConversionTool{
this,
"OutputConversionTool",
"OutputConversionTool",
"tool for output conversion"};
78 Gaudi::Property<std::string>
m_slicingEngineInputName{
this,
"SlicingEngineInputName",
"",
"Name of the slicing engine input kernel"};
79 Gaudi::Property<std::string>
m_slicingEngineName{
this,
"SlicingEngineName",
"",
"Name of the slicing engine kernel"};
80 Gaudi::Property<std::string>
m_slicingEngineOutputName{
this,
"SlicingEngineOutputName",
"",
"Name of the slicing engine output kernel"};
81 Gaudi::Property<std::string>
m_insideOutInputName{
this,
"InsideOutInputName",
"",
"Name of the inside out input kernel"};
82 Gaudi::Property<std::string>
m_insideOutOutputName{
this,
"InsideOutOutputName",
"",
"Name of the inside out output kernel"};
112 std::string
get_cu_name(
const std::string& kernel_name,
int cu);
118 #endif // EFTRACKING_FPGA_INTEGRATION_F150KERNELTESTERALG_H
std::string get_cu_name(const std::string &kernel_name, int cu)
The base class for the EFTracking FPGA integration development.
char data[hepevt_bytes_allocation_ATLAS]
Gaudi::Property< std::string > m_slicingEngineInputName
ToolHandle< FPGADataFormatTool > m_FPGADataFormatTool
Tool for formatting FPGA data.
cl::Kernel m_insideOutOutput
Gaudi::Property< std::string > m_slicingEngineName
ServiceHandle< IChronoSvc > m_chronoSvc
Service for timing the algorithm.
Gaudi::Property< std::string > m_slicingEngineOutputName
ToolHandle< OutputConversionTool > m_outputConversionTool
Gaudi::Property< std::string > m_insideOutInputName
virtual StatusCode execute(const EventContext &ctx) const override final
Should be overriden by derived classes to perform meaningful work.
std::atomic< ulonglong > m_num_Events
Number of events for the average time of the kernel execution.
cl::Event m_slicingEngineOutputEndEvent
Gaudi::Property< bool > m_runIOOnSE
Whether to run inside out on the output of slicing engine.
void dumpHexData(size_t dataLen, uint64_t *data, const std::string &dataDescriptor) const
std::atomic< cl_ulong > m_sum_kernelTime
Sum for the average time of the kernel execution.
cl::Kernel m_insideOutInput
cl::Kernel m_slicingEngineInput
ToolHandle< xAODClusterMaker > m_xaodClusterMaker
Tool for creating xAOD containers.
::StatusCode StatusCode
StatusCode definition for legacy code.
cl::Buffer m_slicingEngineOutputBuffer
virtual StatusCode initialize() override final
Detect the OpenCL devices and prepare OpenCL context.
cl::Event m_insideOutEndEvent
xrt::device m_xrt_accelerator
The class for enconding RDO to FPGA format.
cl::Event m_slicingEngineInputEndEvent
Gaudi::Property< bool > m_runIO
Whether to run inside out or not.
ToolHandle< TestVectorTool > m_testVectorTool
Tool for preparing test vectors.
cl::Kernel m_slicingEngineOutput
Gaudi::Property< std::string > m_xclbin
Path and name of the xclbin file.
xrt::ip m_slicingEngineIP
Gaudi::Property< bool > m_runSE
Whether to run SE or not.
virtual StatusCode finalize() override final
Gaudi::Property< std::string > m_insideOutOutputName
cl::Buffer m_insideOutInputBuffer
cl::Buffer m_slicingEngineInputBuffer
cl::Buffer m_insideOutOutputBuffer
SG::ReadHandleKey< FPGATrackSimHitCollection > m_FPGASlicedHitKey
std::atomic< cl_ulong > m_kernelTime
Time for kernel execution.
SG::ReadHandleKey< FPGATrackSimTrackCollection > m_FPGATrackKey
SG::ReadHandleKey< FPGATrackSimHitCollection > m_FPGAHitKey