ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
AthXRT::StateHandler Class Reference

Base class to provide common infrastructure for handling multiprocess state transitions for FPGA. Based on CaloRecGPU/CaloGPUCUDAInitialization.h. More...

#include <StateHandler.h>

Inheritance diagram for AthXRT::StateHandler:
Collaboration diagram for AthXRT::StateHandler:

Public Member Functions

void handle (const Incident &incident) override
 
virtual ~StateHandler ()=default
 

Protected Member Functions

virtual StatusCode initialize_global ()
 Glocal XRT initialization. More...
 
virtual StatusCode initialize_worker ()
 Initialization per process. More...
 
virtual StatusCode stop_worker ()
 clean up More...
 
virtual StatusCode initialize ()
 
virtual StatusCode stop ()
 

Protected Attributes

bool m_is_child = false
 

Detailed Description

Base class to provide common infrastructure for handling multiprocess state transitions for FPGA. Based on CaloRecGPU/CaloGPUCUDAInitialization.h.

Definition at line 26 of file StateHandler.h.

Constructor & Destructor Documentation

◆ ~StateHandler()

virtual AthXRT::StateHandler::~StateHandler ( )
virtualdefault

Member Function Documentation

◆ handle()

void AthXRT::StateHandler::handle ( const Incident &  incident)
inlineoverride

Definition at line 85 of file StateHandler.h.

86  {
87  const bool is_multiprocess = (Gaudi::Concurrency::ConcurrencyFlags::numProcs() > 0);
88  if (is_multiprocess && incident.type() == AthenaInterprocess::UpdateAfterFork::type())
89  {
90  m_is_child = true;
91  if (!this->initialize_worker().isSuccess())
92  {
93  throw GaudiException("Failed to initialize the XRT setup!",
94  "StateHandler::handle",
95  StatusCode::FAILURE);
96  }
97  }
98  }

◆ initialize()

virtual StatusCode AthXRT::StateHandler::initialize ( )
inlineprotectedvirtual

Reimplemented in AthExXRT::VectorAddXRTExampleAlg, AthExXRT::VectorMultXRTExampleAlg, AthExXRT::VectorAddOCLExampleAlg, and AthExXRT::VectorMultOCLExampleAlg.

Definition at line 48 of file StateHandler.h.

49  {
51 
52  const bool is_multiprocess = (Gaudi::Concurrency::ConcurrencyFlags::numProcs() > 0);
53 
54  if (is_multiprocess)
55  {
56  ServiceHandle<IIncidentSvc> incidentSvc("IncidentSvc","StateHandler");
57  incidentSvc->addListener(this, AthenaInterprocess::UpdateAfterFork::type());
58  }
59  else
60  {
62  }
63 
64  return StatusCode::SUCCESS;
65  }

◆ initialize_global()

virtual StatusCode AthXRT::StateHandler::initialize_global ( )
inlineprotectedvirtual

Glocal XRT initialization.

Reimplemented in AthExXRT::VectorAddXRTExampleAlg, AthExXRT::VectorMultXRTExampleAlg, AthExXRT::VectorAddOCLExampleAlg, and AthExXRT::VectorMultOCLExampleAlg.

Definition at line 31 of file StateHandler.h.

32  {
33  return StatusCode::SUCCESS;
34  }

◆ initialize_worker()

virtual StatusCode AthXRT::StateHandler::initialize_worker ( )
inlineprotectedvirtual

Initialization per process.

Reimplemented in AthExXRT::VectorAddXRTExampleAlg, AthExXRT::VectorMultXRTExampleAlg, AthExXRT::VectorAddOCLExampleAlg, and AthExXRT::VectorMultOCLExampleAlg.

Definition at line 37 of file StateHandler.h.

38  {
39  return StatusCode::SUCCESS;
40  }

◆ stop()

virtual StatusCode AthXRT::StateHandler::stop ( )
inlineprotectedvirtual

Reimplemented in AthExXRT::VectorAddOCLExampleAlg, and AthExXRT::VectorMultOCLExampleAlg.

Definition at line 67 of file StateHandler.h.

67  {
68  const bool is_multiprocess = (Gaudi::Concurrency::ConcurrencyFlags::numProcs() > 0);
69 
70  if (!is_multiprocess) {
71  ATH_CHECK(this->stop_worker());
72  } else {
73  if (m_is_child){
74  ATH_CHECK(this->stop_worker());
75  }
76  }
77 
78  return StatusCode::SUCCESS;
79  }

◆ stop_worker()

virtual StatusCode AthXRT::StateHandler::stop_worker ( )
inlineprotectedvirtual

clean up

Reimplemented in AthExXRT::VectorAddOCLExampleAlg, and AthExXRT::VectorMultOCLExampleAlg.

Definition at line 43 of file StateHandler.h.

44  {
45  return StatusCode::SUCCESS;
46  }

Member Data Documentation

◆ m_is_child

bool AthXRT::StateHandler::m_is_child = false
protected

Definition at line 81 of file StateHandler.h.


The documentation for this class was generated from the following file:
AthXRT::StateHandler::initialize_global
virtual StatusCode initialize_global()
Glocal XRT initialization.
Definition: StateHandler.h:31
AthXRT::StateHandler::stop_worker
virtual StatusCode stop_worker()
clean up
Definition: StateHandler.h:43
AthXRT::StateHandler::m_is_child
bool m_is_child
Definition: StateHandler.h:81
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthXRT::StateHandler::initialize_worker
virtual StatusCode initialize_worker()
Initialization per process.
Definition: StateHandler.h:37
AthenaInterprocess::UpdateAfterFork::type
static const std::string & type()
Incident type.
Definition: Incidents.h:49
ServiceHandle< IIncidentSvc >