GSOC 2021 with NumFOCUS: A CuPy backend for QuTiP

Felipe bivort haiek
2 min readMay 24, 2021


Hi there! I am proud to announce that I have been accepted as a GSoC mentee to work on developing a CuPy GPU backend for QuTiP. I would like to thank the GSoC organization, NumFOCUS and the QuTiP development team for this amazing opportunity.

Let’s unpack some abbreviations first.

What is GSoC ?

GSoC stands for Google Summer of Code. It is a program meant to bring more student developers into open source software development. Students work with an open source organization for 10 weeks during the June-July Summer break if you are in the Northen Hemisphere, or during your Winter Break while hugging a cup of hot chocolate close to the hearth, like me.

What is QuTiP?

The Quantum Toolkit in Python is, as the name suggests, a Python library for simulating the dynamics of open quantum systems. As expressed here, QuTiP aims to provide user-friendly and efficient numerical simulations of a wide variety of Hamiltonians, commonly found in a wide range of physics applications such as quantum optics, trapped ions and superconducting circuits.

What is NumFOCUS?

As stated in NumFOCUS site, it promotes open practices in research, data, and scientific computing by serving as a fiscal sponsor for open source projects and organizing educational programs. Some open-source projects sponsored by NumFOCUS you may know are: pandas, Dask, scikit-learn and Julia .

Why this project?

QuTip is currently focusing on providing a more complete and better performing simulation of Quantum Control and Quantum Computation systems. To enhance the data-layer abstraction work has been done during the GSOC 2020. Having a GPU backend could allow for faster computation in general and, make work on larger qubit systems feasible.

CuPy aims to offer CUDA enabled alternatives for NumPy and SciPy, and is supported by Nvidia. This fits well with our GPU backend needs.

As a result of this project I hope the community will be able to run simulations in a seamless manner on GPUs using QuTiP. Thus reducing simulation and experiment times, making progress easier for the whole community.

So what’s next?

In the next two weeks I will be inmersing myself in furthering my understanding of the QuTip’s Data-layer structure which was developed by Jake Lishman, now a QuTip member, as part of his GSOC 2020 (see I am also planning on spending some time reading bits and pieces from “ Programming Massively Parallel Procesors” by David B. Kirk and Wen-Mei W. Hwu, and refreshing my CuPy knowledge. Last but not least, I will be bonding with the community.

Thanks again to GSoC, NumFOCUS, the QuTiP team and specially to my mentor, Simon Cross, for trusting me and paving the way for, what will undoubtedly be, a fantastic learning experience.