TurboWorkflows manual

../../_images/logo3.jpg

TurboWorkflows provides a sophisticated way to realize workflows by combining TurboGenius with an internal file/job managing package. It manages file transfers as well as job submissions/collections from/to remote machines, supports job-queuing systems such as PBS and Slurm, and relies on the paramiko module for its data transfer.

In TurboWorkflows, each workflow class inherits the parent Workflow class with options useful for a QMC calculation. For instance, in the VMC_workflow, a user can specify a target accuracy (i.e., statistical error) of a VMC calculation. The VMC_workflow first submits an initial VMC run to a machine with the specified MPI and OpenMP processes to get a stochastic error bar per Monte Carlo step. Since the error bar is inversely proportional to the square root of the number of Monte Carlo samplings, the necessary steps to achieve the target accuracy is readily estimated by the initial run. The VMC_workflow then submits subsequent production VMC runs with the estimated necessary number of steps. Similar functionalities are also implemented in other workflow scripts such as VMCopt_workflow, LRDMC_workflow, and LRDMCopt_workflow.

TurboWorkflows can solve the dependencies of a given set of workflows and manage sequential jobs. Launcher class accepts workflows as a list, solve the dependencies of the workflows, and submit independent sequential jobs simultaneously and independently. Launcher realises this feature by the so-called topological ordering of a Directed Acyclic Graph (DAG) and the build-in python module, asyncio.

An example of workflow is presented in the tutorial that performs a sequential job, PySCFTREXIO converionTurboRVB WF (JSD ansatz)VMC optimization (Jastrow factor optimization)VMCLRDMC (lattice space0). Finally, we will get the extrapolated LRDMC energy of the water dimer.