ATLAS Offline Software
Loading...
Searching...
No Matches
AthEnvironmentSvc Class Reference

Environment settings, including Eigen cache sizes. More...

#include <AthEnvironmentSvc.h>

Inheritance diagram for AthEnvironmentSvc:
Collaboration diagram for AthEnvironmentSvc:

Public Member Functions

virtual StatusCode initialize () override
 Gaudi initialize method.
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Private Attributes

IntegerProperty m_eigenL1CacheSize { this, "EigenL1CacheSize", 32768, "L1 cache size to declare to Eigen, to allow for for reproducibility across machines. Set all cache sizes to 0 to use instead the actual hardware cache sizes." }
IntegerProperty m_eigenL2CacheSize { this, "EigenL2CacheSize", 1048576, "L2 cache size to declare to Eigen, to allow for for reproducibility across machines. Set all cache sizes to 0 to use instead the actual hardware cache sizes." }
IntegerProperty m_eigenL3CacheSize { this, "EigenL3CacheSize", 33554432, "L3 cache size to declare to Eigen, to allow for for reproducibility across machines. Set all cache sizes to 0 to use instead the actual hardware cache sizes." }

Detailed Description

Environment settings, including Eigen cache sizes.

This service makes settings in the execution environment that we want for Athena but which don't really fit anywhere else.

For large matrices, Eigen breaks down operations into rectangular panels, which are sized to fit in cache. By default, Eigen queries the hardware to find the actual cache sizes. However, changing the panel size changes the order in which operations are done, which can slightly change results. The upshot is that by default, results of large matrix operations can vary slightly depending on the hardware. To avoid this, we fix the cache sizes that Eigen assumes rather than letting it query the hardware. The defaults used here match what is currently (Jul 2026) observed on lxplus (AMD EPYC-Genoa). Some other machines, such as the TDAQ test bed, have been seen to have larger cache sizes.

For more information, see ATLASRECTS-8013.

Definition at line 39 of file AthEnvironmentSvc.h.

Member Function Documentation

◆ initialize()

StatusCode AthEnvironmentSvc::initialize ( )
overridevirtual

Gaudi initialize method.

Definition at line 19 of file AthEnvironmentSvc.cxx.

20{
22 ATH_MSG_VERBOSE("Setting Eigen cache sizes to" <<
23 " L1: " << m_eigenL1CacheSize <<
24 " L2: " << m_eigenL2CacheSize <<
25 " L3: " << m_eigenL3CacheSize);
27 }
28 return StatusCode::SUCCESS;
29}
#define ATH_MSG_VERBOSE(x)
IntegerProperty m_eigenL2CacheSize
IntegerProperty m_eigenL3CacheSize
IntegerProperty m_eigenL1CacheSize

◆ msg()

MsgStream & AthCommonMsg< Service >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Service >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

Member Data Documentation

◆ m_eigenL1CacheSize

IntegerProperty AthEnvironmentSvc::m_eigenL1CacheSize { this, "EigenL1CacheSize", 32768, "L1 cache size to declare to Eigen, to allow for for reproducibility across machines. Set all cache sizes to 0 to use instead the actual hardware cache sizes." }
private

Definition at line 49 of file AthEnvironmentSvc.h.

50{ this, "EigenL1CacheSize", 32768, "L1 cache size to declare to Eigen, to allow for for reproducibility across machines. Set all cache sizes to 0 to use instead the actual hardware cache sizes." };

◆ m_eigenL2CacheSize

IntegerProperty AthEnvironmentSvc::m_eigenL2CacheSize { this, "EigenL2CacheSize", 1048576, "L2 cache size to declare to Eigen, to allow for for reproducibility across machines. Set all cache sizes to 0 to use instead the actual hardware cache sizes." }
private

Definition at line 52 of file AthEnvironmentSvc.h.

53{ this, "EigenL2CacheSize", 1048576, "L2 cache size to declare to Eigen, to allow for for reproducibility across machines. Set all cache sizes to 0 to use instead the actual hardware cache sizes." };

◆ m_eigenL3CacheSize

IntegerProperty AthEnvironmentSvc::m_eigenL3CacheSize { this, "EigenL3CacheSize", 33554432, "L3 cache size to declare to Eigen, to allow for for reproducibility across machines. Set all cache sizes to 0 to use instead the actual hardware cache sizes." }
private

Definition at line 55 of file AthEnvironmentSvc.h.

56{ this, "EigenL3CacheSize", 33554432, "L3 cache size to declare to Eigen, to allow for for reproducibility across machines. Set all cache sizes to 0 to use instead the actual hardware cache sizes." };

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