[petsc-users] loosing preallocation information

Alexander Grayver agrayver at gfz-potsdam.de
Mon Mar 7 08:41:16 CST 2011


It works! Great, Matt.

I guess there is no other way to know all these small issues but to get 
all possible errors? :)

Jed, Matt, thank you a lot!

On 07.03.2011 15:35, Matthew Knepley wrote:
> On Mon, Mar 7, 2011 at 8:04 AM, Alexander Grayver 
> <agrayver at gfz-potsdam.de <mailto:agrayver at gfz-potsdam.de>> wrote:
>
>     Jed, but why do I get in line 3003 in src/mat/impls/aij/seq/aij.c
>     at all? As far as understand, if I don't pass nnz (NULL in C/C++
>     or PETSC_NULL in fortran) I have to avoid this loop in aij.c code.
>
>
> This is the problem. Fortran does not allow this kind of flexible 
> checking, so there are different kinds of "NULL"s. You
> need to pass PETSC_NULL_INTEGER for nnz.
>
>    Matt
>
>     I don't have much experience with valgrind. Could you provide me
>     with right parameters to run my code under valgrind?
>     Thanks a lot for your help.
>
>
>     On 07.03.2011 14:59, Jed Brown wrote:
>>
>>     Looks like a memory error. Best bet is to run in Valgrind.
>>
>>>     On Mar 7, 2011 5:52 AM, "Alexander Grayver"
>>>     <agrayver at gfz-potsdam.de <mailto:agrayver at gfz-potsdam.de>> wrote:
>>>
>>>     Hi Jed,
>>>
>>>     It's getting even stranger.
>>>
>>>     When I run this code under linux I've got error:
>>>
>>>     [0]PETSC ERROR: --------------------- Error Message
>>>     ------------------------------------
>>>     [0]PETSC ERROR: Argument out of range!
>>>     [0]PETSC ERROR: nnz cannot be greater than row length: local row
>>>     98 value 1455203639 rowlength 343!
>>>     [0]PETSC ERROR:
>>>     ------------------------------------------------------------------------
>>>     [0]PETSC ERROR: Petsc Release Version 3.1.0, Patch 7, Mon Dec 20
>>>     14:26:37 CST 2010
>>>     [0]PETSC ERROR: See docs/changes/index.html for recent updates.
>>>     [0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
>>>     [0]PETSC ERROR: See docs/index.html for manual pages.
>>>     [0]PETSC ERROR:
>>>     ------------------------------------------------------------------------
>>>     [0]PETSC ERROR:
>>>     /home/mt/agrayver/mt-soft/multiem/INV3D/_tiger/em_model on a
>>>     openmpi-i named glic by agrayver Mon Mar  7 14:49:43 2011
>>>     [0]PETSC ERROR: Libraries linked from
>>>     /panfs/panfs.gfz-hpcc.cluster/home/mt/agrayver/lib/petsc-3.1-p7/openmpi-intel-complex-debug/lib
>>>     [0]PETSC ERROR: Configure run at Fri Mar  4 12:43:58 2011
>>>     [0]PETSC ERROR: Configure options
>>>     --with-petsc-arch=openmpi-intel-complex-debug
>>>     --with-mpi-dir=/opt/mpi/intel/openmpi-1.4.2
>>>     --with-scalar-type=complex
>>>     --with-blas-lapack-dir=/opt/intel/Compiler/11.1/072/mkl/lib/em64t --with-precision=double
>>>     --with-x=0
>>>     [0]PETSC ERROR:
>>>     ------------------------------------------------------------------------
>>>     [0]PETSC ERROR: MatSeqAIJSetPreallocation_SeqAIJ() line 3003 in
>>>     src/mat/impls/aij/seq/aij.c
>>>     [0]PETSC ERROR: MatCreateSeqAIJ() line 2906 in
>>>     src/mat/impls/aij/seq/aij.c
>>>
>>>
>>>     Then I traced it under debugger both on Windows and Linux and
>>>     realized that it doesn't crash under Windows only by luck.
>>>
>>>     The call stack if the folowing:
>>>     [C] MatSeqAIJSetPreallocation_SeqAIJ, FP=7fffb4513880
>>>     [C] MatCreateSeqAIJ,     FP=7fffb4513900
>>>     [C] matcreateseqaij_,    FP=7fffb4513960
>>>     [F90] MODELING_MOD`modeling, FP=7fffb4517740
>>>
>>>     As far as I understand after debugging the problem is that nnz
>>>     in MatSeqAIJSetPreallocation isn't 0 and I go through this code:
>>>        if (nnz) {
>>>          for (i=0; i<B->rmap->n; i++) {
>>>            if (nnz[i] < 0) SETERRQ2(PETSC_ERR_ARG_OUTOFRANGE,"nnz
>>>     cannot be less than 0: local row %d value %d",i,nnz[i]);
>>>            if (nnz[i] > B->cmap->n)
>>>     SETERRQ3(PETSC_ERR_ARG_OUTOFRANGE,"nnz cannot be greater than
>>>     row length: local row %d value %d rowlength
>>>     %d",i,nnz[i],B->cmap->n);
>>>          }
>>>        }
>>>
>>>     But why is nnz nonzero? I passed PETSC_NULL. It seems like
>>>     macros CHKFORTRANNULLINTEGER  in matcreateseqaij_ should set it
>>>     to zero, but it doesn't.
>>>
>>>
>>>     Thanks.
>>>
>>>     On 06.03.2011 16:49, Jed Brown wrote:
>>>
>>>
>>>     >
>>>     > On Sun, Mar 6, 2011 at 07:39, Alexander Grayver
>>>     <agrayver at gfz-potsdam.de <mailto:agrayver at gfz-potsdam.de>> wrote:
>>>     >>
>>>     >> Hello,
>>>     >...
>>>
>
>
>
>
> -- 
> What most experimenters take for granted before they begin their 
> experiments is infinitely more interesting than any results to which 
> their experiments lead.
> -- Norbert Wiener

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20110307/63a2174b/attachment.htm>


More information about the petsc-users mailing list