From baf0d50b7aecc73c4dab9f81f0d0f65253c388df Mon Sep 17 00:00:00 2001 From: Matthieu Gomez Date: Tue, 28 Nov 2023 17:01:23 -0500 Subject: [PATCH 1/2] Update AbstractFixedEffectSolver.jl --- src/AbstractFixedEffectSolver.jl | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/AbstractFixedEffectSolver.jl b/src/AbstractFixedEffectSolver.jl index d893330..658560a 100644 --- a/src/AbstractFixedEffectSolver.jl +++ b/src/AbstractFixedEffectSolver.jl @@ -47,7 +47,7 @@ end -function solve_residuals!(r::AbstractVector, feM::AbstractFixedEffectSolver{T}; tol::Real = sqrt(eps(T)), maxiter::Integer = 100_000) where {T} +function solve_residuals!(r::AbstractVector{<: Real}, feM::AbstractFixedEffectSolver; tol::Real = sqrt(eps(T)), maxiter::Integer = 100_000) # One cannot copy view of Vector (r) on GPU, so first collect the vector if works_with_view(feM) copyto!(feM.r, r) @@ -60,7 +60,6 @@ function solve_residuals!(r::AbstractVector, feM::AbstractFixedEffectSolver{T}; end copyto!(feM.b, feM.r) mul!(feM.x, feM.m', feM.b, 1, 0) - iter, converged = 1, true if length(feM.x.x) > 1 x, ch = lsmr!(feM.x, feM.m, feM.b, feM.v, feM.h, feM.hbar; atol = tol, btol = tol, maxiter = maxiter) @@ -174,4 +173,4 @@ function FixedEffects.solve_coefficients!(r::AbstractVector, feM::AbstractFixedE end x = Vector{eltype(r)}[collect(x) for x in feM.x.x] full(normalize!(x, feM.m.fes; tol = tol, maxiter = maxiter), feM.m.fes), div(ch.mvps, 2), ch.isconverged -end \ No newline at end of file +end From daf959dc6970959fac08c3d359313f69c88dea29 Mon Sep 17 00:00:00 2001 From: Matthieu Gomez Date: Tue, 28 Nov 2023 17:20:58 -0500 Subject: [PATCH 2/2] Update AbstractFixedEffectSolver.jl --- src/AbstractFixedEffectSolver.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AbstractFixedEffectSolver.jl b/src/AbstractFixedEffectSolver.jl index 658560a..2e42bec 100644 --- a/src/AbstractFixedEffectSolver.jl +++ b/src/AbstractFixedEffectSolver.jl @@ -47,7 +47,7 @@ end -function solve_residuals!(r::AbstractVector{<: Real}, feM::AbstractFixedEffectSolver; tol::Real = sqrt(eps(T)), maxiter::Integer = 100_000) +function solve_residuals!(r::AbstractVector{<: Real}, feM::AbstractFixedEffectSolver{T}; tol::Real = sqrt(eps(T)), maxiter::Integer = 100_000) where {T} # One cannot copy view of Vector (r) on GPU, so first collect the vector if works_with_view(feM) copyto!(feM.r, r)