SciML / LabelledArrays.jl

Arrays which also have a label for each element for easy scientific machine learning (SciML)
https://docs.sciml.ai/LabelledArrays/stable/
Other
120 stars 21 forks source link

Removes allocations with get_tmp that occur in some cases #125

Closed thomvet closed 2 years ago

thomvet commented 2 years ago

Specifically when get_tmp(cache::PreallocationTools.DiffCache, u:LArray{T, ...} where T is not a ForwardDiff.Dual, the method defined for Duals is used (which uses ArrayInterfaceCore.restructure --> allocations, even though we should just get the normal cache back, not the dual cache).

The changes introduced dispatch the present get_tmp only on Duals, so that for T <: Number the fallback method for u::AbstractArray in PreallocationTools is used (https://github.com/SciML/PreallocationTools.jl/blob/addfd170cb69f98778f7e5f40a3d9ab352c99b10/src/PreallocationTools.jl#L61)