Skip to content

Commit

Permalink
small changes
Browse files Browse the repository at this point in the history
  • Loading branch information
svandenhaute committed Jul 28, 2024
1 parent 60b7bc7 commit 2e55f67
Show file tree
Hide file tree
Showing 10 changed files with 21 additions and 10 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ Psiflow is a scalable molecular simulation engine for chemistry and materials sc
It supports:
- **quantum mechanical calculations** at various levels of theory (GGA and hybrid DFT, post-HF methods such as MP2 or RPA, and even coupled cluster; using CP2K|GPAW|ORCA)
- **trainable interaction potentials** as well as easy-to-use universal potentials, e.g. [MACE-MP0](https://arxiv.org/abs/2401.00096)
- a wide range of **sampling algorithms**: NVE|NVT|NPT, path-integral molecular dynamics, alchemical replica exchange, metadynamics, phonon-based sampling, ... (thanks to [i-PI](https://ipi-code.org/))
- a wide range of **sampling algorithms**: NVE | NVT | NPT, path-integral molecular dynamics, alchemical replica exchange, metadynamics, phonon-based sampling, thermodynamic integration; using [i-PI](https://ipi-code.org/),
[PLUMED](https://www.plumed.org/), ...

Users may define arbitrarily complex workflows and execute them **automatically** on local, HPC, and/or cloud infrastructure.
To achieve this, psiflow is built using [Parsl](https://parsl-project.org/): a parallel execution library which manages job submission and workload distribution.
Expand Down
1 change: 0 additions & 1 deletion configs/hortense.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ ModelTraining:
CP2K:
cores_per_worker: 64
max_evaluation_time: 30
memory_limit: 2GB
launch_command: 'apptainer exec -e --no-init oras://ghcr.io/molmod/cp2k:2024.1 /opt/entry.sh mpirun -np 32 -bind-to core cp2k.psmp'
slurm:
partition: "cpu_rome"
Expand Down
3 changes: 2 additions & 1 deletion configs/lumi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ default_threads: 8
CP2K:
cores_per_worker: 32
max_evaluation_time: 20
memory_limit: 2GB
launch_command: 'singularity exec -e --no-init oras://ghcr.io/molmod/cp2k:2024.1 /opt/entry.sh mpirun -np 32 cp2k.psmp'
slurm:
partition: "standard"
Expand All @@ -30,6 +29,8 @@ ModelEvaluation:
ModelTraining:
cores_per_worker: 7
gpu: true
env_vars:
OMP_PROC_BIND: "spread"
slurm:
partition: "standard-g"
account: "project_465001125"
Expand Down
1 change: 0 additions & 1 deletion configs/threadpool.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ ModelTraining:
CP2K:
cores_per_worker: 2
max_evaluation_time: 0.3
memory_limit: 2GB
launch_command: 'apptainer exec -e --no-init oras://ghcr.io/molmod/cp2k:2024.1 /opt/entry.sh mpirun -bind-to core -np 2 -env OMP_NUM_THREADS 1 cp2k.psmp'
CP2K_container:
cores_per_worker: 2
Expand Down
4 changes: 1 addition & 3 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,6 @@ SLURM jobscripts, send them to the scheduler, and once the resources are allocat
start the calculation. For example, assume that the GPU partition on this cluster is
named `infinite_a100`, and it has 12 cores per GPU. Consider the following config
```yaml
container_runtime: apptainer # or singularity; check HPC docs to see which one is available
container_uri: oras://ghcr.io/molmod/psiflow:main_cu118 # built from github main branch
ModelTraining:
cores_per_worker: 12
gpu: true
Expand Down Expand Up @@ -215,7 +213,7 @@ There exist a few additional keywords for `ModelTraining` which might be useful:
necessary to tune the process/thread affinity a little bit. For example:
```yaml
env_vars:
OMP_PROC_BIND: spread
OMP_PROC_BIND: "spread"
```
### 2. molecular dynamics
Expand Down
12 changes: 12 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,14 @@ Users may define arbitrarily complex workflows and execute them **automatically*
To achieve this, psiflow is built using [Parsl](https://parsl-project.org/): a parallel execution library which manages job submission and workload distribution.
As such, psiflow can orchestrate large molecular simulation pipelines on hundreds or even thousands of nodes.

<figure markdown="span">
![Image title](overview.png){ width="500" }
</figure>

---

# Setup

Use the following one-liner to create a lightweight [micromamba](https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html) Python environment with all dependencies readily available:
```sh
curl -L molmod.github.io/psiflow/install.sh | bash
Expand Down Expand Up @@ -48,6 +54,12 @@ For a complete overview of all execution options, see the [configuration](config

- [Solid-state phase stabilities](https://github.com/molmod/psiflow/tree/main/examples/iron_harmonic_fcc_bcc.py) | **iron**: estimating the relative stability of fcc and bcc iron with anharmonic corrections using thermodynamic integration (see e.g. [Phys Rev B., 2018](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.97.054102))

- [ML potentials from scratch](https://github.com/molmod/psiflow/tree/main/examples/online_learning_pimd.py) | **water**: develop an ML potential for water based on a single geometry as input, using a combination of passive and active learning.

- [Replica exchange umbrella sampling](https://github.com/molmod/psiflow/tree/main/examples/proton_jump_plumed.py) |
**vinyl alcohol**: explore a reactive transition path with metadynamics, and use the
resulting data to perform umbrella sampling with replica exchange between umbrellas.

- [DFT singlepoints](https://github.com/molmod/psiflow/tree/main/examples/water_cp2k_noise.py) | **water**: analysis of the numerical noise DFT energy and force evaluations using CP2K and the RPBE(D3) functional, for a collection of water molecules.

- [Path-integral molecular dynamics](https://github.com/molmod/psiflow/examples/water_path_integral_md.py) | **water**: demonstration of the impact of nuclear quantum effects on the variance in O-H distance in liquid water. Path-integral molecular dynamics simulations with increasing number of beads (1, 2, 4, 8, 16) approximate the proton delocalization, and lead to systematically larger variance in O-H distance.
Expand Down
3 changes: 3 additions & 0 deletions docs/models.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ rmse = compute_rmse(forces_pred, forces_target) # this is a Future!
print('forces RMSE: {} eV/A'.format(rmse.result()))

```
Note that `model.save()` will save both a `.yaml` file with all hyperparameters as well as the actual `.pth` model which is needed to reconstruct the corresponding PyTorch module (possibly outside of psiflow if needed).
As such, it expects a directory as argument (which may either already exist or will be
created).

In many cases, it is generally recommended to provide these models with some estimate of the absolute energy of an isolated
atom for the specific level of theory and basis set considered (and this for each element).
Expand Down
1 change: 0 additions & 1 deletion examples/submit/hortense.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ ModelTraining:
CP2K:
cores_per_worker: 64
max_evaluation_time: 30
memory_limit: 2GB
launch_command: 'apptainer exec -e --no-init oras://ghcr.io/molmod/cp2k:2024.1 /opt/entry.sh mpirun -np 32 -bind-to core cp2k.psmp'
slurm:
partition: "cpu_rome"
Expand Down
1 change: 0 additions & 1 deletion examples/submit/lumi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ default_threads: 8
CP2K:
cores_per_worker: 32
max_evaluation_time: 20
memory_limit: 2GB
launch_command: 'singularity exec -e --no-init oras://ghcr.io/molmod/cp2k:2024.1 /opt/entry.sh mpirun -np 32 cp2k.psmp'
slurm:
partition: "standard"
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ dependencies = [
"ase >= 3.23.0",
"pyyaml>=6.0",
"numpy>=1.22.3,<2",
"parsl @ git+https://github.com/parsl/parsl.git@benc-status-refactor",
"parsl @ git+https://github.com/parsl/parsl.git@bugfix-default-scale-in",
"prettytable",
"psutil",
"cp2k-input-tools @ git+https://github.com/cp2k/cp2k-input-tools", # need 2024.1
Expand Down

0 comments on commit 2e55f67

Please sign in to comment.