Giter Site home page Giter Site logo

edric-matwiejew / qsw_mpi Goto Github PK

View Code? Open in Web Editor NEW
8.0 4.0 5.0 14.44 MB

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.

Home Page: https://qsw-mpi.readthedocs.io/

License: GNU General Public License v3.0

Python 30.01% Makefile 0.58% Fortran 65.63% Shell 2.04% Julia 1.74%
quantum-stochastic-walk open-quantum-walk markovian-dynamics lindblad-master-equation parallel-computation fortran mpi python quantum-walk matrix-exponentiation

qsw_mpi's Introduction

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.

qsw_mpi's People

Contributors

edric-matwiejew avatar fkhaller avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.