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
当我在 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