[petsc-users] MatAXPY Segmentation violation

Jed Brown jedbrown at mcs.anl.gov
Sat Dec 29 21:52:33 CST 2012


You might rather use MatDuplicate(similarity,MAT_DO_NOT_COPY_VALUES,&aux).

Can you try these?

1. using the debugger to get a stack trace
2. run in valgrind to check for memory errors
3. set up a test case so we can reproduce


On Sat, Dec 29, 2012 at 9:41 PM, Jelena Slivka <slivkaje at gmail.com> wrote:

> Hello,
>
> I am experiencing the strange behavior when calling the MatAXPY function.
> Here is my code:
> matrix similarity is a square matrix (n=m)
> I create the matrix aux that has all zero elements, except for the
> diagonal. The elements of the diagonal in matrix aux are sums of rows in
> matrix similarity.
>
>     MatSetFromOptions(similarity);
>     int n, m;
>     MatGetSize(similarity, &n, &m);
>
>     Vec tmp;
>     VecCreate(PETSC_COMM_WORLD, &tmp);
>     VecSetSizes(tmp, PETSC_DECIDE, n);
>     VecSetFromOptions(tmp);
>     MatGetRowSum(similarity, tmp);
>
>     Mat aux;
>     MatCreate(PETSC_COMM_WORLD, &aux);
>     MatSetSizes(aux, PETSC_DECIDE, PETSC_DECIDE, n, m);
>     MatSetFromOptions(aux);
>     MatSetUp(aux);
>     MatZeroEntries(aux);
>     MatDiagonalSet(aux, tmp, INSERT_VALUES);
>     VecDestroy(&tmp);
>
>     MatAXPY(aux, -1, similarity, DIFFERENT_NONZERO_PATTERN);
>
> If I execute this code using only one process I get the segmentation
> violation error:
>
> [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]PETSCERROR: or try
> http://valgrind.org on GNU/linux and Apple Mac OS X to find memory
> corruption errors
> [0]PETSC ERROR: likely location of problem given in stack below
> [0]PETSC ERROR: ---------------------  Stack Frames
> ------------------------------------
> [0]PETSC ERROR: Note: The EXACT line numbers in the stack are not
> available,
> [0]PETSC ERROR:       INSTEAD the line number of the start of the function
> [0]PETSC ERROR:       is given.
> [0]PETSC ERROR: [0] MatAXPYGetPreallocation_SeqAIJ line 2562
> src/mat/impls/aij/seq/aij.c
> [0]PETSC ERROR: [0] MatAXPY_SeqAIJ line 2587 src/mat/impls/aij/seq/aij.c
> [0]PETSC ERROR: [0] MatAXPY line 29 src/mat/utils/axpy.c
> [0]PETSC ERROR: --------------------- Error Message
> ------------------------------------
> [0]PETSC ERROR: Signal received!
>
> However, if I run the same code using two processes it runs ok and gives
> the good result.
> Could you please tell me what am I doing wrong?
> Grateful in advance
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20121229/b8d2c2e9/attachment.html>


More information about the petsc-users mailing list