Skip to content

trishullab/Quasimodo

Repository files navigation

Quasimodo: Symbolic Quantum Simulation Tool

Prerequisites

  1. Install make
  2. Download and install boost c++ library in home directory
       wget https://boostorg.jfrog.io/artifactory/main/release/1.81.0/source/boost_1_81_0.tar.gz .
       tar -xvf boost_1_81_0.tar.gz
    Export BOOST_PATH variable as
       export BOOST_PATH="$HOME/boost_1_81_0"
  3. Install mpfr
        sudo apt-get update
        sudo apt-get install libmpfr-dev
  4. Install conda (if you want virtual environment, recommended)
        wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh .
        chmod a+x Miniconda3-latest-Linux-x86_64.sh
        bash Miniconda3-latest-Linux-x86_64.sh
        source ~/.basrc
        conda create -n <env_name> python=3.9
        conda activate <env_name>
  5. Set Python include path to PYTHON_INCLUDE variable
  6. Install pip
  7. Install invoke
        pip install invoke
  8. Install Pybind11
        pip install pybind11
  9. Install gcc, g++
  10. Install autoconf
        sudo apt-get update
        sudo apt-get install autoconf

Installation Guide

  1. Clone the repository and run a few init commands
    git clone https://github.com/trishullab/Quasimodo.git
    cd Quasimodo/
    git submodule update --init
  1. Build CUDD Library used for BDDs
    cd cflobdd/cudd-complex-big/
    autoupdate
    autoreconf

Edit configure to add -fPIC flag to CFLAGS and CXXFlAGS and then run the following after saving the file

    ./configure
    make
    cd ../..
  1. Let's build Quasimodo. (Edit file tasks.py in python_pkg to include -undefined dynamic_lookup on line 25 if running on MACOS)
    cd python_pkg/
    invoke build-quasimodo
    invoke build-pybind11

Quasimodo is installed and can be used by importing to any python program.

  • We have provided 6 benchmarks that can be used as a starting guide on how to write programs using Quasimodo library.
  • File quantum_circuit.h provides an abstract class that shows all the supported list of gates and queries that can be performed using Quasimodo.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published