24 ->setComment(
"If zero, let TBB use its default which is normally the number of CPUs on the machine");
25 description.addUntracked<
unsigned int>(
"numberOfStreams", 0)
27 "If zero, then set the number of streams to be the same as the number of " 28 "Threads (except always 1 if there is a looper)");
29 description.addUntracked<
unsigned int>(
"numberOfConcurrentLuminosityBlocks", 0)
31 "If zero, use Framework default (currently 2 when the number of streams >= 2, otherwise 1). " 32 "In all cases, the number of concurrent luminosity blocks will be reset to " 33 "be the same as the number of streams if it is greater than the " 34 "numbers of streams.");
35 description.addUntracked<
unsigned int>(
"numberOfConcurrentRuns", 1)
37 "If zero or greater than the number of concurrent luminosity blocks, this will be reset to " 38 "be the same as the number of concurrent luminosity blocks.");
41 eventSetupDescription.
addUntracked<
unsigned int>(
"numberOfConcurrentIOVs", 0)
43 "If zero, use the Framework default which currently means the same as the " 44 "number of concurrent luminosity blocks. Can be overridden by a hard coded " 45 "static in a record C++ definition or by forceNumberOfConcurrentIOVs. " 46 "In all cases, the number of concurrent IOVs will be reset to be the " 47 "same as the number of concurrent luminosity blocks if greater than the " 48 "number of concurrent luminosity blocks.");
51 "Parameter names should be record names and the values are the number of concurrent IOVS for each record." 52 " Overrides all other methods of setting number of concurrent IOVs.");
56 description.addUntracked<std::vector<std::string>>(
"accelerators", {
"*"})
58 "Specify the set of compute accelerator(s) the job is allowed to use. The values can contain the direct " 59 "names of accelerators supported by the ProcessAccelerators defined in the configuration, or patterns " 60 "matching to them (patterns use '*' and '?' wildcards similar to shell). The actual set of accelerators to " 61 "be used is determined on the worker node based on the available hardware. A CPU fallback with the name " 62 "'cpu' is always included in the set of available accelerators. If no accelerator matching to the patterns " 63 "are available on the worker node, the job is terminated with a specific error code. Same happens if an " 64 "empty value is given in the configuration. Default value is pattern '*', which implies use of any " 65 "supported and available hardware (including the CPU fallback).");
66 description.addUntracked<
bool>(
"wantSummary",
false)
67 ->setComment(
"Set true to print a report on the trigger decisions and timing of modules");
69 ->setComment(
"Legal values are 'NOMERGE' and 'FULLMERGE'");
70 description.addUntracked<
bool>(
"forceEventSetupCacheClearOnNewRun",
false);
71 description.addUntracked<
bool>(
"throwIfIllegalParameter",
true)
72 ->setComment(
"Set false to disable exception throws when configuration validation detects illegal parameters");
73 description.addUntracked<
bool>(
"printDependencies",
false)->setComment(
"Print data dependencies between modules");
74 description.addUntracked<
bool>(
"deleteNonConsumedUnscheduledModules",
true)
76 "Delete modules that are unscheduled, i.e. only in Tasks, whose products are not consumed by any other " 77 "otherwise-running module");
82 description.addOptionalUntracked<
unsigned int>(
"sizeOfStackForThreadsInKB");
84 std::vector<std::string> emptyVector;
86 description.addUntracked<std::vector<std::string>>(
"Rethrow", emptyVector);
87 description.addUntracked<std::vector<std::string>>(
"TryToContinue", emptyVector);
88 description.addUntracked<std::vector<std::string>>(
"IgnoreCompletely", emptyVector);
90 description.addUntracked<std::vector<std::string>>(
"modulesToCallForTryToContinue", emptyVector)
91 ->setComment(
"Labels of modules which should still be called when an exception in TryToContinue list happens.");
93 description.addUntracked<std::vector<std::string>>(
"canDeleteEarly", emptyVector)
94 ->setComment(
"Branch names of products that the Framework can try to delete before the end of the Event");
99 validator.
add<std::vector<std::string>>(
"references")
100 ->setComment(
"All the branch names for products to which 'product' contains a reference.");
101 description.addVPSetUntracked(
"holdsReferencesToDeleteEarly", validator, std::vector<edm::ParameterSet>{})
103 "The 'product' branch name of product which internally hold references to data in another product");
105 description.addUntracked<std::vector<std::string>>(
"modulesToIgnoreForDeleteEarly", emptyVector)
107 "labels of modules whose consumes information will be ingored when determing lifetime for delete early " 109 description.addUntracked<
bool>(
"dumpOptions",
false)
111 "Print values of selected Framework parameters. The Framework might modify the values " 112 "in the options parameter set and this prints the values after that modification.");
114 description.addOptionalUntracked<
bool>(
"allowUnscheduled")
116 "Obsolete. Has no effect. Allowed only for backward compatibility for old Python configuration files.");
119 "Obsolete. Has no effect. Allowed only for backward compatibility for old Python configuration files.");
120 description.addOptionalUntracked<
bool>(
"makeTriggerResults")
122 "Obsolete. Has no effect. Allowed only for backward compatibility for old Python configuration files.");
126 description.addUntracked<
int>(
"input", -1)->setComment(
"Default of -1 implies no limit.");
136 description.addUntracked<
int>(
"input", -1)->setComment(
"Default of -1 implies no limit.");
140 description.addUntracked<
int>(
"input", -1)->setComment(
"Default of -1 implies no limit.");
146 std::vector<std::string> psetNames{
"options",
"maxEvents",
"maxLuminosityBlocks",
"maxSecondsUntilRampdown"};
148 for (
auto const&
psetName : psetNames) {
149 bool isTracked{
false};
151 if (
pset ==
nullptr) {
159 <<
"It must be untracked";
165 }
else if (
psetName ==
"maxEvents") {
167 }
else if (
psetName ==
"maxLuminosityBlocks") {
169 }
else if (
psetName ==
"maxSecondsUntilRampdown") {
176 std::ostringstream ost;
177 ost <<
"Validating top level \'" <<
psetName <<
"\' ParameterSet for process \'" <<
processName <<
"\'";
187 unsigned int nConcurrentRuns) {
190 <<
"\nNumber of Concurrent Runs = " << nConcurrentRuns;
T getParameter(std::string const &) const
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
ParameterWildcardBase * addWildcardUntracked(U const &pattern)
void validateTopLevelParameterSets(ParameterSet *processParameterSet)
void fillOptionsDescription(ParameterSetDescription &description)
void fillMaxEventsDescription(ParameterSetDescription &description)
constexpr unsigned int s_defaultNumberOfThreads
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void fillMaxLuminosityBlocksDescription(ParameterSetDescription &description)
void addUntrackedParameter(std::string const &name, T const &value)
void addContext(std::string const &context)
void fillMaxSecondsUntilRampdownDescription(ParameterSetDescription &description)
Log< level::System, true > LogAbsolute
void dumpOptionsToLogFile(unsigned int nThreads, unsigned int nStreams, unsigned int nConcurrentLumis, unsigned int nConcurrentRuns)
ParameterSet * getPSetForUpdate(std::string const &name, bool &isTracked)