Python wrapper for QUDA written in Cython
Project description
PyQUDA
Python wrapper for QUDA written in Cython.
This project aims to benefit from the optimized linear algebra library CuPy in Python based on CUDA. CuPy and QUDA will allow us to perform most lattice QCD research operations with high performance. PyTorch is an alternative option.
This project is based on the latest QUDA develop
branch. PyQUDA should be compatible with any commit of QUDA after https://github.com/lattice/quda/pull/1489, but leave some features disabled.
Feature
- Multi-GPU supported
- with MPI for Python package
- File I/O
- Read gauge and propagator in Chroma format (with checksum)
- Read gauge and propagator in MILC format (with checksum)
- Read/write gauge and propagator in KYU format
- Read/write gauge and propagator in XQCD format
- Read/write gauge and propagator in NPY format (numpy)
- Quark propagator
- Isotropic/anisotropic Wilson fermion action with multigrid support
- Isotropic/anisotropic Clover fermion action with multigrid support
- Isotropic HISQ fermion action
- HMC
- Isotropic gauge action
- 1-flavor isotropic clover fermion action
- 2-flavor isotropic clover fermion action
- N-flavor isotropic HISQ fermion action
- Gauge fixing
- Rotation field with over-relaxation method (waiting for QUDA merge)
- Gauge smearing
- 3D/4D APE smearing
- 3D/4D stout smearing
- 3D/4D HYP smearing
- Fermion smearing
- Gaussian smearing
- Gradient flow
- Wilson flow
- Symanzik flow
Installation
Install from PyPI
Assuming the QUDA installation path is /path/to/quda/build/usqcd
export QUDA_PATH=/path/to/quda/build/usqcd
python3 -m pip install pyquda pyquda-utils
Install from source
Refer to https://github.com/CLQCD/PyQUDA/wiki/Installation for detailed instructions to install PyQUDA from the source.
Benchmark
Refer to https://github.com/CLQCD/PyQUDA/wiki/Benchmark for detailed instructions to run the PyQUDA benchmark.
Documentation (draft)
https://github.com/CLQCD/PyQUDA/wiki/Documentation
Development
We recommend building PyQUDA using in-place mode instead of installing PyQUDA for development.
git clone --recursive https://github.com/CLQCD/PyQUDA.git
cd PyQUDA
ln -s pyquda_core/pyquda pyquda
cd pyquda_core
export QUDA_PATH=/path/to/quda/build/usqcd
python3 setup.py build_ext --inplace
Now you can modify Python files in the project and immediately get the new result by running scripts. Adding the root directory to sys.path
is needed if you are running scripts from other directories.
Maintenance
Function definitions (mainly in quda.in.pxd
and pyquda.in.pyx
) and most docstrings (mainly in pyquda.pyi
and enum_quda.in.py
) should be manually updated as they cannot be autogenerated now. This also means PyQUDA should work well with future versions if the API remains unchanged.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pyquda-0.9.5.tar.gz
.
File metadata
- Download URL: pyquda-0.9.5.tar.gz
- Upload date:
- Size: 158.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e165baea27d0fac24b627d6766b1508eb045e814982383159ddba7c297077e9a |
|
MD5 | 8bce0d5abe0fc2df9b550c1ac9756b7b |
|
BLAKE2b-256 | 7166d58c3f2a674d872907d396438dee860deb2e8b2071c70d5e863598a73088 |
Provenance
The following attestation bundles were made for pyquda-0.9.5.tar.gz
:
Publisher:
PyQUDA.yaml
on CLQCD/PyQUDA
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
pyquda-0.9.5.tar.gz
- Subject digest:
e165baea27d0fac24b627d6766b1508eb045e814982383159ddba7c297077e9a
- Sigstore transparency entry: 147567224
- Sigstore integration time:
- Predicate type: