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>
