Skip to content

Commit 5c001fd

Browse files
authored
Use the macro kcopy! instead of broadcast (#899)
1 parent af6d34d commit 5c001fd

32 files changed

+201
-201
lines changed

src/bicgstab.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,14 @@ kwargs_bicgstab = (:c, :M, :N, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose,
151151
mul!(r₀, A, Δx)
152152
@kaxpby!(n, one(FC), b, -one(FC), r₀)
153153
else
154-
r₀ .= b
154+
@kcopy!(n, r₀, b) # r₀ ← b
155155
end
156156

157157
@kfill!(x, zero(FC)) # x₀
158158
@kfill!(s, zero(FC)) # s₀
159159
@kfill!(v, zero(FC)) # v₀
160160
MisI || mulorldiv!(r, M, r₀, ldiv) # r₀
161-
p .= r # p₁
161+
@kcopy!(n, p, r) # p₁
162162

163163
α = one(FC) # α₀
164164
ω = one(FC) # ω₀

src/car.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,29 +127,29 @@ kwargs_car = (:M, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose, :history, :ca
127127
mul!(r, A, Δx)
128128
@kaxpby!(n, one(FC), b, -one(FC), r)
129129
else
130-
r .= b
130+
@kcopy!(n, r, b) # r ← b
131131
end
132132

133133
# p₀ = r₀ = M(b - Ax₀)
134134
if MisI
135-
p .= r
135+
@kcopy!(n, p, r) # p ← r
136136
else
137137
mulorldiv!(p, M, r, ldiv)
138-
r .= p
138+
@kcopy!(n, r, p) # r ← p
139139
end
140140

141141
mul!(s, A, r) # s₀ = Ar₀
142142

143143
# q₀ = MAp₀ and s₀ = MAr₀
144144
if MisI
145-
q .= s
145+
@kcopy!(n, q, s) # q ← s
146146
else
147147
mulorldiv!(q, M, s, ldiv)
148-
s .= q
148+
@kcopy!(n, s, q) # s ← q
149149
end
150150

151151
mul!(t, A, s) # t₀ = As₀
152-
u .= t # u₀ = Aq₀
152+
@kcopy!(n, u, t) # u₀ = Aq₀
153153
ρ = @kdotr(n, t, s) # ρ₀ = ⟨t₀ , s₀⟩
154154

155155
# Compute ‖r₀‖

src/cg.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,10 @@ kwargs_cg = (:M, :ldiv, :radius, :linesearch, :atol, :rtol, :itmax, :timemax, :v
138138
mul!(r, A, Δx)
139139
@kaxpby!(n, one(FC), b, -one(FC), r)
140140
else
141-
r .= b
141+
@kcopy!(n, r, b) # r ← b
142142
end
143143
MisI || mulorldiv!(z, M, r, ldiv)
144-
p .= z
144+
@kcopy!(n, p, z) # p ← z
145145
γ = @kdotr(n, r, z)
146146
rNorm = sqrt(γ)
147147
history && push!(rNorms, rNorm)
@@ -182,7 +182,7 @@ kwargs_cg = (:M, :ldiv, :radius, :linesearch, :atol, :rtol, :itmax, :timemax, :v
182182
inconsistent = !linesearch
183183
end
184184
if linesearch
185-
iter == 0 && (x .= b)
185+
iter == 0 && @kcopy!(n, x, b) # x ← b
186186
solved = true
187187
end
188188
end

src/cg_lanczos.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ kwargs_cg_lanczos = (:M, :ldiv, :check_curvature, :atol, :rtol, :itmax, :timemax
135135
mul!(Mv, A, Δx)
136136
@kaxpby!(n, one(FC), b, -one(FC), Mv)
137137
else
138-
Mv .= b
138+
@kcopy!(n, Mv, b) # Mv ← b
139139
end
140140
MisI || mulorldiv!(v, M, Mv, ldiv) # v₁ = M⁻¹r₀
141141
β = sqrt(@kdotr(n, v, Mv)) # β₁ = v₁ᴴ M v₁
@@ -152,13 +152,13 @@ kwargs_cg_lanczos = (:M, :ldiv, :check_curvature, :atol, :rtol, :itmax, :timemax
152152
solver.warm_start = false
153153
return solver
154154
end
155-
p .= v
155+
@kcopy!(n, p, v) # p ← v
156156

157157
# Initialize Lanczos process.
158158
# β₁Mv₁ = b
159159
@kscal!(n, one(FC) / β, v) # v₁ ← v₁ / β₁
160160
MisI || @kscal!(n, one(FC) / β, Mv) # Mv₁ ← Mv₁ / β₁
161-
Mv_prev .= Mv
161+
@kcopy!(n, Mv_prev, Mv) # Mv_prev ← Mv
162162

163163
iter = 0
164164
itmax == 0 && (itmax = 2 * n)

src/cg_lanczos_shift.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,10 @@ kwargs_cg_lanczos_shift = (:M, :ldiv, :check_curvature, :atol, :rtol, :itmax, :t
131131
for i = 1 : nshifts
132132
@kfill!(x[i], zero(FC)) # x₀
133133
end
134-
Mv .= b # Mv₁ ← b
134+
@kcopy!(n, Mv, b) # Mv₁ ← b
135135
MisI || mulorldiv!(v, M, Mv, ldiv) # v₁ = M⁻¹ * Mv₁
136136
β = sqrt(@kdotr(n, v, Mv)) # β₁ = v₁ᴴ M v₁
137-
rNorms .= β
137+
@kfill!(rNorms, β)
138138
if history
139139
for i = 1 : nshifts
140140
push!(rNorms_history[i], rNorms[i])
@@ -155,14 +155,14 @@ kwargs_cg_lanczos_shift = (:M, :ldiv, :check_curvature, :atol, :rtol, :itmax, :t
155155

156156
# Initialize each p to v.
157157
for i = 1 : nshifts
158-
p[i] .= v
158+
@kcopy!(n, p[i], v) # pᵢ ← v
159159
end
160160

161161
# Initialize Lanczos process.
162162
# β₁Mv₁ = b
163163
@kscal!(n, one(FC) / β, v) # v₁ ← v₁ / β₁
164164
MisI || @kscal!(n, one(FC) / β, Mv) # Mv₁ ← Mv₁ / β₁
165-
Mv_prev .= Mv
165+
@kcopy!(n, Mv_prev, Mv) # Mv_prev ← Mv
166166

167167
# Initialize some constants used in recursions below.
168168
ρ = one(T)

src/cgls.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ kwargs_cgls = (:M, :ldiv, :radius, :λ, :atol, :rtol, :itmax, :timemax, :verbose
147147
Mq = MisI ? q : solver.Mr
148148

149149
@kfill!(x, zero(FC))
150-
r .= b
150+
@kcopy!(m, r, b) # r ← b
151151
bNorm = @knrm2(m, r) # Marginally faster than norm(b)
152152
if bNorm == 0
153153
stats.niter = 0
@@ -160,7 +160,7 @@ kwargs_cgls = (:M, :ldiv, :radius, :λ, :atol, :rtol, :itmax, :timemax, :verbose
160160
end
161161
MisI || mulorldiv!(Mr, M, r, ldiv)
162162
mul!(s, Aᴴ, Mr)
163-
p .= s
163+
@kcopy!(n, p, s) # p ← s
164164
γ = @kdotr(n, s, s) # γ = sᴴs
165165
iter = 0
166166
itmax == 0 && (itmax = m + n)

src/cgls_lanczos_shift.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,11 @@ kwargs_cgls_lanczos_shift = (:M, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose
137137
@kfill!(x[i], zero(FC)) # x₀
138138
end
139139

140-
u .= b
140+
@kcopy!(m, u, b) # u ← b
141141
@kfill!(u_prev, zero(FC))
142-
mul!(v, Aᴴ, u) # v₁ ← Aᴴ * b
143-
β = sqrt(@kdotr(n, v, v)) # β₁ = v₁ᵀ M v₁
144-
rNorms .= β
142+
mul!(v, Aᴴ, u) # v₁ ← Aᴴ * b
143+
β = sqrt(@kdotr(n, v, v)) # β₁ = v₁ᵀ M v₁
144+
@kfill!(rNorms, β)
145145
if history
146146
for i = 1 : nshifts
147147
push!(rNorms_history[i], rNorms[i])
@@ -158,17 +158,17 @@ kwargs_cgls_lanczos_shift = (:M, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose
158158

159159
# Initialize each p to v.
160160
for i = 1 : nshifts
161-
p[i] .= v
161+
@kcopy!(n, p[i], v) # pᵢ ← v
162162
end
163163

164164
# Initialize Lanczos process.
165165
# β₁v₁ = b
166-
@kscal!(n, one(FC) / β, v) # v₁ v₁ / β₁
166+
@kscal!(n, one(FC) / β, v) # v₁ v₁ / β₁
167167
@kscal!(m, one(FC) / β, u)
168168

169169
# Initialize some constants used in recursions below.
170170
ρ = one(T)
171-
σ .= β
171+
@kfill!(σ, β)
172172
@kfill!(δhat, zero(T))
173173
@kfill!(ω, zero(T))
174174
@kfill!(γ, one(T))
@@ -206,8 +206,8 @@ kwargs_cgls_lanczos_shift = (:M, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose
206206
β = sqrt(@kdotr(n, v, v)) # βₖ₊₁ = vₖ₊₁ᵀ M vₖ₊₁
207207
@kscal!(n, one(FC) / β, v) # vₖ₊₁ ← vₖ₊₁ / βₖ₊₁
208208
@kscal!(m, one(FC) / β, utilde) # uₖ₊₁ = uₖ₊₁ / βₖ₊₁
209-
u_prev .= u
210-
u .= utilde
209+
@kcopy!(m, u_prev, u) # u_prev ← u
210+
@kcopy!(m, u, utilde) # u ← utilde
211211

212212
MisI ||= @kdotr(n, v, v))
213213
for i = 1 : nshifts

src/cgne.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ kwargs_cgne = (:N, :ldiv, :λ, :atol, :rtol, :itmax, :timemax, :verbose, :histor
152152
z = NisI ? r : solver.z
153153

154154
@kfill!(x, zero(FC))
155-
r .= b
155+
@kcopy!(m, r, b) # r ← b
156156
NisI || mulorldiv!(z, N, r, ldiv)
157157
rNorm = @knrm2(m, r) # Marginally faster than norm(r)
158158
history && push!(rNorms, rNorm)
@@ -163,7 +163,7 @@ kwargs_cgne = (:N, :ldiv, :λ, :atol, :rtol, :itmax, :timemax, :verbose, :histor
163163
stats.status = "x = 0 is a zero-residual solution"
164164
return solver
165165
end
166-
λ > 0 && (s .= r)
166+
λ > 0 && @kcopy!(m, s, r) # s ← r
167167
mul!(p, Aᴴ, z)
168168

169169
# Use ‖p‖ to detect inconsistent system.

src/cgs.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ kwargs_cgs = (:c, :M, :N, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose, :hist
153153
mul!(r₀, A, Δx)
154154
@kaxpby!(n, one(FC), b, -one(FC), r₀)
155155
else
156-
r₀ .= b
156+
@kcopy!(n, r₀, b) # r₀ ← b
157157
end
158158

159159
@kfill!(x, zero(FC)) # x₀
@@ -189,9 +189,9 @@ kwargs_cgs = (:c, :M, :N, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose, :hist
189189
(verbose > 0) && @printf(iostream, "%5s %7s %5s\n", "k", "‖rₖ‖", "timer")
190190
kdisplay(iter, verbose) && @printf(iostream, "%5d %7.1e %.2fs\n", iter, rNorm, ktimer(start_time))
191191

192-
u .= r # u₀
193-
p .= r # p₀
194-
@kfill!(q, zero(FC)) # q₋₁
192+
@kcopy!(n, u, r) # u₀
193+
@kcopy!(n, p, r) # p₀
194+
@kfill!(q, zero(FC)) # q₋₁
195195

196196
# Stopping criterion.
197197
solved = rNorm ε

src/cr.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,9 @@ kwargs_cr = (:M, :ldiv, :radius, :linesearch, :γ, :atol, :rtol, :itmax, :timema
146146
mul!(p, A, Δx)
147147
@kaxpby!(n, one(FC), b, -one(FC), p)
148148
else
149-
p .= b
149+
@kcopy!(n, p, b) # p ← b
150150
end
151-
MisI && (r .= p)
151+
MisI && @kcopy!(n, r, p) # r ← p
152152
MisI || mulorldiv!(r, M, p, ldiv)
153153
mul!(Ar, A, r)
154154
ρ = @kdotr(n, r, Ar)
@@ -165,8 +165,8 @@ kwargs_cr = (:M, :ldiv, :radius, :linesearch, :γ, :atol, :rtol, :itmax, :timema
165165
solver.warm_start = false
166166
return solver
167167
end
168-
p .= r
169-
q .= Ar
168+
@kcopy!(n, p, r) # p ← r
169+
@kcopy!(n, q, Ar) # q ← Ar
170170
(verbose > 0) && (m = zero(T)) # quadratic model
171171

172172
iter = 0

0 commit comments

Comments
 (0)