Giter Club home page Giter Club logo

qmoc.jl's Introduction

Quantum Measurement-Only Circuits (QMOC.jl)

Dev Build Status Coverage

Pure Julia package implementing large scale measurement-only quantum circuit simulations on different geometries. QuantumClifford.jl used to implement Clifford algebra. Simulation parallelism implemented with MPI.jl, currently without fallback - make sure you have a working MPI executable linked.

Mostly undocumented and early stage of development, expect breaking changes and added features.

qmoc.jl's People

Contributors

danielsimm avatar j-c-q avatar

Watchers

 avatar

qmoc.jl's Issues

Custom pretty-printing

The added types for trajectories, simulations and lattice sites need useful implementations of Base.show().

Current state is worst for simulations, looks like this:
Simulation(:ChainPP, 12, 12, "test_ChainPP", true, :debug, 36, 3, 100, 4, Vector{Real}[[1//3, 1//3, 1//3], [1//2, 1//2, 0//1], [1//1, 0//1, 0//1], [0//1, 1//1, 0//1], [0//1, 0//1, 1//1]], Vector{Trajectory}[[LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//3, 1//3, 1//3], true, :debug, 1, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//3, 1//3, 1//3], true, :debug, 2, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//3, 1//3, 1//3], true, :debug, 3, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//3, 1//3, 1//3], true, :debug, 4, 36, 3, 100)], [LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//2, 1//2, 0//1], true, :debug, 1, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//2, 1//2, 0//1], true, :debug, 2, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//2, 1//2, 0//1], true, :debug, 3, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//2, 1//2, 0//1], true, :debug, 4, 36, 3, 100)], [LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//1, 0//1, 0//1], true, :debug, 1, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//1, 0//1, 0//1], true, :debug, 2, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//1, 0//1, 0//1], true, :debug, 3, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[1//1, 0//1, 0//1], true, :debug, 4, 36, 3, 100)], [LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[0//1, 1//1, 0//1], true, :debug, 1, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[0//1, 1//1, 0//1], true, :debug, 2, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[0//1, 1//1, 0//1], true, :debug, 3, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[0//1, 1//1, 0//1], true, :debug, 4, 36, 3, 100)], [LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[0//1, 0//1, 1//1], true, :debug, 1, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[0//1, 0//1, 1//1], true, :debug, 2, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[0//1, 0//1, 1//1], true, :debug, 3, 36, 3, 100), LatticeCircuits.PPChainTrajectory(12, 12, "test_ChainPP", Real[0//1, 0//1, 1//1], true, :debug, 4, 36, 3, 100)]])

Make use of PBC for observables

Observables can be measured multiple time due to periodic boundary conditions. May give better statistics per unit time if asynchronously parallelised.

Pre-initialise possible PauliOperators

Creating and storing all possible operators for a given trajectory should significantly improve performance, since every operator is used far more often than O(N) times per trajectory.

Screenshot 2023-09-12 at 14 02 00

Benchmarked on Apple M1 Pro. Slower RAM is going to increase the effect.

Restructure setup

For final release, restructure classes and data management

  • "Circuit" class which more abstractly captures the initial state and how to evolve it
  • separate thermalization and sampling, with new methods (eliminate "simulate" and "run" methods)
  • (optionally) compressed/efficient permanent storage of thermalized states

Improve file handling.

The JLD2 header may be wasteful, as well as saving all measurements instead of the trajectory average. Currently, a single trajectory saves 50-100 KB, while only containing a few bytes of useful information. However, resuming of trajectories requires this.
Proposed compromise: automatically overwrite trajectory measurement series with average on first evaluation, and detect on following evaluations to avoid error. Integrate boolean "finalized" in file.

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.