A dynamically executed quantum-classical hybrid optimizing runtime.
Project description
Rasqal is a quantum-classical hybrid runtime which runs QIR in a fully dynamic fashion, building up quantum circuits on the fly and executing them against a provided quantum backend. It uses symbolic execution and heavily deferred execution to perform code transformations, optimizations and lowering to power the circuit synthesis.
Some of the key things this approach enables:
- Unrestricted QIR and LLVM instructions fully interwoven. You can throw whatever form of IR you want at it and it'll process all classical bits locally (or lower them).
- Enabling hybrid algorithms to be run on machines and tools with only a gate-level API available. This includes QASM API's if you use its simulation framework.
- Lots of optimization potential when passed large amounts of classical context that a quantum algorithm uses to accentuate its own execution.
We also have a full feature list and quick intro to its concepts as well as a draft paper that covers its internals in excruciating detail.
If you have any features or ideas you'd like to see implemented feel free to raise a feature request!
Note: Rasqal is still early days and the potential instruction combinations of LLVM and QIR are immense, so we won't have been able to test all of them. If you have a file which dosen't work please raise an issue with it!
Getting Started
- Install Rasqal in your favourite Python venv by running
pip install rasqal
. Our current testing is done withv3.10
of Python. - Read the quick start and look at our Python example.
- (Optional) Read the paper for a deep-dive into Rasqals concepts and data structures.
Contributing
If you'd like to contribute your first destination will be to build the system locally. There's also a getting started page that covers some of the most important bits you'd need to know about the project before jumping into writing code.
After that feel free to fork the project and put up PRs with any work you would like to add. All experimental work that isn't ready for prime time has to be disabled by default and have no impact on core execution time and stability.
Thanks for making Rasqal better than it was!
We also have a code of conduct that we expect everyone to adhere too.
Licence
This code in this repository is licensed under the BSD 3-Clause Licence. Please see LICENSE for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
File details
Details for the file rasqal-0.1.5-cp312-cp312-macosx_11_0_arm64.whl
.
File metadata
- Download URL: rasqal-0.1.5-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 10.1 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca6b643fdf62f45b6b2858d1967ec13a67ccea40aa1c4c77920dc82ad2ab82d6 |
|
MD5 | 9b45a67a429f88aea3c5eef06b16ebb5 |
|
BLAKE2b-256 | e0898e04efb933417cd74e7a34b12efaa6761a2c219a53fcdd59e6e33e2c627e |
File details
Details for the file rasqal-0.1.5-cp310-none-win_amd64.whl
.
File metadata
- Download URL: rasqal-0.1.5-cp310-none-win_amd64.whl
- Upload date:
- Size: 10.8 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4058b7c13b9c80c47088ea676b0e7deed05a00634ac3a94b28720d57591ef79a |
|
MD5 | 091c4200b5f3ec88aacdc6942aeb226d |
|
BLAKE2b-256 | c7f5ae627b9d2c7db806cb9e8fdf9cea9ac9d819d99c572a9f675cd1b465ff5c |
File details
Details for the file rasqal-0.1.5-cp310-cp310-manylinux_2_31_x86_64.whl
.
File metadata
- Download URL: rasqal-0.1.5-cp310-cp310-manylinux_2_31_x86_64.whl
- Upload date:
- Size: 12.5 MB
- Tags: CPython 3.10, manylinux: glibc 2.31+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 846abcdca3a92c2f7cd7fed2111821f7db35f2d865fda01eec46fdb15b24b500 |
|
MD5 | 3ff49a03f7708d1fcf170f38873c53f5 |
|
BLAKE2b-256 | ef511f0c90bb57eeb105753413d9584b606f4439e6d4562bf105f77bff64af48 |