Personal tools
You are here: Home Software pescan guidelines
Document Actions

guidelines

eigensolver settings

PESCAN Benchmarks Guidelines

Here we give guidelines on how to setup the eigensolver in Pescan. As indicated in pescan.input, the eigensolver is set by imthd (in line 5 of pescan.input) and the following algorithms are currently available:
--------------------------------------------------------------------
imthd algorithm parameters in line #6 of pescan.input
--------------------------------------------------------------------
1 (H-Eref)^2 CG niter, nline, iprec, idump
2 (H-Eref) CG; Eref=0 niter, nline, iprec, idump
3 (H-Eref)^2 LOBPCG niter, iprec, ideflt, iblock
4 (H-Eref)^2 PARPACK niter, ncv
5 (H-Eref) PARPACK niter, ncv
6 (H-Eref)^2 PRIMME method, ncv_min, ncv_max, nmatvec
7 (H-Eref) PRIMME method, ncv_min, ncv_max, nmatvec
--------------------------------------------------------------------
  • imthd=1: Preconditioned Conjugate Gradient (PCG) algorithm, where niter is the maximum number of iterations, nline is the number of line mimizations per iteration, iprec sets the preconditioner to be used (if iprec is different from 1 the preconditioner is set to the identity matrix), and idump indicates whether the wavefunctions will be saved (if idump is equal to 1 the wavefunctions are dumped to disk in G-space). Usually, niter should be set to 5 to 10, and to nline 100. However, these values should be increased if more accurate results are desired.
  • imthd=2: PCG, but the smallest eigenstates are computed. In this case, nline should be set to at least 10. Again, the values of niter and nline should be increased if more accurate results are desired.
  • imthd=3: Locally Optimal Block Preconditioned Conjugate Gradient (LOBPCG) algorithm (in-house implementation), where niter is the maximum number of iterations, iprec sets the preconditioner to be used (if iprec is different from 1 the preconditioner is set to the identity matrix), ideflt activates deflation (if ideflt is equal to 1 do special deflation), and iblock is the block size. In the current implementation of Pescan we recommend ideflt=1 and iblock=1.
  • imthd=4: Implicit restarted Arnoldi (IRL) implemented in PARPACK, where niter is the maximum number of restarts, and ncv is the maximum basis size. In the current implementation of Pescan we recommend ncv>=3*mx (in line 4 of pescan.input) and niter=10*ncv.
  • imthd=5: Similar to imthd=4 but IRL is applied to the unfolded spectrum.
  • imthd=6: Variants of the (Jacobi-)Davidson algorithms implemented in PRIMME (PReconditioned Iterative MultiMethod Eigensolver), where method sets the algorithm to be used (= 1, DEFAULT_MIN_TIME; = 2, DEFAULT_MIN_MATVECS, = 0: data for PRIMME is read from the file escan.input.primme, therefore enabling an advanced use of PRIMME's functionalities), ncv_min is minimum basis size for restarting, ncv_max is the maximum basis size allowed in each iteration, and nmatvec is the maximum number of matrix vector multiplications. Based on our tests, we recommend method=2, ncv_min=mx, ncv_max=3*ncv_min, and nmatvec=10*ncv_max.
  • imthd=7: Similar to imthd=6 but PRIMME is applied to the unfolded spectrum.

** The system example-14Cd.13Se provided in the Pescan download tar file  contains input files that exercise all the possible values of imthd, together with the corresponding output files. The user can modify the pescan.input starting from the input files in that directory. **

For the systems we have studied:
  • PCG and LOBPCG showed to be reliable for finding the states closest to the band gap. However, they may "stagnate", i.e.they may fail to make approximate eigenpairs converge to the desired accuracy.
  • IRL converges slowly for most folded spectrum computations. In unfolded computations with the original operator, IRL sometimes shows mis-convergence (that is, convergence to the wrong eigenvalues, resulting in relevant eigenpairs being missed).
  • The GD+k (Olsen algorithm) method from PRIMME (that is option PRIMME MIN_MATVECS) is reliable for both FS and unfolded computations. However, more research has to be done in order to improve its performance for unfolded computations. Therefore, for performance purposes, we recommend imthd=6 together with method=2.

Recommendations:
Based on the systems we have studied and the number os eigenstates we have computed, we recommend the default PRIMME MIN_MATVECS, with the restart size close to the number of required eigestates, and a basis size equal to 2 or 3 times the restart size. Also, for large systems, it is important to set tol to a smaller value that would be normally set for PCG or LOBPCG.

Important considerations about the tolerance (in line 4 of pescan.input):

A pair (E,w) is declared an eigenpair of H when r(E,w)=|| Hw-E*w || <= tol. However, this criterion raises a potential issue when using the folded spectrum approach. While in practice one cares about the (final) residual r(E,w) being small with respect to H, in some software packages the convergence criterion may be actually based on the operator (H-E_ref*I)2. This is the case of PRIMME, which means that currently PRIMME may have to do some more work for some systems, i.e. it may require a tighter tol. However, it is important to note that even with a smaller tol PRIMME showed to outperform the other eigensolvers. If there is a good guess for the norm of H then it can be used for a more realistic setting of tol.


back to main page
« March 2012 »
Su Mo Tu We Th Fr Sa
123
45678910
11121314151617
18192021222324
25262728293031
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: