AiiDA plugin to allow using `fireworks` as the execution engine for `CalcJob`.
Project description
aiida-fireworks-scheduler
AiiDA plugin for using fireworks
as the execution engine for CalcJobProcess
.
The main advantage of using the FwScheduler
, as provided in this plugin, compared to the standard AiiDA scheduler plugins is that it allows more flexible job placement.
For example, your may be forced to submit very large jobs to the cluster (or simply such jobs goes through the queue faster!),
or that the cluster has a strict limit on the number of jobs that can be in the queue.
Using FwScheduler
, a single allocation of the resources from the scheduler (SGE, PBSpro, SLURM etc.) can be used to run multiple AiiDA CalcJob
s in serial or in parallel, depending on the user configuration.
In addition, AiiDA jobs can be run along side other workflows in fireworks.
Repository contents
.github/
: Github Actions configurationci.yml
: runs tests, checks test coverage and builds documentation at every new commitpublish-on-pypi.yml
: automatically deploy git tags to PyPI - just generate a PyPI API token for your PyPI account and add it to thepypi_token
secret of your github repository
aiida_fireworks_scheduler/
: The main source code of the plugin packagefwscheduler.py
: A newFWScheduler
class.scripts/arlauncher.py
: A specialrlaunch
script for launching jobs respecting the walltime limits.jobs.py
: SpecialisedAiiDAJobFirework
for running AiiDA prepared jobs.fworker.py
: SpecialisedAiiDAFWorker
to generate query for selecting appropriate jobs from the FireServer.
docs/
: A documentation template ready for publication on Read the Docsexamples/
: An example of how to submit a calculation using this plugintests/
: Basic regression tests using the pytest framework (submitting a calculation, ...). Installpip install -e .[testing]
and runpytest
..coveragerc
: Configuration of coverage.py tool reporting which lines of your plugin are covered by tests.gitignore
: Telling git which files to ignore.pre-commit-config.yaml
: Configuration of pre-commit hooks that sanitize coding style and check for syntax errors. Enable viapip install -e .[pre-commit] && pre-commit install
.readthedocs.yml
: Configuration of documentation build for Read the DocsLICENSE
: License for your pluginMANIFEST.in
: Configure non-Python files to be included for publication on PyPIREADME.md
: This fileconftest.py
: Configuration of fixtures for pytestpytest.ini
: Configuration of pytest test discoverysetup.json
: Plugin metadata for registration on PyPI and the AiiDA plugin registry (including entry points)setup.py
: Installation script for pip / PyPI
Features
-
FWScheduler
scheduler plugin to submit jobs to LaunchPad managed byfireworks
. -
arlaunch
command for launching jobs on the cluster machine. -
verdi data fireworks-scheduler
command line tool for duplicating existingComputer
/Cold
for switching toFwScheduler
.
Installation
On the local machine where AiiDA is installed:
pip install aiida-fireworks-scheduler[local]
On the remote machine where jobs to be launched:
pip install aiida-fireworks-scheduler
Usage
Simply create a new computer using verdi computer setup
and select the fw
scheduler.
Configure your fireworks
configuration following the guide here.
Note that you must configure the LAUNCHPAD_LOC
setting in the file as defined by the FW_CONFIG_FILE
environment variable to point to your my_launchpad.yaml
file on BOTH the local and remote machines. On the local machine, it will be picked up by the daemon.
In addition, on the remote machine, setup your my_fworker.yaml
with special directives for identifying the computer and username. These files can be generated using:
verdi data fireworks-scheduler generate-worker -Y COMPUTER -mpinp NUM_MPI_PROCESSORS
Note that each *worker" can only launch jobs of a particular size (number of MPI processors). But you can always combine multiple workers in one or more cluster jobs.
At runtime, jobs needs to be launched with the arlaunch
command on the remote machine.
Adding walltime selectors for standard fireworks jobs
Standard fireworks jobs can also be selected based on the requested walltime using arlaunch
.
If a job has spec._walltime_seconds
key, it will only be selected to run if there is
sufficient time left.
However, unlike AiiDA jobs, this walltime limit is not enforced, and the launch can proceed
even if the requested seconds have elapsed.
Development
git clone https://github.com/zhubonan/aiida-fireworks-scheduler .
cd aiida-fireworks-scheduler
pip install -e .[pre-commit,testing] # install extra dependencies
pre-commit install # install pre-commit hooks
pytest -v # discover and run all tests
See the developer guide for more information.
License
MIT
Contact
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file aiida-fireworks-scheduler-1.0.0.tar.gz
.
File metadata
- Download URL: aiida-fireworks-scheduler-1.0.0.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5950feb87dfd2497ffc36192d9e360b18ab3054af6066265394704488e181813 |
|
MD5 | a2df2c795f2c2b104e93ab0c8ed30712 |
|
BLAKE2b-256 | 34baa5b495fc19f299bf02383ef04c6c7f0785e1cc1643317b29b73945285e76 |