ATLAS Offline Software
IntegrationBase.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
12 #ifndef EFTRACKING_FPGA_INTEGRATION_INTEGRATION_BASE_H
13 #define EFTRACKING_FPGA_INTEGRATION_INTEGRATION_BASE_H
14 
15 // Athena include
17 
18 
19 // OpenCL settings and include for Xilinx U250 accelerator card
20 #define CL_HPP_CL_1_2_DEFAULT_BUILD
21 #define CL_HPP_TARGET_OPENCL_VERSION 120
22 #define CL_HPP_MINIMUM_OPENCL_VERSION 120
23 #define CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY 1
24 #define CL_USE_DEPRECATED_OPENCL_1_2_APIS
25 // OpenCL include
26 #include "CL/cl2.hpp"
27 
28 // STL include
29 #include <string>
30 #include <vector>
31 
38 {
39 public:
41 
47  virtual StatusCode initialize() override;
48 
52  virtual StatusCode execute(const EventContext &ctx) const;
53 
57  StatusCode loadProgram(const std::string& xclbin);
58 
62  StatusCode precheck(std::vector<Gaudi::Property<std::string>> inputs) const;
63 
64 protected:
65  // Madatory OpenCL objects that needed by derived classes
66  cl::Device m_accelerator;
67  cl::Context m_context;
68  cl::Program m_program;
69 };
70 
71 #endif // EFTRACKING_FPGA_INTEGRATION_INTEGRATION_BASE_H
IntegrationBase::m_accelerator
cl::Device m_accelerator
Device object for the accelerator card.
Definition: IntegrationBase.h:66
IntegrationBase
The base class for the EFTracking FPGA integration development.
Definition: IntegrationBase.h:38
IntegrationBase::initialize
virtual StatusCode initialize() override
Detect the OpenCL devices and prepare OpenCL context.
Definition: IntegrationBase.cxx:14
IntegrationBase::m_context
cl::Context m_context
Context object for the application.
Definition: IntegrationBase.h:67
postInclude.inputs
inputs
Definition: postInclude.SortInput.py:15
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
IntegrationBase::execute
virtual StatusCode execute(const EventContext &ctx) const
Should be overriden by derived classes to perform meaningful work.
Definition: IntegrationBase.cxx:75
IntegrationBase::loadProgram
StatusCode loadProgram(const std::string &xclbin)
Find the xclbin file and load it into the OpenCL program object.
Definition: IntegrationBase.cxx:82
AthReentrantAlgorithm.h
IntegrationBase::precheck
StatusCode precheck(std::vector< Gaudi::Property< std::string >> inputs) const
Check if the the desired Gaudi properties are set.
Definition: IntegrationBase.cxx:121
IntegrationBase::m_program
cl::Program m_program
Program object containing the kernel.
Definition: IntegrationBase.h:68