<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
Thanks for the hint. However, my system is pretty large (but sparse) and using -pc_type lu preconditioner throws memory related error, and according to it, the memory requirement is astronomical :(<br><br>[1]PETSC ERROR: Error reported by MUMPS in numerical factorization phase: Cannot allocate required memory 2022169721 megabytes<br><br>That amount of memory requirement just does not seem right, and I think it is lu that is creating the problem here, though I could be wrong.<br><br>If I use -pc_type none, and then do -pc_factor_mat_solver_package mumps, will it use direct solver(mumps)&nbsp; or some default iterative solver ? Sorry for my elementary question.<br><br>I was under the impression that by setting -pc_type to some preconditioner I was forcing it use iterative solver instead of using mumps. Now that you mentioned I can set -pc_type to any of the available preconditioners and still use the specified direct solver, that cleared up my confusion.<br><br><br>Thanks for your help.<br><br><br><div>&gt; Date: Fri, 9 Sep 2011 22:13:46 -0500<br>&gt; From: hzhang@mcs.anl.gov<br>&gt; To: petsc-users@mcs.anl.gov<br>&gt; Subject: Re: [petsc-users] Fwd: nonzero prescribed boundary condition<br>&gt; <br>&gt; amrit :<br>&gt; &gt;<br>&gt; &gt; If I run a program with the following runtime option (notice that I have not<br>&gt; &gt; included -pc_type lu ), will the program use mumps to solve the linear<br>&gt; &gt; system of equations directly, or does it&nbsp; run with default gmres iterative<br>&gt; &gt; solver? Why do we have to specify a preconditioner for a direct solver ?<br>&gt; &gt;<br>&gt; &gt; &nbsp;-pc_factor_mat_solver_package mumps<br>&gt; <br>&gt; You must include '-pc_type lu' to use mumps.<br>&gt; There are many preconditioners for solving linear system, lu is one of pcs,<br>&gt; and mumps is one of packages implement lu.<br>&gt; <br>&gt; Hong<br>&gt; <br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;&gt; From: bsmith@mcs.anl.gov<br>&gt; &gt;&gt; Date: Thu, 8 Sep 2011 14:02:09 -0500<br>&gt; &gt;&gt; To: petsc-users@mcs.anl.gov<br>&gt; &gt;&gt; Subject: Re: [petsc-users] Fwd: nonzero prescribed boundary condition<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Are you running with -ksp_converged_reason and -ksp_monitor_true_residual<br>&gt; &gt;&gt; to see if the iterative method is actually converging and how rapidly. Also<br>&gt; &gt;&gt; if you impose a tight tolerance on the iterative solver say with -ksp_rtol<br>&gt; &gt;&gt; 1.e-12 how much do the "solutions" differ, it should get smaller the smaller<br>&gt; &gt;&gt; you make this tolerance (in double precision you cannot expect to use a<br>&gt; &gt;&gt; tolerance less than 1.e-3 or 1.e-14)<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; If your "big" matrix is very complicated and comes from no well understood<br>&gt; &gt;&gt; simulation it may be that it is very ill-conditioned, in that case you<br>&gt; &gt;&gt; either need to understand the underlying equations real well to develop an<br>&gt; &gt;&gt; appropriate preconditioner or just use parallel direct solvers (which get<br>&gt; &gt;&gt; slow for very large problems but can handle more ill-conditioning.n To use<br>&gt; &gt;&gt; the MUMPS parallel direct solver you can configure PETSc with<br>&gt; &gt;&gt; --download-mumps --download-scalapack --download-blacs and run the program<br>&gt; &gt;&gt; with -pc_type lu -pc_factor_mat_solver_package mumps<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Barry<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; On Sep 8, 2011, at 12:57 PM, amrit poudel wrote:<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt; After running my simulation multiple times on a multiprocessor computer<br>&gt; &gt;&gt; &gt; I've just verified that using iterative solver (default gmres) in PETSc to<br>&gt; &gt;&gt; &gt; solve a linear system of equations ( Cx=b) with more than 2 processors<br>&gt; &gt;&gt; &gt; setting ALWAYS lead to erroneous result. Running identical code with<br>&gt; &gt;&gt; &gt; identical setting except for the number of processors ( set this to 2)<br>&gt; &gt;&gt; &gt; ALWAYS gives me correct result .<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; I am really not sure what is the point behind including iterative<br>&gt; &gt;&gt; &gt; solvers if they result into erroneous result on a multiprocessor computer.<br>&gt; &gt;&gt; &gt; The result I get from multiprocessor computer is a complete garbage, so I am<br>&gt; &gt;&gt; &gt; really not talking about small percentage of error here. Also, if somebody<br>&gt; &gt;&gt; &gt; could enlighten why the iterative solvers are error prone on multiprocessors<br>&gt; &gt;&gt; &gt; that will be highly appreciated.<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; I am very hopeful that there is a way around to this problem, because<br>&gt; &gt;&gt; &gt; PETSc is such a powerful and useful library that I really do not want to<br>&gt; &gt;&gt; &gt; give up on this and start something else from scratch.<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; Would you think that a DIRECT SOLVER would circumvent this problem? My<br>&gt; &gt;&gt; &gt; problem is that I have a very large system of equations and the size of a<br>&gt; &gt;&gt; &gt; sparse coefficient matrix is huge ( &gt; 1e+8). I assemble this matrix in<br>&gt; &gt;&gt; &gt; MATLAB, write to a binary file, and read it in PETSc. So I really need to be<br>&gt; &gt;&gt; &gt; able to solve this system of equations in a cluster of computers (which<br>&gt; &gt;&gt; &gt; inherently has multiprocessors and distributed memory setting). Does this<br>&gt; &gt;&gt; &gt; mean I am completely out of luck with PETSc's iterative solver package and<br>&gt; &gt;&gt; &gt; the only hope for me is the direct solver? I do have MUMPS downloaded and<br>&gt; &gt;&gt; &gt; compiled with PETSc, so I will give that a try and see what results I<br>&gt; &gt;&gt; &gt; obtain, but I am really surprised that iterative solvers are no good in a<br>&gt; &gt;&gt; &gt; large multiprocessor settings.<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; Any insights, suggestions/advice will be highly appreciated.<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; Thanks.<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; PS (I can attach my entire code, plots that compare the results obtained<br>&gt; &gt;&gt; &gt; by solving Cx=b in 2 processors vs 12 or 6 processors if any body wants to<br>&gt; &gt;&gt; &gt; take a look at it. I get garbage if I run iterative solver on 12 processors)<br>&gt; &gt;&gt;<br>&gt; &gt;<br></div>                                               </div></body>
</html>