ATLAS Offline Software
|
#include <Job.h>
Public Types | |
typedef OutputStream * | outputMIter |
description: the list of output datasets used guarantee: no-fail / strong failures(3): out of memory II requires(3,soft): !outputHas (val_output.label()) note: while it is not a requirement it is highly recommended that you add the outputs from Algorithm::doSetupJob. More... | |
typedef const OutputStream * | outputIter |
Public Member Functions | |
void | testInvariant () const |
effects: test the invariant of this object guarantee: no-fail More... | |
Job () | |
effects: standard default constructor guarantee: strong failures: low level errors I More... | |
Job (const Job &that) | |
effects: standard copy constructor guarantee: strong failures: out of memory II More... | |
~Job () | |
effects: standard destructor guarantee: no-fail More... | |
Job & | operator= (const Job &that) |
effects: standard assignment operator returns: *this guarantee: strong failures: out of memory II More... | |
const SH::SampleHandler & | sampleHandler () const |
description: the sample handler used guarantee: no-fail / strong failures: out of memory II More... | |
void | sampleHandler (const SH::SampleHandler &val_sampleHandler) |
void | algsAdd (std::unique_ptr< IAlgorithmWrapper > val_algorithm) |
description: the list of algorithms used guarantee: no-fail / strong failures: out of memory II invariant: alg != 0 More... | |
void | algsAdd (std::unique_ptr< Algorithm > val_algorithm) |
void | algsAdd (Algorithm *alg_swallow) |
void | algsAdd (const AnaAlgorithmConfig &config) |
void | algsAdd (const AnaReentrantAlgorithmConfig &config) |
void | algsAdd (const asg::AsgServiceConfig &config) |
void | algsAdd (const EL::PythonConfigBase &config) |
void | algsAddClone (const Algorithm &alg) |
add a clone of the given algorithm More... | |
bool | algsHas (const std::string &name) const |
returns: whether we have the algorithm with the given name guarantee: no-fail More... | |
outputMIter | outputBegin () |
outputIter | outputBegin () const |
outputMIter | outputEnd () |
outputIter | outputEnd () const |
void | outputAdd (const OutputStream &val_output) |
bool | outputHas (const std::string &name) const |
returns: whether we have an output with the given name guarantee: no-fail More... | |
void | useXAOD () |
effects: register this job to use XAODs guarantee: strong failures: out of memory II failures: TEventSvc not available More... | |
SH::MetaObject * | options () |
description: the list of options to the job guarantee: no-fail postcondition: result != 0 More... | |
const SH::MetaObject * | options () const |
const JobConfig & | jobConfig () const noexcept |
the JobConfig object we are wrapping More... | |
Static Public Attributes | |
static const std::string | optRemoveSubmitDir = "nc_EventLoop_RemoveSubmitDir" |
description: the name of the option for overwriting the submission directory. More... | |
static const std::string | optSubmitDirMode = "nc_EventLoop_SubmitDirMode" |
the submit-dir mode (allowed values: "no-clobber", "overwrite", "unique", "unique-link") More... | |
static const std::string | optUniqueDateFormat = "nc_EventLoop_UniqueDateFormat" |
the date-format to use when generating unique submission directory names More... | |
static const std::string | optAlgorithmTimer = "nc_EventLoop_AlgorithmTimer" |
a boolean flag for whether to add a timer for the algorithms More... | |
static const std::string | optAlgorithmMemoryMonitor = "nc_EventLoop_AlgorithmMemoryMonitor" |
a boolean flag for whether to add a memory monitor for the algorithms More... | |
static const std::string | optFactoryPreload = "nc_EventLoop_FactoryPreload" |
a boolean flag for whether to perform a component factory preload More... | |
static const std::string | optMaxEvents = "nc_EventLoop_MaxEvents" |
description: the name of the option used for setting the maximum number of events to process per sample rationale: this is used for test runs where you don't want to process all events, but just want a quick look More... | |
static const std::string | optSkipEvents = "nc_EventLoop_SkipEvents" |
description: the name of the option used for skipping a certain number of events in the beginning rationale: this is used for test runs where you are only interested in a particular set of events More... | |
static const std::string | optWorkerConfigFile = "nc_EventLoop_WorkerConfigFile" |
a python configuration file that will be executed on the worker More... | |
static const std::string | optFilesPerWorker = "nc_EventLoop_FilesPerWorker" |
description: the name of the option for selecting the number of files per batch job. More... | |
static const std::string | optEventsPerWorker = "nc_EventLoop_EventsPerWorker" |
description: the name of the option for selecting the number of events per batch job. More... | |
static const std::string | optWorkerPostClosedOutputsExecutable = "nc_EventLoop_WorkerPostClosedOutputsExecutable" |
Optionnal executable to be provided by the user that will be called, by the worker, for every output stream. More... | |
static const std::string | optSubmitFlags = "nc_EventLoop_SubmitFlags" |
description: the name of the option for supplying extra submit parameters to batch systems rationale: the primary purpose of this is to allow selecting the right queue on your batch system, but it can be used for all kind of submission options that EventLoop doesn't support directly. More... | |
static const std::string | optCondorConf = "nc_EventLoop_CondorConf" |
description: the name of the option for supplying extra parameters for condor systems More... | |
static const std::string | optCacheSize = "nc_cache_size" |
description: this option allows to configure the TTreeCache size for this job. More... | |
static const std::string | optCacheLearnEntries = "nc_EventLoop_CacheLearnEntries" |
description: this option allows to configure the number of tree entries used for learning cache behavior. More... | |
static const std::string | optD3PDPerfStats = "nc_EventLoop_D3PDPerfStats" |
description: the name of the option for turning on D3PDPerfStats. More... | |
static const std::string | optD3PDReadStats = "nc_EventLoop_D3PDReadStats" |
description: the name of the D3PDPerfStats object produced as I gather it, as well as the name of the option passed into the job. More... | |
static const std::string | optXAODPerfStats = "nc_EventLoop_XAODPerfStats" |
description: the name of the option for turning on XAODPerfStats. More... | |
static const std::string | optXAODReadStats = "nc_EventLoop_XAODReadStats" |
description: the name of the XAODPerfStats object produced as I gather it, as well as the name of the option passed into the job. More... | |
static const std::string | optD3PDCacheMinEvent = "nc_EventLoop_D3PDCacheMinEvent" |
description: these options configure the D3PDReader TTreeCache settings. More... | |
static const std::string | optD3PDCacheMinEventFraction = "nc_EventLoop_D3PDCacheMinEventFraction" |
static const std::string | optD3PDCacheMinByte = "nc_EventLoop_D3PDCacheMinByte" |
static const std::string | optD3PDCacheMinByteFraction = "nc_EventLoop_D3PDCacheMinByteFraction" |
static const std::string | optPerfTree = "nc_EventLoop_PerfTree" |
description: the option to turn on the performance tree in PROOF. More... | |
static const std::string | optXAODInput = "nc_EventLoop_XAODInput" |
the option to select whether our input is xAODs More... | |
static const std::string | optXaodAccessMode = "nc_EventLoop_XaodAccessMode" |
description: the option to select the access mode for xAODs. More... | |
static const std::string | optXaodAccessMode_branch = "branch" |
static const std::string | optXaodAccessMode_class = "class" |
static const std::string | optXaodAccessMode_athena = "athena" |
static const std::string | optXAODSummaryReport = "nc_xaod_summary_report" |
the option to turn on/off the xAOD summary reporting at the end of the job More... | |
static const std::string | optPrintPerFileStats = "nc_print_per_file_stats" |
description: the option to turn on printing of i/o statistics at the end of each file rationale: while this is not as complete as whole sample statistics, it can be helpful in some circumstances when debugging the performance warning: this is not supported for all drivers More... | |
static const std::string | optDisableMetrics = "nc_disable_metrics" |
description: the option to turn off collection of performance data More... | |
static const std::string | optResetShell = "nc_reset_shell" |
description: the option to reset the shell on the worker nodes rationale: this is currently only used by the LSFDriver where it is enabled by default to reset it on lxbatch. More... | |
static const std::string | optLocalNoUnsetup = "nc_local_no_unsetup" |
the option not to unsetup the environment in LocalDriver More... | |
static const std::string | optNumParallelProcs = "nc_num_parallel_processes" |
the option to specify the number of parallel jobs in LocalDriver (0 = number of hardware cores) (default=1) More... | |
static const std::string | optBackgroundProcess = "nc_background_process" |
the option to do processing in a background process in PROOF More... | |
static const std::string | optOutputSampleName = "nc_outputSampleName" |
the output sample name More... | |
static const std::string | optGridDestSE = "nc_destSE" |
description: grid-specific options rationale: these are named so as to correspond to prun equivalents, bare the optGrid prefix. More... | |
static const std::string | optGridSite = "nc_site" |
static const std::string | optGridExcludedSite = "nc_excludedSite" |
static const std::string | optGridNGBPerJob = "nc_nGBPerJob" |
static const std::string | optGridMemory = "nc_memory" |
static const std::string | optGridMaxCpuCount = "nc_maxCpuCount" |
static const std::string | optGridNFiles = "nc_nFiles" |
static const std::string | optGridNFilesPerJob = "nc_nFilesPerJob" |
static const std::string | optGridNJobs = "nc_nJobs" |
static const std::string | optGridMaxFileSize = "nc_maxFileSize" |
static const std::string | optGridMaxNFilesPerJob = "nc_maxNFilesPerJob" |
static const std::string | optGridNEventsPerJob = "nc_nEventsPerJob" |
static const std::string | optGridExpress = "nc_express" |
static const std::string | optGridNoSubmit = "nc_noSubmit" |
static const std::string | optGridMergeOutput = "nc_mergeOutput" |
static const std::string | optGridAddNthFieldOfInDSToLFN = "nc_addNthFieldOfInDSToLFN" |
static const std::string | optGridWorkingGroup = "nc_workingGroup" |
static const std::string | optGridShowCmd = "nc_showCmd" |
static const std::string | optGridCpuTimePerEvent = "nc_cpuTimePerEvent" |
static const std::string | optGridMaxWalltime = "nc_maxWalltime" |
static const std::string | optGridAvoidVP = "nc_avoidVP" |
static const std::string | optGridPrunShipAdditionalFilesOrDirs = "nc_prunShipAdditionalFilesOrDirs" |
Enables to ship additional files to the tarbal sent to the grid Should be a list of comma separated path to files and/or directories Beware for root or heavy files you should also add their name (not their full path) to EL::Job::optUserFiles Otherwise prun ignore those files. More... | |
static const std::string | optTmpDir = "nc_tmpDir" |
static const std::string | optRootVer = "nc_rootVer" |
static const std::string | optCmtConfig = "nc_cmtConfig" |
static const std::string | optGridDisableAutoRetry = "nc_disableAutoRetry" |
static const std::string | optOfficial = "nc_official" |
static const std::string | optVoms = "nc_voms" |
static const std::string | optGridReporting = "nc_gridReporting" |
whether to use grid reporting even when not running on the grid More... | |
static const std::string | optUserFiles = "nc_EventLoop_UserFiles" |
a list of files that need to be available within the worker job More... | |
static const std::string | optBatchSharedFileSystem = "nc_sharedFileSystem" |
description: batch-specific options rationale: these options are for configuring batch drivers More... | |
static const std::string | optBatchSlurmExtraConfigLines = "nc_SlurmExtraConfig" |
The content of this string will be executed in the job script on the worker node before the main executable is run. More... | |
static const std::string | optBatchSlurmWrapperExec = "nc_SlurmWrapperExec" |
Append a command before the main executable is called This is useful is you want to execute the command e.g. More... | |
static const std::string | optBatchSetupCommand = "nc_BatchSetupCommand" |
This overrides the asetup command if you need to use a custom one. More... | |
static const std::string | optDockerImage = "nc_DockerImage" |
this is the name of the docker image, when using docker with a supported batch driver More... | |
static const std::string | optDockerOptions = "nc_DockerOptions" |
any extra options we may want to pass to docker More... | |
static const std::string | optBatchConfigFile = "nc_BatchConfigFile" |
the job submission configuration file (used by some drivers that need more complex configuration) More... | |
static const std::string | optBatchSetupFile = "nc_BatchSetupFile" |
the job submission setup file. More... | |
static const std::string | histogramStreamName = "HISTOGRAM" |
the name of the histogram output stream More... | |
static const std::string | optRetries = SH::MetaNames::openRetries() |
these options are defined in SH::MetaNames More... | |
static const std::string | optRetriesWait = SH::MetaNames::openRetriesWait() |
Options controlling the memory monitoring behaviour of the job | |
static const std::string | optMemResidentPerEventIncreaseLimit |
The minimal per-event resident memory increase for triggering an error. More... | |
static const std::string | optMemVirtualPerEventIncreaseLimit |
The minimal per-event virtual memory increase for triggering an error. More... | |
static const std::string | optMemResidentIncreaseLimit = "nc_resMemAbsIncrease" |
The minimal resident memory increase necessary to trigger an error. More... | |
static const std::string | optMemVirtualIncreaseLimit = "nc_virtMemAbsIncrease" |
The minimal virtual memory increase necessary to trigger an error. More... | |
static const std::string | optMemFailOnLeak = "nc_failOnMemLeak" |
Failure behaviour of the code when a "significant memory leak" is found. More... | |
Private Attributes | |
SH::SampleHandler | m_sampleHandler |
description: members directly corresponding to accessors More... | |
std::vector< EL::OutputStream > | m_output |
SH::MetaObject | m_options |
EL::JobConfig | m_jobConfig |
the JobConfig object we use More... | |
Friends | |
void | swap (Job &a, Job &b) |
effects: standard swap guarantee: no-fail More... | |
typedef const OutputStream* EL::Job::outputIter |
typedef OutputStream* EL::Job::outputMIter |
description: the list of output datasets used guarantee: no-fail / strong failures(3): out of memory II requires(3,soft): !outputHas (val_output.label()) note: while it is not a requirement it is highly recommended that you add the outputs from Algorithm::doSetupJob.
That way they get automatically enabled/disabled when you enable/disable the algorithms. Plus your code will be slightly less spread out.
EL::Job::Job | ( | ) |
effects: standard default constructor guarantee: strong failures: low level errors I
EL::Job::~Job | ( | ) |
effects: standard destructor guarantee: no-fail
void EL::Job::algsAdd | ( | Algorithm * | alg_swallow | ) |
void EL::Job::algsAdd | ( | const AnaAlgorithmConfig & | config | ) |
void EL::Job::algsAdd | ( | const AnaReentrantAlgorithmConfig & | config | ) |
void EL::Job::algsAdd | ( | const asg::AsgServiceConfig & | config | ) |
void EL::Job::algsAdd | ( | const EL::PythonConfigBase & | config | ) |
void EL::Job::algsAdd | ( | std::unique_ptr< Algorithm > | val_algorithm | ) |
Definition at line 222 of file Job.cxx.
void EL::Job::algsAdd | ( | std::unique_ptr< IAlgorithmWrapper > | val_algorithm | ) |
add a clone of the given algorithm
This is to be used when the user wants to reuse an algorithm for multiple Job objects or for some reason needs to delete it himself.
bool EL::Job::algsHas | ( | const std::string & | name | ) | const |
returns: whether we have the algorithm with the given name guarantee: no-fail
the JobConfig object we are wrapping
SH::MetaObject * EL::Job::options | ( | ) |
description: the list of options to the job guarantee: no-fail postcondition: result != 0
const SH::MetaObject * EL::Job::options | ( | ) | const |
void EL::Job::outputAdd | ( | const OutputStream & | val_output | ) |
Definition at line 374 of file Job.cxx.
Job::outputMIter EL::Job::outputBegin | ( | ) |
Job::outputIter EL::Job::outputBegin | ( | ) | const |
Job::outputMIter EL::Job::outputEnd | ( | ) |
Job::outputIter EL::Job::outputEnd | ( | ) | const |
bool EL::Job::outputHas | ( | const std::string & | name | ) | const |
const SH::SampleHandler & EL::Job::sampleHandler | ( | ) | const |
description: the sample handler used guarantee: no-fail / strong failures: out of memory II
void EL::Job::sampleHandler | ( | const SH::SampleHandler & | val_sampleHandler | ) |
void EL::Job::testInvariant | ( | ) | const |
effects: test the invariant of this object guarantee: no-fail
void EL::Job::useXAOD | ( | ) |
effects: register this job to use XAODs guarantee: strong failures: out of memory II failures: TEventSvc not available
|
static |
|
private |
|
private |
|
private |
|
private |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
the job submission setup file.
unlike optBatchConfigFile this only gets used once per submission instead of once per job.
|
static |
|
static |
|
static |
|
static |
description: this option allows to configure the number of tree entries used for learning cache behavior.
rationale: there is a trade-off here, if you set this too low you will fail to cache more rarely used variables. if you set it too high it will take too long until the cache kicks in. warning: right now this is performed on a per-file basis, which at some point will be raised to a per-job basis, which is the limit of how far caching can go in this approach. if you need multi-job support, either use D3PDReader or contact me on how to do this.
|
static |
description: this option allows to configure the TTreeCache size for this job.
warning: this has to be synchronized with SampleHandler::MetaFields.
if it is smaller or equal to 0, the cache is turned off. rationale: if you read data from across the network using the cache mechanism will greatly increase your performance. for local disks you may gain or lose performance.
I can't just copy it here, because the order of initialization is undefined
|
static |
|
static |
|
static |
|
static |
|
static |
description: these options configure the D3PDReader TTreeCache settings.
if you use more than one option, the result is undefined. warning: this only works if you use D3PDReader rationale: the idea is that in your first job you create the D3PDReadStats object, which you then pass to subsequent jobs.
|
static |
|
static |
description: the name of the option for turning on D3PDPerfStats.
To use D3PDPerfStats set this to a non-zero value. warning: this only works if you read data through D3PDReader rationale: this can be used for fine-tuning TTreeCache or generally optimizing i/o performance
|
static |
|
static |
|
static |
|
static |
|
static |
description: the name of the option for selecting the number of events per batch job.
(only BatchDriver and derived drivers). warning: this option will be ignored unless you have called SH::scanNEvents first. rationale: this allows to make your jobs all approximately equal size and gives you much finer control of the lengths of your jobs. if you did run SH::scanNEvents, but didn't specify a number of events per worker this will produce the same number of jobs as you would have otherwise, but spread the workload more evenly.
|
static |
|
static |
description: the name of the option for selecting the number of files per batch job.
(only BatchDriver and derived drivers). rationale: this is typically used if you are either processing fairly small input files or are producing a skim with a very high reduction factor. it will reduce the inefficiency associated with starting a lot of jobs or reading a lot of output files
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Enables to ship additional files to the tarbal sent to the grid Should be a list of comma separated path to files and/or directories Beware for root or heavy files you should also add their name (not their full path) to EL::Job::optUserFiles Otherwise prun ignore those files.
|
static |
|
static |
|
static |
|
static |
the option not to unsetup the environment in LocalDriver
|
static |
|
static |
Failure behaviour of the code when a "significant memory leak" is found.
This flag allows the user to select what should happen when the code finds a memory leak in the job that is larger than the values set by optMemResidentPerEventIncreaseLimit
, optMemVirtualPerEventIncreaseLimit
, optMemResidentIncreaseLimit
and optMemVirtualIncreaseLimit
.
It's a boolean property. When set to true
, the job fails if a significant memory leak is detected. If set to false
, only a warning is printed.
|
static |
|
static |
The minimal per-event resident memory increase for triggering an error.
This is the main setting for triggering a failure in memory-leaking analysis jobs. It sets the limit on the per-event resident memory increase of the job for it to be still successful. It is an integer property, setting the limit in kilobytes.
|
static |
|
static |
The minimal per-event virtual memory increase for triggering an error.
Implemented very similarly to optMemResidentPerEventIncreaseLimit
. But since normally we don't care about the virtual memory usage of the jobs that much, it is set to zero by default. Making optMemResidentPerEventIncreaseLimit
control the behaviour of the job.
|
static |
the option to specify the number of parallel jobs in LocalDriver (0 = number of hardware cores) (default=1)
As an intermediate between running a single job locally and running in batch, this allows to run multiple processes in parallel locally. It is still recommended to just run in batch instead, but sometimes this is more practical.
|
static |
|
static |
description: the option to turn on the performance tree in PROOF.
if this is set to 1, it will write out the tree rationale: this can help in tuning your PROOF cluster or tuning what you do in PROOF, but it may have some overhead, which is why we don't do it by default
|
static |
description: the option to turn on printing of i/o statistics at the end of each file rationale: while this is not as complete as whole sample statistics, it can be helpful in some circumstances when debugging the performance warning: this is not supported for all drivers
|
static |
description: the name of the option for overwriting the submission directory.
if you set this to a non-zero value it will remove any existing submit-directory before trying to create a new one. rationale: normally you don't want to silently remove an existing submission directory, since it may contain valuable data, but for some cases like debugging you may be annoyed to delete it manually.
|
static |
|
static |
these options are defined in SH::MetaNames
|
static |
|
static |
|
static |
|
static |
description: the name of the option for supplying extra submit parameters to batch systems rationale: the primary purpose of this is to allow selecting the right queue on your batch system, but it can be used for all kind of submission options that EventLoop doesn't support directly.
|
static |
|
static |
|
static |
a python configuration file that will be executed on the worker
This allows to inspect the meta-data of the first input file and configure the job accordingly.
EXPERIMENTAL: This feature is currently (23 Feb 23) new and experimental and details of its implementation and usage may still change.
|
static |
Optionnal executable to be provided by the user that will be called, by the worker, for every output stream.
It enables to perform action on output files once they are all closed. For every output stream the executable will be provided 2 arguments:
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
description: the name of the option for turning on XAODPerfStats.
To use XAODPerfStats set this to a non-zero value. warning: this only works if you read data through XAODReader rationale: this can be used for fine-tuning TTreeCache or generally optimizing i/o performance
|
static |
|
static |