Coder Social home page Coder Social logo

suqa's Introduction

Simulator for Universal Quantum Algorithms (SUQA)

version 1.8 (07/2021)

General purpose runtime library for implementing runtime quantum algorithms and hybrids quantum-classical algorithms.

Main project: Thermal Methods for Quantum Information

Estimation of thermal averages using quantum information algorithms.
Up to now we considered two types of algorithms: QMS and QSA, discussed next.

Quantum Metropolis Sampling (QMS)

Implementation of the QMS algorithm from paper: https://www.nature.com/articles/nature09770
The QMS applied to a frustrated triangle: https://arxiv.org/abs/2001.05328

Quantum Metropolis Sampling (QSA)

Implementation of the QQSA algorithm from paper: https://www.pnas.org/content/109/3/754 [Implemented by Riccardo Aiudi]

Structure of the project:

.  
├── README.md (this file)  
├── Makefile (for linux compilation)  
├── include
│   ├── complex\_defines.cuh
│   ├── io.hpp
│   ├── parser.hpp
│   ├── pcg32.h
│   ├── suqa.cuh            (prototypes of the suqa library)
│   ├── qms.cuh             (core of the qms algorithm)  
│   ├── qsa.cuh             (core of the qsa algorithm)
│   ├── Rand.hpp
│   ├── suqa\_cpu.hpp       (suqa cpu core functions)
│   ├── suqa\_kernels.cuh   (suqa gpu core functions)
│   └── system.cuh          (prototypes for any system) 
├── src
│   ├── io.cpp              (input/output facilities)
│   ├── qms.cu              (runs the qms algorithm)
│   ├── qsa.cu              (runs the qsa algorithm)
│   ├── qxq.cu              (runs the qxq game)
│   ├── Rand.cpp            (pseudorandom number generators)
│   ├── suqa.cu             (core engine)
│   ├── system.cu           (system-specific structures and functions)
│   ├── evo.cu  (tests the system's evolution operator)
│   └── test\_suqa.cu       (tests the suqa functions and structures)
└── vs      (visual studio solution and project folders)  
    ├── qms  
    ├── suqa.sln  
    └── test\_evolution  

Each git branch represents a different system:

  • master : frustrated triangle
  • z2_matter_gauge : model with hamiltonian evolution of a gauge theory as decribed in https://arxiv.org/abs/1903.08807 [implemented by Marco Cardinali]
  • d4-gauge : another model from the previous paper [implemented only the evolution]
  • z2-gauge : toy model for d4-gauge with gauge group Z2 [implemented by Lorenzo Maio]

Compiling

Linux and Windows are supported to this date.
This code runs both on cpu only or on machines with NVIDIA gpus (CUDA).

Linux

dependencies

  • g++ with std>=c++11
  • CUDA toolkit (if compiled for gpu devices)
  • Make

compilation

To know the different compilation options run

make help

Windows

dependencies

  • Visual Studio 2019
  • CUDA toolkit (if compiled for gpu devices)

compilation

The Visual Studio solution is in 'vs/suqa.sln'.
It contains two projects, 'qms' and 'test_evolution';
to build one of them, right-click on the project name on 'Solution Explorer', and select 'Set as Startup Project', then select the mode of compilation 'Release' or 'Debug' on the upper bar, and right-click again on the project name selecting 'Build'.
The executable will be created in the folder 'vs/x64/Release' or 'vs/x64/Debug' depending on the compilation mode.
To run it, e.g., you can click on 'Tools/Command Line/Developer PowerShell' on the upper bar to open a shell.

Collaborators (in chronological order)

Giuseppe Clemente ([email protected])
Marco Cardinali
Lorenzo Maio
Claudio Bonanno
Riccardo Aiudi

suqa's People

Contributors

claudio-bonanno-93 avatar joek93 avatar marco1311 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

suqa's Issues

Need for Gate Counters

A very useful feature, still missing, is the possibility to automatically count the number (or average number) of gates on selected regions of the algorithm which is equivalent to the number of gates required on a real machine with its universal standard set of gates at 1 and 2 qubits.

Missing documentation

Documentation is still missing in the current version.
It should be set up at least for the middle and end-users in a future version.

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.