https://github.com/xanaduai/jet
Jet is a cross-platform library for simulating quantum circuits using tensor network contractions.
https://github.com/xanaduai/jet
quantum-computing tensor-networks
Last synced: 13 days ago
JSON representation
Jet is a cross-platform library for simulating quantum circuits using tensor network contractions.
- Host: GitHub
- URL: https://github.com/xanaduai/jet
- Owner: XanaduAI
- License: apache-2.0
- Created: 2021-05-11T20:04:52.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-03-14T21:34:27.000Z (about 2 years ago)
- Last Synced: 2025-04-08T17:04:25.964Z (14 days ago)
- Topics: quantum-computing, tensor-networks
- Language: C++
- Homepage: https://quantum-jet.readthedocs.io
- Size: 2.15 MB
- Stars: 61
- Watchers: 7
- Forks: 14
- Open Issues: 6
-
Metadata Files:
- Readme: README.rst
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
.. image:: https://raw.githubusercontent.com/XanaduAI/jet/main/docs/_static/jet_title.svg
:alt: Jet
:height: 65
:width: 100%##################################################
.. image:: https://github.com/XanaduAI/jet/actions/workflows/tests.yml/badge.svg
:alt: GitHub Actions
:target: https://github.com/XanaduAI/jet/actions/workflows/tests.yml.. image:: https://img.shields.io/badge/Docs-English-yellow.svg
:alt: Documentation
:target: https://quantum-jet.readthedocs.io.. image:: https://img.shields.io/badge/C%2B%2B-17-blue.svg
:alt: Standard
:target: https://en.wikipedia.org/wiki/C%2B%2B17.. image:: https://img.shields.io/badge/License-Apache%202.0-orange.svg
:alt: License
:target: https://www.apache.org/licenses/LICENSE-2.0`Jet `_ is a cross-platform C++ and Python
library for simulating quantum circuits using tensor network contractions.Features
========* Runs on a variety of systems, from single-board machines to massively parallel
supercomputers.* Accelerates tensor contractions using a novel task-based parallelism approach.
* Models quantum systems with an arbitrary number of basis states.
To get started with Jet, read one of our `tutorial walkthroughs
`__ or
browse the full `API documentation
`__.Installation
============C++
^^^The Jet C++ library requires `Taskflow `_,
a BLAS library with a CBLAS interface, and a C++ compiler with C++17 support.
To use Jet, add ``#include `` to the top of your header file and link
your program with the CBLAS library.For example, assuming that the Taskflow headers can be found in your ``g++``
include path and OpenBLAS is installed on your system, you can compile the
``hellojet.cpp`` program below.. code-block:: cpp
#include
#include
#include#include
int main(){
using Tensor = Jet::Tensor>;Tensor lhs({"i", "j", "k"}, {2, 2, 2});
Tensor rhs({"j", "k", "l"}, {2, 2, 2});lhs.FillRandom();
rhs.FillRandom();Tensor res = Tensor::ContractTensors(lhs, rhs);
for (const auto &datum : res.GetData()) {
std::cout << datum << std::endl;
}std::cout << "You have successfully used Jet version " << Jet::Version() << std::endl;
return 0;
}by running
.. code-block:: bash
git clone https://github.com/XanaduAI/jet
g++ --std=c++17 -O3 -Ijet/include hellojet.cpp -lopenblasThe output of this program should resemble
.. code-block:: text
$ ./hellojet
(-0.936549,0.0678852)
(-0.0786964,-0.771624)
(2.98721,-0.657124)
(-1.90032,1.58051)
You have successfully used Jet version 0.2.1For more detailed instructions, see the `development guide
`_.Python
^^^^^^The Jet Python package requires Python version 3.7 and above. Installation of Jet,
as well as all dependencies, can be done using pip:.. code-block:: bash
pip install quantum-jet
To build the Jet Python distribution locally, a BLAS library with a CBLAS
interface and a C++ compiler with C++17 support is required. Simply run.. code-block:: bash
make dist
pip install dist/*.whlTo verify that Jet is installed, you can run the ``hellojet.py`` program below
.. code-block:: python
import jet
lhs = jet.Tensor(["i", "j", "k"], [2, 2, 2])
rhs = jet.Tensor(["j", "k", "l"], [2, 2, 2])lhs.fill_random()
rhs.fill_random()
res = jet.contract_tensors(lhs, rhs)for datum in res.data:
print(f"{datum:.5f}")print("You have successfully used Jet version", jet.version())
The output of this program should resemble
.. code-block:: text
$ python hellojet.py
1.96289+0.25257j
-0.16588-1.44652j
-1.43005+0.49516j
1.66881-1.67099j
You have successfully used Jet version 0.2.1Contributing to Jet
===================We welcome new contributions - simply fork the Jet repository and make a
`pull request `_
containing your contribution. All contributers to Jet will be listed as authors
on the releases. See our `changelog
`_ for more
details.We also encourage bug reports, suggestions for new features and enhancements,
and even links to cool projects or applications built using Jet. Visit the
`contributions page
`_ to
learn more about sharing your ideas with the Jet team.Support
=======- **Source Code:** https://github.com/XanaduAI/jet
- **Issue Tracker:** https://github.com/XanaduAI/jet/issuesIf you are having issues, please let us know by posting the issue on our GitHub
issue tracker.Authors
=======Jet is the work of `many contributors `_.
If you are doing research using Jet, please cite our paper:
Trevor Vincent, Lee J. O'Riordan, Mikhail Andrenkov, Jack Brown, Nathan Killoran, Haoyu Qi, and Ish Dhand. *Jet: Fast quantum circuit simulations with parallel task-based tensor-network contraction.* 2022. `Published in Quantum `_.
License
=======Jet is **free** and **open source**, released under the
`Apache License, Version 2.0 `_.Jet contains a copy of
`JSON for Modern C++ `_
from Niels Lohmann which is licenced under the
`MIT License `_.