Giter Site home page Giter Site logo

a_game_to_benchmark_quantum_computers's Introduction

Quantum Awesomeness

A Game to Benchmark Quantum Computers

Intro

This game is designed to run on any and all prototype devices capable of universal quantum computation. The better the device, the better the game will run. This therefore allows a simple and accessible way to assess and compare these prototypes.

''

The game consists of a series of rounds. Each has a puzzle like the one above, and each is a bit harder than the last.

Puzzles from higher rounds require higher depth circuits, and so build-up of noise contributes to an increase in difficulty. The number of rounds that the game remains playable for therefore depends on the noise levels of the device. Also, the complexity of the puzzles depends on the size and connectivity of the device that runs them. These properties mean that the game gives the player direct experience of the most important factors affecting the current generation of prototype quantum computers.

For more on the gritty details, see

How to play

The easiest way to play is to use the browser version here (though it might take a few attempts before it actually loads). Just press the run button, as highlighted in red in the image below.

''

This version either simulates a game on the chosen device, or creates one using data that has already been extracted from the real quantum computer.

Contributing data

If you have a quantum device, please consider running this game and contributing the resulting data. This will allow the public to get some experience of how your device works, and how it compares to others.

If your device is already set up in devices.py, and the game already has support for your SDK, then all you need to do is run it! Do this with the Get_Data notebook. Just set the device variable to the name of your device, and then run all.

If your device is not already set up, but it is compatible with one of the supported SDKs (QISKit, ProjectQ, Forest and Cirq), then you need to add the specifications to devices.py. See the comments and examples in this file to see how to do this.

If you need to add a new SDK, this will need to be done in QuantumAwesomeness.py. Go through all the functions with the comment This function contains SDK specific code, and add the required code for your SDK.

To avoid the above, you can also manually mediate between the game and your device. To do this, set the SDK for your device in devices.py to be "ManualQISKit". This will print a QASM to screen when it wants to run a quantum job, and ask for the results to be pasted in.

Once you've added your device, your SDK, or even your data from a real device, make a pull reqeust so we can add it in.

a_game_to_benchmark_quantum_computers's People

Contributors

adavidzh avatar artix41 avatar quantumjim avatar willzeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

a_game_to_benchmark_quantum_computers's Issues

Condition to stop asking player for pairs does not work with rigetti19

The condition should ideally be that no more pairs are possible. But it is instead based on the number of qubits left unpaired. This causes a bug with the Rigetti device, due to their being only 19 playable qubits on a 20 qubit device.

It could be easily hacked around, but should be sorted properly.

Edit: Note that this issue is only relevant for manual play.

QISKit implementation uses Y rotations instead of Z

The conjugation of past rounds is done with random single qubit rotations, intended to be in the X and Z axis. But QISKit uses X and Y. Not a huge issue, but it is inconsistent.

This does not affect current simulated data for IBM devices, since that was done using the ProjectQ implementation. It does affect the real runs, though. Probably not noticeably, but they should be rerun anyway.

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.