Skip to main content

Tests Coverage Documentation DOI PyPI Forum License

Catalyst is an experimental package that enables just-in-time (JIT) compilation of hybrid quantum-classical programs.

Catalyst is currently under heavy development — if you have suggestions on the API or use-cases you'd like to be covered, please open an GitHub issue or reach out. We'd love to hear about how you're using the library, collaborate on development, or integrate additional devices and frontends.

Key Features

  • Compile the entire quantum-classical workflow, including any optimization loops.

  • Use Catalyst alongside PennyLane directly from Python. Simply decorate quantum code and hybrid functions with @qjit, leading to significant performance improvements over standard Python execution.

  • Access advanced control flow that supports both quantum and classical instructions.

  • Infrastructure for both quantum and classical compilation, allowing you to compile quantum circuits that contain control flow.

  • Built to be end-to-end differentiable.

  • Support for PennyLane-Lightning high performance simulators, and Amazon Braket devices. Additional hardware support, including QPUs, to come.

Overview

Catalyst currently consists of the following components:

  • Catalyst Compiler.

    The core Catalyst compiler is built using MLIR, with the addition of a quantum dialect used to represent quantum instructions. This allows for a high-level intermediate representation of the classical and quantum components of the program, resulting in advantages during optimization. Once optimized, the compiler lowers the representation down to LLVM + QIR, and a machine binary is produced.

  • Catalyst Runtime.

    The runtime is a C++ runtime with multiple-device support based on QIR that enables the execution of Catalyst-compiled quantum programs. A complete list of all backend devices along with the quantum instruction set supported by these runtime implementations can be found by visiting the runtime documentation.

In addition, we also provide a Python frontend for PennyLane and JAX:

  • PennyLane JAX frontend.

    A Python library that provides a @qjit decorator to just-in-time compile PennyLane hybrid quantum-classical programs. In addition, the frontend package provides Python functions for defining Catalyst-compatible control flow structures, gradient, and mid-circuit measurement.

Installation

Catalyst is officially supported on Linux (x86_64, aarch64) and macOS (arm64, x86_64) platforms, and pre-built binaries are being distributed via the Python Package Index (PyPI) for Python versions 3.10 and higher. To install it, simply run the following pip command:

pip install pennylane-catalyst

If you wish to contribute to Catalyst or develop against our runtime or compiler, instructions for building from source are also available.

Trying Catalyst with PennyLane

To get started using the Catalyst JIT compiler from Python, check out our quick start guide, as well as our various examples and tutorials in our documentation.

For an introduction to quantum computing and quantum machine learning, you can also visit the PennyLane website for tutorials, videos, and demonstrations.

Roadmap

  • Frontend: As we continue to build out Catalyst, the PennyLane frontend will likely be upstreamed into PennyLane proper, providing native JIT functionality built-in to PennyLane. The Catalyst compiler and runtime will remain part of the Catalyst project. If you are interested in working on additional frontends for Catalyst, please get in touch.

  • Compiler: We will continue to build out the compiler stack, and add quantum compilation routines. This includes an API for providing or writing Catalyst-compatible compilation routines. In addition, we will be improving the autodifferentiation support, and adding support for classical autodiff, additional quantum gradients, and quantum-aware optimization methods.

  • Runtime: We will be adding support for more devices, including quantum hardware devices. In addition, we will be building out support for hetereogeneous execution. If you are interested in working on connecting a quantum device with Catalyst, please get in touch.

To get the details right, we need your help — please send us your use cases by starting a conversation, or trying Catalyst out.

Contributing to Catalyst

We welcome contributions — simply fork the Catalyst repository, and then make a pull request containing your contribution.

We also encourage bug reports, suggestions for new features and enhancements.

Support

If you are having issues, please let us know by posting the issue on our GitHub issue tracker.

We also have a PennyLane discussion forum—come join the community and chat with the PennyLane team.

Note that we are committed to providing a friendly, safe, and welcoming environment for all. Please read and respect the Code of Conduct.

Authors

Catalyst is the work of many contributors.

If you are doing research using Catalyst, please cite our paper:

@article{
  Ittah2024,
  doi = {10.21105/joss.06720},
  url = {https://doi.org/10.21105/joss.06720},
  year = {2024},
  publisher = {The Open Journal},
  volume = {9},
  number = {99},
  pages = {6720},
  author = {David Ittah and Ali Asadi and Erick Ochoa Lopez and Sergei Mironov and Samuel Banning and Romain Moyard and Mai Jacob Peng and Josh Izaac},
  title = {Catalyst: a Python JIT compiler for auto-differentiable hybrid quantum programs},
  journal = {Journal of Open Source Software}
}

License

Catalyst is free and open source, released under the Apache License, Version 2.0.

Acknowledgements

Catalyst makes use of the following libraries and tools, which are under their own respective licenses:

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pennylane_catalyst-0.11.0-cp312-abi3-manylinux_2_28_x86_64.whl (65.8 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.28+ x86-64

pennylane_catalyst-0.11.0-cp312-abi3-manylinux_2_28_aarch64.whl (65.2 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.28+ ARM64

pennylane_catalyst-0.11.0-cp312-abi3-macosx_13_0_x86_64.whl (63.4 MB view details)

Uploaded CPython 3.12+macOS 13.0+ x86-64

pennylane_catalyst-0.11.0-cp312-abi3-macosx_13_0_arm64.whl (57.0 MB view details)

Uploaded CPython 3.12+macOS 13.0+ ARM64

pennylane_catalyst-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl (65.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pennylane_catalyst-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl (65.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

pennylane_catalyst-0.11.0-cp311-cp311-macosx_13_0_x86_64.whl (63.4 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pennylane_catalyst-0.11.0-cp311-cp311-macosx_13_0_arm64.whl (57.0 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

pennylane_catalyst-0.11.0-cp310-cp310-manylinux_2_28_x86_64.whl (65.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pennylane_catalyst-0.11.0-cp310-cp310-manylinux_2_28_aarch64.whl (65.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

pennylane_catalyst-0.11.0-cp310-cp310-macosx_13_0_x86_64.whl (63.4 MB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

pennylane_catalyst-0.11.0-cp310-cp310-macosx_13_0_arm64.whl (57.0 MB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

Details for the file pennylane_catalyst-0.11.0-cp312-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp312-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 87152b6433b4047b821a9722c3cf1a27a5faee22a2700c52b089e7f32adde866
MD5 ea38785674cf510634f15aca27d03a9d
BLAKE2b-256 78c63312615838334ac83c65f02a6eab2c51100fd5edaa4b127ec0073317040a

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp312-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp312-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 201192cf19d662e2a1aec1f907f13cee210bb26d35a56feb0d8010ee3f78b643
MD5 d37c230d840ea3021456394f4a2ba4ed
BLAKE2b-256 9a2fc3682025ea9b87258bf3e2a50cc1c4fdc4690e6efe01e8efc32a33537891

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp312-abi3-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp312-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 0baf8803972724e4751fceb0d8a7c8839057745e145e9a861a3076edcd5b1d72
MD5 1539804adf939afa3300b8c32a5c9b9e
BLAKE2b-256 225d92970c0389c76d10fd1957f9a977262c1c5e88dd68259205d8a5aede8b4e

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp312-abi3-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp312-abi3-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 81343af2fee8fdd1ac57d34c06216c625510b12ecfff8eecadebae18722aa3cd
MD5 c4c3b619c13c7538d29f146a9f733f94
BLAKE2b-256 d13c38be985b52e8b1798eec171170481267ca6b5d729b4981ab54b0116731c9

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 69dcad9f2f1e81747b4c90fc65353bfec173dbcc6852f134c21b7a27e399b3db
MD5 bbe5df89c08a3b18d22ddbb366d78e54
BLAKE2b-256 32657c8ecd572b3c974797de353a4cc1251b220634f6cf227de3c773bca2d8ed

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 82a16218f8ba167b6881be74af38bbd1daef3440fa55120e96c3993b66e0b155
MD5 df490c1699b4337d0cc88efdd34faf1e
BLAKE2b-256 23a2c31f1c418d269b3d6f06a716a7f0a295f99c49455698b9c06dfa30fe7dfc

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 d9b53d33f99b00c097e7cf7351bdbb3d976506db5db8bfe70dcdf5dec76f37a5
MD5 8c13ba54ead3875b6cb61ed15bd87e1e
BLAKE2b-256 2ddacfb722d07a1e36b4ca0f15fc47692ee54d9801ab8b557f290642d9337227

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 232b6ee9fd3d3dc3c7cebd6b92fa0d4b4a76070d5fa355dd984a049e7b43e776
MD5 0ceb5fb035917acf3c65177312f759ec
BLAKE2b-256 bc394672f4030db06da003ea2562acbc2dcec39b2be8590519799299bb6149ec

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2f3089fd2f0a1f5ebb114520432a07324f7503f328ec8f41b7e2cddc0f83c36c
MD5 7e869ac213725e00b96c5d51fa35e02f
BLAKE2b-256 ed450d5e3cee01ffc922b527ece5ab740ae3adafabe28d1337b8aa7225c6081e

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2b272df761c5e146ad8bf2c2e1a257cc7d45cdb5a22619a3b8992decba617308
MD5 e76d199828cbfaf89035a1b016120111
BLAKE2b-256 a7582c5ca0938d3d7b90fbdc2bdb1bd39f4d2a9d5f85ecf295e253d1b73b17f2

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 748340f6549919b1455be878f6be5eefaed00947c3ddb2509b9f179303cecbcf
MD5 593de8e3e49030b4304c4f8805dbfd17
BLAKE2b-256 1f740438a0d3b16ae01217aa1dfb0e34763514390a41e4a0c29ff13d426a3dd2

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.11.0-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.11.0-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 439d4e6b5b087c9e3530d3f0be4ad120cc131eb986b4f59921ecf1021b15c87c
MD5 16a66acaa521dddc7ac97b7953cb0ffc
BLAKE2b-256 c47b1ba91b3e86a872477c8d6d01efb2b731c4e163c7c8c11b61938271c8d5ba

See more details on using hashes here.

Release history Release notifications | RSS feed

0.15.0

6 files

0.14.1

6 files

0.14.0

6 files

0.13.0

6 files

0.12.0

9 files

This release

0.11.0 This release

12 files

0.10.0

12 files

0.9.0

12 files

0.8.1

16 files

0.7.0

16 files

0.6.0

12 files

0.5.0

12 files

0.4.1

9 files

0.3.2

9 files

0.2.1

4 files

0.1.2

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page