Skip to content

Commit 29fcd0a

Browse files
committed
minor optimization to consistent, including reduced cache size
1 parent b36653e commit 29fcd0a

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

src/p_sparse_matrix.jl

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1659,7 +1659,7 @@ function finalize_values(A,rows_fa,cols_fa,cache_snd,cache_rcv,triplets,aux)
16591659
values, cache
16601660
end
16611661

1662-
function PartitionedArrays.psparse_assemble_impl(
1662+
function psparse_assemble_impl(
16631663
A,
16641664
::Type{<:AbstractSplitMatrix},
16651665
rows;
@@ -2033,11 +2033,12 @@ function consistent_finalize(A,cache_snd,cache_rcv,rows_co,cols_fa,cols_co)
20332033
V_rcv_data = cache_rcv.V_rcv.data
20342034
global_to_own_col = global_to_own(cols_co)
20352035
global_to_ghost_col = global_to_ghost(cols_co)
2036-
is_own = findall(j->global_to_own_col[j]!=0,J_rcv_data)
2037-
is_ghost = findall(j->global_to_ghost_col[j]!=0,J_rcv_data)
2036+
is_own_condition = k -> global_to_own_col[k]!=0
2037+
is_own = is_own_condition.(J_rcv_data)
20382038
I_rcv_own = I_rcv_data[is_own]
20392039
J_rcv_own = J_rcv_data[is_own]
20402040
V_rcv_own = V_rcv_data[is_own]
2041+
is_ghost = map!(!,is_own, is_own) # inverse is_own bitvector to effectively represent is_ghost mask
20412042
I_rcv_ghost = I_rcv_data[is_ghost]
20422043
J_rcv_ghost = J_rcv_data[is_ghost]
20432044
V_rcv_ghost = V_rcv_data[is_ghost]
@@ -2066,7 +2067,7 @@ function consistent_finalize(A,cache_snd,cache_rcv,rows_co,cols_fa,cols_co)
20662067
V_rcv = cache_rcv.V_rcv
20672068
parts_snd = cache_snd.parts_snd
20682069
parts_rcv = cache_rcv.parts_rcv
2069-
cache = (;parts_snd,parts_rcv,k_snd,V_snd,V_rcv,is_ghost,is_own,V_rcv_own,V_rcv_ghost,K_own,K_ghost)
2070+
cache = (;parts_snd,parts_rcv,k_snd,V_snd,V_rcv,V_rcv_own,V_rcv_ghost,K_own,K_ghost)
20702071
values,cache
20712072
end
20722073

@@ -2127,13 +2128,10 @@ function psparse_consistent_impl!(B,A,::Type{<:AbstractSplitMatrix},cache)
21272128
end
21282129
end
21292130
function setup_rcv(B,cache)
2130-
is_ghost = cache.is_ghost
2131-
is_own = cache.is_own
2132-
V_rcv_data = cache.V_rcv.data
21332131
K_own = cache.K_own
21342132
K_ghost = cache.K_ghost
2135-
V_rcv_own = V_rcv_data[is_own]
2136-
V_rcv_ghost = V_rcv_data[is_ghost]
2133+
V_rcv_own = cache.V_rcv_own
2134+
V_rcv_ghost = cache.V_rcv_ghost
21372135
setcoofast!(B.blocks.ghost_own,V_rcv_own,K_own)
21382136
setcoofast!(B.blocks.ghost_ghost,V_rcv_ghost,K_ghost)
21392137
B

0 commit comments

Comments
 (0)