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(有益,但不是必需的)

难度

  • 中等

导师

参考文献