<div dir="ltr">Gaurish,<div><br></div><div>I would suggest you spend some time reading the PETSc user&#39;s manual available here:�<a href="http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manual.pdf">http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manual.pdf</a></div>
<div><br></div><div>These two lines are incorrect. �</div><div><br></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 15.6px; border-collapse: collapse; ">ierr = VecCreateMPI(PETSC_COMM_WORLD,m,PETSC_DETERMINE,&amp;x);CHKERRQ(ierr);<br>
ierr = VecCreateMPI(PETSC_COMM_WORLD,m,PETSC_DETERMINE,&amp;y);CHKERRQ(ierr);</span></div><div><br><div class="gmail_quote">The problem, as indicated by Shri, is that you are determining your global size from your local size. �In the case of a single-process run, these two are the same. �For any other code, global_size = sum(local_size[]), corresponding to the local size on each process. �You can verify this by running with 3 processes, you will see a vector of length 15 instead of 10.</div>
<div class="gmail_quote"><br></div><div class="gmail_quote">A</div><div class="gmail_quote"><br></div><div class="gmail_quote">On Tue, Jan 18, 2011 at 10:23 AM, Gaurish Telang <span dir="ltr">&lt;<a href="mailto:gaurish108@gmail.com">gaurish108@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hmm,,,,,<br><br>Then how come the code worked perfectly on 1 processor? <br><br>Any way here is my code. <br><br>I cant really understand where I went wrong. Possibly with VecCreate(). I think when more than one processor is involved I am not using it correctly<br>

<br><br><br>static char help[] = &quot;&#39;*x.\n\<br>� -f &lt;input_file&gt; : file to load \n\n&quot;;<br><br>/* <br>� Include &quot;petscmat.h&quot; so that we can use matrices.<br>� automatically includes:<br>���� petscsys.h������ - base PETSc routines�� petscvec.h��� - vectors<br>

���� petscmat.h��� - matrices<br>���� petscis.h���� - index sets����������� petscviewer.h - viewers�������������� <br>*/<br>#include &quot;petscmat.h&quot;<br>#include &quot;petscvec.h&quot;<br>#include &quot;petscksp.h&quot;��� ��� /* For the iterative solvers */<br>

//extern PetscErrorCode LowRankUpdate(Mat,Mat,Vec,Vec,Vec,Vec,PetscInt);<br>//#include &lt;iostream&gt;<br>#include &lt;stdlib.h&gt;<br>#include &lt;stdio.h&gt;<br><br>#undef __FUNCT__<br>#define __FUNCT__ &quot;main&quot;<br>

int main(int argc,char **args)<br>{<br>� Mat������������������ U;��������������� /* matrix */<br>� PetscViewer���������� fd;�������������� /* viewer */<br>� char����������������� file[PETSC_MAX_PATH_LEN];���� /* input file name */<br>

� PetscErrorCode������� ierr;<br>� PetscTruth����������� flg;<br>� Vec������������������ x,y;<br>� PetscInt������������� i,n,m;<br>� PetscScalar���������� *xx;<br><br>� KSP ksp;<br>� PC pc;<br>� PetscMPIInt size;<br><br>
PetscInt num_iters;<br>
PetscReal rnorm;<br>KSPConvergedReason reason;<br><br>� PetscInitialize(&amp;argc,&amp;args,(char *)0,help);<br><br>� /* <br>���� Determine file from which we read the matrix<br><br>� */<br>� ierr = PetscOptionsGetString(PETSC_NULL,&quot;-f&quot;,file,PETSC_MAX_PATH_LEN-1,&amp;flg);CHKERRQ(ierr);<br>

� if (!flg) SETERRQ(1,&quot;Must indicate binary file with the -f option&quot;);<br><br><br>� /* <br>���� Open binary file.� Note that we use FILE_MODE_READ to indicate<br>���� reading from this file.<br>� */<br>� ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD,file,FILE_MODE_READ,&amp;fd);CHKERRQ(ierr);<br>

<br>� ierr = MatLoad(fd,MATMPIDENSE,&amp;U);CHKERRQ(ierr);<br>� ierr = PetscViewerDestroy(fd);CHKERRQ(ierr);<br><br>� ierr = MatGetSize(U,&amp;m,&amp;n);CHKERRQ(ierr);<br>� <br>� ierr = VecCreateMPI(PETSC_COMM_WORLD,m,PETSC_DETERMINE,&amp;x);CHKERRQ(ierr);<br>

� <br>ierr = VecCreateMPI(PETSC_COMM_WORLD,m,PETSC_DETERMINE,&amp;y);CHKERRQ(ierr);<br>�ierr=MatView(U,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr); <br><br>�//ierr=MatView(U,PETSC_VIEWER_DRAW_WORLD);CHKERRQ(ierr);<br>/* -------------------------------------------------------------------------------------- */<br>

�ierr=VecSet(x,1);CHKERRQ(ierr);<br><br>ierr = VecView(x,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);<br>/* ------------------------------------------------------------------------------------ */<br>ierr = KSPCreate(PETSC_COMM_WORLD, &amp;ksp); CHKERRQ(ierr);<br>

��� ierr = KSPSetType(ksp, KSPCGNE); CHKERRQ(ierr);<br>��� ierr = KSPSetOperators(ksp, U, U, DIFFERENT_NONZERO_PATTERN); CHKERRQ(ierr);<br>��� ierr = KSPSetFromOptions(ksp); CHKERRQ(ierr);<br><br>��� ierr = KSPSolve(ksp, x, y); CHKERRQ(ierr);<br>

��� <br>��� ierr = KSPGetIterationNumber(ksp, &amp;num_iters); CHKERRQ(ierr);<br><br><br>��� ierr = KSPGetResidualNorm(ksp, &amp;rnorm); CHKERRQ(ierr);<br><br>��� <br>��� ierr = KSPGetConvergedReason(ksp, &amp;reason); CHKERRQ(ierr);<br>

<br>��� printf (&quot;KSPGetIterationNumber %i \n &quot;, num_iters);<br>��� printf(&quot;KSPGetResidualNorm %f \n&quot; , rnorm );<br>��� //��� ��� printf(&quot;KSPConvergedReason %f \n &quot;,reason);<br><br>�ierr=VecView(y,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr); <br>

<br>� /* <br>���� Free work space.� All PETSc objects should be destroyed when they<br>���� are no longer needed.<br>� */<br>� ierr = MatDestroy(U);CHKERRQ(ierr);<br>� ierr = VecDestroy(x);CHKERRQ(ierr);<br>�� ierr = VecDestroy(y);CHKERRQ(ierr);<br>

� ierr = PetscFinalize();CHKERRQ(ierr);<br>� return 0;<div><div></div><div class="h5"><br>}<br><br><br><br><br><br>� <br><br><div class="gmail_quote">On Mon, Jan 17, 2011 at 11:56 PM, Gaurish Telang <span dir="ltr">&lt;<a href="mailto:gaurish108@gmail.com" target="_blank">gaurish108@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">Hi,<br><br>I am trying to solve a linear system where Ay=x and A is a 5x5 matrix stored in a binary file called &#39;square&#39; and x=[1;1;1;1;1]<br>

<br>I am trying to display the matrix A, and the vectors x(rhs)� and y(soln) in that order to standard output.� <br>
<br>On running my code on a single processor the answer returned is accurate. But on using 2 processors I get weird error messages PART of which says� <br>
<br>[0]PETSC ERROR: [1]PETSC ERROR: --------------------- Error Message ------------------------------------<br>
[1]PETSC ERROR: Nonconforming object sizes!<br>
[1]PETSC ERROR: Mat mat,Vec x: global dim 5 10!<br><br>Also somehow the vector x gets displayed TWICE when run on two processes.� A however gets displayed ONCE (as it should!!)<br><br><br>I am attaching the output I get when I run on 1 process and the when I run the same code on 2 processes.<br>


please let me know where I could be going wrong. <br><br>(1)<br><br>This is what I get on running on ONE process:� (Here system is solved successfully)<br><br>gaurish108@gaurish108-laptop:~/Desktop$ $PETSC_DIR/$PETSC_ARCH/bin/mpiexec -n 1 ./ex4 -f square<br>


<br>1.5761308167754828e-01 1.4188633862721534e-01 6.5574069915658684e-01 7.5774013057833345e-01 7.0604608801960878e-01 <br>9.7059278176061570e-01 4.2176128262627499e-01 3.5711678574189554e-02 7.4313246812491618e-01 3.1832846377420676e-02 <br>


9.5716694824294557e-01 9.1573552518906709e-01 8.4912930586877711e-01 3.9222701953416816e-01 2.7692298496088996e-01 <br>4.8537564872284122e-01 7.9220732955955442e-01 9.3399324775755055e-01 6.5547789017755664e-01 4.6171390631153941e-02 <br>


8.0028046888880011e-01 9.5949242639290300e-01 6.7873515485777347e-01 1.7118668781156177e-01 9.7131781235847536e-02 <br>Process [0]<br>1<br>1<br>1<br>1<br>1<br>KSPGetIterationNumber 5 <br>�KSPGetResidualNorm 0.000000 <br>

Process [0]<br>
-0.810214<br>2.33178<br>-1.31131<br>1.09323<br>1.17322<br>gaurish108@gaurish108-laptop:~/Desktop$ <br><br>%--------------------------------------------------------------------<br>This is what I get on running on TWO processes:<br>


<br>(2)<br><br>gaurish108@gaurish108-laptop:~/Desktop$ $PETSC_DIR/$PETSC_ARCH/bin/mpiexec -n 2 ./ex4 -f square<br>1.5761308167754828e-01 1.4188633862721534e-01 6.5574069915658684e-01 7.5774013057833345e-01 7.0604608801960878e-01 <br>


9.7059278176061570e-01 4.2176128262627499e-01 3.5711678574189554e-02 7.4313246812491618e-01 3.1832846377420676e-02 <br>9.5716694824294557e-01 9.1573552518906709e-01 8.4912930586877711e-01 3.9222701953416816e-01 2.7692298496088996e-01 <br>


4.8537564872284122e-01 7.9220732955955442e-01 9.3399324775755055e-01 6.5547789017755664e-01 4.6171390631153941e-02 <br>8.0028046888880011e-01 9.5949242639290300e-01 6.7873515485777347e-01 1.7118668781156177e-01 9.7131781235847536e-02 <br>


Process [0]<br>1<br>1<br>1<br>1<br>1<br>Process [1]<br>1<br>1<br>1<br>1<br>1<br>[0]PETSC ERROR: [1]PETSC ERROR: --------------------- Error Message ------------------------------------<br>[1]PETSC ERROR: Nonconforming object sizes!<br>


[1]PETSC ERROR: Mat mat,Vec x: global dim 5 10!<br>[1]PETSC ERROR: ------------------------------------------------------------------------<br>[1]PETSC ERROR: Petsc Release Version 3.1.0, Patch 5, Mon Sep 27 11:51:54 CDT 2010<br>


[1]PETSC ERROR: See docs/changes/index.html for recent updates.<br>[1]PETSC ERROR: See docs/faq.html for hints about trouble shooting.<br>[1]PETSC ERROR: --------------------- Error Message ------------------------------------<br>


[0]PETSC ERROR: Nonconforming object sizes!<br>[0]PETSC ERROR: Mat mat,Vec x: global dim 5 10!<br>[0]PETSC ERROR: See docs/index.html for manual pages.<br>[1]PETSC ERROR: ------------------------------------------------------------------------<br>


[1]PETSC ERROR: ./ex4 on a linux-gnu named gaurish108-laptop by gaurish108 Mon Jan 17 23:49:18 2011<br>[1]PETSC ERROR: Libraries linked from /home/gaurish108/Desktop/ResearchMeetings/SUPERPETS/petsc-3.1-p5/linux-gnu-c-debug/lib<br>


[1]PETSC ERROR: Configure run at Sat Nov 13 20:34:38 2010<br>[1]PETSC ERROR: Configure options --with-cc=gcc --with-fc=gfortran --download-f-blas-lapack=1 --download-mpich=1 --download-superlu_dist=1 --download-parmetis=1 --with-superlu_dist=1 --with-parmetis=1<br>


[1]PETSC ERROR: ------------------------------------------------------------------------<br>[1]PETSC ERROR: MatMultTranspose() line 1947 in src/mat/interface/matrix.c<br>[1]PETSC ERROR: KSPSolve_CGNE() line 103 in src/ksp/ksp/impls/cg/cgne/cgne.c<br>


[1]PETSC ERROR: KSPSolve() line 396 in src/ksp/ksp/interface/itfunc.c<br>[1]PETSC ERROR: main() line 78 in src/mat/examples/tutorials/ex4.c<br>application called MPI_Abort(MPI_COMM_WORLD, 60) - process 1[cli_1]: aborting job:<br>


application called MPI_Abort(MPI_COMM_WORLD, 60) - process 1<br>[0]0:Return code = 0, signaled with Interrupt<br>[0]1:Return code = 60<br>gaurish108@gaurish108-laptop:~/Desktop$ <br><br><br><br><br><br><br><br><br><br><br>


<br><br><br><br><br><br><br>
</blockquote></div><br>
</div></div></blockquote></div><br></div></div>