GithubHelp home page GithubHelp logo

riverlane / qhal Goto Github PK

View Code? Open in Web Editor NEW
15.0 8.0 2.0 2.19 MB

:no_entry: [DEPRECATED] A Quantum Hardware Abstraction Layer developed in the context of UK ISCF consortium

Home Page: https://riverlane.github.io/QHAL

License: Apache License 2.0

HTML 2.33% Makefile 7.82% Python 83.18% Dockerfile 1.93% Shell 4.75%
quantum hal

qhal's Introduction

โ›” [DEPRECATED] Migrated to http://qhal.npl.co.uk/

QHAL - Quantum Hardware Abstraction Layer

Scope and Purpose

This document sets out a Hardware Abstraction Layer (HAL) for quantum computers (QHAL) based on four leading qubit technologies: superconducting qubits, trapped-ion qubits, photonic systems and silicon-based qubits. The aim is to define a multi-level HAL that makes software portable across platforms but not at the cost of performance. The HAL allows high-level quantum computer users, such as application developers, platform and system software engineers, cross-platform software architects, to abstract away the hardware implementation details while keeping the performance.

Disclaimer

This specification must be considered a work in progress. The document is currently used to guide discovery, initiate discussion and enable future improvements. Even though all the parties involved are putting their best efforts on verifying the validity and correctness of what is stated, extensive reviews are still to be conducted. This disclaimer will be removed once the document reaches sufficient maturity.

Contributors

Company/Entity
ARM
Duality Quantum Photonics (DQP)
Hitachi Europe Ltd (HEU)
National Physical Laboratory (NPL)
Oxford Ionics (OI)
Oxford Quantum Circuits (OQC)
Riverlane (RL)
Seeqc
Universal Quantum (UQ)

Current version

The specification file gets updated every time a merge into the dev branch happens. Any PR that entails a change to the specification PDF document will not get built until merged into the dev branch, so during a PR any changes on the PDF that need to be inspected can be viewed as an artifact of this workflow. See specification for the latest version.

Testing framework and code examples

More information are provided at code and testing

License

see License here

Ochrona

qhal's People

Contributors

mghibaudi avatar dunderwood88 avatar github-actions[bot] avatar abhishekagarwalnpl avatar

Stargazers

Stive Hobbys avatar  avatar  avatar Hugo Lepage avatar Peter Morgan avatar Matt avatar Ionel Miu avatar Alberto  avatar Dennis Lucarelli avatar Daniel Duncan avatar Cory VanderJagt avatar  avatar Harvey Bastidas avatar Chris Bishop avatar Ziad avatar

Watchers

Samin Ishtiaq avatar Anton Buyskikh avatar Hugo Lepage avatar Alexandre Cuenat avatar Alberto  avatar Chris Bishop avatar  avatar  avatar

Forkers

00mjk qlw

qhal's Issues

Reordering HAL command _OPCODES into mandatory and optional commands?

Would it make sense to reorder _OPCODES in HAL commands into a code section of mandatory and a consecutive code section of optional commands?

Reason: At the moment the list of optional commands is growing quite extensively making it hard to keep track of commands which must be supported by all partners. If partners keep adding optional commands to the list of _OPCODES it may become hard to identify the mandatory core commands from the code in the future.

Emulator specific commands

Would it make sense to introduce emulator specific commands? Would it make sense to make these commands mandatory?

  1. Sample N shots : Would sample N shots from the full qubit register after executing a quantum circuit.
  2. Probability in Zero : Would return a vector of probabilities to have qubits 0,...,M-1 in zero state.

Reason:

  • Saves computing effort for emulation based on state vector or density matrix propagation.
  • Emulation may be equally important to a user.

command creator returns wrong results when angle is negative

UQ HAL has been complaining when command packer is used with negative angles. There might be an issue with the below snippet form _commands.py

cmd = (
(opcode.code << Shifts.OPCODE.value)
| (arg0 << Shifts.ARG0.value)
| qidx0
)

when arg0 is negative and bitwise or is performed, all the prepended 1's to represent the negative number ( 2's complement ) overrides fields before it ( bitwise or with 1s ). This results in a wrong packed result being returned from command creator.
There are other few places where similar bitwise operations are performed in the codebase which would need changing.

One way to fix this would be to bitwise mask each field before the bitwise or.

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.