`using StrideArrays` causes `ERROR: conflicting broadcast rules defined`
Closed this issue · 2 comments
efaulhaber commented
Once I add using StrideArrays
to my code (without changing anything else), I get this error:
ERROR: conflicting broadcast rules defined
Broadcast.BroadcastStyle(::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}, ::StrideArrays.CartesianStyle{Tuple{Int64}, 1}) = StrideArrays.CartesianStyle{Tuple{-1}, 1}()
Broadcast.BroadcastStyle(::StrideArrays.CartesianStyle{Tuple{Int64}, 1}, ::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}) = StrideArrays.CartesianStyle{Tuple{Int64}, 1}()
One of these should be undefined (and thus return Broadcast.Unknown).
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] result_join(#unused#::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}, #unused#::StrideArrays.CartesianStyle{Tuple{Int64}, 1}, #unused#::StrideArrays.CartesianStyle{Tuple{-1}, 1}, #unused#::StrideArrays.CartesianStyle{Tuple{Int64}, 1})
@ Base.Broadcast ./broadcast.jl:476
[3] result_style(s1::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}, s2::StrideArrays.CartesianStyle{Tuple{Int64}, 1})
@ Base.Broadcast ./broadcast.jl:460
[4] combine_styles(c1::StrideArraysCore.PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{Static.StaticInt{8}}, Tuple{Static.StaticInt{1}}}, c2::Base.Broadcast.Broadcasted{StrideArrays.CartesianStyle{Tuple{Int64}, 1}, Nothing, typeof(*), Tuple{Float64, StrideArraysCore.PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{Static.StaticInt{8}}, Tuple{Static.StaticInt{1}}}}})
@ Base.Broadcast ./broadcast.jl:436
[5] combine_styles
@ ./broadcast.jl:437 [inlined]
[6] Base.Broadcast.Broadcasted(f::typeof(muladd), args::Tuple{Float64, StrideArraysCore.PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{Static.StaticInt{8}}, Tuple{Static.StaticInt{1}}}, Base.Broadcast.Broadcasted{StrideArrays.CartesianStyle{Tuple{Int64}, 1}, Nothing, typeof(*), Tuple{Float64, StrideArraysCore.PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{Static.StaticInt{8}}, Tuple{Static.StaticInt{1}}}}}}, axes::Nothing)
@ Base.Broadcast ./broadcast.jl:175
[7] object_and_preserve
@ ~/.julia/packages/StrideArraysCore/VQxXL/src/thread_compatible.jl:24 [inlined]
[8] object_and_preserve
@ ~/.julia/packages/StrideArraysCore/VQxXL/src/thread_compatible.jl:34 [inlined]
[9] object_and_preserve (repeats 2 times)
@ ~/.julia/packages/StrideArraysCore/VQxXL/src/thread_compatible.jl:39 [inlined]
[10] object_and_preserve
@ ~/.julia/packages/StrideArraysCore/VQxXL/src/thread_compatible.jl:23 [inlined]
[11] object_and_preserve
@ ~/.julia/packages/StrideArraysCore/VQxXL/src/thread_compatible.jl:34 [inlined]
[12] object_and_preserve (repeats 2 times)
@ ~/.julia/packages/StrideArraysCore/VQxXL/src/thread_compatible.jl:39 [inlined]
[13] object_and_preserve
@ ~/.julia/packages/StrideArraysCore/VQxXL/src/thread_compatible.jl:23 [inlined]
[14] macro expansion
@ ~/.julia/packages/Polyester/bZbbY/src/batch.jl:127 [inlined]
[15] _batch_no_reserve
@ ~/.julia/packages/Polyester/bZbbY/src/batch.jl:111 [inlined]
[16] batch
@ ~/.julia/packages/Polyester/bZbbY/src/batch.jl:317 [inlined]
[17] batch
@ ~/.julia/packages/Polyester/bZbbY/src/batch.jl:289 [inlined]
[18] fast_materialize_threaded!(dst::Vector{Float64}, #unused#::Static.False, bc::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(muladd), Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{0}, Nothing, typeof(*), Tuple{Float64, Float64}}, Vector{Float64}, Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(muladd), Tuple{Float64, Vector{Float64}, Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(muladd), Tuple{Float64, Vector{Float64}, Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(*), Tuple{Float64, Vector{Float64}}}}}}}}}, dstaxes::Tuple{Base.OneTo{Int64}})
@ FastBroadcast ~/.julia/packages/FastBroadcast/tCuBr/src/FastBroadcast.jl:91
[19] fast_materialize!
@ ~/.julia/packages/FastBroadcast/tCuBr/src/FastBroadcast.jl:74 [inlined]
[20] perform_step!(integrator::OrdinaryDiffEq.ODEIntegrator{RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, true, Vector{Float64}, Nothing, Float64, Semidiscretization{Tuple{SolidContainer{2, Float64, SummationDensity, SchoenbergCubicSplineKernel{2}, SpatialHashingSearch{2, Float64}, NamedTuple{(), Tuple{}}}}, Tuple{UnitRange{Int64}}}, Float64, Float64, Float64, Float64, Vector{Vector{Float64}}, ODESolution{Float64, 2, Vector{Vector{Float64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{Float64}}}, ODEProblem{Vector{Float64}, Tuple{Float64, Float64}, true, Semidiscretization{Tuple{SolidContainer{2, Float64, SummationDensity, SchoenbergCubicSplineKernel{2}, SpatialHashingSearch{2, Float64}, NamedTuple{(), Tuple{}}}}, Tuple{UnitRange{Int64}}}, ODEFunction{true, SciMLBase.AutoSpecialize, typeof(Pixie.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, OrdinaryDiffEq.InterpolationData{ODEFunction{true, SciMLBase.AutoSpecialize, typeof(Pixie.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Vector{Vector{Float64}}, Vector{Float64}, Vector{Vector{Vector{Float64}}}, OrdinaryDiffEq.LowStorageRK3SpFSALCache{Vector{Float64}, Vector{Float64}, Vector{Float64}, OrdinaryDiffEq.LowStorageRK3SpFSALConstantCache{8, Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}}, DiffEqBase.DEStats}, ODEFunction{true, SciMLBase.AutoSpecialize, typeof(Pixie.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, OrdinaryDiffEq.LowStorageRK3SpFSALCache{Vector{Float64}, Vector{Float64}, Vector{Float64}, OrdinaryDiffEq.LowStorageRK3SpFSALConstantCache{8, Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, OrdinaryDiffEq.DEOptions{Float64, Float64, Float64, Float64, PIDController{Float64, typeof(OrdinaryDiffEq.default_dt_factor_limiter)}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(LinearAlgebra.opnorm), Nothing, CallbackSet{Tuple{}, Tuple{DiscreteCallback{AliveCallback, AliveCallback, typeof(Pixie.initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}, DiscreteCallback{DiffEqCallbacks.var"#30#31", DiffEqCallbacks.SavingAffect{Pixie.ExtractQuantities{Base.Pairs{Symbol, var"#5#6", Tuple{Symbol}, NamedTuple{(:index,), Tuple{var"#5#6"}}}}, Float64, Dict{Symbol, Dict{Symbol, Array{Float64}}}, DataStructures.BinaryMinHeap{Float64}, Vector{Float64}}, typeof(DiffEqCallbacks.saving_initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, Tuple{}, Tuple{}}, Vector{Float64}, Float64, Nothing, OrdinaryDiffEq.DefaultInit}, cache::OrdinaryDiffEq.LowStorageRK3SpFSALCache{Vector{Float64}, Vector{Float64}, Vector{Float64}, OrdinaryDiffEq.LowStorageRK3SpFSALConstantCache{8, Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, repeat_step::Bool)
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/gCvy4/src/perform_step/low_storage_rk_perform_step.jl:380
[21] perform_step!
@ ~/.julia/packages/OrdinaryDiffEq/gCvy4/src/perform_step/low_storage_rk_perform_step.jl:363 [inlined]
[22] solve!(integrator::OrdinaryDiffEq.ODEIntegrator{RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, true, Vector{Float64}, Nothing, Float64, Semidiscretization{Tuple{SolidContainer{2, Float64, SummationDensity, SchoenbergCubicSplineKernel{2}, SpatialHashingSearch{2, Float64}, NamedTuple{(), Tuple{}}}}, Tuple{UnitRange{Int64}}}, Float64, Float64, Float64, Float64, Vector{Vector{Float64}}, ODESolution{Float64, 2, Vector{Vector{Float64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{Float64}}}, ODEProblem{Vector{Float64}, Tuple{Float64, Float64}, true, Semidiscretization{Tuple{SolidContainer{2, Float64, SummationDensity, SchoenbergCubicSplineKernel{2}, SpatialHashingSearch{2, Float64}, NamedTuple{(), Tuple{}}}}, Tuple{UnitRange{Int64}}}, ODEFunction{true, SciMLBase.AutoSpecialize, typeof(Pixie.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, OrdinaryDiffEq.InterpolationData{ODEFunction{true, SciMLBase.AutoSpecialize, typeof(Pixie.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Vector{Vector{Float64}}, Vector{Float64}, Vector{Vector{Vector{Float64}}}, OrdinaryDiffEq.LowStorageRK3SpFSALCache{Vector{Float64}, Vector{Float64}, Vector{Float64}, OrdinaryDiffEq.LowStorageRK3SpFSALConstantCache{8, Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}}, DiffEqBase.DEStats}, ODEFunction{true, SciMLBase.AutoSpecialize, typeof(Pixie.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, OrdinaryDiffEq.LowStorageRK3SpFSALCache{Vector{Float64}, Vector{Float64}, Vector{Float64}, OrdinaryDiffEq.LowStorageRK3SpFSALConstantCache{8, Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, OrdinaryDiffEq.DEOptions{Float64, Float64, Float64, Float64, PIDController{Float64, typeof(OrdinaryDiffEq.default_dt_factor_limiter)}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(LinearAlgebra.opnorm), Nothing, CallbackSet{Tuple{}, Tuple{DiscreteCallback{AliveCallback, AliveCallback, typeof(Pixie.initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}, DiscreteCallback{DiffEqCallbacks.var"#30#31", DiffEqCallbacks.SavingAffect{Pixie.ExtractQuantities{Base.Pairs{Symbol, var"#5#6", Tuple{Symbol}, NamedTuple{(:index,), Tuple{var"#5#6"}}}}, Float64, Dict{Symbol, Dict{Symbol, Array{Float64}}}, DataStructures.BinaryMinHeap{Float64}, Vector{Float64}}, typeof(DiffEqCallbacks.saving_initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, Tuple{}, Tuple{}}, Vector{Float64}, Float64, Nothing, OrdinaryDiffEq.DefaultInit})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/gCvy4/src/solve.jl:475
[23] #__solve#502
@ ~/.julia/packages/OrdinaryDiffEq/gCvy4/src/solve.jl:5 [inlined]
[24] #solve_call#26
@ ~/.julia/packages/DiffEqBase/Lq1gG/src/solve.jl:473 [inlined]
[25] solve_up(prob::ODEProblem{Vector{Float64}, Tuple{Float64, Float64}, true, Semidiscretization{Tuple{SolidContainer{2, Float64, SummationDensity, SchoenbergCubicSplineKernel{2}, SpatialHashingSearch{2, Float64}, NamedTuple{(), Tuple{}}}}, Tuple{UnitRange{Int64}}}, ODEFunction{true, SciMLBase.AutoSpecialize, typeof(Pixie.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, sensealg::Nothing, u0::Vector{Float64}, p::Semidiscretization{Tuple{SolidContainer{2, Float64, SummationDensity, SchoenbergCubicSplineKernel{2}, SpatialHashingSearch{2, Float64}, NamedTuple{(), Tuple{}}}}, Tuple{UnitRange{Int64}}}, args::RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}; kwargs::Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol}, NamedTuple{(:save_everystep, :callback), Tuple{Bool, CallbackSet{Tuple{}, Tuple{DiscreteCallback{AliveCallback, AliveCallback, typeof(Pixie.initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}, DiscreteCallback{DiffEqCallbacks.var"#30#31", DiffEqCallbacks.SavingAffect{Pixie.ExtractQuantities{Base.Pairs{Symbol, var"#5#6", Tuple{Symbol}, NamedTuple{(:index,), Tuple{var"#5#6"}}}}, Float64, Dict{Symbol, Dict{Symbol, Array{Float64}}}, DataStructures.BinaryMinHeap{Float64}, Vector{Float64}}, typeof(DiffEqCallbacks.saving_initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}}}}}})
@ DiffEqBase ~/.julia/packages/DiffEqBase/Lq1gG/src/solve.jl:835
[26] solve(prob::ODEProblem{Vector{Float64}, Tuple{Float64, Float64}, true, Semidiscretization{Tuple{SolidContainer{2, Float64, SummationDensity, SchoenbergCubicSplineKernel{2}, SpatialHashingSearch{2, Float64}, NamedTuple{(), Tuple{}}}}, Tuple{UnitRange{Int64}}}, ODEFunction{true, SciMLBase.AutoSpecialize, typeof(Pixie.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, args::RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}; sensealg::Nothing, u0::Nothing, p::Nothing, wrap::Val{true}, kwargs::Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol}, NamedTuple{(:save_everystep, :callback), Tuple{Bool, CallbackSet{Tuple{}, Tuple{DiscreteCallback{AliveCallback, AliveCallback, typeof(Pixie.initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}, DiscreteCallback{DiffEqCallbacks.var"#30#31", DiffEqCallbacks.SavingAffect{Pixie.ExtractQuantities{Base.Pairs{Symbol, var"#5#6", Tuple{Symbol}, NamedTuple{(:index,), Tuple{var"#5#6"}}}}, Float64, Dict{Symbol, Dict{Symbol, Array{Float64}}}, DataStructures.BinaryMinHeap{Float64}, Vector{Float64}}, typeof(DiffEqCallbacks.saving_initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}}}}}})
@ DiffEqBase ~/.julia/packages/DiffEqBase/Lq1gG/src/solve.jl:802
[27] top-level scope
@ ~/git/Pixie.jl/examples/solid/oscillating_beam_2d.jl:105
After that, the code runs without errors, but threaded loops with Polyester.jl only use one thread.
efaulhaber commented
I managed to break the problem down to this minimal example:
using StrideArrays: PtrArray
using OrdinaryDiffEq
tspan = (0.0, 0.1)
u0_ode = [0.0]
ode = ODEProblem((du_ode, u_ode, semi, t) -> nothing, u0_ode, tspan)
sol = solve(ode, RDPK3SpFSAL49(thread=OrdinaryDiffEq.True()));
which, when run on multiple threads, fails with
ERROR: LoadError: conflicting broadcast rules defined
Broadcast.BroadcastStyle(::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}, ::StrideArrays.CartesianStyle{Tuple{Int64}, 1}) = StrideArrays.CartesianStyle{Tuple{-1}, 1}()
Broadcast.BroadcastStyle(::StrideArrays.CartesianStyle{Tuple{Int64}, 1}, ::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}) = StrideArrays.CartesianStyle{Tuple{Int64}, 1}()
One of these should be undefined (and thus return Broadcast.Unknown).
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:35
[2] result_join(#unused#::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}, #unused#::StrideArrays.CartesianStyle{Tuple{Int64}, 1}, #unused#::StrideArrays.CartesianStyle{Tuple{-1}, 1}, #unused#::StrideArrays.CartesianStyle{Tuple{Int64}, 1})
@ Base.Broadcast ./broadcast.jl:476
[3] result_style(s1::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}, s2::StrideArrays.CartesianStyle{Tuple{Int64}, 1})
@ Base.Broadcast ./broadcast.jl:460
[4] combine_styles(c1::PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{Static.StaticInt{8}}, Tuple{Static.StaticInt{1}}}, c2::Base.Broadcast.Broadcasted{StrideArrays.CartesianStyle{Tuple{Int64}, 1}, Nothing, typeof(*), Tuple{Float64, PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{Static.StaticInt{8}}, Tuple{Static.StaticInt{1}}}}})
@ Base.Broadcast ./broadcast.jl:436
[5] combine_styles
@ ./broadcast.jl:437 [inlined]
[6] Base.Broadcast.Broadcasted(f::typeof(muladd), args::Tuple{Float64, PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{Static.StaticInt{8}}, Tuple{Static.StaticInt{1}}}, Base.Broadcast.Broadcasted{StrideArrays.CartesianStyle{Tuple{Int64}, 1}, Nothing, typeof(*), Tuple{Float64, PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{Static.StaticInt{8}}, Tuple{Static.StaticInt{1}}}}}}, axes::Nothing)
@ Base.Broadcast ./broadcast.jl:175
[7] object_and_preserve
@ ~/.julia/packages/StrideArraysCore/fDiB0/src/thread_compatible.jl:24 [inlined]
[8] object_and_preserve
@ ~/.julia/packages/StrideArraysCore/fDiB0/src/thread_compatible.jl:34 [inlined]
[9] object_and_preserve (repeats 2 times)
@ ~/.julia/packages/StrideArraysCore/fDiB0/src/thread_compatible.jl:39 [inlined]
[10] object_and_preserve
@ ~/.julia/packages/StrideArraysCore/fDiB0/src/thread_compatible.jl:23 [inlined]
[11] object_and_preserve
@ ~/.julia/packages/StrideArraysCore/fDiB0/src/thread_compatible.jl:34 [inlined]
[12] object_and_preserve (repeats 2 times)
@ ~/.julia/packages/StrideArraysCore/fDiB0/src/thread_compatible.jl:39 [inlined]
[13] object_and_preserve
@ ~/.julia/packages/StrideArraysCore/fDiB0/src/thread_compatible.jl:23 [inlined]
[14] macro expansion
@ ~/.julia/packages/Polyester/bZbbY/src/batch.jl:127 [inlined]
[15] _batch_no_reserve
@ ~/.julia/packages/Polyester/bZbbY/src/batch.jl:111 [inlined]
[16] batch
@ ~/.julia/packages/Polyester/bZbbY/src/batch.jl:317 [inlined]
[17] batch
@ ~/.julia/packages/Polyester/bZbbY/src/batch.jl:289 [inlined]
[18] fast_materialize_threaded!(dst::Vector{Float64}, #unused#::Static.False, bc::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(muladd), Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{0}, Nothing, typeof(*), Tuple{Float64, Float64}}, Vector{Float64}, Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(muladd), Tuple{Float64, Vector{Float64}, Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(muladd), Tuple{Float64, Vector{Float64}, Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(*), Tuple{Float64, Vector{Float64}}}}}}}}}, dstaxes::Tuple{Base.OneTo{Int64}})
@ FastBroadcast ~/.julia/packages/FastBroadcast/tCuBr/src/FastBroadcast.jl:91
[19] fast_materialize!
@ ~/.julia/packages/FastBroadcast/tCuBr/src/FastBroadcast.jl:74 [inlined]
[20] perform_step!(integrator::OrdinaryDiffEq.ODEIntegrator{RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, true, Vector{Float64}, Nothing, Float64, SciMLBase.NullParameters, Float64, Float64, Float64, Float64, Vector{Vector{Float64}}, ODESolution{Float64, 2, Vector{Vector{Float64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{Float64}}}, ODEProblem{Vector{Float64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, ODEFunction{true, SciMLBase.AutoSpecialize, FunctionWrappersWrappers.FunctionWrappersWrapper{Tuple{FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{Float64}, Vector{Float64}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}}, false}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, OrdinaryDiffEq.InterpolationData{ODEFunction{true, SciMLBase.AutoSpecialize, FunctionWrappersWrappers.FunctionWrappersWrapper{Tuple{FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{Float64}, Vector{Float64}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}}, false}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Vector{Vector{Float64}}, Vector{Float64}, Vector{Vector{Vector{Float64}}}, OrdinaryDiffEq.LowStorageRK3SpFSALCache{Vector{Float64}, Vector{Float64}, Vector{Float64}, OrdinaryDiffEq.LowStorageRK3SpFSALConstantCache{8, Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}}, DiffEqBase.DEStats}, ODEFunction{true, SciMLBase.AutoSpecialize, FunctionWrappersWrappers.FunctionWrappersWrapper{Tuple{FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{Float64}, Vector{Float64}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}}, false}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, OrdinaryDiffEq.LowStorageRK3SpFSALCache{Vector{Float64}, Vector{Float64}, Vector{Float64}, OrdinaryDiffEq.LowStorageRK3SpFSALConstantCache{8, Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, OrdinaryDiffEq.DEOptions{Float64, Float64, Float64, Float64, PIDController{Float64, typeof(OrdinaryDiffEq.default_dt_factor_limiter)}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(LinearAlgebra.opnorm), Nothing, CallbackSet{Tuple{}, Tuple{}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, Tuple{}, Tuple{}}, Vector{Float64}, Float64, Nothing, OrdinaryDiffEq.DefaultInit}, cache::OrdinaryDiffEq.LowStorageRK3SpFSALCache{Vector{Float64}, Vector{Float64}, Vector{Float64}, OrdinaryDiffEq.LowStorageRK3SpFSALConstantCache{8, Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, repeat_step::Bool)
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/Vf6dn/src/perform_step/low_storage_rk_perform_step.jl:386
[21] perform_step!
@ ~/.julia/packages/OrdinaryDiffEq/Vf6dn/src/perform_step/low_storage_rk_perform_step.jl:369 [inlined]
[22] solve!(integrator::OrdinaryDiffEq.ODEIntegrator{RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, true, Vector{Float64}, Nothing, Float64, SciMLBase.NullParameters, Float64, Float64, Float64, Float64, Vector{Vector{Float64}}, ODESolution{Float64, 2, Vector{Vector{Float64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{Float64}}}, ODEProblem{Vector{Float64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, ODEFunction{true, SciMLBase.AutoSpecialize, FunctionWrappersWrappers.FunctionWrappersWrapper{Tuple{FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{Float64}, Vector{Float64}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}}, false}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, OrdinaryDiffEq.InterpolationData{ODEFunction{true, SciMLBase.AutoSpecialize, FunctionWrappersWrappers.FunctionWrappersWrapper{Tuple{FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{Float64}, Vector{Float64}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}}, false}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Vector{Vector{Float64}}, Vector{Float64}, Vector{Vector{Vector{Float64}}}, OrdinaryDiffEq.LowStorageRK3SpFSALCache{Vector{Float64}, Vector{Float64}, Vector{Float64}, OrdinaryDiffEq.LowStorageRK3SpFSALConstantCache{8, Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}}, DiffEqBase.DEStats}, ODEFunction{true, SciMLBase.AutoSpecialize, FunctionWrappersWrappers.FunctionWrappersWrapper{Tuple{FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{Float64}, Vector{Float64}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, SciMLBase.NullParameters, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}}, false}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, OrdinaryDiffEq.LowStorageRK3SpFSALCache{Vector{Float64}, Vector{Float64}, Vector{Float64}, OrdinaryDiffEq.LowStorageRK3SpFSALConstantCache{8, Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True}, OrdinaryDiffEq.DEOptions{Float64, Float64, Float64, Float64, PIDController{Float64, typeof(OrdinaryDiffEq.default_dt_factor_limiter)}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(LinearAlgebra.opnorm), Nothing, CallbackSet{Tuple{}, Tuple{}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, Tuple{}, Tuple{}}, Vector{Float64}, Float64, Nothing, OrdinaryDiffEq.DefaultInit})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/Vf6dn/src/solve.jl:514
[23] #__solve#562
@ ~/.julia/packages/OrdinaryDiffEq/Vf6dn/src/solve.jl:6 [inlined]
[24] __solve
@ ~/.julia/packages/OrdinaryDiffEq/Vf6dn/src/solve.jl:1 [inlined]
[25] #solve_call#26
@ ~/.julia/packages/DiffEqBase/Lq1gG/src/solve.jl:473 [inlined]
[26] solve_call
@ ~/.julia/packages/DiffEqBase/Lq1gG/src/solve.jl:443 [inlined]
[27] #solve_up#32
@ ~/.julia/packages/DiffEqBase/Lq1gG/src/solve.jl:835 [inlined]
[28] solve_up
@ ~/.julia/packages/DiffEqBase/Lq1gG/src/solve.jl:808 [inlined]
[29] #solve#31
@ ~/.julia/packages/DiffEqBase/Lq1gG/src/solve.jl:802 [inlined]
[30] solve(prob::ODEProblem{Vector{Float64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, ODEFunction{true, SciMLBase.AutoSpecialize, var"#1#2", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, args::RDPK3SpFSAL49{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.True})
@ DiffEqBase ~/.julia/packages/DiffEqBase/Lq1gG/src/solve.jl:792
[31] top-level scope
@ ~/git/Pixie.jl/examples/fluid/minimal_example.jl:9
[32] include(fname::String)
@ Base.MainInclude ./client.jl:476
[33] top-level scope
@ REPL[3]:1
in expression starting at /home/erik/git/Pixie.jl/examples/fluid/minimal_example.jl:9
ranocha commented
Here is a real MWE:
using Pkg; Pkg.activate(temp=true); Pkg.add("StrideArrays")
using StrideArrays
src1 = rand(10); src2 = rand(length(src1)); dst = zero(src1);
src1_ptr = PtrArray(src1); src2_ptr = PtrArray(src2); dst_ptr = PtrArray(dst);
@. dst_ptr = muladd(1, src1_ptr, 2 * src2_ptr)
This yields
ERROR: conflicting broadcast rules defined
Broadcast.BroadcastStyle(::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}, ::StrideArrays.CartesianStyle{Tuple{Int64}, 1}) = StrideArrays.CartesianStyle{Tuple{-1}, 1}()
Broadcast.BroadcastStyle(::StrideArrays.CartesianStyle{Tuple{Int64}, 1}, ::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}) = StrideArrays.CartesianStyle{Tuple{Int64}, 1}()
One of these should be undefined (and thus return Broadcast.Unknown).
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:35
[2] result_join(#unused#::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}, #unused#::StrideArrays.CartesianStyle{Tuple{Int64}, 1}, #unused#::StrideArrays.CartesianStyle{Tuple{-1}, 1}, #unused#::StrideArrays.CartesianStyle{Tuple{Int64}, 1})
@ Base.Broadcast ./broadcast.jl:476
[3] result_style(s1::StrideArrays.LinearStyle{Tuple{Int64}, 1, (1,)}, s2::StrideArrays.CartesianStyle{Tuple{Int64}, 1})
@ Base.Broadcast ./broadcast.jl:460
[4] combine_styles(c1::PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{StaticInt{8}}, Tuple{StaticInt{1}}}, c2::Base.Broadcast.Broadcasted{StrideArrays.CartesianStyle{Tuple{Int64}, 1}, Nothing, typeof(*), Tuple{Int64, PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{StaticInt{8}}, Tuple{StaticInt{1}}}}})
@ Base.Broadcast ./broadcast.jl:436
[5] combine_styles
@ ./broadcast.jl:437 [inlined]
[6] broadcasted(f::Function, arg1::Int64, arg2::PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{StaticInt{8}}, Tuple{StaticInt{1}}}, args::Base.Broadcast.Broadcasted{StrideArrays.CartesianStyle{Tuple{Int64}, 1}, Nothing, typeof(*), Tuple{Int64, PtrArray{Tuple{Int64}, (true,), Float64, 1, 1, 0, (1,), Tuple{StaticInt{8}}, Tuple{StaticInt{1}}}}})
@ Base.Broadcast ./broadcast.jl:1304
[7] top-level scope
@ REPL[6]:1