Skip to content

Commit fdd03a5

Browse files
authored
Merge pull request #47355 from makortel/processConfigurationHardwareResourcesDescription
Use HardwareResourcesDescription in ProcessConfiguration
2 parents 912de51 + 020dcbb commit fdd03a5

File tree

45 files changed

+352
-129
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+352
-129
lines changed

DQM/SiStripMonitorHardware/src/SiStripSpyEventMatcher.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#include "FWCore/Framework/interface/ProductResolversFactory.h"
2020
#include "FWCore/ServiceRegistry/interface/ActivityRegistry.h"
2121
#include "FWCore/Utilities/interface/Exception.h"
22-
#include "FWCore/Utilities/interface/GetPassID.h"
2322
#include "FWCore/Version/interface/GetReleaseVersion.h"
2423
#include "DQM/SiStripMonitorHardware/interface/SiStripSpyUtilities.h"
2524
#include <algorithm>
@@ -57,8 +56,9 @@ namespace sistrip {
5756
counterDiffMax_(config.getParameter<uint32_t>("CounterDiffMaxAllowed")),
5857
productRegistry_(new edm::SignallingProductRegistry),
5958
source_(constructSource(config.getParameter<edm::ParameterSet>("SpySource"))),
60-
processConfiguration_(
61-
new edm::ProcessConfiguration(std::string("@MIXING"), edm::getReleaseVersion(), edm::getPassID())),
59+
// hardware information is not needed for the "overlay"
60+
processConfiguration_(std::make_unique<edm::ProcessConfiguration>(
61+
"@MIXING", edm::getReleaseVersion(), edm::HardwareResourcesDescription())),
6262
eventPrincipal_() {
6363
// Use the empty parameter set for the parameter set ID of our "@MIXING" process.
6464
processConfiguration_->setParameterSetID(edm::ParameterSet::emptyParameterSetID());

DQMServices/FwkIO/plugins/DQMRootOutputModule.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -528,8 +528,8 @@ void DQMRootOutputModule::startEndFile() {
528528
processHistoryTree->Branch(kProcessConfigurationParameterSetIDBranch, &parameterSetID);
529529
std::string releaseVersion;
530530
processHistoryTree->Branch(kProcessConfigurationReleaseVersion, &releaseVersion);
531-
std::string passID;
532-
processHistoryTree->Branch(kProcessConfigurationPassID, &passID);
531+
std::string hardwareResourcesSerialized;
532+
processHistoryTree->Branch(kProcessConfigurationHardwareResources, &hardwareResourcesSerialized);
533533

534534
for (std::vector<edm::ProcessHistoryID>::iterator it = m_seenHistories.begin(), itEnd = m_seenHistories.end();
535535
it != itEnd;
@@ -542,7 +542,7 @@ void DQMRootOutputModule::startEndFile() {
542542
++itPC, ++index) {
543543
processName = itPC->processName();
544544
releaseVersion = itPC->releaseVersion();
545-
passID = itPC->passID();
545+
hardwareResourcesSerialized = itPC->hardwareResourcesDescriptionSerialized();
546546
parameterSetID = itPC->parameterSetID().compactForm();
547547
tbb::this_task_arena::isolate([&] { processHistoryTree->Fill(); });
548548
}

DQMServices/FwkIO/plugins/format.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ static const char* const kPHIndexBranch = "Index";
8181
static const char* const kProcessConfigurationProcessNameBranch = "ProcessName";
8282
static const char* const kProcessConfigurationParameterSetIDBranch = "ParameterSetID";
8383
static const char* const kProcessConfigurationReleaseVersion = "ReleaseVersion";
84-
static const char* const kProcessConfigurationPassID = "PassID";
84+
// misnomer, but kept for backwards (and forwards) compatibility
85+
static const char* const kProcessConfigurationHardwareResources = "PassID";
8586

8687
static const char* const kParameterSetTree = "ParameterSets";
8788
static const char* const kParameterSetBranch = "ParameterSetBlob";

DataFormats/Provenance/interface/HardwareResourcesDescription.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@
77
#include <vector>
88

99
namespace edm {
10+
/**
11+
* Description of various hardware details stored as part of
12+
* ProcessConfiguration
13+
*
14+
* An object can be serialized as a string. An object with empty
15+
* content will be serialized as an empty string (this was a simple
16+
* way to preserve backwards (and forwards) compatibility in
17+
* ProcessHistory for the ID checksum)
18+
*/
1019
struct HardwareResourcesDescription {
1120
HardwareResourcesDescription() = default;
1221
explicit HardwareResourcesDescription(std::string_view serialized);

DataFormats/Provenance/interface/ModuleDescription.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ namespace edm {
4848

4949
std::string const& processName() const;
5050
std::string const& releaseVersion() const;
51-
std::string const& passID() const;
5251
ParameterSetID const& mainParameterSetID() const;
5352

5453
// compiler-written copy c'tor, assignment, and d'tor are correct.

DataFormats/Provenance/interface/ProcessConfiguration.h

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#ifndef DataFormats_Provenance_ProcessConfiguration_h
22
#define DataFormats_Provenance_ProcessConfiguration_h
33

4+
#include "DataFormats/Provenance/interface/HardwareResourcesDescription.h"
45
#include "DataFormats/Provenance/interface/ParameterSetID.h"
5-
#include "DataFormats/Provenance/interface/PassID.h"
66
#include "DataFormats/Provenance/interface/ProcessConfigurationID.h"
77
#include "DataFormats/Provenance/interface/ReleaseVersion.h"
88

@@ -14,18 +14,22 @@ namespace edm {
1414
class ProcessConfiguration {
1515
public:
1616
ProcessConfiguration();
17-
ProcessConfiguration(std::string const& procName, ReleaseVersion const& relVersion, PassID const& pass);
17+
ProcessConfiguration(std::string const& procName,
18+
ReleaseVersion const& relVersion,
19+
HardwareResourcesDescription const& hwDescription);
1820

1921
ProcessConfiguration(std::string const& procName,
2022
ParameterSetID const& pSetID,
2123
ReleaseVersion const& relVersion,
22-
PassID const& pass);
24+
HardwareResourcesDescription const& hwDescription);
2325

2426
std::string const& processName() const { return processName_; }
2527
ParameterSetID const& parameterSetID() const;
2628
bool isParameterSetValid() const { return parameterSetID_.isValid(); }
2729
ReleaseVersion const& releaseVersion() const { return releaseVersion_; }
28-
PassID const& passID() const { return passID_; }
30+
/// Note: this function parses the string on every call, so it should be called rarely
31+
HardwareResourcesDescription hardwareResourcesDescription() const { return HardwareResourcesDescription(passID_); }
32+
std::string const& hardwareResourcesDescriptionSerialized() const { return passID_; }
2933
ProcessConfigurationID id() const;
3034

3135
void setParameterSetID(ParameterSetID const& pSetID);
@@ -55,7 +59,12 @@ namespace edm {
5559
std::string processName_;
5660
ParameterSetID parameterSetID_;
5761
ReleaseVersion releaseVersion_;
58-
PassID passID_;
62+
// The passID_ really holds the HardwareResourcesDescription in a
63+
// serialized form. Therefore the passID name is a complete
64+
// misnomer, but was kept to make forward-compabitility easier
65+
// (even if that not formally not supported, this construct is a
66+
// precaution in case a further Run3 use case would surface)
67+
std::string passID_;
5968
Transients transient_;
6069
};
6170

@@ -65,7 +74,8 @@ namespace edm {
6574

6675
inline bool operator==(ProcessConfiguration const& a, ProcessConfiguration const& b) {
6776
return a.processName() == b.processName() && a.parameterSetID() == b.parameterSetID() &&
68-
a.releaseVersion() == b.releaseVersion() && a.passID() == b.passID();
77+
a.releaseVersion() == b.releaseVersion() &&
78+
a.hardwareResourcesDescriptionSerialized() == b.hardwareResourcesDescriptionSerialized();
6979
}
7080

7181
inline bool operator!=(ProcessConfiguration const& a, ProcessConfiguration const& b) { return !(a == b); }

DataFormats/Provenance/src/HardwareResourcesDescription.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ namespace edm {
2323
}
2424

2525
std::string HardwareResourcesDescription::serialize() const {
26+
if (microarchitecture.empty() and cpuModels.empty() and selectedAccelerators.empty() and gpuModels.empty())
27+
return "";
2628
return edm::compactString::serialize(microarchitecture, cpuModels, selectedAccelerators, gpuModels);
2729
}
2830

DataFormats/Provenance/src/ModuleDescription.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ namespace edm {
4848

4949
std::string const& ModuleDescription::releaseVersion() const { return processConfiguration().releaseVersion(); }
5050

51-
std::string const& ModuleDescription::passID() const { return processConfiguration().passID(); }
52-
5351
ParameterSetID const& ModuleDescription::mainParameterSetID() const {
5452
return processConfiguration().parameterSetID();
5553
}
@@ -75,7 +73,8 @@ namespace edm {
7573
return true;
7674
if (rh.releaseVersion() < releaseVersion())
7775
return false;
78-
if (passID() < rh.passID())
76+
if (processConfiguration().hardwareResourcesDescriptionSerialized() <
77+
rh.processConfiguration().hardwareResourcesDescriptionSerialized())
7978
return true;
8079
return false;
8180
}

DataFormats/Provenance/src/ProcessConfiguration.cc

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,21 @@
1313

1414
namespace edm {
1515

16-
ProcessConfiguration::ProcessConfiguration() : processName_(), parameterSetID_(), releaseVersion_(), passID_() {}
16+
ProcessConfiguration::ProcessConfiguration() = default;
1717

1818
ProcessConfiguration::ProcessConfiguration(std::string const& procName,
1919
ParameterSetID const& pSetID,
2020
ReleaseVersion const& relVersion,
21-
PassID const& pass)
22-
: processName_(procName), parameterSetID_(pSetID), releaseVersion_(relVersion), passID_(pass) {}
21+
HardwareResourcesDescription const& hwDescription)
22+
: processName_(procName),
23+
parameterSetID_(pSetID),
24+
releaseVersion_(relVersion),
25+
passID_(hwDescription.serialize()) {}
2326

2427
ProcessConfiguration::ProcessConfiguration(std::string const& procName,
2528
ReleaseVersion const& relVersion,
26-
PassID const& pass)
27-
: processName_(procName), parameterSetID_(), releaseVersion_(relVersion), passID_(pass) {
29+
HardwareResourcesDescription const& hwDescription)
30+
: processName_(procName), parameterSetID_(), releaseVersion_(relVersion), passID_(hwDescription.serialize()) {
2831
setCurrentProcess();
2932
}
3033

@@ -83,6 +86,7 @@ namespace edm {
8386
return;
8487
transient_.pcid_ = ProcessConfigurationID();
8588
releaseVersion_.erase(iter, iEnd);
89+
passID_ = edm::HardwareResourcesDescription().serialize();
8690
}
8791

8892
bool operator<(ProcessConfiguration const& a, ProcessConfiguration const& b) {
@@ -98,13 +102,14 @@ namespace edm {
98102
return true;
99103
if (b.releaseVersion() < a.releaseVersion())
100104
return false;
101-
if (a.passID() < b.passID())
105+
if (a.hardwareResourcesDescriptionSerialized() < b.hardwareResourcesDescriptionSerialized())
102106
return true;
103107
return false;
104108
}
105109

106110
std::ostream& operator<<(std::ostream& os, ProcessConfiguration const& pc) {
107-
os << pc.processName() << ' ' << pc.parameterSetID() << ' ' << pc.releaseVersion() << ' ' << pc.passID();
111+
os << pc.processName() << ' ' << pc.parameterSetID() << ' ' << pc.releaseVersion() << ' '
112+
<< pc.hardwareResourcesDescription();
108113
return os;
109114
}
110115
} // namespace edm

DataFormats/Provenance/src/ProcessHistory.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ namespace edm {
1515
// We do not use operator<< because it does not write out everything.
1616
std::ostringstream oss;
1717
for (auto const& item : *this) {
18-
oss << item.processName() << ' ' << item.parameterSetID() << ' ' << item.releaseVersion() << ' ' << item.passID()
19-
<< ' ';
18+
oss << item.processName() << ' ' << item.parameterSetID() << ' ' << item.releaseVersion() << ' '
19+
<< item.hardwareResourcesDescriptionSerialized() << ' ';
2020
}
2121
std::string stringrep = oss.str();
2222
cms::Digest md5alg(stringrep);

0 commit comments

Comments
 (0)