Skip to content

Commit 46ccb19

Browse files
Fix type instability in create_ghost_buffer
1 parent b71a406 commit 46ccb19

File tree

1 file changed

+22
-21
lines changed

1 file changed

+22
-21
lines changed

src/Topologies/dss_transform.jl

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -272,34 +272,35 @@ recv_buffer(ghost::GhostBuffer) = ghost.recv_data
272272

273273
create_ghost_buffer(data, topology::Topologies.AbstractTopology) = nothing
274274

275+
create_ghost_buffer(
276+
data::Union{DataLayouts.IJFH{S, Nij}, DataLayouts.VIJFH{S, <:Any, Nij}},
277+
topology::Topologies.Topology2D,
278+
) where {S, Nij} = create_ghost_buffer(
279+
data,
280+
topology,
281+
Val(Topologies.nsendelems(topology)),
282+
Val(Topologies.nrecvelems(topology)),
283+
)
284+
285+
275286
function create_ghost_buffer(
276287
data::Union{DataLayouts.IJFH{S, Nij}, DataLayouts.VIJFH{S, <:Any, Nij}},
277288
topology::Topologies.Topology2D,
278-
) where {S, Nij}
289+
::Val{Nhsend},
290+
::Val{Nhrec},
291+
) where {S, Nij, Nhsend, Nhrec}
279292
if data isa DataLayouts.IJFH
280-
send_data = DataLayouts.IJFH{S, Nij, Topologies.nsendelems(topology)}(
281-
typeof(parent(data)),
282-
)
283-
recv_data = DataLayouts.IJFH{S, Nij, Topologies.nrecvelems(topology)}(
284-
typeof(parent(data)),
285-
)
293+
send_data = DataLayouts.IJFH{S, Nij, Nhsend}(typeof(parent(data)))
294+
recv_data = DataLayouts.IJFH{S, Nij, Nhrec}(typeof(parent(data)))
286295
k = stride(parent(send_data), 4)
287296
else
288297
Nv, _, _, Nf, _ = DataLayouts.farray_size(data)
289-
send_data =
290-
DataLayouts.VIJFH{S, Nv, Nij, Topologies.nsendelems(topology)}(
291-
similar(
292-
parent(data),
293-
(Nv, Nij, Nij, Nf, Topologies.nsendelems(topology)),
294-
),
295-
)
296-
recv_data =
297-
DataLayouts.VIJFH{S, Nv, Nij, Topologies.nrecvelems(topology)}(
298-
similar(
299-
parent(data),
300-
(Nv, Nij, Nij, Nf, Topologies.nrecvelems(topology)),
301-
),
302-
)
298+
send_data = DataLayouts.VIJFH{S, Nv, Nij, Nhsend}(
299+
similar(parent(data), (Nv, Nij, Nij, Nf, Nhsend)),
300+
)
301+
recv_data = DataLayouts.VIJFH{S, Nv, Nij, Nhrec}(
302+
similar(parent(data), (Nv, Nij, Nij, Nf, Nhrec)),
303+
)
303304
k = stride(parent(send_data), 5)
304305
end
305306

0 commit comments

Comments
 (0)