ATLAS Offline Software
Loading...
Searching...
No Matches
AthHIPExamples::DeviceStateHandler Class Reference

Base class to provide common infrastructure for handling multiprocess state transitions for GPU. More...

#include <DeviceStateHandler.h>

Inheritance diagram for AthHIPExamples::DeviceStateHandler:
Collaboration diagram for AthHIPExamples::DeviceStateHandler:

Public Member Functions

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

Protected Member Functions

virtual StatusCode initialize_global ()
 Glocal initialization.
virtual StatusCode initialize_worker ()
 Initialization per process.
virtual StatusCode stop_worker ()
 clean up
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 GPU.

Based on CaloRecGPU/CaloGPUCUDAInitialization.h

Definition at line 27 of file DeviceStateHandler.h.

Constructor & Destructor Documentation

◆ ~DeviceStateHandler()

virtual AthHIPExamples::DeviceStateHandler::~DeviceStateHandler ( )
virtualdefault

Member Function Documentation

◆ handle()

void AthHIPExamples::DeviceStateHandler::handle ( const Incident & incident)
inlineoverride

Definition at line 86 of file DeviceStateHandler.h.

87 {
88 const bool is_multiprocess = (Gaudi::Concurrency::ConcurrencyFlags::numProcs() > 0);
89 if (is_multiprocess && incident.type() == AthenaInterprocess::UpdateAfterFork::type())
90 {
91 m_is_child = true;
92 if (!this->initialize_worker().isSuccess())
93 {
94 throw GaudiException("Failed to initialize the device setup!",
95 "DeviceStateHandler::handle",
96 StatusCode::FAILURE);
97 }
98 }
99 }
virtual StatusCode initialize_worker()
Initialization per process.
static const std::string & type()
Incident type.
Definition Incidents.h:49

◆ initialize()

virtual StatusCode AthHIPExamples::DeviceStateHandler::initialize ( )
inlineprotectedvirtual

Definition at line 49 of file DeviceStateHandler.h.

50 {
52
53 const bool is_multiprocess = (Gaudi::Concurrency::ConcurrencyFlags::numProcs() > 0);
54
55 if (is_multiprocess)
56 {
57 ServiceHandle<IIncidentSvc> incidentSvc("IncidentSvc","DeviceStateHandler");
58 incidentSvc->addListener(this, AthenaInterprocess::UpdateAfterFork::type());
59 }
60 else
61 {
63 }
64
65 return StatusCode::SUCCESS;
66 }
#define ATH_CHECK
Evaluate an expression and check for errors.
virtual StatusCode initialize_global()
Glocal initialization.

◆ initialize_global()

virtual StatusCode AthHIPExamples::DeviceStateHandler::initialize_global ( )
inlineprotectedvirtual

Glocal initialization.

Definition at line 32 of file DeviceStateHandler.h.

33 {
34 return StatusCode::SUCCESS;
35 }

◆ initialize_worker()

virtual StatusCode AthHIPExamples::DeviceStateHandler::initialize_worker ( )
inlineprotectedvirtual

Initialization per process.

Reimplemented in AthHIPExamples::LinearTransformExampleAlg.

Definition at line 38 of file DeviceStateHandler.h.

39 {
40 return StatusCode::SUCCESS;
41 }

◆ stop()

virtual StatusCode AthHIPExamples::DeviceStateHandler::stop ( )
inlineprotectedvirtual

Definition at line 68 of file DeviceStateHandler.h.

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

◆ stop_worker()

virtual StatusCode AthHIPExamples::DeviceStateHandler::stop_worker ( )
inlineprotectedvirtual

clean up

Definition at line 44 of file DeviceStateHandler.h.

45 {
46 return StatusCode::SUCCESS;
47 }

Member Data Documentation

◆ m_is_child

bool AthHIPExamples::DeviceStateHandler::m_is_child = false
protected

Definition at line 82 of file DeviceStateHandler.h.


The documentation for this class was generated from the following file: