Skip to content

Commit 531e542

Browse files
authored
make thread optional for schur_complement (#41)
1 parent 3f73b45 commit 531e542

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

β€Žsrc/lu.jl

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ function reckernel!(A::AbstractMatrix{T}, pivot::Val{Pivot}, m, n, ipiv, info, b
175175
# We have A22 = L21 U12 + Aβ€²22, hence
176176
# Aβ€²22 = A22 - L21 U12
177177
#mul!(A22, A21, A12, -one(T), one(T))
178-
schur_complement!(A22, A21, A12)
178+
schur_complement!(A22, A21, A12, thread)
179179
# record info
180180
previnfo = info
181181
# P2 A22 = L22 U22
@@ -191,13 +191,24 @@ function reckernel!(A::AbstractMatrix{T}, pivot::Val{Pivot}, m, n, ipiv, info, b
191191
end # inbounds
192192
end
193193

194-
function schur_complement!(𝐂, 𝐀, 𝐁)
195-
@tturbo warn_check_args=false for m ∈ 1:size(𝐀,1), n ∈ 1:size(𝐁,2)
196-
π‚β‚˜β‚™ = zero(eltype(𝐂))
197-
for k ∈ 1:size(𝐀,2)
198-
π‚β‚˜β‚™ -= 𝐀[m,k] * 𝐁[k,n]
194+
function schur_complement!(𝐂, 𝐀, 𝐁,::Val{THREAD}=Val(true)) where {THREAD}
195+
# mul!(𝐂,𝐀,𝐁,-1,1)
196+
if THREAD
197+
@tturbo warn_check_args=false for m ∈ 1:size(𝐀,1), n ∈ 1:size(𝐁,2)
198+
π‚β‚˜β‚™ = zero(eltype(𝐂))
199+
for k ∈ 1:size(𝐀,2)
200+
π‚β‚˜β‚™ -= 𝐀[m,k] * 𝐁[k,n]
201+
end
202+
𝐂[m,n] = π‚β‚˜β‚™ + 𝐂[m,n]
203+
end
204+
else
205+
@turbo warn_check_args=false for m ∈ 1:size(𝐀,1), n ∈ 1:size(𝐁,2)
206+
π‚β‚˜β‚™ = zero(eltype(𝐂))
207+
for k ∈ 1:size(𝐀,2)
208+
π‚β‚˜β‚™ -= 𝐀[m,k] * 𝐁[k,n]
209+
end
210+
𝐂[m,n] = π‚β‚˜β‚™ + 𝐂[m,n]
199211
end
200-
𝐂[m,n] = π‚β‚˜β‚™ + 𝐂[m,n]
201212
end
202213
end
203214

0 commit comments

Comments
Β (0)