Skip to main content

A JIT compiler for hybrid quantum programs in PennyLane

Project description

Tests Coverage Documentation PyPI Forum License Dev Container

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

pip install pennylane-catalyst

Pre-built packages for Windows are not yet available, and comptability with Windows is untested and cannot be guaranteed. If you are using one of these platforms, please try out our Docker and Dev Container images described in the documentation or click this button:

Dev Container.

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 GitHub repo.

License

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

Project details


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

pennylane_catalyst-0.3.0-cp311-cp311-macosx_13_0_arm64.whl (96.6 MB view details)

Uploaded CPython 3.11 macOS 13.0+ ARM64

pennylane_catalyst-0.3.0-cp310-cp310-macosx_13_0_arm64.whl (96.6 MB view details)

Uploaded CPython 3.10 macOS 13.0+ ARM64

pennylane_catalyst-0.3.0-cp39-cp39-macosx_13_0_arm64.whl (96.6 MB view details)

Uploaded CPython 3.9 macOS 13.0+ ARM64

File details

Details for the file pennylane_catalyst-0.3.0-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.3.0-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bd75af2a0662510b1ab551bdda2fc4a4abdb79068f517d448f0cf0775819d102
MD5 3ec022f431b8912912fe15ef7e347dec
BLAKE2b-256 0057fec596d997fc21f9c145155bfe75a135c893f52873694a5b8a36a10a53b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pennylane_catalyst-0.3.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 47a78ab976486bdc0bfe79bdca34c355a8f5ee51ce618af901646e2100ec3d9e
MD5 0b4362fa47c55f2726886feb8c4d4634
BLAKE2b-256 6bc73ff687b9e2ffbf98d2a47718a4d7e1f20a6d5e1c52f744fbe012117f9902

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.3.0-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.3.0-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 83e2933a245f0ab9c8015fb312f7044568250e569d802b10d4220793ffbe7cfa
MD5 d248be3112ebdc767c55ce25c4028f94
BLAKE2b-256 64297d5b7b2df0268309662620c6df11cc3596c2a5807e2fbe0bb73c58554259

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pennylane_catalyst-0.3.0-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 1dba22d6983a04ae5f1b0b376f4493406c3ff19919074c25a6f911e529de350b
MD5 f49fe6ca8cecf18b235be8bf690c7026
BLAKE2b-256 c63438bee6e0eb59079221320be5f02c030cc52ccac598137002417a88f5e150

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.3.0-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.3.0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e466a7a83821003f614ae8161ecbc66556245181ec42fad1d25d12ebd52f6c5c
MD5 78458562391a3f221a91ed3926b61c09
BLAKE2b-256 631f69e9609d43affa4bf8059b1e9c9e527a92b36f7e6e647fe383e31195657e

See more details on using hashes here.

File details

Details for the file pennylane_catalyst-0.3.0-cp39-cp39-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pennylane_catalyst-0.3.0-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 869d9ddf16458303a3cc59210b5c48e0c786fe213a84d7311ce142396d9b6e85
MD5 e0a5ed2f57affaa062895d5ecefaea6a
BLAKE2b-256 06d5492f46cafd04fb2d67d034f2280bcce8c773b13a681ba1782704d6611aa6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page