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) platforms, and pre-built binaries are being distributed via the Python Package Index (PyPI) for Python versions 3.11 and higher. To install it, simply run the following pip command:

pip install pennylane-catalyst

Catalyst no longer supports macOS with x86_64 architecture after 0.11.0. This includes Macs running on Intel processors. If you would like to use Catalyst on these systems, please install Catalyst version 0.11.0, PennyLane version 0.41.0, PennyLane-Lightning version 0.41.0, and Jax version 0.4.28:

pip install pennylane-catalyst==0.11.0
pip install pennylane==0.41.0
pip install pennylane-lightning==0.41.0
pip install jax==0.4.28

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.13.0-cp312-abi3-manylinux_2_28_x86_64.whl (73.9 MB view details)

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

pennylane_catalyst-0.13.0-cp312-abi3-manylinux_2_28_aarch64.whl (73.7 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.28+ ARM64

pennylane_catalyst-0.13.0-cp312-abi3-macosx_13_0_arm64.whl (69.7 MB view details)

Uploaded CPython 3.12+macOS 13.0+ ARM64

pennylane_catalyst-0.13.0-cp311-cp311-manylinux_2_28_x86_64.whl (74.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pennylane_catalyst-0.13.0-cp311-cp311-manylinux_2_28_aarch64.whl (73.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

pennylane_catalyst-0.13.0-cp311-cp311-macosx_13_0_arm64.whl (69.5 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

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

File metadata

File hashes

Hashes for pennylane_catalyst-0.13.0-cp312-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 04b8c9db134bea7d28588246292ec8a59f90b336ebab8f43355890299b7312d9
MD5 7f5bc3017f8fedabf2bf37e3505a820c
BLAKE2b-256 55a4baffa657d28149ec1e4ca0d54a98ead92382878217725688f7ee44beb1fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pennylane_catalyst-0.13.0-cp312-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fb9c8e8b812db890d7de72a87ab5b5d57ebf7b782eeda73cc369cb633b6c7f3a
MD5 d5cef251a649ea2fdb30f3eba5e7662a
BLAKE2b-256 1c8a7bd02df0be99dcec81ac002ca5579e93cab1a91f057cfd87649c5ddd7bfc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pennylane_catalyst-0.13.0-cp312-abi3-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 4172d3cc98dad3d4d010074aa14dcbb0310dc5df145241e37af2606ff0639d4a
MD5 196279296d3e80d0f7197329ef2c6ee7
BLAKE2b-256 d8bae3b2e6d8fe20414c35f53445bd3e56eec7a513faeed0394a090884d52bde

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pennylane_catalyst-0.13.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9e09db33af43141adcd905bce3699d43e09d46d4a7cc9159d8ecd6168fde2d0a
MD5 f65df7ad948b3a7960ad6d4a81668f75
BLAKE2b-256 93f3cc049dc768f17a03526a900033879df1488a5d46f3d1dc956e2dfcb38c61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pennylane_catalyst-0.13.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 caa58c12916be768ee4567d2ce69fa4e86aab485de4acf5c4eaf984c29ed33db
MD5 e67bb963363be5f3de9fa5e3f030b4b9
BLAKE2b-256 829687d72400ba722961dbb6421676b14594fd4e481d5a3d00bb4e125576a24b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pennylane_catalyst-0.13.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 def0f4b284c50b365aca33a95cda2a8131f50b8ffda60ef4a7cd697ac6b23cb4
MD5 c7b90103d43f68ed6b9726074c39e738
BLAKE2b-256 3f4a682ad80fee8305c88d0857551a65469e4502f22f6a05f2bfa6112261d35e

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

This release

0.13.0 This release

6 files

0.12.0

9 files

0.11.0

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