Version History
Version 1.2 (WIP)
Added support for multi-step runs, i.e. runs that consist of multiple applications executed in sequence, rather than a single application. Added the
themis.CompositeRunandthemis.Stepclasses to represent the new kind of runs in Python, and the correspondingcreate-compositeandadd-compositecommands for shells. TheRunclass is now a subclass ofCompositeRun.The
applicationargument tothemis.Themisis now optional, and ignored whenCompositeRuninstances are passed in.themis.user_utils.run()andthemis.runtime.fetch_run()now returnCompositeRuninstances instead ofRuninstances.Removed the “shrink_on_repeat” argument to
execute_allocand its CLI equivalent, as it cannot be supported in its former implementation.Added a
max_concurrencyargument to theexecute.*methods/commands, which tells Themis the maximum number of runs it can execute simultaneously in the given machine or allocation. Defaults to a reasonable value.Added a
allow_multipleargument to theexecute.*methods/commands, which tells Themis to allow multiple Themis backends to be active simultaneously (i.e. multiple allocations cooperating on the same ensemble).Changed the
displayCLI command to account for steps, and made column widths individually customizable.Added a
hardoption to therequeueandrestartmethods/commands, which tells Themis whether to reset the run back to step 0, or to continue execution from the most recent step.
Version 1.1 (May 2021)
Added the ability to abort a run if it exits with one of a set of user-specified return codes. For instance, if the returncode 50 is specified by a user as abort-triggering, and Themis is executing a Bash script which in turn executes the statement
exit 50;Themis will abort that run. An aborted run will not be restarted by Themis. In Python this is theabort_onargument toThemis.create(...), and in the CLI it is the--abort-onoption tothemis create.Added the ability to execute a command as soon as every run in the ensemble has completed. If runs are added afterwards, the command will fire off again. In the CLI this is
themis completion [command], in Python it isThemis.on_completion(...).Added the ability to, when an allocation is expiring, request a smaller allocation than the current one. A smaller allocation will only be requested if there are too few remaining runs to fill an allocation of the current size. Python:
Themis.execute_alloc(..., shrink_on_repeat=True). CLI:themis execute-alloc ... --shrink-on-repeat.
1.1 Command-Line Interface
Added the
themis runtime parsecommand for running Themis’s token-replacement algorithm on files dynamically at runtime. This command can only be invoked by an application launched by Themis, since the tokens searched for are run-specific. It may prove useful if the files to parse are different for each run.Added the
themis runtime collectcommand for reading the contents of a file and setting its contents (a bytestring) as the result of the current run. This command can only be invoked by an application launched by Themis.
1.1 Python Interface
Added the themis.runtime module for performing run-specific actions while Themis is running. This is a generalization of the application interface and it is strongly recommended that users transition away from the application interface model.
The
Themis.run_dirsmethod now returns(run_id, directory_path)pairs instead of only the directory.
Version 1.0 (November 2020)
This entry in the version history shows the changes from version 0.1, which was the first pass at the UQP’s ensemble manager component. Version 1.0 marks a major jump. Themis is now its own stand-alone tool, and the Python interface has been overhauled. There a handful of backwards-compatibility-breaking changes to the command-line interface as well, but the changes are much less substantial.
1.0 Command-Line Interface
The former
executeandallocationmethods have been transformed intoexecute-alloc(which allows you to specify an allocation) andexecute-local(which does not).A new
addcommand for adding runs to an existing ensemble. Most of the arguments are shared withcreate.A new
--vary-allflag tocreatewhich allows you to specify the resource requirements for each run individually, by putting that information into the parameter file (i.e. the CSV).The run statuses “pending” and “active” have been merged into “queued”.
Run IDs now start at 1 instead of 0.
By default, the application used in the ensemble is now assumed to be a batch script. If it isn’t, use the
--no-batch-scriptflag to thecreatecommand.The
writecommand no longer takes a file path. Instead, it prints the result to stdout. Use stdout redirection to put the information into a particular file. (For instance,write json >& themis_data.jsoninstead ofwrite json themis_data.json.)A new
--paralleloption toexecute-localandexecute-alloc, determining how much scheduler parallelism Themis should use. Basically, a higher number can yield better performance, but at the expense of resource fragmentation. The default is 0, which should be good enough for most multi-core applications that run for a handful of minutes or more.The default directory for storing Themis’s setup files is now
.themis_setupinstead of.ensemble_setup.Added the
--early-stop Noption toexecute-allocto stop Themis from submitting and monitoring runs when there are only N minutes left in an allocation.
1.0 Python Interface
Renamed package from
uqp.ensembletothemis.Most of the functionality of
uqp.ensemble.manageris now found inthemis.The
EnsembleManager,EnsembleResults, andEnsembleRestartclasses have been combined intothemis.Themis. To create a new ensemble, usethemis.Themis.create()or a variant. To interact with an existing ensemble, usethemis.Themis(path).The run statuses
RUN_PENDINGandRUN_ACTIVEhave been merged intoRUN_QUEUED.Run IDs now start at 1 instead of 0.
By default, the application used in the ensemble is now assumed to be a batch script.
The former
executeandallocationmethods have been transformed intoexecute_alloc(which allows you to specify an allocation) andexecute_local(which does not).Added the
early_stopparameter toexecute_allocto stop Themis from submitting and monitoring runs when there are only some integer N minutes left in an allocation.The former
write_*methods (yaml, csv, and json) now take a file-like object instead of a path string.A new
parallelismoption to thethemis.Themis.execute_*methods, determining how much scheduler parallelism Themis should use. Basically, a higher number can yield better performance, but at the expense of resource fragmentation. The default is 0, which should be good enough for most multi-core applications that run for a handful of minutes or more.The default directory for storing Themis’s setup files is now
.themis_setupinstead of.ensemble_setup.
1.0 Bug Fixes
Themis now runs on LANL’s Trinity and Trinitite with no modifications, however the
--parallel(CLI) andparallelism(Python) options must be left to the default setting.