Git Product home page Git Product logo

qflex's Introduction

Travis-CI Total alerts Language grade: Python Language grade: C++
Nature NPJ Quantum Information Quantum Science and Technology

qFlex: A flexible high-performance simulator for verifying and benchmarking quantum circuits implemented on real hardware

Description

Flexible Quantum Circuit Simulator (qFlex) implements an efficient tensor network, CPU-based simulator of large quantum circuits. qFlex computes exact probability amplitudes, a task that proves essential for the verification of quantum hardware, as well as mimics quantum machines by computing amplitudes with low fidelity. qFlex targets quantum circuits in the range of sizes expected for supremacy experiments based on random quantum circuits, in order to verify and benchmark such experiments.

Documentation

qFlex scientific documentation and results can be found in [1], [2] and [3]. For technical documentation on how to use qFlex, see qflex/docs.

[1] B. Villalonga, et al., "A flexible high-performance simulator for verifying and benchmarking quantum circuits implemented on real hardware", NPJ Quantum Information 5, 86 (2019)

[2] B. Villalonga, et al., "Establishing the Quantum Supremacy Frontier with a 281 Pflop/s Simulation", Quantum Science and Technology 5 (3), 034003 (2020)

[3] "Quantum supremacy using a programmable superconducting processor", Nature 574, 505โ€“510 (2019)

Build methods

To ensure cross-platform viability, qFlex supports multiple different build methods. If one of the build methods below does not work on your system, try using one of the other methods listed.

Local installation

To build qFlex on your machine, simply run:

$ autoreconf -i && autoconf && ./configure
$ make && make run-tests

To disable qFlex python interface, use ./configure --disable-pybind11.

If missing, python modules can be installed as follows:

$ python3 -m pip install -r scripts/requirements.txt

After running these commands, qFlex can be installed by running make install. By default, this installs qFlex in $HOME/local/. To change the installation folder, use ./configure --prefix=/new/installation/folder/.

qFlex provides an experimental support for OpenMP. To activate OpenMP, run ./configure with the extra-option --enable-openmp.

qFlex relies on OpenBLAS for optimized matrix operations.

For more information, see the installation guide.

Build Using Docker

Docker allows you to run qFlex in an isolated environment, without having to worry about managing dependencies.

To build qFlex with Docker, see the Docker guide.

An automated qFlex Docker container, synced with the master branch, can be pulled from Docker Hub as:

$ docker pull ngnrsaa/qflex

Build Using Rootless Containers

Rootless containers are an alternative to Docker targeted at users who may not have root privileges on their machine.

To run qFlex in a rootless container, see qflex/docs/rootless_container.md.

Using Google Cirq

Cirq is a framework for modeling and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.

To run qFlex on Google Cirq circuits, or just to call the simulator from Python, see qflex/docs/cirq_interface.md.

License

Copyright ยฉ 2019, United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All rights reserved.

The Flexible Quantum Circuit Simulator (qFlex) framework is licensed under the Apache License, Version 2.0 (the "License"); you may not use this application except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

qflex's People

Contributors

95-martin-orion avatar alan-kao avatar alankao64 avatar alexandrupaler avatar benjaminvillalonga avatar dagart avatar dlyongemallo avatar dmitrylyakh avatar kkissell avatar mofeing avatar s-mandra avatar sboixo avatar viathor avatar

Watchers

 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.