QuTiP 5: The Quantum Toolbox in Python
Neill Lambert, Eric Giguère, Paul Menczel, Boxi Li, Patrick Hopf, Gerardo Suárez, Marc Gali, Jake Lishman, Rushiraj Gadhvi, Rochisha Agarwal, Asier Galicia, Nathan Shammah, Paul Nation, J. R. Johansson, Shahnawaz Ahmed, Simon Cross, Alexander Pitchford, Franco Nori
TL;DR
QuTiP v5 tackles the exponential growth of open-quantum-system simulations by introducing a flexible, multi-format data layer that interplays with CSR, Dense, Dia, and JAX-based formats, enabling GPU acceleration and automatic differentiation. A unified solver class interface couples with a broad suite of solvers (mesolve, mcsolve, nm_mcsolve, brmesolve, HEOM, smesolve) and new time-dependent capabilities, including Diffrax/JAX for GPU performance and automatic differentiation for control and statistics. The release also expands modularity with sub-packages QuTiP-QOC and QuTiP-QIP, enhances visualization, and introduces ENR states and MPI/HPC support, boosting scalability for large-scale quantum circuits and many-body dynamics. Collectively, these innovations position QuTiP as a robust, open-source platform for research, teaching, and industrial quantum computing development, with significant implications for simulating QPUs, open-system dynamics, and quantum control across diverse hardware backends.
Abstract
QuTiP, the Quantum Toolbox in Python, has been at the forefront of open-source quantum software for the past 13 years. It is used as a research, teaching, and industrial tool, and has been downloaded millions of times by users around the world. Here we introduce the latest developments in QuTiP v5, which are set to have a large impact on the future of QuTiP and enable it to be a modern, continuously developed and popular tool for another decade and more. We summarize the code design and fundamental data layer changes as well as efficiency improvements, new solvers, applications to quantum circuits with QuTiP-QIP, and new quantum control tools with QuTiP-QOC. Additional flexibility in the data layer underlying all ``quantum objects'' in QuTiP allows us to harness the power of state-of-the-art data formats and packages like JAX, CuPy, and more. We explain these new features with a series of both well-known and new examples. The code for these examples is available in a static form on GitHub and as continuously updated and documented notebooks in the qutip-tutorials package.
