You can just let SLEPc set it for you, pass PETSC_DEFAULT in the argument. The same for the mpd parameter.
Jose El 20/7/2015, a las 18:45, Marc-André Dubois <[email protected]> escribió: > How can you know what ncv value to set? > > Le 20 juillet 2015 à 11:39, "Jose E. Roman" <[email protected]> a écrit : > >> [Please reply to the list.] >> >> If you set ncv=n then the computation time will not change, as you are >> essentially computing all eigenvalues. As I said before, this is not the >> purpose of SLEPc. >> >> If you set for instance n=4000, ncv=32, nev=1 then yes you should see an >> improvement of convergence in the second solve (in fact, it should converge >> immediately if the initial vector is actually an eigenvector). >> >> In the case of nconv=1, EPSGetInvariantSubspace() will return the same >> vector as EPSGetEigenpairs(eps,0), so both can be used. >> >> Jose >> >> >> El 20/7/2015, a las 16:37, Marc-André Dubois <[email protected]> escribió: >> >>> Hi Jose, >>> Thank you for your fast reply. So if I take my previous code and change the >>> size of the subspace to 1, should I see an increase of performance? Does >>> the EPSGetInvariantSubspace() is a good method to retreive an initial >>> vector for this method? >>> >>> Thank you, >>> >>> Marc >>> >>> Le 20 juillet 2015 à 09:47, "Jose E. Roman" <[email protected]> a écrit : >>> >>>> El 20/7/2015, a las 14:54, Marc-André Dubois <[email protected]> escribió: >>>> >>>>> Hi all, I am currently developing a code in C++ and I try to use SLEPC in >>>>> conjunction with PETSC to solve an eigenvalue problem. Considering I have >>>>> a set of similar matrices, my strategy was to solve one problem, and then >>>>> reuse the starting vector to accelerate the resolution of the next >>>>> problems. I tested this strategy with a rudimentary code to validate the >>>>> process, but it does not seems to work. I am afraid I do not fully >>>>> understand some of the particularities of SLEPC or PETSC. The main.cpp >>>>> fille of my code goes like this: (see at the bottom of this message). You >>>>> can see that I create a matrix (A) and two eigensolver contexts (eps and >>>>> eps2). First a try to solve the problem using eps. I then recall the >>>>> invariant subspace and use it as a starting vector in eps2. This code >>>>> seems to work, but eps2 takes systematically more time to converge than >>>>> eps. Is there something wrong with this code or my understanding of how >>>>> SLEPC/PETSC works? Thank you, >>>>> >>>>> Marc >>>>> >>>> >>>> Currently, Krylov solvers in SLEPc are single-vector iterations. This >>>> means that the projection subspace is built from a single vector. If you >>>> pass several initial vectors, the Krylov-Schur solver will only use the >>>> first one and discard the rest. Other solvers (non-Krylov) may be able to >>>> use all initial vectors. >>>> >>>> The EPSSetInitialSpace() operation will take some time because you are >>>> providing a lot of vectors and these must be orthogonalized internally. >>>> >>>> If you comment out EPSSetInitialSpace() then the two solves should take >>>> essentially the same time. Make sure you use an optimized built when >>>> analyzing performance, never measure execution times with a debug build. >>>> >>>> On the other hand, you are setting ncv=n which is not the intended usage >>>> of SLEPc solvers. >>>> >>>> Jose >>>>
