Арифметика произвольной точности в JIT-скомпилированных функциях
Когда я использую numba внутри python, я знаю, что если я попытаюсь jit-скомпилировать функции, которые имеют произвольные значения с плавающей точкой (mpmath) внутри своих циклов, он не сможет скомпилироваться в режиме nopython, и его скорость будет такой же, как и у простой версии Python. Мой вопрос о пакете Юлии DifferentialEquations.jl
, На своей главной странице говорят, что он поддерживает BigFloats и ArbFloats. Я понимаю, что этот пакет также использует циклы, которые по умолчанию jit-скомпилированы julia. Итак, мой вопрос, является ли или нет DifferentialEquations.jl
функции скомпилированы, когда я передаю дифференциальные уравнения, которые используют числа BigFloat.
1 ответ
Да, они через функцию авто-специализации. В Julia функции будут автоматически специализироваться на конкретных типах при JIT-компиляции. Это верно для всех чисел, и на самом деле даже такие вещи, как Float64, являются просто типами, определенными в самой Юлии, и используют те же механизмы. Этот блог описывает этот шаблон более подробно