Giter Club home page Giter Club logo

yao.jl's Introduction

Yao Logo

Yao

Build Status Build status Coverage Status codecov

Extensible, Efficient Quantum Algorithm Design for Humans.

Introduction

Yao is an open source framework for

  • quantum algorithm design;
  • quantum software 2.0;
  • quantum computation education.

Installation

In v0.7+/v1.0+, please type ] in the REPL to use the package mode, then type this command:

pkg> add Yao

Documentation

Motivation

Comparing with state of art quantum simulators, our library is inspired by quantum circuit optimization. Variational quantum optimization algorithms like quantum circuit Born machine (QCBM), quantum approximate optimization algorithm (QAOA), variational quantum eigensolver (VQE) and quantum circuit learning (QCL) et. al. are promising killer apps on a near term quantum computers. These algorithms require the flexibility to tune parameters and have well defined patterns such as "Arbitrary Rotation Block" and "CNOT Entangler".

In Yao, we call these patterns "blocks". If we regard every gate or gate pattern as a "block", then the framework can

  • be flexible to dispatch parameters,
  • cache matrices of blocks to speed up future runs,
  • allow hierarchical design of quantum algorithms

Thanks to Julia's duck type and multiple dispatch features, user can

  • easily extend the block system by overloading specific interfaces
  • quantum circuit blocks can be dispatched to some special method to improve the performance in specific case (e.g. customized repeat block of H gate).

Features

Yao is a framework that is about to have the following features:

  • Extensibility
    • define new operations with a minimum number of methods in principle.
    • extend with new operations on different hardware should be easy, (e.g GPUs, near term quantum devices, FPGAs, etc.)
  • Efficiency
    • comparing with python, julia have no significant overhead on small scale circuit.
    • special optimized methods are dispatched to frequently used blocks.
    • double interfaces "apply!" and "cache server + mat" allow us to choose freely when to sacrifice memory for faster simulation and when to sacrifice the speed to simulate more qubits.
  • Easy to Use
    • As a white-box simulator, rather than using a black box, users will be aware of what their simulation are doing right through the interface.
    • Hierarchical APIs from low abstraction quantum operators to highly abstract circuit block objects.

The whole framework is highly modularized, researchers can extend this framework for different purposes.

Contribution

To contribute to this project, please open an issue first to discuss with us in case we may not accept your PR.

Author

This project is an effort of QuantumBFS, an open source organization for quantum science. All the contributors are listed in the contributors.

License

Yao is released under the Apache 2 license.

yao.jl's People

Contributors

roger-luo avatar giggleliu avatar jeffreysarnoff 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.