[petsc-users] questions regarding simple petsc matrix vector operation

Zhang, Junchao jczhang at mcs.anl.gov
Wed Apr 24 22:36:35 CDT 2019


How many MPI ranks do you use? The following line is suspicious.  I guess you do not want a vector of global length 1.
66   VecSetSizes(b,PETSC_DECIDE,1);

--Junchao Zhang


On Wed, Apr 24, 2019 at 4:14 PM Karl Lin via petsc-users <petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>> wrote:
Hi, there

I have been trying to get a simple program run with the following code:

 12 int main(int argc,char **args)
 13 {
 14   PetscErrorCode ierr;
 15   Mat            A;
 16   Mat           AT;
 17   Mat            N;
 18   char           name[1024];
 19   char           vname[1024];
 20   char           pass[1024];
 21   PetscBool      flg;
 22   Vec            b,x,u,Ab,Au;
 23   PetscViewer    viewer;                        /* viewer */
 24   PetscMPIInt    rank,size;
 25
 26   KSP            QRsolver;
 27   PC             pc;
 28   PetscInt       its;
 29   PetscReal      norm;
 30
 31   PetscInt       n1, n2, n3, np1, np2, np3, p, jj;
 32
 33   PetscInt       *cols, *dnz, *onz;
 34   PetscScalar    *vals;
 35
 36   ierr = PetscInitialize(&argc,&args,0,help);if (ierr) return ierr;
 37
 38   ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size);CHKERRQ(ierr);
 39   ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRQ(ierr);
 40
 41   PetscMalloc1(1, &dnz);
 42   PetscMalloc1(1, &onz);
 43
 44   dnz[0]=2;
 45   onz[0]=1;
 46
 47   MatCreateMPIAIJMKL(PETSC_COMM_WORLD, 1, 2, 1, 2, 2, dnz, 2, onz, &A); CHKERRQ(ierr);
 48
 49   PetscMalloc1(2, &cols);
 50   PetscMalloc1(2, &vals);
 51
 52   jj = rank;
 53   cols[0]=0; cols[1]=1;
 54   vals[0]=1.0;vals[1]=1.0;
 55
 56   MatSetValues(A, 1, &jj, 2, cols, vals, INSERT_VALUES);
 57
 58   MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY);
 59   MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY);
 60
 61   VecCreate(PETSC_COMM_WORLD,&x);
 62   VecSetSizes(x,PETSC_DECIDE,2);
 63   VecSetFromOptions(x);
 64
 65   VecCreate(PETSC_COMM_WORLD,&b);
 66   VecSetSizes(b,PETSC_DECIDE,1);
 67   VecSetFromOptions(b);
 68
 69   VecCreate(PETSC_COMM_WORLD,&u);
 70   VecSetSizes(u,PETSC_DECIDE,1);
 71   VecSetFromOptions(u);
 72
 73   VecSet(b, 2.0);
 74   VecSet(u, 0.0);
 75   VecSet(x, 0.0);
 76
 77   MatMult(A, x, u);
 78
 79   VecView(x, PETSC_VIEWER_STDOUT_WORLD);
 80   VecView(b, PETSC_VIEWER_STDOUT_WORLD);
 81   VecView(u, PETSC_VIEWER_STDOUT_WORLD);
 82
 83   VecAXPY(u,-1.0,b);

However, it always crashes at line 83 even with single process saying:
[0]PETSC ERROR: ------------------------------------------------------------------------
[0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation, probably memory access out of range
[0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
[0]PETSC ERROR: or see http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
[0]PETSC ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X to find memory corruption errors
[0]PETSC ERROR: configure using --with-debugging=yes, recompile, link, and run
[0]PETSC ERROR: to get more information on the crash.
[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
[0]PETSC ERROR: Signal received
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting.
[0]PETSC ERROR: Petsc Release Version 3.10.4, Feb, 26, 2019

I can't figure out why this would happen. The printout from VecView shows every vec value is correct. I will greatly appreciate any tips.

Regards,
Karl

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190425/54384d9d/attachment.html>


More information about the petsc-users mailing list