QSW_MPI provides a parallel framework for quantum stochastic simulation. For an overview of package usage and the theoretical basis of quantum stochastic walks, please consult the documentation, or preprint article.
- GNU make
- GNU Fortran 5 or higher
- A functional MPI implementation
- HDF5
- Python 3.6.9 or higher
Python packages:
- pip for python3 (recommended to match installation instructions given in this document)
- mpi4py
- NumPy
- SciPy
- H5py
Additional python packages required to run the usage examples:
- Networkx
After cloning the repository enter 'QSW_MPI/src' and build the Fortran shared object libraries. To enable OpenMP threading:
export OPENMP=TRUE
Or to compile these libraries with debug flags:
export DEBUG=TRUE
Then:
make
After this the QSW_MPI package may be used by importing the 'QSW_MPI' folder to python's system path at runtime:
import sys
sys.path.append('path_to/QSW_MPI')
import qsw_mpi
Or, to install 'QSW_MPI' as normal, in the 'QSW_MPI' folder generate a distribution archive:
python3 setup.py sdist bdist_wheel
Enter the newly created 'QSW_MPI/dist' folder, which should contain the archive 'qsw_mpi-0.0.1.tar.gz'. For with the QSW_MPI can be installed using pip3:
pip3 install qsw_mpi-0.0.1.tar.gz
To obtain a local copy of the documentation, with python package Sphinx and the Read the Docs Sphinx Theme installed, enter QSW_MPI/docs and build the documentation:
make html
To install Sphinx and the Read the Docs theme with pip:
pip3 install sphinx sphinx-rtd-theme
Usage examples are included in 'QSW_MPI/examples' These examples are discussed in the 'Package Overview' section of the QSW documentation.
- README.rst - QSW_MPI basic information.
- LICENSE - QSW_MPI license.
- setup.py - Configuration file used to generate a distribution archive.
- MANIFEST.in - Additional files to include in the distribution archive.
- qsw_mpi/
- __init__.py - Python package initialization.
- MPI.py - Parallel operations, quantum stochastic walk system creation and propagation.
- operators.py - Creation of local quantum stochastic walk operators.
- parallel_io.py - MPI-enabled output of results.
- src/
- Makefile - Makefile to produce foperators and fMPI shared object libraries.
- foperators.f90 - Source code for foperators shared object library.
- foperators.pyf - Defines the python interface generated by f2py for the foperators shared object library.
- fMPI.f90 - Source code for fMPI shared object library.
- fMPI.pyf - Defines the python interface generated by f2py for the fMPI shared object library.
- iso_precisions.f90 - Defines fortran precision types.
- sparse.f90 - Sparse data representation and parallel BLAS operations.
- one_norms.f90 - Parallel 1-norm estimation.
- expm.f90 - Parallel calculation of the action of the matrix exponential on a complex vector.
- operators.f90 - Creation of local and distributed quantum stochastic walk operators.
- examples/
- example.py - Usage example detailed in "QSW_MPI: A framework for parallel simulation of quantum stochastic walks and the QSW_MPI documentation".
- benchmarks/ * cray_benchmark: Scripts and program files used to test the scalability of QSW_MPI on a distributed system as discussed in "QSW_MPI: A framework for parallel simulation of quantum stochastic walks and the QSW_MPI documentation". * desktop_benchmark: Scripts and program file used to test the performance and accuracy of QSW_MPI in a workstation-like environment as compared to pre-existing packages, as discussed in "QSW_MPI: A framework for parallel simulation of quantum stochastic walks and the QSW_MPI documentation".
- docs/
- Makefile - Documentation make script for Unix-like systems.
- make.bat - Documentation build script for Windows systems.
- requirements.txt - Requirements to build documentation of Read the Docs.
- source/ - Documentation source files and images.