TensorFlow 数据后端
注意
该项目作为GSoC 2021的一部分完成 [3]。
QuTiP的数据层提供了在QuTiP内部处理量子态和操作符(即Qobj)所需的数学操作。作为2020年Google Summer of Code的一部分,数据层被重写,以便更容易地添加新的后端,并使不同的后端能够相互操作。已经存在使用内存中的稀疏和密集矩阵的后端,我们希望添加一个使用TensorFlow实现必要操作的后端[1]。
为什么选择TensorFlow后端?
TensorFlow 支持将矩阵操作分布在多个 GPU 和多个机器上,并抽象出一些高效执行这些操作的复杂性。我们希望通过使用 TensorFlow,能够使 QuTiP 扩展到更大的量子系统(例如更多的量子比特),并减少模拟这些系统所需的时间。
特别感兴趣的是尝试使用BoFiN HEOM(层次运动方程)求解器的新后端[2]。
挑战
TensorFlow 是一种与现有的密集和稀疏矩阵后端非常不同的计算框架。它使用流图来描述操作,并高效地工作。理想情况下,需要一起执行大量的操作图,以便高效地计算结果。
QuTiP数据层可能需要调整以适应这些差异,这可能会带来挑战,甚至可能我们无法找到合理的方法来实现所需的性能。
预期结果
添加一个
qutip.core.data.tensorflow数据类型。为一些重要操作实现特殊化(例如
add,mul,matmul,eigen等)。编写一个小型基准测试,以展示
Qobj操作在新后端上如何扩展,与现有后端进行比较。在使用和不使用GPU的情况下运行基准测试。实现足够的功能,使求解器能够在新的TensorFlow数据后端上运行并进行基准测试(延伸目标)。
技能
Git、Python 以及对 Python 科学计算栈的熟悉
熟悉 TensorFlow(有益,但不是必需的)
熟悉Cython(有益,但不是必需的)
难度
中等
导师
西蒙·克罗斯 (hodgestar@gmail.com)
杰克·利什曼 (jake@binhbar.com)
亚历克斯·皮奇福德 (alex.pitchford@gmail.com)