JIT 编译函数中的任意精度算法

Arbitrary precision arithmetic in JIT compiled functions

当我在 python 中使用 numba 时,我知道如果我尝试对循环中具有任意精度浮点数 (mpmath) 的函数进行 jit 编译,它将无法在 nopython 中编译模式及其速度将与普通 python 版本相同。我的问题是关于 Julia 包 DifferentialEquations.jl。在他们的主页上,他们说它支持 BigFloats 和 ArbFloats。我知道这个包还使用了由 julia 默认编译的循环。所以我的问题是,当我传递使用 BigFloat 数字的微分方程时,DifferentialEquations.jl 函数是否经过 jit 编译。

是的,它们是通过函数自动专业化实现的。在 Julia 中,函数将在 JIT 编译时自动专注于具体类型。这对所有数字都是如此,事实上,即使像 Float64 这样的东西也只是 Julia 本身定义的类型,并使用这些相同的机制。 This blog post describes this pattern in more detail