[petsc-users] SNESSetConvergenceTest

Barry Smith bsmith at mcs.anl.gov
Wed Jan 22 16:30:58 CST 2014


   The thing to use in valgrind is -q --tool=memcheck    

    This checks for corrupted and illegally accessed memory, uninitialized memory etc  It shows the exact lines that memory is used incorrectly so you can fix your code.

   Barry

On Jan 22, 2014, at 4:02 PM, Dharmendar Reddy <dharmareddy84 at gmail.com> wrote:

> Hello,
>        The code works fine if i run with valgrind --leak-check=yes exename args
> it fails if i run  valgrind exename args
> 
> Any suggestions on what to look for my code?
> 
> Thanks
> Reddy
> 
> On Wed, Jan 22, 2014 at 3:31 PM, Dharmendar Reddy
> <dharmareddy84 at gmail.com> wrote:
>> Hello,
>>        I tried using the SNESSetConvergenceTest in ex5f90.F using my
>> subroutine. Works as expected. I will try to run my code through
>> valgrind.
>> 
>> Thanks
>> Reddy
>> 
>> On Wed, Jan 22, 2014 at 2:33 PM, Dharmendar Reddy
>> <dharmareddy84 at gmail.com> wrote:
>>> Hello,
>>>         I will also try to create a stand alone test case.
>>> 
>>> Thanks
>>> Reddy
>>> 
>>> On Wed, Jan 22, 2014 at 1:53 PM, Matthew Knepley <knepley at gmail.com> wrote:
>>>> On Wed, Jan 22, 2014 at 1:52 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>>>>> 
>>>>> 
>>>>>  We need more information to track this down. Could you make a simple
>>>>> standalone code that reproduces the problem? Just creates a this, creates a
>>>>> SNES, sets the function, sets the test code and then crashes when runs.
>>>>> 
>>>>>   But since it is not crashing in the SNESConvergenceTest_snes routine I
>>>>> suspect it may be memory corruption. Have you run your code under valgrind?
>>>>> http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
>>>> 
>>>> 
>>>> I am putting his convergence test into ex5f right now. This can be
>>>> valgrinded. I will send an update when it runs.
>>>> 
>>>>  Matt
>>>> 
>>>>> 
>>>>> 
>>>>>   Barry
>>>>> 
>>>>> On Jan 20, 2014, at 7:14 PM, Dharmendar Reddy <dharmareddy84 at gmail.com>
>>>>> wrote:
>>>>> 
>>>>>> Hello,
>>>>>>        I am getting a segmentation fault when i use
>>>>>> SNESSetConvergenceTest from Fortran.
>>>>>> 
>>>>>> I use the following:
>>>>>> 
>>>>>> call SNESSetConvergenceTest(this%snes, SNESConvergenceTest_snes,
>>>>>> this,PETSC_NULL_FUNCTION, ierr)   (Line 1)
>>>>>> 
>>>>>> where the soubtoutine is
>>>>>> 
>>>>>> subroutine
>>>>>> SNESConvergenceTest_snes(snes,it,xnorm,gnorm,fnorm,reason,this, ierr)
>>>>>> implicit none
>>>>>> #include "finclude/petsc.h"
>>>>>> ! IO Variables
>>>>>> SNES :: snes
>>>>>> integer :: it
>>>>>> PetscReal :: xnorm
>>>>>> PetscReal :: gnorm
>>>>>> PetscReal :: fnorm
>>>>>> SNESConvergedReason :: reason
>>>>>> type(Solver_t) :: this
>>>>>> PetscErrorCode :: ierr
>>>>>> ! Local Variables
>>>>>> Vec :: X, dX
>>>>>> Vec :: F, W, G
>>>>>> real(WP) :: lambda
>>>>>> print*, 'Calling custom test',it,xnorm,fnorm,gnorm
>>>>>> !call SNESLineSearchGetLambda(this%linesearch, lambda, ierr)
>>>>>> !call SNESLineSearchGetVecs(this%linesearch, X, F, dX, W, G, ierr)
>>>>>> !call this%SNESConvergenceTest(it, fnorm, lambda, X, dX, reason, ierr)
>>>>>> reason = SNES_DIVERGED_FUNCTION_COUNT
>>>>>> end subroutine SNESConvergenceTest_snes
>>>>>> 
>>>>>> Code works fine if  the call at Line 1 is commented i.e, if i donot
>>>>>> set the convergencetest
>>>>>> 
>>>>>> I have attached the stack trace when the code fails (traceFail.log)
>>>>>> and stack trace of the code which runs well (tracePass.log).
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Thanks
>>>>>> Reddy
>>>>>> <traceFail.log><tracePass.log>
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> --
>>>> 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
>>> 
>>> 
>>> 
>>> --
>>> -----------------------------------------------------
>>> Dharmendar Reddy Palle
>>> Graduate Student
>>> Microelectronics Research center,
>>> University of Texas at Austin,
>>> 10100 Burnet Road, Bldg. 160
>>> MER 2.608F, TX 78758-4445
>>> e-mail: dharmareddy84 at gmail.com
>>> Phone: +1-512-350-9082
>>> United States of America.
>>> Homepage: https://webspace.utexas.edu/~dpr342
>> 
>> 
>> 
>> --
>> -----------------------------------------------------
>> Dharmendar Reddy Palle
>> Graduate Student
>> Microelectronics Research center,
>> University of Texas at Austin,
>> 10100 Burnet Road, Bldg. 160
>> MER 2.608F, TX 78758-4445
>> e-mail: dharmareddy84 at gmail.com
>> Phone: +1-512-350-9082
>> United States of America.
>> Homepage: https://webspace.utexas.edu/~dpr342
> 
> 
> 
> -- 
> -----------------------------------------------------
> Dharmendar Reddy Palle
> Graduate Student
> Microelectronics Research center,
> University of Texas at Austin,
> 10100 Burnet Road, Bldg. 160
> MER 2.608F, TX 78758-4445
> e-mail: dharmareddy84 at gmail.com
> Phone: +1-512-350-9082
> United States of America.
> Homepage: https://webspace.utexas.edu/~dpr342



More information about the petsc-users mailing list