Skip to content

Commit c946ff1

Browse files
author
mohamed82008
committed
Remove dense solver fallback - users are grownups
1 parent e7c9b6b commit c946ff1

File tree

1 file changed

+1
-36
lines changed

1 file changed

+1
-36
lines changed

src/lobpcg.jl

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,7 @@ function (iterator::LOBPCGIterator{Generalized})(residualTolerance, log) where {
549549
push!(iterator.residualNormsHistory, iterator.residuals[1:sizeX])
550550
end
551551
update_mask!(iterator, residualTolerance)
552-
iterator.currentBlockSize[] == 0 && return
552+
iterator.currentBlockSize[] == 0 && return
553553
bs = iterator.currentBlockSize[]
554554
# Update active R blocks
555555
update_active!(iterator.activeMask, bs, (iterator.activeRBlocks.block, iterator.RBlocks.block))
@@ -596,24 +596,6 @@ function (iterator::LOBPCGIterator{Generalized})(residualTolerance, log) where {
596596
return
597597
end
598598

599-
function dense_solver(A, B, X, largest)
600-
warn("The problem size is small compared to the block size. Using dense eigensolver instead of LOBPCG.")
601-
# Define the closed range of indices of eigenvalues to return.
602-
n = size(X, 1)
603-
sizeX = size(X, 2)
604-
eigvals = largest ? (n - sizeX + 1, n) : (1, sizeX)
605-
A_dense = A*eye(n)
606-
if B isa Void
607-
realdiag!(A_dense)
608-
return eig(Hermitian(A_dense))
609-
else
610-
B_dense = B*eye(n)
611-
realdiag!(A_dense)
612-
realdiag!(B_dense)
613-
return eig(Hermitian(A_dense), Hermitian(B_dense))
614-
end
615-
end
616-
617599
"""
618600
The Locally Optimal Block Preconditioned Conjugate Gradient Method (LOBPCG)
619601
@@ -670,12 +652,6 @@ function lobpcg(A, B, largest, X0;
670652
Y = C
671653
n = size(X, 1)
672654
sizeX = size(X, 2)
673-
if Y isa Void
674-
n < 5 * sizeX && return dense_solver(A, B, X, largest)
675-
else
676-
sizeY = size(Y, 2)
677-
(n - sizeY) < 5 * sizeX && throw("The dense eigensolver does not support constraints.")
678-
end
679655
sizeX > n && throw("X column dimension exceeds the row dimension")
680656

681657
iterator = LOBPCGIterator(A, B, X, largest, M, Y)
@@ -730,17 +706,6 @@ function lobpcg!(λ::AbstractVector, X, A, B, largest=true; log=false,
730706
Y = C
731707
n = size(X, 1)
732708
sizeX = size(X, 2)
733-
if Y isa Void
734-
if n < 5 * sizeX
735-
lambda, vectors = dense_solver(A, B, X, largest)
736-
λ .= lambda
737-
X .= vectors
738-
return λ, X
739-
end
740-
else
741-
sizeY = size(Y, 2)
742-
(n - sizeY) < 5 * sizeX && throw("The dense eigensolver does not support constraints.")
743-
end
744709
sizeX > n && throw("X column dimension exceeds the row dimension")
745710

746711
iterator = LOBPCGIterator(A, B, X, largest, M, Y)

0 commit comments

Comments
 (0)