Skip to content

QSW_MPI is a python package developed for MPI-parallelised time-series simulation of continuous-time quantum stochastic walks. This model allows for the study of Markovian open quantum systems in the Lindblad formalism, including a generalization of the continuous-time random walk and continuous-time quantum walk.

License

Notifications You must be signed in to change notification settings

Edric-Matwiejew/QSW_MPI

Repository files navigation

QSW_MPI

docs doi

Overview

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.

Requirements

  • 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

Installation

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

Documentation

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

Usage examples are included in 'QSW_MPI/examples' These examples are discussed in the 'Package Overview' section of the QSW documentation.

QSW_MPI Package Contents Overview

Program Files

  • 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.

Other Files

  • 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.

About

QSW_MPI is a python package developed for MPI-parallelised time-series simulation of continuous-time quantum stochastic walks. This model allows for the study of Markovian open quantum systems in the Lindblad formalism, including a generalization of the continuous-time random walk and continuous-time quantum walk.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published