量子光学和态矢量建模工具

表示和模拟量子态最常见的方法是态矢量形式主义(是薛定谔方程和海森堡方程以及许多其他主方程的基础)。QuantumOptics.jl Julia 项目利用 Julia 中功能强大的 DiffEq 基础设施,使这种模拟成为可能。

GPU 加速运算符和 ODE 求解器

QuantumOptics.jl 中量子态的内部表示在很大程度上依赖于标准稠密数组。由于 Julia 的多重分派特性,其中许多对象已经可以与 GPU 数组很好地协作。该项目将涉及对当前接口的彻底调查和验证,以确保它们与 GPU 数组很好地协作。特别是,需要关注“惰性”运算符,因为可能需要为它们实现特殊的内核。

推荐技能:熟悉 Julia 中的性能分析工具和 Julia 的 GPU 堆栈,可能包括 KernelAbstractions

导师:Stefan Krastanov <stefan@krastanov.org> 和 QuantumOptics.jl 团队成员

预期持续时间:175 小时(但申请人如果计划更广泛的工作,可以将其范围设定为更长的时间)

难度:中等

自动微分

自动微分是自动生成高效代码以评估给定 Julia 函数的数值导数的能力。与上述 GPU 案例类似,其中许多功能已经“神奇地”起作用,但没有详细的测试套件,也没有进行验证。该项目将涉及在 QuantumOptics.jl 中实现、验证和测试 Julia 自动微分工具的使用。ForwardDiff、Enzyme、Zygote、Diffractor 和 AbstractDifferentiation 都是应该在 ODE 求解和简单运算符应用中都具有一定程度的验证和支持的工具。

推荐技能:熟悉 Julia 自动微分堆栈 和 SciML 敏感性分析工具。熟悉对复数进行自动微分的难点(一般而言,特别是在 Julia 中)。了解 AbstractDifferentiation.jl 包。

导师:Stefan Krastanov <stefan@krastanov.org> 和 QuantumOptics.jl 团队成员

预期持续时间:175 小时(但申请人如果计划更广泛的工作,可以将其范围设定为更长的时间)

难度:简单到中等

与 SciML 生态系统更紧密地集成

SciML 是 Julia 生态系统中大部分基础数值软件开发的伞形组织。我们已经使用了很多他们的功能,但更紧密地匹配他们期望的接口将是有益的。该项目将主要集中在软件工程方面。我们希望支持的正式和非正式接口包括:更好地支持 DiffEq 问题类型(目前我们将 DiffEq 问题包装在我们自己的基础设施中,很难在 SciML 中重复使用它们);更好地支持对状态对象的广播操作(以便我们可以将它们更接近于普通数组处理,并且 我们可以简单地向 DiffEq 求解器提供初始状态,而无需包装/解包数据);更多地依赖于 SciMLOperators,它们与我们的惰性运算符有很大的 重叠

推荐技能:熟悉 SciML 堆栈。

导师:Stefan Krastanov <stefan@krastanov.org> 和 QuantumOptics.jl 团队成员

预期持续时间:175 小时(但申请人如果计划更广泛的工作,可以将其范围设定为更长的时间)

难度:简单