On Fri, May 11, 2012 at 9:24 AM, TAY wee-beng <zonexo at gmail.com> wrote:
> 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: > I bet this is a beautiful Fortranism. Do you include the F90 header file with the interface definition? If not, Fortran just craps out like this. I can't stress enough how much time would be saved by switching languages to something with at least a modicum of error checking. Matt > *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> 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 >> >> > -- 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/b021ea4a/attachment-0001.htm>
