<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><DIV>Besides,I test several situations.<BR>When process=1(mpiexec -n 1),the results are right,compared with the true results.<BR>When process=2 or 5,both of the results are same.And from the tenth loop, it begins the strange error Ax!=b.<BR>When process=3 or 4,both of the results are same.And from the first loop,it begins the error.<BR>Thanks.<BR><BR></DIV>
<DIV></DIV>
<DIV id="divNeteaseMailCard"></DIV>
<DIV><BR></DIV>>At 2012-05-26 15:01:28,w_ang_temp <w_ang_temp@163.com> wrote:<BR>
<BLOCKQUOTE style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" id="isReplyContent">
<DIV style="LINE-HEIGHT: 1.7; FONT-FAMILY: arial; COLOR: #000000; FONT-SIZE: 14px">
<DIV>>Hello, Matt<BR>>   First,thanks for your help, and I have a new recognition of MPI. As you said(only part of a Vec is stored on each MPI process),I use >MPI_Send,MPI_Recv and MPI_Bcast to deal with it and get some right results.<BR>>   However,I have not yet fully solved this problem.The number of loops of the subroutine named PETSCSOLVE to solve Ax=b with PETSc is 20 >times.I print the results of each loop and find that the front 9 times are right. In the 10 time,there is a strange error: plug the result x into the >equation I find that Ax!=b. </DIV>
<DIV>>   The code and the A,x,b are shown below.So can you give me some hints? Thank you very much!<BR>>                                                        Jim<BR>>   (1)code<BR>>      call MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr)<BR>>      call VecView(b,PETSC_VIEWER_STDOUT_WORLD,ierr)<BR>>      call KSPSolve(ksp,b,x,ierr)<BR>>      call VecView(x,PETSC_VIEWER_STDOUT_WORLD,ierr)<BR>>   (2)Ax=b<BR>>  A:<BR>>  type: mpiaij<BR>> row 0: (0, 1)  (1, 0)  (2, 0)  (3, 0)  (4, 0)  (5, 0)  (6, 0)  (7, 0)  (8, 0) <BR>> row 1: (0, 0)  (1, 1)  (2, 0)  (3, 0)  (4, 0)  (5, 0)  (6, 0)  (7, 0)  (8, 0) <BR>> row 2: (0, 0)  (1, 0)  (2, -2e-06)  (3, -50)  (4, 0)  (5, 0)  (6, 0)  (7, -50)  (8, 0) <BR>> row 3: (0, 0)  (1, 0)  (2, -50)  (3, 1.36265e+07)  (4, 0)  (5, 0)  (6, 0)  (7, 1.23877e+06)  (8, 0) <BR>> row 4: (0, 0)  (1, 0)  (2, 0)  (3, 0)  (4, 1)  (5, 0)  (6, 0)  (7, 0)  (8, 0) <BR>> row 5: (0, 0)  (1, 0)  (2, 0)  (3, 0)  (4, 0)  (5, 1)  (6, 0)  (7, 0)  (8, 0) <BR>> row 6: (0, 0)  (1, 0)  (2, 0)  (3, 0)  (4, 0)  (5, 0)  (6, 1)  (7, 0)  (8, 0) <BR>> row 7: (0, 0)  (1, 0)  (2, -50)  (3, 1.23877e+06)  (4, 0)  (5, 0)  (6, 0)  (7, 1.36265e+07)  (8, 0) <BR>> row 8: (0, 0)  (1, 0)  (2, 0)  (3, 0)  (4, 0)  (5, 0)  (6, 0)  (7, 0)  (8, 1) <BR>>  b:<BR>>  type: mpi<BR>> Process [0]<BR>> 0<BR>> 0<BR>> -0.75<BR>> 96949.5<BR>> 0<BR>> Process [1]<BR>> 0<BR>> -0.015<BR>> 96949.5<BR>> -0.015<BR> > x:<BR>  >type: mpi<BR> >Process [0]<BR>> 0<BR>> 0<BR>> 1167.84<BR>> 0.00819383<BR> >0<BR> >Process [1]<BR> >0<BR>> -0.00824055<BR>> 0.00390865<BR>> -0.00824055<BR><BR><BR></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV><BR></DIV>>ÔÚ 2012-05-22 19:33:10£¬"Matthew Knepley" <<A href="mailto:knepley@gmail.com">knepley@gmail.com</A>> Ð´µÀ£º<BR>
<BLOCKQUOTE style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" id="isReplyContent">>On Tue, May 22, 2012 at 5:17 AM, w_ang_temp <SPAN dir="ltr"><<A href="mailto:w_ang_temp@163.com" target="_blank">w_ang_temp@163.com</A>></SPAN> wrote:<BR>
<DIV class="gmail_quote">
<BLOCKQUOTE style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<DIV style="LINE-HEIGHT: 1.7; FONT-FAMILY: arial; FONT-SIZE: 14px">
<DIV>>Hello</DIV>
<DIV> >    I am a beginner of PETSc.I find the petsc-users lists is very useful, however I do not know how to ask a question in it. So can you tell me? >And below is what I want to ask.<BR> >   I am solving Ax=b with PETSc. And I only use it in a fortran subroutine to get x ,then the main function of my program use x to do other >things. The question is that: when the process is 1(mpiexec -n 1),the result of my program is ok, but when the process is more than 1 the > result is wrong.<BR></DIV></DIV></BLOCKQUOTE>
<DIV><BR></DIV>
<DIV>> "Wrong" is not an acceptable description. I suspect that you do not understand that only part of a Vec</DIV>
<DIV>> is stored on each MPI process. First, get the book Using MPI, and then read the PETSc manual</DIV>
<DIV>> section on vectors.</DIV>
<DIV><BR></DIV>
<DIV>  > Thanks,</DIV>
<DIV><BR></DIV>
<DIV>     > Matt</DIV>
<DIV> </DIV>
<BLOCKQUOTE style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<DIV style="LINE-HEIGHT: 1.7; FONT-FAMILY: arial; FONT-SIZE: 14px">
<DIV>>     So where could be wrong? Can you give me some hints on how I can debug? Thanks.</DIV>
<DIV>>                                   Jim</DIV></DIV></BLOCKQUOTE></DIV>> -- <BR>> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their > experiments lead.<BR>> -- Norbert Wiener<BR></BLOCKQUOTE></DIV><BR><BR><SPAN title="neteasefooter"><SPAN id="netease_mail_footer"></SPAN></SPAN></BLOCKQUOTE></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>