Skip to content

Commit c23bbeb

Browse files
committed
move adjoint outside of loop
1 parent 91cac26 commit c23bbeb

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

src/lsmr.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ function lsmr_method!(log::ConvergenceHistory, x, A, b, v, h, hbar;
114114
u = b
115115
β = norm(u)
116116
u .*= inv(β)
117-
mul!(v, adjoint(A), u)
117+
adjointA = adjoint(A)
118+
mul!(v, adjointA, u)
118119
α = norm(v)
119120
v .*= inv(α)
120121

@@ -168,7 +169,7 @@ function lsmr_method!(log::ConvergenceHistory, x, A, b, v, h, hbar;
168169
if β > 0
169170
log.mtvps+=1
170171
u .*= inv(β)
171-
mul!(tmp_v, adjoint(A), u)
172+
mul!(tmp_v, adjointA, u)
172173
v .= tmp_v .+ v .* -β
173174
α = norm(v)
174175
v .*= inv(α)

src/lsqr.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,11 @@ function lsqr_method!(log::ConvergenceHistory, x, A, b;
123123
v = copy(x)
124124
beta = norm(u)
125125
alpha = zero(Tr)
126+
adjointA = adjoint(A)
126127
if beta > 0
127128
log.mtvps=1
128129
u .*= inv(beta)
129-
mul!(v, adjoint(A), u)
130+
mul!(v, adjointA, u)
130131
alpha = norm(v)
131132
end
132133
if alpha > 0
@@ -166,7 +167,7 @@ function lsqr_method!(log::ConvergenceHistory, x, A, b;
166167
Anorm = sqrt(abs2(Anorm) + abs2(alpha) + abs2(beta) + dampsq)
167168
# Note that the following three lines are a band aid for a GEMM: X: C := αA'B + βC.
168169
# This is already supported in mul! for sparse and distributed matrices, but not yet dense
169-
mul!(tmpn, adjoint(A), u)
170+
mul!(tmpn, adjointA, u)
170171
v .= -beta .* v .+ tmpn
171172
alpha = norm(v)
172173
if alpha > 0

src/svdl.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,9 +559,10 @@ function extend!(
559559
end
560560

561561
β = L.β
562+
adjointA = adjoint(A)
562563
for j=l+1:k
563564
log.mtvps+=1
564-
mul!(q, adjoint(A), p) #q = A'p
565+
mul!(q, adjointA, p) #q = A'p
565566

566567
if orthright #Orthogonalize right Lanczos vector
567568
#Do double classical Gram-Schmidt reorthogonalization

0 commit comments

Comments
 (0)