[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