Ok, I spent a long time trying to install SuperLU_DIST and MUMPS, but so far 
with no luck. It took a long time for every ./configure I made. And it kept on 
complaining about "UNABLE to CONFIGURE with GIVEN OPTIONS" each time for this 
and that package.

And the latest one I got was:

[d3m956 at olympus petsc-dev.4.17.13]$ ./configure --with-scalar-type=complex 
--with-clanguage=C++ PETSC_ARCH=arch-complex --with-fortran-kernels=generic 
--download-superlu_dist --download-mumps 
--with-scalapack-dir=/share/apps/modules/Modules/3.2.8/modulefiles/development/tools/scalapack/
 --download-parmetis --download-metis 
--with-CMake-dir=/share/apps/modules/Modules/3.2.8/modulefiles/development/tools/cmake
===============================================================================
             Configuring PETSc to compile on your system
===============================================================================
TESTING: configureLibrary from 
PETSc.packages.metis(config/BuildSystem/config/package.py:464)          
*******************************************************************************
         UNABLE to CONFIGURE with GIVEN OPTIONS    (see configure.log for 
details):
-------------------------------------------------------------------------------
CMake > 2.5 is needed to build METIS
*******************************************************************************

Can you see anything wrong with my configuration command?

Thanks,
Shuangshuang


-----Original Message-----
From: petsc-users-bounces at mcs.anl.gov 
[mailto:[email protected]] On Behalf Of Barry Smith
Sent: Wednesday, April 17, 2013 2:49 PM
To: PETSc users list
Subject: Re: [petsc-users] ksp for AX=B system


On Apr 17, 2013, at 1:53 PM, "Jin, Shuangshuang" <Shuangshuang.Jin at pnnl.gov> 
wrote:

> Hello, Barry, I got a new question here.
> 
> I have integrated the AX=B solver into my code using the example from 
> ex125.c. The only major difference between my code and the example is the 
> input matrix. 
> 
> In the example ex125.c, the A matrix is created by loading the data from a 
> binary file. In my code, I passed in the computed A matrix and the B matrix 
> as arguments to a user defined solvingAXB() function:
> 
> static PetscErrorCode solvingAXB(Mat A, Mat B, PetscInt n, PetscInt 
> nrhs, Mat X, const int me);
> 
> I noticed that A has to be stored as an MATAIJ matrix and the B as a MATDENSE 
> matrix. So I converted their storage types inside the solvingAXB as below 
> (They were MPIAIJ type before):

   Note that MATAIJ is MATMPIAIJ when rank > 1 and MATSEQAIJ when rank == 1.  

> 
>  ierr = MatConvert(A, MATAIJ, MAT_REUSE_MATRIX, &A); // A has to be MATAIJ 
> for built-in PETSc LU!
>  MatView(A, PETSC_VIEWER_STDOUT_WORLD);
> 
>  ierr = MatConvert(B, MATDENSE, MAT_REUSE_MATRIX, &B); // B has to be a 
> SeqDense matrix!
>  MatView(B, PETSC_VIEWER_STDOUT_WORLD);
> 
> With this implementation, I can run the code with expected results when 1 
> processor is used. 
> 
> However, when I use 2 processors, I get a run time error which I guess is 
> still somehow related to the matrix format but cannot figure out how to fix 
> it. Could you please take a look at the following error message?

    PETSc doesn't have a parallel LU solver, you need to install PETSc with 
SuperLU_DIST or MUMPS (preferably both) and then pass in one of those names 
when you call MatGetFactor().

   Barry

> 
> [d3m956 at olympus ss08]$ mpiexec -n 2 dynSim -i 3g9b.txt Matrix Object: 
> 1 MPI processes
>  type: mpiaij
> row 0: (0, 0 - 16.4474 i) (3, 0 + 17.3611 i) row 1: (1, 0 - 8.34725 i) 
> (7, 0 + 16 i) row 2: (2, 0 - 5.51572 i) (5, 0 + 17.0648 i) row 3: (0, 
> 0 + 17.3611 i) (3, 0 - 39.9954 i) (4, 0 + 10.8696 i) (8, 0 + 11.7647 
> i) row 4: (3, 0 + 10.8696 i) (4, 0.934 - 17.0633 i) (5, 0 + 5.88235 i) 
> row 5: (2, 0 + 17.0648 i) (4, 0 + 5.88235 i) (5, 0 - 32.8678 i) (6, 0 
> + 9.92063 i) row 6: (5, 0 + 9.92063 i) (6, 1.03854 - 24.173 i) (7, 0 + 
> 13.8889 i) row 7: (1, 0 + 16 i) (6, 0 + 13.8889 i) (7, 0 - 36.1001 i) 
> (8, 0 + 6.21118 i) row 8: (3, 0 + 11.7647 i) (7, 0 + 6.21118 i) (8, 
> 1.33901 - 18.5115 i) Matrix Object: 1 MPI processes
>  type: mpidense
> 0.0000000000000000e+00 + -1.6447368421052630e+01i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + -8.3472454090150254e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + -5.5157198014340878e+00i
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 
> 0.0000000000000000e+00 + 0.0000000000000000e+00i 0.0000000000000000e+00 + 
> 0.0000000000000000e+00i PETSC LU:
> [0]PETSC ERROR: --------------------- Error Message 
> ------------------------------------
> [0]PETSC ERROR: No support for this operation for this object type!
> [0]PETSC ERROR: Matrix format mpiaij does not have a built-in PETSc LU!
> [0]PETSC ERROR: 
> ----------------------------------------------------------------------
> -- [0]PETSC ERROR: Petsc Development HG revision: 
> 6e0ddc6e9b6d8a9d8eb4c0ede0105827a6b58dfb  HG Date: Mon Mar 11 22:54:30 
> 2013 -0500 [0]PETSC ERROR: See docs/changes/index.html for recent updates.
> [0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
> [0]PETSC ERROR: See docs/index.html for manual pages.
> [0]PETSC ERROR: 
> ----------------------------------------------------------------------
> -- [0]PETSC ERROR: dynSim on a arch-complex named olympus.local by 
> d3m956 Wed Apr 17 11:38:12 2013 [0]PETSC ERROR: Libraries linked from 
> /pic/projects/ds/petsc-dev/arch-complex/lib
> [0]PETSC ERROR: Configure run at Tue Mar 12 14:32:37 2013 [0]PETSC 
> ERROR: Configure options --with-scalar-type=complex 
> --with-clanguage=C++ PETSC_ARCH=arch-complex 
> --with-fortran-kernels=generic [0]PETSC ERROR: 
> ----------------------------------------------------------------------
> -- [0]PETSC ERROR: MatGetFactor() line 3949 in 
> src/mat/interface/matrix.c [0]PETSC ERROR: solvingAXB() line 880 in 
> "unknowndirectory/"reducedYBus.C End!
> [1]PETSC ERROR: 
> ----------------------------------------------------------------------
> -- [1]PETSC ERROR: Caught signal number 15 Terminate: Somet process 
> (or the batch system) has told this process to end [1]PETSC ERROR: Try 
> option -start_in_debugger or -on_error_attach_debugger [1]PETSC ERROR: 
> or see 
> http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind[1]PETSC 
> ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X to 
> find memory corruption errors [1]PETSC ERROR: likely location of 
> problem given in stack below [1]PETSC ERROR: ---------------------  
> Stack Frames ------------------------------------
> [1]PETSC ERROR: Note: The EXACT line numbers in the stack are not available,
> [1]PETSC ERROR:       INSTEAD the line number of the start of the function
> [1]PETSC ERROR:       is given.
> [1]PETSC ERROR: [1] PetscSleep line 35 src/sys/utils/psleep.c [1]PETSC 
> ERROR: [1] PetscTraceBackErrorHandler line 172 
> src/sys/error/errtrace.c [1]PETSC ERROR: [1] PetscError line 361 
> src/sys/error/err.c [1]PETSC ERROR: [1] MatGetFactor line 3932 
> src/mat/interface/matrix.c [1]PETSC ERROR: --------------------- Error 
> Message ------------------------------------
> [1]PETSC ERROR: Signal received!
> [1]PETSC ERROR: 
> ----------------------------------------------------------------------
> -- [1]PETSC ERROR: Petsc Development HG revision: 
> 6e0ddc6e9b6d8a9d8eb4c0ede0105827a6b58dfb  HG Date: Mon Mar 11 22:54:30 
> 2013 -0500 [1]PETSC ERROR: See docs/changes/index.html for recent updates.
> [1]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
> [1]PETSC ERROR: See docs/index.html for manual pages.
> [1]PETSC ERROR: 
> ----------------------------------------------------------------------
> -- [1]PETSC ERROR: dynSim on a arch-complex named olympus.local by 
> d3m956 Wed Apr 17 11:38:12 2013 [1]PETSC ERROR: Libraries linked from 
> /pic/projects/ds/petsc-dev/arch-complex/lib
> [1]PETSC ERROR: Configure run at Tue Mar 12 14:32:37 2013 [1]PETSC 
> ERROR: Configure options --with-scalar-type=complex 
> --with-clanguage=C++ PETSC_ARCH=arch-complex 
> --with-fortran-kernels=generic [1]PETSC ERROR: 
> ----------------------------------------------------------------------
> -- [1]PETSC ERROR: User provided function() line 0 in unknown 
> directory unknown file
> ----------------------------------------------------------------------
> ----
> 
> Thanks,
> Shuangshuang
> 
> 
> -----Original Message-----
> From: petsc-users-bounces at mcs.anl.gov 
> [mailto:petsc-users-bounces at mcs.anl.gov] On Behalf Of Barry Smith
> Sent: Tuesday, April 16, 2013 5:50 PM
> To: PETSc users list
> Subject: Re: [petsc-users] ksp for AX=B system
> 
> 
>  Shuangshuang
> 
>     This is what I was expecting, thanks for the confirmation. For these size 
> problems you definitely want to use a direct solver (often parallel but not 
> for smaller matrices) and solve multiple right hand sides. This means you 
> actually will not use the KSP solver that is standard for most PETSc work, 
> instead you will work directly with the MatGetFactor(), MatGetOrdering(), 
> MatLUFactorSymbolic(), MatLUFactorNumeric(), MatMatSolve() paradigm where the 
> A matrix is stored as an MATAIJ matrix and the B (multiple right hand side) 
> as a MATDENSE matrix. 
> 
>   An example that displays this paradigm is 
> src/mat/examples/tests/ex125.c
> 
>   Once you have something running of interest to you we would like to work 
> with you to improve the performance, we have some "tricks" we haven't yet 
> implemented to make these solvers much faster than they will be by default. 
> 
>   Barry
> 
> 
> 
> On Apr 16, 2013, at 7:38 PM, "Jin, Shuangshuang" <Shuangshuang.Jin at 
> pnnl.gov> wrote:
> 
>> Hi, Barry, thanks for your prompt reply.
>> 
>> We have various size problems, from (n=9, m=3), (n=1081, m = 288), to 
>> (n=16072, m=2361) or even larger ultimately. 
>> 
>> Usually the dimension of the square matrix A, n is much larger than the 
>> column dimension of B, m.
>> 
>> As you said, I'm using the loop to deal with the small (n=9, m=3) case. 
>> However, for bigger problem, I do hope there's a better approach.
>> 
>> This is a power flow problem. When we parallelized it in OpenMP previously, 
>> we just parallelized the outside loop, and used a direct solver to solve it.
>> 
>> We are now switching to MPI and like to use PETSc ksp solver to solve it in 
>> parallel. However, I don't know what's the best ksp solver I should use 
>> here? Direct solver or try a preconditioner?
>> 
>> I appreciate very much for your recommendations. 
>> 
>> Thanks,
>> Shuangshuang
>> 
>> 

Reply via email to