DPGK performs simple, short calculations locally (or on the login node), and puts molecular dynamics simulations on the remote machine (or the compute node) via dpdispatcher
. Currently, i-pi
is required for doing RPMD in the remote environment, and lammps
is required for rdf
. In the future we might migrate to lammps
completely. In addition, thermocepstrum
is required for post-analysis.
Clone this repository and do
pip install -e dpgk
Then, run airinit.sh
to initialise airflow and import all the workflows to ~/airflow/dags/
.
Include the files in remote_xcutables
in your remote bin, and make them executable.
To calculate the thermal conductivity and the phonon density of states for your system, first fill in a json file which contains
- list of temperatures
- number of beads in ring-polymer
- time step sizes to test integrator divergence rates
- file names of a trained Deep Potential graph, and a initial structure.
{
"work_base_abspath": "/your/work/path/",
"temperature_list": [78],
"n_beads": 32,
"test_ts": [0.2],
"inputs":{
"dp_graph": "graph10_c.pb",
"initial_state": "init.xyz"
},
"machine": {
"batch_type": "Shell",
"context_type": "SSHContext",
"local_root": "/your/work/path/",
"remote_root": "/tour/remote/root/",
"remote_profile": {
"hostname": "xx.xx.xx",
"username": "user",
"password": "password"
}
},
"resources":{
"number_node": 1,
"cpu_per_node": 1,
"gpu_per_node": 1,
"queue_name": "dpgk_test_0",
"group_size": 1
}
}
See dpdispatcher documentation for details of machine
and resources
specification. You may need source_list
to activate the appropriate environment. On machines where this doesn't work, edit the ENVIRONMENT
variable at the top of your workflow file.
Start an airflow scheduler
airflow scheduler
and 'trigger' the dpgk_workflow with your parameters.
airflow dags trigger dpgk_workflow --conf $(printf "%s" $(cat YOURJSON.json))
To view your workflow progress on the graphical webserver, try ssh tunnel it on local machine, and then open localhost:8080
in your browser.
airflow webserver --port <PORT>
ssh -L 8080:localhost:<PORT> <REMOTE_USER>@<REMOTE_HOST>