Skip to content

Commit 6c03890

Browse files
committed
WIP Trying to fix broadcast
1 parent 67a3e19 commit 6c03890

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/Fields/broadcasting_abstract_fields.jl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ Base.Broadcast.BroadcastStyle(::FieldBroadcastStyle, ::AbstractGPUArrayStyle{N})
1717
Base.similar(bc::Broadcasted{FieldBroadcastStyle}, ::Type{ElType}) where {ElType} = similar(Array{ElType}, axes(bc))
1818
Base.similar(bc::Broadcasted{FieldBroadcastStyle}, ::Type{ElType}, dims) where {ElType} = similar(Array{ElType,length(dims)}, dims)
1919

20-
@inline function Base.Broadcast.materialize!(dest::Field, bc::AbstractGPUArrayStyle)
20+
# Bypass style combining for in-place broadcasting with arrays / scalars to use built-in broadcasting machinery
21+
const BroadcastedArrayOrGPUArray = Union{Broadcasted{<:DefaultArrayStyle},
22+
Broadcasted{<:AbstractGPUArrayStyle}}
23+
24+
@inline function Base.Broadcast.materialize!(dest::Field, bc::BroadcastedArrayOrGPUArray)
2125
if any(a isa OffsetArray for a in bc.args)
2226
return Base.Broadcast.materialize!(dest.data, bc)
2327
else
@@ -29,7 +33,7 @@ end
2933
# Right now, this may only produce expected behavior (re: dimensionality) for
3034
# WindowedField that are windowed in three-dimensions. Of course, broadcasting with
3135
# scalar `bc` is no issue.
32-
@inline Base.Broadcast.materialize!(dest::WindowedField, bc::Broadcasted{<:AbstractGPUArrayStyle}) =
36+
@inline Base.Broadcast.materialize!(dest::WindowedField, bc::BroadcastedArrayOrGPUArray) =
3337
Base.Broadcast.materialize!(parent(dest), bc)
3438

3539
#####

0 commit comments

Comments
 (0)