<div dir="ltr"><div><div>I have some questions regarding spectrum slicing in SLEPc, especially in the new version 3.7, as I see a line in the Change Notes that I don't quite understand ("in spectrum slicing in multi-communicator mode now it is possible to
       update the problem matrices directly on the sub-communicators".)<br><br></div>1) In light of this statement, how should I divide my Mat to best work with eps_krylovschur_partitions? Let's say I have 384 processors and eps_krylovschur_partitions=48, so there will be 8 processors in each group. Should I distribute the matrix over all 384 processors (so let's say this gives 32 rows per processor) and have the entire communicator call EPS solve, or should I (can I?) distribute the matrix over each of the 8 groups (giving say 1536 rows per processor) and have the 48 subcommunicators call EPSSolve? Am I correct in thinking that distributing over all 384 processors requires collecting and duplicating the matrix to the 48 different groups?<br><div>2) If I'm understanding it correctly, the approach for Krylov-Schur
 spectrum slicing described in the manual for SLEPc seems like a 
wasteful default method. From what I gather, regions are divided by 
equal distance, and different regions are bound to end up with different
 (and potentially vastly different) numbers of eigenpairs. I understand 
the user can provide their own region intervals, but wouldn't it be better for 
SLEPc to first compute the matrix inertias at some given first guess 
regions, interpolate, then fix the spectra endpoints so they contain 
approximately the same number in each region? An option for 
logarithmically spaced points rather than linearly spaced points would 
be helpful as well, as for the problem I am looking at the spectrum 
decays in this way (few large eigenvalues with an exponential decay down
 to many smaller eigenvalues). I require eigenpairs with eigenvalues that vary by several 
orders of magnitude (1e-3 to 1e3), so the linear equidistant strategy is hopeless.<br></div><div>3) The example given for spectrum slicing in the user manual is<br><br> mpiexec -n 20 ./ex25 -eps_interval 0.4,0.8 -eps_krylovschur_partitions 4<br>                  -st_type sinvert -st_ksp_type preonly -st_pc_type cholesky<br>                  -st_pc_factor_mat_solver_package mumps -mat_mumps_icntl_13 1<span style="font-size:9pt;font-family:"CMTT9"">
</span><div class="" title="Page 62"><div class=""><div class="">
                                </div>
                        </div>
                </div>
        
<br></div><div>which requires a direct solver. If I can compute the matrix inertias myself and come up with spectral regions and subcommunicators as described above, is there a way to efficiently use SLEPc with an iterative solver? How about with a matrix shell? (I'm getting greedy now ^_^).<br><br></div><div>I would really appreciate any help on these questions. Thank you for your time.<br><br></div><div>Best wishes,<br><br></div><div>Jeff<br></div></div></div>