Skip to content

aiidateam/aiida-firecrest

Repository files navigation

aiida-firecrest

Coverage Status Code style: black


Repository Logo

AiiDA transport and scheduler plugins for interfacing with FirecREST via pyfirecrest.


Installation

You can install the package either from GitHub or PyPI:

pip install git+https://github.com/aiidateam/aiida-firecrest.git
# pip not yet available
pip install aiida-firecrest

Once installed, verify that the firecrest transport and scheduler plugins are available in AiiDA:

$ verdi plugin list aiida.transports firecrest
Transport interface for FirecREST.
Must be used in conjunction with the 'firecrest' scheduler plugin.

$ verdi plugin list aiida.schedulers firecrest
Scheduler interface for FirecREST.
Must be used in conjunction with the 'firecrest' transport plugin.

You can then setup a Computer in AiiDA:

$ verdi computer setup --transport firecrest --scheduler firecrest --hostname firecrest --label <YOUR_LABEL>

After completing the prompts, configure the computer with your credentials:

$ verdi -p <MY_PROFILE> computer configure firecrest <YOUR_LABEL>

Finally, test the setup:

$ verdi computer test <YOUR_LABEL> --print-traceback

Expected output:


Repository Logo

After this, AiiDA should be able to interact with FirecREST seamlessly. See tests/test_calculation.py for a working example using the plugin through the AiiDA API.

Also consider exploring the pyfirecrest CLI for direct interaction with a FirecREST server.

If you encounter any problems/bug, please don't hesitate to open an issue on this repository.


For developers

Development Installation

Clone and install the package in development mode:

git clone https://github.com/aiidateam/aiida-firecrest.git
cd aiida-firecrest
pip install -e .[dev]

Testing

To run the tests, you'll first need access to a FirecREST server. A simple way to do that locally, is to use the firecrest-v2 repo and spin up the Docker container --which is how we do it in the CI:

git clone https://github.com/eth-cscs/firecrest-v2
cd firecrest-v2
docker compose -f 'docker-compose.yml' up -d --build

By default, pytest will use the .firecrest-demo-config.json configuration file to connect to the the local Docker-based FirecREST server:

┌─────────────────┐───►┌─────────────┐───►┌──────────────────────────────┐
│ aiida_firecrest │    │ pyfirecrest │    │ FirecREST deployed on docker │
└─────────────────┘◄───└─────────────┘◄───└──────────────────────────────┘

You can also test against a real FirecREST server by supplying your own config file:

pytest --firecrest-config="MY_CONFIGURATION.json"

Make sure the configuration is similarly structured as in .firecrest-demo-config.json. Note that tests involving job submission may experience timeouts due to actual HPC queue wait times.

┌─────────────────┐───►┌─────────────┐───►┌────────────────────────────────┐
│ aiida_firecrest │    │ pyfirecrest │    │ FirecREST on a real HPC server │
└─────────────────┘◄───└─────────────┘◄───└────────────────────────────────┘

Debugging and CLI Access

For debugging or direct file system access, consider using the pyfirecrest CLI. For example, after setting the appropriate environment variables, you can run:

$ firecrest ls /home/fireuser/

Code Style

Before committing any changes, ensure the code is properly formatted and linted:

pre-commit run --all-files

Acknowledgment:

This project is supported by SwissTwins project.


Repository Logo

About

AiiDA Transport/Scheduler plugins for interfacing with FirecREST (https://products.cscs.ch/firecrest/)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Languages