[petsc-users] Fwd: Re: Problem with fortran version of ex29 in ksp

TAY wee-beng zonexo at gmail.com
Fri May 11 08:24:11 CDT 2012


Hi,

I have been using the GUI environment to do debugging so I am a bit 
reluctant to learn Valgrind as its outputs seems a bit daunting.  But I 
guess John is right. I've been spending these few days learning bit by bit.

I realised that the error occurs in computerhs, at:

*call DMDAVecRestoreArrayF90(da,b,array,ierr)*

==27464== Invalid write of size 8
==27464==    at 0x402835: computerhs_ (ex29f.F90:119)
==27464==  Address 0xfffffffffffffef0 is not stack'd, malloc'd or 
(recently) free'd
==27464==
[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: 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] DM user function line 0 unknownunknown
[0]PETSC ERROR: [0] DMComputeFunction line 2085 
/home/wtay/Codes/petsc-dev/src/dm/interface/dm.c
[0]PETSC ERROR: [0] KSPSetUp line 182 
/home/wtay/Codes/petsc-dev/src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: --------------------- Error Message 
------------------------------------
[0]PETSC ERROR: Signal received!

I have checked that "array" 's values are correct. This statement 
executed without problems in VS2008. If I replace the above with 
something like:

*call VecSet(b,Hy,ierr)*

Everything is fine in Linux.

Is there something wrong with *DMDAVecRestoreArrayF90*?

My code in the area is:

call 
DMDAGetCorners(da,xs,ys,PETSC_NULL_INTEGER,xm,ym,PETSC_NULL_INTEGER,ierr)

call DMDAVecGetArrayF90(da,b,array,ierr)

do j = ys,ys+ym-1

     do i = xs,xs+xm-1

         array(i,j) = exp(-(i*Hx)*(i*Hx)/nu)*exp(-(j*Hy)*(j*Hy)/nu)*Hx*Hy

     end do

end do

call DMDAVecRestoreArrayF90(da,b,array,ierr)

call VecAssemblyBegin(b,ierr)

call VecAssemblyEnd(b,ierr)


Yours sincerely,

TAY wee-beng


On 8/5/2012 9:41 PM, John Mousel wrote:
> TAY wee-bing,
>
> If you want to be a programmer that writes interesting and reliable 
> code, you need to be willing to use the tools of the trade. I can't 
> think of a bigger time-saver than Valgrind. I would suggest that you 
> learn to use it and use it a lot. I bet it will lead you to the root 
> of your problem pretty quickly.
>
> John
>
> On Tue, May 8, 2012 at 2:17 PM, TAY wee-beng <zonexo at gmail.com 
> <mailto:zonexo at gmail.com>> wrote:
>
>     Hi,
>
>     I compiled and run my code under visual studio 2008 with intel
>     fortran. Everything works ok.
>
>     However, when I tried to run the code in linux, I got the error as
>     below. The error happens when KSPSetUp(ksp,ierr) is called.
>
>     However, I am not able to print VecView or MatView to view if
>     there's any errors. Is there any recommendation for debugging? I
>     hope I do not need to valgrind if possible.
>
>     [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: 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] DM user function line 0 unknownunknown
>     [0]PETSC ERROR: [0] DMComputeFunction line 2085
>     /home/wtay/Codes/petsc-dev/src/dm/interface/dm.c
>     [0]PETSC ERROR: [0] KSPSetUp line 182
>     /home/wtay/Codes/petsc-dev/src/ksp/ksp/interface/itfunc.c
>     [0]PETSC ERROR: --------------------- Error Message
>     ------------------------------------
>     [0]PETSC ERROR: Signal received!
>     [0]PETSC ERROR:
>     ------------------------------------------------------------------------
>     [0]PETSC ERROR: Petsc Development HG revision:
>     7ecdd63ec420b1659b960e65d96e822c5ac1a968  HG Date: Mon May 07
>     21:42:26 2012 -0500
>     [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: ./ex29f on a petsc-3.2 named hpc12 by wtay Tue
>     May  8 20:45:42 2012
>     [0]PETSC ERROR: Libraries linked from
>     /home/wtay/Lib/petsc-3.2-dev_shared_debug/lib
>     [0]PETSC ERROR: Configure run at Tue May  8 10:47:59 2012
>     [0]PETSC ERROR: Configure options
>     --with-mpi-dir=/opt/openmpi-1.5.3/
>     --with-blas-lapack-dir=/opt/intelcpro-11.1.059/mkl/lib/em64t/
>     --with-debugging=1 --download-hypre=1
>     --prefix=/home/wtay/Lib/petsc-3.2-dev_shared_debug
>     --known-mpi-shared=1 --with-shared-libraries
>     [0]PETSC ERROR:
>     ------------------------------------------------------------------------
>     [0]PETSC ERROR: User provided function() line 0 in unknown
>     directory unknown file
>     --------------------------------------------------------------------------
>     MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
>     with errorcode 59.
>
>     NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
>     You may or may not see output from other processes, depending on
>     exactly when Open MPI kills them.
>
>     Yours sincerely,
>
>     TAY wee-beng
>
>
>     On 5/5/2012 1:43 AM, Matthew Knepley wrote:
>>     On Fri, May 4, 2012 at 5:42 PM, TAY wee-beng <zonexo at gmail.com
>>     <mailto:zonexo at gmail.com>> wrote:
>>
>>         Hi,
>>
>>         I wonder if you people are interested to include my ex29
>>         fortran version in the petsc examples, which can help people
>>         who are using fortran.
>>
>>
>>     Yes, we will definitely include it. Please send the source, and a
>>     representative output with run options.
>>
>>       Thanks,
>>
>>          Matt
>>
>>         Thanks.
>>
>>         Yours sincerely,
>>
>>         TAY wee-beng
>>
>>
>>         On 4/5/2012 9:28 PM, Matthew Knepley wrote:
>>>         On Fri, May 4, 2012 at 3:24 PM, TAY wee-beng
>>>         <zonexo at gmail.com <mailto:zonexo at gmail.com>> wrote:
>>>
>>>
>>>             On 4/5/2012 9:16 PM, Barry Smith wrote:
>>>
>>>                    Do an hg pull and then run make in
>>>                 src/mat/interface/ftn-custom/
>>>
>>>                     Then it should link.
>>>
>>>                    Barry
>>>
>>>                    There was a E missing from the all caps name of
>>>                 the function.
>>>
>>>             After hg pull, I did:
>>>
>>>             cd src//mat/interface/ftn-custom/
>>>
>>>             User at User-PC
>>>             /cygdrive/c/temp/petsc-dev/src/mat/interface/ftn-custom
>>>             $ make
>>>             make[1]: Warning: File
>>>             `/cygdrive/c/temp/petsc-dev/petsc-3.2-dev_win32_vs2008/lib/libpetsc.lib(zmatregf.o)'
>>>             has modification time 787 s in the future
>>>             make[1]: Nothing to be done for `libc'.
>>>             make[1]: warning:  Clock skew detected.  Your build may
>>>             be incomplete.
>>>
>>>             But it still can't work.
>>>
>>>
>>>         Something is messed up with the clock on this machine.
>>>
>>>         HOWEVER, development requires certain basic skills in order
>>>         to debug your work. We
>>>         cannot be the ones debugging your code. Now
>>>
>>>           nm $PETSC_ARCH/lib/libpetsc.a | grep -i MatNullSpaceRemove
>>>
>>>          will look for the symbol.
>>>
>>>             Matt
>>>
>>>
>>>
>>>                 On May 4, 2012, at 2:11 PM, Matthew Knepley wrote:
>>>
>>>                     On Fri, May 4, 2012 at 3:01 PM, TAY
>>>                     wee-beng<zonexo at gmail.com
>>>                     <mailto:zonexo at gmail.com>>  wrote:
>>>
>>>                     On 4/5/2012 5:17 PM, Matthew Knepley wrote:
>>>
>>>                         On Fri, May 4, 2012 at 11:05 AM, TAY
>>>                         wee-beng<zonexo at gmail.com
>>>                         <mailto:zonexo at gmail.com>>  wrote:
>>>
>>>                         On 4/5/2012 3:05 PM, Matthew Knepley wrote:
>>>
>>>                             On Fri, May 4, 2012 at 8:59 AM, TAY
>>>                             wee-beng<zonexo at gmail.com
>>>                             <mailto:zonexo at gmail.com>>  wrote:
>>>
>>>                             Hi,
>>>
>>>                             Is there anything else I can try to get
>>>                             it working right?
>>>
>>>                             The MatGetNullSpaceRemove() is missing.
>>>
>>>                         Where should I add MatGetNullSpaceRemove and
>>>                         what are its syntax? I googled but there's
>>>                         no results.
>>>
>>>                         Fixed in p;etsc-dev:
>>>
>>>                         http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Mat/MatNullSpaceRemove.html
>>>
>>>                     I just compiled the updated petsc-dev but I got
>>>                     the same error msg when I use:
>>>
>>>                     call MatNullSpaceRemove(nullspace,b,PETSC_NULL,ierr)
>>>
>>>                     error LNK2019: unresolved external symbol
>>>                     MATNULLSPACEREMOVE referenced in function COMPUTERHS
>>>                     1>c:\obj_tmp\ex29f\Debug\ex29f.exe : fatal error
>>>                     LNK1120: 1 unresolved externals
>>>
>>>                     That function is in:
>>>
>>>                       src/mat/interface/ftn-custom/zmatrixf.c
>>>
>>>                     Did that compile? Can you see the symbol in
>>>                     libpetsc.a?
>>>
>>>                         Matt
>>>
>>>                              Matt
>>>
>>>                         Thanks.
>>>
>>>                                Matt
>>>
>>>                             Thanks!
>>>
>>>
>>>                             On 2/5/2012 10:11 PM, Matthew Knepley wrote:
>>>
>>>                                 On Wed, May 2, 2012 at 1:55 PM, TAY
>>>                                 wee-beng<zonexo at gmail.com
>>>                                 <mailto:zonexo at gmail.com>>  wrote:
>>>                                 Hi,
>>>
>>>                                 I did a MatView and VecView on both
>>>                                 C and Fortran, right after Mat and
>>>                                 Vec assembly. I have attached the
>>>                                 printout below. They are exactly the
>>>                                 same, but yet the result is
>>>                                 different in Neumann condition.
>>>                                 However, the dirichlet condition
>>>                                 gives the correct ans. Is there
>>>                                 anything else that could be wrong
>>>                                 even if the Mat and Vec are the same?
>>>
>>>                                 Did you set the null space for the
>>>                                 matrix when you have Neumann conditions?
>>>
>>>                             Yes, for the matrix, I set as:
>>>
>>>                             call
>>>                             MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_TRUE,0,PETSC_NULL_OBJECT,nullspace,ierr)
>>>
>>>                                 call MatSetNullSpace(jac,nullspace,ierr)
>>>
>>>                                 call MatNullSpaceDestroy(nullspace,ierr)
>>>
>>>                             for the Vec,
>>>
>>>                             call
>>>                             MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_TRUE,0,PETSC_NULL_OBJECT,nullspace,ierr)
>>>
>>>                                 !call
>>>                             MatNullSpaceRemove(nullspace,b,PETSC_NULL,ierr)
>>>
>>>                                 call MatNullSpaceDestroy(nullspace,ierr)
>>>
>>>                             MatNullSpaceRemove was comment out
>>>                             because there's error during linking
>>>
>>>
>>>                                    Matt
>>>
>>>                                 Thanks!
>>>
>>>                                 Fortran:
>>>
>>>                                 Matrix Object: 1 MPI processes
>>>                                   type: seqaij
>>>                                 row 0: (0, 2)  (1, -1)  (3, -1)
>>>                                 row 1: (0, -1)  (1, 3)  (2, -1)  (4, -1)
>>>                                 row 2: (1, -1)  (2, 2)  (5, -1)
>>>                                 row 3: (0, -1)  (3, 3)  (4, -1)  (6, -1)
>>>                                 row 4: (1, -1)  (3, -1)  (4, 4)  (5,
>>>                                 -1)  (7, -1)
>>>                                 row 5: (2, -1)  (4, -1)  (5, 3)  (8, -1)
>>>                                 row 6: (3, -1)  (6, 2)  (7, -1)
>>>                                 row 7: (4, -1)  (6, -1)  (7, 3)  (8, -1)
>>>                                 row 8: (5, -1)  (7, -1)  (8, 2)
>>>                                 Vector Object:Vec_0000000084000000_0
>>>                                 1 MPI processes
>>>                                   type: mpi
>>>                                 Process [0]
>>>                                 0.25
>>>                                 0.0205213
>>>                                 1.135e-005
>>>                                 0.0205213
>>>                                 0.00168449
>>>                                 9.31663e-007
>>>                                 1.135e-005
>>>                                 9.31663e-007
>>>                                 5.15289e-010
>>>                                 Vector Object:Vec_0000000084000000_1
>>>                                 1 MPI processes
>>>                                   type: mpi
>>>                                 Process [0]
>>>                                 0.14924
>>>                                 0.0242397
>>>                                 -0.0260347
>>>                                 0.0242397
>>>                                 -0.0256192
>>>                                 -0.0400102
>>>                                 -0.0260347
>>>                                 -0.0400102
>>>                                 -0.0400102
>>>                                 Press any key to continue . . .
>>>
>>>                                 C:
>>>
>>>                                 Matrix Object: 1 MPI processes
>>>                                   type: seqaij
>>>                                 row 0: (0, 2)  (1, -1)  (3, -1)
>>>                                 row 1: (0, -1)  (1, 3)  (2, -1)  (4, -1)
>>>                                 row 2: (1, -1)  (2, 2)  (5, -1)
>>>                                 row 3: (0, -1)  (3, 3)  (4, -1)  (6, -1)
>>>                                 row 4: (1, -1)  (3, -1)  (4, 4)  (5,
>>>                                 -1)  (7, -1)
>>>                                 row 5: (2, -1)  (4, -1)  (5, 3)  (8, -1)
>>>                                 row 6: (3, -1)  (6, 2)  (7, -1)
>>>                                 row 7: (4, -1)  (6, -1)  (7, 3)  (8, -1)
>>>                                 row 8: (5, -1)  (7, -1)  (8, 2)
>>>                                 Vector Object:Vec_0x1d3b000_0 1 MPI
>>>                                 processes
>>>                                   type: mpi
>>>                                 Process [0]
>>>                                 0.25
>>>                                 0.0205212
>>>                                 1.135e-05
>>>                                 0.0205212
>>>                                 0.00168449
>>>                                 9.31663e-07
>>>                                 1.135e-05
>>>                                 9.31663e-07
>>>                                 5.15288e-10
>>>                                 Vector Object:Vec_0x1d3b000_1 1 MPI
>>>                                 processes
>>>                                   type: mpi
>>>                                 Process [0]
>>>                                 0.139311
>>>                                 0.0305751
>>>                                 -0.0220633
>>>                                 0.0305751
>>>                                 -0.0135158
>>>                                 -0.042185
>>>                                 -0.0220633
>>>                                 -0.042185
>>>                                 -0.058449
>>>
>>>
>>>
>>>                                 Yours sincerely,
>>>
>>>                                 TAY wee-beng
>>>
>>>
>>>                                 On 1/5/2012 11:54 PM, Matthew
>>>                                 Knepley wrote:
>>>
>>>                                     On Tue, May 1, 2012 at 5:48 PM,
>>>                                     TAY wee-beng<zonexo at gmail.com
>>>                                     <mailto:zonexo at gmail.com>>  wrote:
>>>                                     Hi,
>>>
>>>                                     Do you mean my method is wrong?
>>>
>>>                                     I am following the template of
>>>                                     ex22f,
>>>
>>>                                     where the variables are declared
>>>                                     as :
>>>
>>>                                     PetscScalar  v(5)
>>>
>>>                                     MatStencil   row(4),col(4,5)
>>>
>>>                                     Hence,
>>>
>>>                                     for the neumann BC
>>>
>>>                                     num = 1
>>>
>>>                                                    if (j/=0) then
>>>
>>>                                                        v(num) =
>>>                                     -rho*HxdHy
>>>
>>>                                                      
>>>                                      col(MatStencil_i,num) = i
>>>
>>>                                                      
>>>                                      col(MatStencil_j,num) = j-1
>>>
>>>                                                        num = num + 1
>>>
>>>                                                    end if
>>>
>>>                                                    if (i/=0) then
>>>
>>>                                                        v(num) =
>>>                                     -rho*HydHx
>>>
>>>                                                      
>>>                                      col(MatStencil_i,num) = i-1
>>>
>>>                                                      
>>>                                      col(MatStencil_j,num) = j
>>>
>>>                                                        num = num + 1
>>>
>>>                                                    end if
>>>
>>>                                                    if (i/=mx-1) then
>>>
>>>                                                        v(num) =
>>>                                     -rho*HydHx
>>>
>>>                                                      
>>>                                      col(MatStencil_i,num) = i+1
>>>
>>>                                                      
>>>                                      col(MatStencil_j,num) = j
>>>
>>>                                                        num = num + 1
>>>
>>>                                                    end if
>>>
>>>                                                    if (j/=my-1) then
>>>
>>>                                                        v(num) =
>>>                                     -rho*HxdHy
>>>
>>>                                                      
>>>                                      col(MatStencil_i,num) = i
>>>
>>>                                                      
>>>                                      col(MatStencil_j,num) = j+1
>>>
>>>                                                        num = num + 1
>>>
>>>                                                    end if
>>>
>>>                                                    v(num) =
>>>                                     ((num-1)/2.0)*rho*(HxdHy + HydHx)
>>>
>>>                                                    print *, v
>>>
>>>                                                  
>>>                                      col(MatStencil_i,num) = i
>>>
>>>                                                  
>>>                                      col(MatStencil_j,num) = j
>>>
>>>                                                    !num = num + 1
>>>
>>>                                                    call
>>>                                     MatSetValuesStencil(jac,i1,row,num,col,v,INSERT_VALUES,ierr)
>>>
>>>                                     I do not get any more out of
>>>                                     range error. However,my ans is
>>>                                     still different from that of
>>>                                     ex29 in C.
>>>
>>>                                     This is very simple. You have an
>>>                                     error in your code. Checking it
>>>                                     is very simple: run the code and
>>>                                     break in MatSetValues(). Make
>>>                                     sure ex29 makes calls with
>>>                                     exactly the same indices as your
>>>                                     ex29f.
>>>
>>>                                         Matt
>>>
>>>                                     Yours sincerely,
>>>
>>>                                     TAY wee-beng
>>>
>>>                                     -- 
>>>                                     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
>>>
>>>
>>>
>>>                                 -- 
>>>                                 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
>>>
>>>
>>>
>>>                             -- 
>>>                             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
>>>
>>>
>>>
>>>                         -- 
>>>                         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
>>>
>>>
>>>
>>>                     -- 
>>>                     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
>>>
>>>
>>>
>>>
>>>         -- 
>>>         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
>>
>>
>>
>>
>>     -- 
>>     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/20120511/dbf50541/attachment-0001.htm>


More information about the petsc-users mailing list