Package: aiida-fireworks-scheduler
aiida-fireworks-schedulerAiiDA plugin for usingfireworksas the execution engine forCalcJobProcess.The main advantage of using theFwScheduler, 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.
UsingFwScheduler, a single allocation of the resources from the scheduler (SGE, PBSpro, SLURM etc.) can be used to run multiple AiiDACalcJobs 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 Actionsconfigurationci.yml: runs tests, checks test coverage and builds documentation at every new commitpublish-on-pypi.yml: automatically deploy git tags to PyPI - just generate aPyPI API tokenfor your PyPI account and add it to thepypi_tokensecret of your github repositoryaiida_fireworks_scheduler/: The main source code of the plugin packagefwscheduler.py: A newFWSchedulerclass.scripts/arlauncher.py: A specialrlaunchscript for launching jobs respecting the walltime limits.jobs.py: SpecialisedAiiDAJobFireworkfor running AiiDA prepared jobs.fworker.py: SpecialisedAiiDAFWorkerto generate query for selecting appropriate jobs from the FireServer.docs/: A documentation template ready for publication onRead the Docsexamples/: An example of how to submit a calculation using this plugintests/: Basic regression tests using thepytestframework (submitting a calculation, ...). Installpip install -e .[testing]and runpytest..coveragerc: Configuration ofcoverage.pytool reporting which lines of your plugin are covered by tests.gitignore: Telling git which files to ignore.pre-commit-config.yaml: Configuration ofpre-commit hooksthat sanitize coding style and check for syntax errors. Enable viapip install -e .[pre-commit] && pre-commit install.readthedocs.yml: Configuration of documentation build forRead the DocsLICENSE: License for your pluginMANIFEST.in: Configure non-Python files to be included for publication onPyPIREADME.md: This fileconftest.py: Configuration of fixtures forpytestpytest.ini: Configuration ofpytesttest discoverysetup.json: Plugin metadata for registration onPyPIand theAiiDA plugin registry(including entry points)setup.py: Installation script for pip /PyPIFeaturesFWSchedulerscheduler plugin to submit jobs to LaunchPad managed byfireworks.arlaunchcommand for launching jobs on the cluster machine.verdi data fireworks-schedulercommand line tool for duplicating existingComputer/Coldfor switching toFwScheduler.InstallationOn the local machine where AiiDA is installed:pipinstallaiida-fireworks-scheduler[local]On the remote machine where jobs to be launched:pipinstallaiida-fireworks-schedulerUsageSimply create a new computer usingverdi computer setupand select thefwscheduler.
Configure yourfireworksconfiguration following the guidehere.Note that you must configure theLAUNCHPAD_LOCsetting in the file as defined by theFW_CONFIG_FILEenvironment variable to point to yourmy_launchpad.yamlfile 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 yourmy_fworker.yamlwith special directives for identifying the computer and username. These files can be generated using:verdidatafireworks-schedulergenerate-worker-YCOMPUTER-mpinpNUM_MPI_PROCESSORSNote 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 thearlaunchcommand on the remote machine.Adding walltime selectors for standard fireworks jobsStandard fireworks jobs can also be selected based on the requested walltime usingarlaunch.
If a job hasspec._walltime_secondskey, 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.Developmentgitclonehttps://github.com/zhubonan/aiida-fireworks-scheduler.cdaiida-fireworks-scheduler
pipinstall-e.[pre-commit,testing]# install extra dependenciespre-commitinstall# install pre-commit hookspytest-v# discover and run all testsSee thedeveloper guidefor more information.LicenseMITContactzhubonan@outlook.com