Skip to content

VeloxChem for LUMI added #2608

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/apps/by_discipline.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@
* [TmoleX](tmolex.md) GUI for setting up and analyzing TURBOMOLE jobs
* [TURBOMOLE](turbomole.md) Efficient program package for electronic structure calculations
* [VASP](vasp.md) Ab initio DFT electronic structures
* [VeloxChem](veloxchem.md) Python-based open source quantum chemistry software
* [VMD](vmd.md) Molecular visualization program

## Computational Engineering
Expand Down
112 changes: 112 additions & 0 deletions docs/apps/veloxchem.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
---
tags:
- Free
---

# VeloxChem

VeloxChem is a Python-based open source quantum chemistry software for
contemporary and future hardware architectures. It features interactive program
access through Jupyter notebooks as well as massively parallel calculations in
high-performance computing (HPC) environments.

## Available


- LUMI


| Version | Available modules | Notes |
|:-------:|:------------------|:-----:|
| 1.0rc4 | veloxchem/cpu | CPU version |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few comments here:

  • Why to use release candidate instead of a stable version?
  • Which version does this correspond to? There is no tags/releases in https://github.com/VeloxChem/VeloxChem/tags.
  • I'd suggest to include version in the module name too (and git hash if there is no versioning)
  • I can't look into the modules as cannot open directory '/appl/local/csc/modulefiles/veloxchem/': Permission denied

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Tuomas for the detailed and extended comments! Much appreciated! I'll address these points
as follows:

  • Preview disappeared: No idea why the preview is missing
  • Version choice: This is the version suggested by the VeloxChem developers. I couldn’t find explicit versioning or tags in the repo, so the only reference I could use is the output from "vlx --version" .
  • Module permissions: Thanks for pointing that out. Has now been fixed.

| 1.0 | veloxchem/gpu | GPU version |


## License

- VeloxChem is a free software available under the 3-Clause BSD License.

## Usage

On LUMI, you need to first activate CSC's local software stack before you can
see and load the module. For example:

```bash
module use /appl/local/csc/modulefiles
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
module use /appl/local/csc/modulefiles
module load Local-CSC

(Which one is recommended?)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't even know about Local-CSC. Have only seen the other version, e.g. https://docs.csc.fi/apps/lammps/#lumi-c-hybrid-mpiopenmp

module load veloxchem/cpu
source $VLXHOME/vlxenv/bin/activate
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it'd be better to install veloxchem outside venv (and set PYTHONPATHs in module file instead). Then users have possibility to create their own venv for a few extra packages if needed. (Another question is that would a container-based installation be better?)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding this I have no opinion or experience. Maybe discuss it in detail outside this PR?

vlx --version
```


### LUMI

=== "LUMI CPU script"

```bash
#!/bin/bash
#SBATCH --account=<project>
#SBATCH --partition=standard
#SBATCH --job-name=vlx.cpu_test
#SBATCH --time 02:00:00

#SBATCH --nodes=2
#SBATCH --ntasks-per-node=8
#SBATCH --cpus-per-task=16

# Load VeloxChem CPU environment
module use /appl/local/csc/modulefiles
module load veloxchem/cpu

# Activate Python virtual environment
source $VLXHOME/vlxenv/bin/activate

# OpenMP settings (based on allocated SLURM cpus)
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
export OMP_PLACES=cores

# Run VeloxChem
job=ecd_response
srun vlx ${job}.inp ${job}.out
```

=== "LUMI GPU script"

```bash
#!/bin/bash
#SBATCH --account=<project>
#SBATCH --partition=standard-g
#SBATCH --job-name=vlx.gpu_test
#SBATCH --time 02:00:00

#SBATCH --nodes=2
#SBATCH --exclusive
#SBATCH --ntasks-per-node=1
#SBATCH --hint=nomultithread
#SBATCH --gpus-per-node=8

# Load VeloxChem GPU environment
module use /appl/local/csc/modulefiles
module load veloxchem/gpu

# Activate Python virtual environment
source $VLXHOME/vlxenv/bin/activate

# use one OpenMP thread per GPU device
export OMP_NUM_THREADS=8
export OMP_PLACES=cores
export SRUN_CPUS_PER_TASK=8
Comment on lines +96 to +98
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it work to define #SBATCH --cpus-per-task=8 instead and make this block like in cpu run?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right! That would be more consistent.


# Run VeloxChem
job=g-quad-neutral
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This input script could be included for testing.

srun python3 -m veloxchem ${job}.inp ${job}.out
```

## More information

- VeloxChem website: [veloxchem.org](https://veloxchem.org/)
- VeloxChem GitLab repository: [gitlab.com/veloxchem/veloxchem](https://gitlab.com/veloxchem/veloxchem)
- [VeloxChem: A Python-driven density-functional theory program for spectroscopy simulations in high-performance computing environments](https://doi.org/10.1002/wcms.1457) (introductory paper about VeloxChem)
- [VeloxChem — Quantum Molecular Modelling in HPC Environments](https://www.pdc.kth.se/about/publications/pdc-newsletter-no-2-2019/veloxchem-1.945304) (article about the reasons and need for developing VeloxChem, the goals and structure of the software and its efficiency)
- VIAMD for VeloxChem: [github.com/scanberg/viamd/wiki](https://github.com/scanberg/viamd/wiki)