JuliaSIMD/StrideArrays.jl

`using StrideArrays` causes `ERROR: conflicting broadcast rules defined`

Closed this issue · 2 comments

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.

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

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