3.22 - 2024-09-29
EPS
: added support for structured eigenvalue problems in the Krylov-Schur solver. In particular, the problem typeEPS_BSE
is intended to solve eigenproblems with Bethe-Salpeter structure, whose matrix has been created withMatCreateBSE()
.BV
: new functionBVGetSplitRows()
to split aBV
row-wise using index sets.- Added support for AMD GPUs via HIP and ROCm, see section 8.3 of the Users Manual.
- Some interface functions now support
PETSC_CURRENT
to preserve the current value of the arguments. This implies thatPETSC_DEFAULT
is deprecated for setting a default value in those cases, andPETSC_DETERMINE
orPETSC_DECIDE
should be used instead. This is the case of, e.g.,EPSSetDimensions()
. DS
: various improvements including optimization of memory usage.- In slepc4py now
EPS.getEigenpair()
andEPS.getEigenvalue()
will return a real value instead of a complex, if the problem is of Hermitian or generalized Hermitian type.
3.21 - 2024-03-30
ST
: new functionSTShellSetApplyHermitianTranspose()
and other improvements for handling the conjugate transpose of the operator.
SVDGetSignature()
now takes aVec
argument instead ofVec*
. The former interface could not be used from Fortran.
3.20 - 2023-09-29
BV
: now mostBV
implementations use the concept of leading dimension for internal storage. The implication of this is that codes relying onBVGetArray()
must be adapted to use the value of the leading dimension, which may be different from the local number of rows. UseBVGetLeadingDimension()
for this purpose.BV
: now the defaultBV
type isBVMAT
instead ofBVSVEC
. This change should not affect application code.
3.19 - 2023-03-31
- New
DSHSVD
type for the hyperbolic SVD. - Support for the hyperbolic SVD (HSVD) in the
SVDTRLANCZOS
solver. - Add interface to dense SVD solvers in the external package KSVD.
3.18 - 2022-10-01
SVD
: add scaling parameter in thick-restart Lanczos for the GSVD, and also enable one-sided orthogonalization for GSVD.SVD
: support for the hyperbolic SVD (HSVD), with a signature matrix passed withSVDSetSignature()
.FN
: add support for matrix function computation on the GPU, whenever theMat
arguments ofFNEvaluateFunctionMat()
are of typeMATSEQDENSECUDA
(and similarly forFNEvaluateFunctionMatVec()
).DS
: new functionsDSGetMatAndColumn()
/DSRestoreMatAndColumn()
.
- In configure, now the arguments intended to store link flags (and libraries) instead of
being represented as comma-separated lists should be specified via a quoted string, e.g.,
--with-arpack-lib="-L/opt/soft/arpack -Wl,-rpath,/opt/soft/arpack -lparpack -larpack"
. - Interface of
BVMatLanczos()
changed to receive aMat
instead of pointers, in a similar way toBVMatArnoldi()
. DS
: now every call toDSGetMat()
must be paired with a call toDSRestoreMat()
, it is not longer possible to justMatDestroy()
the matrix.
- Remove python2 support, python-3.4+ is now required.
DS
: removeDSCopyMat()
.
3.17 - 2022-03-31
NEP
: user-defined preconditioner for the split form, seeNEPSetSplitPreconditioner()
. Support for preconditioner matrix different from the function matrix has also been improved for the callback interface.- Add support for split preconditioner in
EPS
andPEP
viaSTSetSplitPreconditioner()
.
- In C programs, instead of using
CHKERRQ()
, the recommended way of doing error checking is wrapping withPetscCall()
, for instance,PetscCall(EPSSolve(eps))
.CHKERRQ()
will continue to work as before. In Fortran, error checking has not changed. SVD
: clarify convergence test for GSVD, now the default is relative to the matrix norms, and relative to the singular value is not allowed.
3.16 - 2021-09-30
SVD
: support for the GSVD inSVDTRLANCZOS
,SVDCROSS
andSVDCYCLIC
solvers.NEP
: theNEPCISS
solver (that was deprecated in version 3.14) has been recovered and enriched with a new Rayleigh-Ritz variant that is used by default now, seeNEPCISSSetExtraction()
. It now also supports subcommunicators.PEP
: new solverPEPCISS
with similar functionality asNEPCISS
.- Fortran: add support for
SlepcInitialize(filename,help,ierr)
,SlepcInitialize(ierr)
in addition to currentSlepcInitialize(filename,ierr)
. - New
DSGSVD
type for the generalized SVD. - New contour integral method in
DSNEP
. - New function
BVSetRandomSign()
for random values equal to -1 or 1 with equal probability. - New functions
RGIsAxisymmetric()
,RGCanUseConjugates()
andRGComputeQuadrature()
. - New function
SlepcHasExternalPackage()
to check whether SLEPc was configured with the given external package.
DSSetDimensions()
now has one argument less. UseDSSVDSetDimensions()
to specify the number of columns inDSSVD
. And similarly forDSGSVD
.- One of the
DS
matrices has been renamed fromDS_MAT_VT
toDS_MAT_V
since it is no longer transposed. - Interface of
BVMatArnoldi()
changed to receive aMat
instead of a pointer. STShellGetContext()
now takesvoid*
as return argument, as well asXXXGetMonitorContext()
.- Rename
BVMultInPlaceTranspose()
toBVMultInPlaceHermitianTranspose()
to be consistent with PETSc naming convention.
- The interface to BLZPACK has been removed since it is no longer available for download.
3.15 - 2021-03-31
SVD
: support for the GSVD added. This implies changes in the interface, e.g.,SVDSetOperators()
should be used instead ofSVDSetOperator()
. New functions have been added such asSVDSetProblemType()
andSVDIsGeneralized()
.SVD
: New solverSVDRANDOMIZED
.EPS
: New interface to external package EVSL.- Import SLEPc4py sources into SLEPc source tree.
- New function
EPSKrylovSchurGetKSP()
to extract theKSP
object used in the case of spectrum slicing runs. This allows setting MUMPS options even with partitions. - New tolerance to check a definite inner product, see
BVSetDefiniteTolerance()
. - New function
STSetPreconditionerMat()
to pass the matrix for building the preconditioner. - New function
BVSetRandomNormal()
for random initial vectors with normal distribution. - New function
DSGetTruncateSize()
to be used withDSTruncate()
.
- Configure option
--download-slepc4py
renamed to--with-slepc4py
. EPSLANCZOS
now requires thatEPSLanczosSetReorthog()
is called explicitly, or the corresponding command-line option is given. The intention is that inexperienced users realize that they should useEPSKRYLOVSCHUR
instead ofEPSLANCZOS
.ST
: now the coefficient/preconditioner matrix has the same prefix as theKSP
object, so setting MUMPS options in the command-line requires the appropriate prefix, e.g.,-st_mat_mumps_icntl_13 1
.DSTruncate()
now has an additional argumenttrim
.- Monitors have been reorganized as in PETSc. Now use
-eps_monitor draw::draw_lg
instead of-eps_monitor_lg
.
STPrecondSetMatForPC()
is superseded bySTSetPreconditionerMat()
.
3.14 - 2020-09-30
- Add interfaces to dense eigensolvers and SVD solvers in ScaLAPACK, ELPA and Elemental.
- Reintroduce interface to FEAST external solver via MKL.
- New configure option
--download-slepc4py
. - New functions
BVNormalize
,VecCheckOrthonormality
,STApplyMat
,STMatMatSolve
.
EPSLOBPCG
andEPSCISS
now useMatProduct()
/KSPMatSolve()
instead ofMatMult()
/KSPSolve()
.- Rename
XXXReasonView()
toXXXConvergedReasonView()
, andXXXReasonViewFromOptions()
toXXXConvergedReasonViewFromOptions()
.
- The
NEPCISS
solver has been deprecated and will be completely removed in future versions.
3.13 - 2020-03-31
EPS
: new solverlyapii
(Lyapunov inverse iteration) to compute rightmost eigenvalues.NEP
: add a two-sided version of SLP.- New functions:
EPSSetLeftInitialSpace()
,MFNSolveTranspose()
. - Interface to
PCHPDDM
andKSPHPDDM
using--download-hpddm
.
configure
: the options--with-xxx-flags
have been renamed to--with-xxx-lib
(see./configure --help
).STGetOperator()
now has to be used withSTRestoreOperator()
.- Now the arrays returned by
RGPolygonGetVertices()
must be freed by the user.
3.12 - 2019-09-30
ST
: now the default is to use Cholesky instead of LU if the problem matrices areSBAIJ
or the user flags them as symmetric.- Removed interface to external solver FEAST.
- Removed support for CMake and legacy builds.
3.11 - 2019-03-29
EPS
: reintroduce support for computing left eigenvectors, seeEPSSetTwoSided()
.PEP
: enable JD solver in real arithmetic.PEP
: spectrum slicing can now be used with symmetric non-hyperbolic problems.NEP
: support for automatic determination of singularities in NLEIGS with the AAA algorithm.NEP
: support for left eigenvectors and approximation of the resolvent.FN
: implemented matrix logarithm.- Enable compilation with non-GNU compilers in Windows platforms.
- Added support for
DESTDIR
in prefix install.
3.10 - 2018-09-18
NEP
: add support for deflation in SLP, RII and NArnoldi solvers.FN
: improved matrix function evaluation of Phi functions.- Interface changes:
PEPLinearSetCompanionForm()
has been deprecated, usePEPLinearSetLinearization()
instead.
3.9 - 2018-04-12
-
PEP
: add spectrum slicing for Hermitian quadratic eigenvalue problems via STOAR. -
PEP
: add support for non-monomial bases in JD. -
BV
: addBVTENSOR
to represent subspace bases with compact representation$V = (I \otimes U) S$ . -
BV
: improved implementation of block orthogonalization, including TSQR and SVQB. -
BV
: addBVGetSplit()
operation to split a givenBV
object in two.
3.8 - 2017-10-20
- Released under 2-clause BSD license.
- New solver class
LME
for linear matrix equations (such as Lyapunov or Sylvester) whose solution has low rank. NEP
: added specific support for rational eigenvalue problems withNEPSetProblemType()
.- Added nonlinear inverse iteration as an option of
EPSPOWER
. - Added a preliminary implementation of polynomial filters in
STFILTER
to compute interior eigenvalues of symmetric problems without factorizing a matrix. SVD
: add wrapper to PRIMME SVD solver.- Improved evaluation of matrix functions, both in
FN
andMFN
. - GPU support improved in all solver classes.
- Simplified Fortran usage as in PETSc.
- Interface changes:
DSNormalize()
has been removed;NEPInterpolSetDegree()
has been renamed toNEPInterpolSetInterpolation()
, and takes an additional argument.
3.7 - 2016-05-16
NEP
: new solvernleigs
that implements a (rational) Krylov method operating on a companion-type linearization of a rational interpolant of the nonlinear function.PEP
: thejd
solver can now compute more than one eigenpair.MFN
: added a new solverkrylov
that works for different functions, not only the exponential. The solver available in previous versions has been renamed toexpokit
.EPS
: in spectrum slicing in multi-communicator mode now it is possible to update the problem matrices directly on the sub-communicators.EPS
: the contour integral solver now provides Chebyshev quadrature rule and Hankel extraction; all options are documented in STR-11.- Now most solvers allow a user-defined criterion to stop iterating based on a callback function.
- Optimized solution of linear systems in Newton refinement for
PEP
andNEP
. - Added download option for most external packages.
- GPU support updated to use
VECCUDA
instead ofVECCUSP
, now including complex scalars. - Interface changes:
EPS_CONV_EIG
has been renamed toEPS_CONV_REL
;BVAXPY()
has been removed, useBVMult()
instead;BVSetRandom()
no longer takes aPetscRandom
argument, useBVSetRandomContext()
instead.
3.6 - 2015-06-12
- New
EPS
solver: locally optimal block preconditioned conjugate gradient (LOBPCG). - New
PEP
solvers: Jacobi-Davidson (JD), and symmetric TOAR (STOAR). - New
NEP
solver: contour integral spectrum slice (CISS). - Improved BLOPEX interface by adding hard locking. Now the user can specify the block size.
- Spectrum slicing in
EPS
can now be run in multi-communicator mode, where each process group computes a sub-interval. - Added functions and command-line options to view the computed solution after solve, e.g.
-eps_view_vectors binary:myvecs.bin
- The
MFN
solver class now takes anFN
object to define the function. The functionality for computing functions of small, dense matrices has been moved fromDS
toFN
.MFNSetScaleFactor()
has been removed, now this scale factor must be specified inFN
. FN
now allows the definition of functions by combining two other functions.- Added two new
RG
regions:ring
a stripe along an ellipse with optional start and end angles;polygon
an arbitrary polygon made up of a list of vertices. - User makefiles must now include
${SLEPC_DIR}/lib/slepc/conf/slepc_common
. - Interface changes:
EPSComputeRelativeError()
andEPSComputeResidualNorm()
have been deprecated (useEPSComputeError()
instead); the same forPEP
,NEP
andSVD
;PEPSetScale()
now allows passing twoVec
s for diagonal scaling;XXXPrintSolution()
has been replaced withXXXErrorView()
;STGetOperationCounters()
has been removed, its functionality is available via the log summary and withKSPGetTotalIterations()
;BVGetVec()
has been renamed toBVCreateVec()
; the interface for definingFN
functions of rational type has changed;BVSetOrthogonalization()
takes one more argument.
3.5 - 2014-07-29
- A new solver class
PEP
for polynomial eigenvalue problems has been added. It replaces the formerQEP
class, that has been removed.PEP
contains a new solver TOAR that can handle polynomials of arbitrary degree. Q-Lanczos has been removed since it did not have guaranteed stability. - New
NEP
solver: polynomial interpolation usingPEP
. - Added Newton iterative refinement in both
PEP
andNEP
. - A new auxiliary class
RG
allows the user to define a region in the complex plane. This can be used for filtering out unwanted eigenvalues inEPS
andPEP
. - The auxiliary object
IP
has been removed and a new objectBV
has been added that subsumes its functionality. - Support for requesting left eigenvectors has been removed, since none of the solvers were computing them internally.
- The
STFOLD
spectral transformation has been removed. Exampleex24.c
reproduces this functionality. - Interface changes:
SVDSetTransposeMode()
has been renamed toSVDSetImplicitTranspose()
; inSTSHIFT
the sign of sigma is the opposite to previous versions;EPSJDSetBOrth()
now takes a boolean argument instead of an enum.
3.4 - 2013-07-05
- Added new class of solvers
NEP
for the nonlinear eigenvalue problem. - Added new class of solvers
MFN
for computing the action of a matrix function on a vector. - New
EPS
solver: Contour integral spectrum slice (CISS). Allows to compute all eigenvalues inside a region. - New
QEP
solver: Q-Lanczos is a specialized variant of Q-Arnoldi for problems with symmetric matrices. - Added support for shift-and-invert in
QEP
. - Added a new auxiliary class
FN
: Mathematical Function, to be used in the definition of nonlinear eigenproblems. - Added interface to external solver FEAST.
- Changed options
-xxx_monitor_draw
to-xxx_monitor_lg
, and similarly for-xxx_monitor_draw_all
.
3.3 - 2012-08-03
- New
EPS
solver: Rayleigh quotient conjugate gradient (RQCG). This is the first CG-type eigensolver in SLEPc. It can be used for computing smallest eigenvalues of symmetric-definite matrix pairs without inverting any matrix (a preconditioner can be used instead). - Added a customizable parameter to specify how to restart in Krylov-Schur, see
EPSKrylovSchurSetRestart
. Tuning this parameter may speed up convergence significantly in some cases. - Added support for generalized symmetric-indefinite eigenproblems in Krylov-Schur and the Davidson
solvers. To use this, set the problem type to
EPS_GHIEP
. - New variant of Generalized Davidson for generalized eigenproblems that expands the subspace with
two vectors (GD2). It can be activated with
-eps_gd_double_expansion
. - Added experimental support for arbitrary selection of eigenpairs, where the solver chooses the most wanted ones based on a user-defined function of the eigenvectors rather than simply sorting the eigenvalues.
- Added a new auxiliary class
DS
: Direct Solver (or Dense System), which is intended for developers rather than normal users.
3.2 - 2011-10-28
- Computational intervals for symmetric eigenproblems, that activate a spectrum slicing mechanism
to obtain all eigenvalues in a given interval, see
EPSSetInterval()
. - Partial support (experimental) for GPU computing via PETSc's
VECCUSP
andMATAIJCUSP
. - Improved performance and robustness of GD and JD solvers in (generalized) Hermitian problems.
- Performance improvement of solvers with explicit matrix such as
SVDCYCLIC
andQEPLINEAR
(now use matrix preallocation). - Added Matlab interface.
- Added support for parallel builds with CMake.
- Added support for quad precision (configure PETSc
--with-precision=__float128
with gcc-4.6 or later). - Interface changes: now all
XXXDestroy()
routines take a pointer to the object.
3.1 - 2010-08-04
- New
EPS
solvers: Generalized Davidson (GD) and Jacobi-Davidson (JD). These are the first eigensolvers in SLEPc that belong to the class of preconditioned eigensolvers. - Added a new instance of
ST
calledSTPRECOND
. This is not really a spectral transformation but rather a convenient way of handling the preconditioners in the new eigensolvers. - Added a new class
QEP
for solving quadratic eigenvalue problems. Currently, it contains two solvers: the Q-Arnoldi method and another one that provides a linearization of the problem and then invokes an eigensolver fromEPS
. - Added support for balancing of non-Hermitian problems, see
EPSSetBalance()
. - Improved sorting of eigenvalues, now with the possibility of sorting with respect to a target
value. With shift-and-invert, now the ordering of eigenvalues is the expected one, relative to
the target. Also added support for user-defined orderings, see
EPSSetWhichEigenpairs()
. - Added support for user-defined convergence tests, see
EPSSetConvergenceTest()
. Several predefined convergence criteria are available. Also, there is a new flag for computing the true residual for the convergence test, seeEPSSetTrueResidual()
. - Monitors have been reorganized and now more possibilities are available.
- Changes in user interface:
EPSAttachDeflationSpace()
has been renamed toEPSSetDeflationSpace()
,EPSSetLeftVectorsWanted()
replacesEPSSetClass()
for requesting left eigenvectors; Change in arguments:EPSSetDeflationSpace()
; Deprecated function:EPSSetInitialVector()
, replaced byEPSSetInitialSpace()
;STSINV
has been renamed toSTSINVERT
.
3.0.0 - 2009-02-04
- Released under GNU LGPL license.
- Improved support for the case that many eigenpairs are to be computed. This is especially so in
the default eigensolver (Krylov-Schur) for symmetric problems, as well as for SVD computations. The
user can control the behaviour of the solver with a new parameter
mpd
, seeEPSSetDimensions()
. - Support for harmonic projection in the default eigensolver (Krylov-Schur), see
EPSSetExtraction()
. This can be useful for computing interior or rightmost eigenvalues without the need of a spectral transformation. - Memory usage has been optimized in most solvers. In some cases, memory requirements have been halved with respect to the previous versions.
- In the spectral transformations (
ST
) the linear solver used internally has been changed to a direct solver by default. The user can still employ an iterative linear solver by setting the appropriate options. - Added better support for Fortran 90.
- Improved support for
make install
.
2.3.3 - 2007-06-01
- A new solver class
SVD
has been introduced for computing the singular value decomposition of a rectangular matrix. The structure of this new type is very similar to that ofEPS
, and it simplifies the computation of singular values and vectors. - Better support for generalized problems. Eigenvector purification has been added to improve
accuracy in the case of generalized eigenproblems with singular B. Also, a new problem type
(
EPS_PGNHEP
) has been added for better addressing generalized problems in which A is non-Hermitian but B is Hermitian and positive definite. - Now
make install
is available thus facilitating system-wide installation.
2.3.2 - 2006-10-02
- A new
krylovschur
eigensolver has been added, that implements the Krylov-Schur method. This method is related to the Arnoldi and Lanczos algorithms, but incorporates a new restarting scheme that makes it competitive with respect to implicit restart. This eigensolver is now the default for both symmetric and non-symmetric problems. - A new wrapper has been developed to interface with the PRIMME library. This library provides Davidson-type eigensolvers.
- The
lanczos
solver has been improved, in particular, the different reorthogonalization strategies are now more robust. - Now the
arnoldi
eigensolver supports the computation of eigenvalues other than those of largest magnitude. EPSGetLinearIterations()
has been replaced withEPSGetOperationCounters()
, providing more statistics about the solution process.EPSGetIterationNumber()
now returns the number corresponding to outer iterations.- The
lobpcg
wrapper has been renamed toblopex
. - The
planso
wrapper has been removed since PLANSO is no longer being distributed.
2.3.1 - 2006-03-03
- New variant of the Arnoldi method added to the
arnoldi
eigensolver (with delayed reorthogonalization, seeEPSArnoldiSetDelayed()
). - Several optimizations for improving performance and scalability, in particular the orthogonalization steps.
2.3.0 - 2005-06-30
- New
lanczos
eigensolver, an explicitly restarted version of the Lanczos method for symmetric eigenproblems. Allows the user to choose among 5 reorthogonalization strategies. - New spectrum folding spectral transformation.
- New configuration system, similar to PETSc's
configure.py
. - New interface to an external eigensolver: LOBPCG implemented in Hypre.
- Added graphical convergence monitor (with
-eps_xmonitor
). - Improvement of Arnoldi solver in terms of efficiency and robustness.
- Now the
lapack
solver uses specific Lapack routines for symmetric and generalized problems. - Bug fix in the ARPACK interface.
2.2.1 - 2004-08-21
- The
power
eigensolver has been replaced by a simpler implementation. - The
rqi
eigensolver has been removed. Now the Rayleigh Quotient Iteration is embedded in thepower
method. - The
subspace
eigensolver has been rewritten. Now it follows the SRRIT implementation, which is much faster than the old one. - The
arnoldi
eigensolver has been re-implemented as well. The new implementation is much more robust and efficient. - A new Spectral Transformation (
ST
) has been added: the generalized Cayley transform. - Support for user-provided deflation subspaces has been added, see
EPSAttachDeflationSpace()
. - Support for preservation of symmetry in eigensolvers. For this feature, the user must explicitly
call
EPSSetProblemType()
in symmetric problems. - The two types of monitors (error estimates and values) have been merged in a single one.
- New function
EPSGetInvariantSubspace()
. - Better support for spectrum slicing in
blzpack
.
2.2.0 - 2004-04-13
EPSSolve()
does not return the number of iterations. UseEPSGetIterationNumber()
for this purpose.EPSGetSolution()
has been replaced byEPSGetEigenpair()
with a cleaner interface.EPSComputeError()
has been replaced byEPSComputeRelativeError()
andEPSComputeResidualNorm()
with better error computing for zero eigenvalues. These functions now are oriented to single eigenpairs, as well asEPSGetErrorEstimate()
.- The possibilities of
EPSSetWhichEigenpairs()
have been reduced and now are more coherent across problem types. - Removed
STNONE
spectral transformation. The default ofSTSHIFT
with 0 shift is equivalent. - Added
STSinvertSetMatStructure()
to optimize performance ofMatAXPY()
in shift-and-invert transformation. - Classical and modified Gram-Schmidt orthogonalization use iterative refinement, with user options for parameter adjustment.