Recent posts
https://software.intel.com/en-us/recent/541116
enquestion on PARDISO iterative solver
https://software.intel.com/en-us/forums/topic/393174
<p>Hello,</p>
<p>I can successfully use the PARDISO to solve my problem with iparm(4)=0. However when I try to use it as an iterative solver by setting iparm(4)=61 and keepping all the other parameters the same, it gives error. I turn on msglvl=1 to check the detail, and it says:</p>
<p>---------------------------------------------------------------------------------------------------------------------------------</p>
<p>=== PARDISO is running in In-Core mode, because iparam(60)=0 ===<br />Percentage of computed non-zeros for LL^T factorization<br /> 37 % 87 % 100 % <br />*** Error in PARDISO ( numerical_factorization) error_num= -1<br />*** Error in PARDISO: cgs error iparam(20) -22</p>
<p>=== PARDISO: solving a complex nonsymetric system ===<br />The local (internal) PARDISO version is : 103911000<br />1-based array indexing is turned ON<br />PARDISO double precision computation is turned ON<br />Minimum degree algorithm at reorder step is turned ON<br />Single-level factorization algorithm is turned ON</p>
<p>Summary: ( starting phase is reordering, ending phase is solution )<br />================</p>
<p>Times:<br />======<br />Time spent in calculations of symmetric matrix portrait (fulladj): 0.000010 s<br />Time spent in reordering of the initial matrix (reorder) : 0.000014 s<br />Time spent in symbolic factorization (symbfct) : 0.000065 s<br />Time spent in copying matrix to internal data structure (A to LU): 0.000000 s<br />Time spent in factorization step (numfct) : 0.000088 s<br />Time spent in iterative solver at solve step (cgs) : 0.000259 s cgx iterations -22</p>
<p>Time spent in allocation of internal data structures (malloc) : 0.002747 s<br />Time spent in additional calculations : 0.000025 s<br />Total time spent : 0.003208 s</p>
<p>Statistics:<br />===========<br />< Parallel Direct Factorization with number of processors: > 6<br />< Hybrid Solver PARDISO with CGS/CG Iteration ></p>
<p>< Linear system Ax = b ><br /> number of equations: 4<br /> number of non-zeros in A: 8<br /> number of non-zeros in A (%): 50.000000</p>
<p> number of right-hand sides: 4</p>
<p>< Factors L and U ><br />< Preprocessing with multiple minimum degree, tree height ><br />< Reduction for efficient parallel factorization ><br /> number of columns for each panel: 128<br /> number of independent subgraphs: 0<br /> number of supernodes: 2<br /> size of largest supernode: 2<br /> number of non-zeros in L: 8<br /> number of non-zeros in U: 1<br /> number of non-zeros in L+U: 9<br /> gflop for the numerical factorization: 0.000000</p>
<p> gflop/s for the numerical factorization: 0.000364<br />---------------------------------------------------------------------------------------------------------------------------------</p>
<p>In this example I use phase=13. I also tried to use phase=11 with iparm(4)=0 and then followed by phase=23 with iparm(4)=61. It gives similar error message.</p>
<p>For the above example, the other non zero iparms I use is:</p>
<p>iparm(1)=1</p>
<p>iparm(3)=1</p>
<p>iparm(10)=13</p>
<p>. I also tried to use the iparm in the example file pardiso_unsym_complex_f.f , but similar error message appears.</p>
<p>How should I modified the code to make the iterative solver works? Thank you.</p>
<p>Best regards,</p>
<p>CC</p>
Fri, 31 May 13 00:31:26 -0700chen146393174A quick question on using PARDISO as iterative solver
https://software.intel.com/en-us/forums/topic/393170
<p>Hello,</p>
<p>I am trying to follow the example described in this thread to use PARDISO as an iterative solver,</p>
<p><a href="http://software.intel.com/en-us/forums/topic/326721">http://software.intel.com/en-us/forums/topic/326721</a></p>
<p>For now my code works fine if I put iparm(4)=0 and phase=13 for all matrices, but when I modify the code to use the template above, error message appears sometimes (error=-1 in the numerical factorization phase), so I think I must did something wrong. To clarify it, is it correct for me to do the following for A_i x_i = b_i, where the right-hand-side b_i is determined by x_i through some other subroutines (it is a self-consistent calculation),</p>
<p>----------------------------</p>
<p>pt=0<br />call PARDISO (phase=13, iparm(4)=0, A_1, pt, maxfct, mnum=1, x_1, b_1)</p>
<p>do while ( error > tolerance )</p>
<p> do i = 1, maxfct<br /> call PARDISO (phase=23, iparm(4)=61, A_i, pt, maxfct, mnum=i, x_i, b_i)<br /> end do</p>
<p> call subroutine to calculate new b_i from the x_i, and calculate the error</p>
<p>end do</p>
<p> call PARDISO (phase=-1, iparm(4)=61, A_1, pt, maxfct, mnum=1, x_1, b_1)</p>
<p>----------------------------</p>
<p>Just for reference, the other iparm parameters I am using are (these should be the same as the example file pardiso_unsym_complex_f.f ):</p>
<p> iparm(1) = 1<br /> iparm(2) = 2<br /> iparm(3) = 1 <br /> iparm(8) = 2<br /> iparm(10) = 13 <br /> iparm(11) = 1 <br /> iparm(13) = 1 <br /> iparm(18) = -1<br /> iparm(19) = -1</p>
<p>, and others are set to be zero. The matrix type is mtype=3 (complex strucuturely-symmetric)</p>
<p>By the way, I can not see any example code for using Pardiso as iterative solver in the MKL package. The examples codes I found are using Pardiso as direct solver. Did I missout something or there is no example code for this kind of applications? Thank you and I appreciate it.</p>
<p>Best regards,</p>
<p>CC</p>
</p>
Thu, 30 May 13 21:34:05 -0700chen146393170A question on solving many similar matrices with PARDISO
https://software.intel.com/en-us/forums/topic/391252
<p>Hello,</p>
<p>I have a quick question about solving many structurely similar sparse matrices with PARDISO.</p>
<p>I particular, if I have many linear systems A_i x_i = b_i , where i=1,...,N and A_i have the same sparse structure.</p>
<p>I know that only one pointer array pt is needed for solving all of the systems, and I can solve them by the following pseudo code:</p>
<p>-----------------------------------------------------</p>
<p>do i=1,N</p>
<p>PARDISO phase 1 (A_i ,pt)</p>
<p>PARDISO phase 2 (A_i, pt)</p>
<p>PARDISO phase 3 (A_i,b_i,pt)</p>
<p>end do</p>
<p>-----------------------------------------------------</p>
<p>My question is that if it is OK to pull out (and if it is benefitial to do so) the phase 1 and/or phase 2 of PARDISO out of the do loop. That is,</p>
<p>-----------------------------------------------------</p>
<p>PARDISO phase 1 (A_1 ,pt)</p>
<p>do i=1,N</p>
<p>PARDISO phase 2 (A_i, pt)</p>
<p>PARDISO phase 3 (A_i,b_i,pt)</p>
<p>end do</p>
<p>-----------------------------------------------------</p>
<p>or,</p>
<p>-----------------------------------------------------</p>
<p>PARDISO phase 1 (A_1 ,pt)</p>
<p>PARDISO phase 2 (A_1, pt)</p>
<p>do i=1,N</p>
<p>PARDISO phase 3 (A_i,b_i,pt)</p>
<p>end do</p>
<p>-----------------------------------------------------</p>
<p>I have tried all the three possibility above, and it seems like all of them give the same (correct) result. The computational time needed are also almost the same. This experimental result seems to be weired to me, because my intuition is that only the phase 1 (symbolic factorization) can be done once for all the matrices. The phase 2 (numerical factorization) should be done independently for each matrix. I can not find an explanation nor example in the MKL package/manual to tell me the proper way to do this.</p>
<p>Thank you.</p>
</p>
Sun, 28 Apr 13 20:30:09 -0700chen146391252Pointer bounds remapping problem
https://software.intel.com/en-us/forums/topic/271350
<p>Hello,</p>
<p>This is a simple program using pointer bounds remapping:</p>
<p>---------------------------------</p>
<p>program main<br />implicit none</p>
<p>real, target :: x2(4,2)<br />real, pointer :: a(:,:)</p>
<p>x2=0.0<br />x2(1,1)=1.0</p>
<p>a(1:2,1:2)=>x2(:,2)</p>
<p>write(*,*) x2(:,2)<br />write(*,*) a</p>
<p>end program</p>
<p>------------------------------</p>
<p>I compiled this by Intel Fortran Composer XE ( ifort version 12.1.3 ) on Ubuntu 10.04 and it gives me the following result:</p>
<p>0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00<br /> 1.000000 0.0000000E+00 0.0000000E+00 0.0000000E+00</p>
<p>which looks weired to me since I thought the 2nd row should be the same as the 1st row. </p>
<p>Am I doing something wrong or is this a bug? Thank you and I appreciate your help.</p>
Fri, 18 May 12 02:34:56 -0700chen146271350