Recent posts
https://software.intel.com/en-us/recent/795321
enFGMRES
https://software.intel.com/en-us/forums/topic/368766
<p>Hi!</p>
</p>
<p>I'm intending to use Intel mkl with my FORTRAN90 routines to particularly solve a linear system of equations. The coefficient matrix is large, unsymmetric and sparse (typical of Finite Element Method - FEM) and therefore I have selected the FGMRES subroutine from mkl.</p>
<p>I started with the example - fgmres_full_funct_f.f (attached) from the examples folder of the mkl installation. The first problem was that the example worked only if the same system was used. Changing a number in the EXPECTED_SOLUTION resulted in the solver to crash (i.e. gave no errors/warnings and kept running forever). I figured it was the pre-conditioner that was messing things up. Instead, using the example fgmres_no_precon_f.f(attached) made the situation slightly better. I could have custom definitions for matrix (CSR format) and expected solution and have the solver to converge. However, there still are unresolved issues:</p>
<p>1a. I cannot have control over the maximum number of iterations. I understand that ipar(5) sets the maximum no. of iterations, but the solver still seems to use the default min(150,n) value instead.</p>
<p>1b. I don't understand why expected number of iterations must be an input from the user. Why/how is the user suppose to predict the solver performance. (in the example (size=5*5 => N = 5), expected number of iterations = N = 5)</p>
<p>2. I cannot solve matrices bigger than 150*150. The norm which is expected to be less than 1E-14 jumps to the order of 1! I was just wondering if this <strong>150</strong> (size of the matrix) was related to ipar(5) = min(<strong>150</strong>,n)?</p>
<p>3. Also noticed that reducing dpar(1)=relative_tolerance to values less than 1e-6 made the examples that worked fine with dpar(1) = 1e-6, to return an error code -1.</p>
<p>4. Similarly, having dpar(2)=absolute_tolerance=1e-6, makes the solver retun an error code -1.</p>
<p>5. Kindly correct me if I'm wrong. My understanding is that every call to fgmres results in just 1 iteration. I would have expected that every call to fgmes would result in a number of internal sub-iterations (until the tolerance value set through dpar(1) and dpar(2) is satisfied).</p>
<p>6. Lastly, I see no change in the behaviour of the solver when using different values for dpar(15)=number of non-restarted iterations. Perhaps the documentation in this regard is not clear or has a typo/s. The documentation says:</p>
<p>ipar(15) :specifies the number of the non-restarted FGMRES iterations. To run the restarted version of the FGMRES method, assign the number of </p>
<p> iterations to ipar(15)before the restart. The default value ismin(150,n), which means that by default the non-restarted version of FGMRES</p>
<p> method is used. </p>
<p> My question: If the default is min(150,n), how is it non-restarted GMRES by default? Since the default value is 150 or n, a non-zero number gets assigned to ipar(15), in which case it becomes restarted GMRES? </p>
<p>Apologies for the long list of questions.</p>
<p>Any help-comment-advise on all/any of the questions is welcome and highly appreciated.</p>
<p>Many Thanks</p>
<p>Amar</p>
Thu, 14 Feb 13 08:26:23 -0800Amar K.368766