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

John Mousel john.mousel at gmail.com
Tue May 8 14:41:26 CDT 2012


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> 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> 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> 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>  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>
>>>>>>  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>
>>>>>>>  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>
>>>>>>>>  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>
>>>>>>>>>  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/20120508/5f612909/attachment-0001.htm>


More information about the petsc-users mailing list