[petsc-users] evidence that VINEWTONRSLS is broken (in next, but not in maint)

Barry Smith bsmith at mcs.anl.gov
Mon Mar 16 23:33:32 CDT 2015


> On Mar 11, 2015, at 2:21 PM, Ed Bueler <elbueler at alaska.edu> wrote:
> 
> Dear PETSc --
> 
> I sought advice at the FAQ page on non-convergence.  It is a nice page, and I like the range of advice!
> 
> But both
>   -pc_type svd
>   -pc_type none
> seem to break the RSLS SNESVI in the next branch.
> 
> I tested with ex9.c (below) and ex58.c in next branch src/snes/examples/tutorials/, and get the same broken results.

  I have fixed this in master and next. The call to PCMGSetGalekin() from SNESSolve_VINEWTONRSLS was corrupting memory since it did not check if the PC type was MG. I have fixed PCMGSetGalekin() so that it only runs if the PC type is MG and the examples now work with svd and none

>  The other SNESVI-using examples (ex60.c, ex61.c, ex63.c, ex64.c, ex65.c) give compiler errors for me.

  I'll check these tomorrow.

  Barry

> 
> Note that both of the above PC types work fine with non-VI examples (e.g. ex1.c, ex3.c, ex5.c), of course.  Furthermore, in the maint branch, these pc_types DO work (very bottom) with ex9, and with ex58 (not shown).
> 
> I am suspicious of around lines 503-505 in virs.c.  That has been the failure location for a lot of my tries on various RSLS VI experiments.  I have looked at the source (i.e. virs.c) itself, and recognize roughly what is going on.  Objects are being reset because of a change in the active set; it's nontrivial.  I don't see how to fix it.
> 
> Thanks for help!
> 
> Ed
> 
> **** next branch
> 
> ~/petsc-next[next]$ export PETSC_ARCH=linux-c-dbg
> ~/petsc-next[next]$ cd src/snes/examples/tutorials/
> ~/petsc-next/src/snes/examples/tutorials[next]$ make ex9
> make[1]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
> /home/ed/petsc-next/linux-c-dbg/bin/mpicc -o ex9.o -c -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0   -I/home/ed/petsc-next/include -I/home/ed/petsc-next/linux-c-dbg/include    `pwd`/ex9.c
> /home/ed/petsc-next/linux-c-dbg/bin/mpicc -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0  -o ex9 ex9.o -Wl,-rpath,/home/ed/petsc-next/linux-c-dbg/lib -L/home/ed/petsc-next/linux-c-dbg/lib  -lpetsc -Wl,-rpath,/home/ed/petsc-next/linux-c-dbg/lib -lflapack -lfblas -lX11 -lpthread -lm -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -Wl,-rpath,/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu -L/lib/x86_64-linux-gnu -lmpifort -lgfortran -lm -lgfortran -lm -lquadmath -lm -lmpicxx -lstdc++ -Wl,-rpath,/home/ed/petsc-next/linux-c-dbg/lib -L/home/ed/petsc-next/linux-c-dbg/lib -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -Wl,-rpath,/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu -L/lib/x86_64-linux-gnu -Wl,-rpath,/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -ldl -Wl,-rpath,/home/ed/petsc-next/linux-c-dbg/lib -lmpi -lgcc_s -ldl 
> /bin/rm -f ex9.o
> ~/petsc-next/src/snes/examples/tutorials[next]$ ./ex9 -pc_type lu
> setup done: grid  Mx,My = 11,11  with spacing  dx,dy = 0.4000,0.4000
> errors:     av |u-uexact|  = 7.156e-03    |u-uexact|_inf = 2.550e-02
> ~/petsc-next/src/snes/examples/tutorials[next]$ ./ex9
> setup done: grid  Mx,My = 11,11  with spacing  dx,dy = 0.4000,0.4000
> errors:     av |u-uexact|  = 7.156e-03    |u-uexact|_inf = 2.550e-02
> ~/petsc-next/src/snes/examples/tutorials[next]$ ./ex9 -pc_type svd
> setup done: grid  Mx,My = 11,11  with spacing  dx,dy = 0.4000,0.4000
> [0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
> [0]PETSC ERROR: Corrupt argument: http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
> [0]PETSC ERROR: Invalid Pointer to Object: Parameter # 1
> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting.
> [0]PETSC ERROR: Petsc Development GIT revision: v3.5.3-2947-gc0ac3dd  GIT Date: 2015-03-10 22:35:11 -0500
> [0]PETSC ERROR: ./ex9 on a linux-c-dbg named bueler-leopard by ed Wed Mar 11 12:47:08 2015
> [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-fblaslapack --download-mpich --with-debugging=1
> [0]PETSC ERROR: #1 VecDestroy() line 424 in /home/ed/petsc-next/src/vec/vec/interface/vector.c
> [0]PETSC ERROR: #2 PCReset_SVD() line 295 in /home/ed/petsc-next/src/ksp/pc/impls/svd/svd.c
> [0]PETSC ERROR: #3 PCReset() line 81 in /home/ed/petsc-next/src/ksp/pc/interface/precon.c
> [0]PETSC ERROR: #4 KSPReset() line 861 in /home/ed/petsc-next/src/ksp/ksp/interface/itfunc.c
> [0]PETSC ERROR: #5 SNESVIResetPCandKSP() line 305 in /home/ed/petsc-next/src/snes/impls/vi/rs/virs.c
> [0]PETSC ERROR: #6 SNESSolve_VINEWTONRSLS() line 503 in /home/ed/petsc-next/src/snes/impls/vi/rs/virs.c
> [0]PETSC ERROR: #7 SNESSolve() line 3846 in /home/ed/petsc-next/src/snes/interface/snes.c
> [0]PETSC ERROR: #8 main() line 100 in /home/ed/petsc-next/src/snes/examples/tutorials/ex9.c
> [0]PETSC ERROR: PETSc Option Table entries:
> [0]PETSC ERROR: -pc_type svd
> [0]PETSC ERROR: ----------------End of Error Message -------send entire error message to petsc-maint at mcs.anl.gov----------
> application called MPI_Abort(MPI_COMM_WORLD, 64) - process 0
> [unset]: aborting job:
> application called MPI_Abort(MPI_COMM_WORLD, 64) - process 0
> ~/petsc-next/src/snes/examples/tutorials[next]$ ./ex9 -pc_type none
> setup done: grid  Mx,My = 11,11  with spacing  dx,dy = 0.4000,0.4000
> [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] PCMGSetGalerkin line 1028 /home/ed/petsc-next/src/ksp/pc/impls/mg/mg.c
> [0]PETSC ERROR: [0] SNESSolve_VINEWTONRSLS line 348 /home/ed/petsc-next/src/snes/impls/vi/rs/virs.c
> [0]PETSC ERROR: [0] SNESSolve line 3799 /home/ed/petsc-next/src/snes/interface/snes.c
> [0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
> [0]PETSC ERROR: Signal received
> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting.
> [0]PETSC ERROR: Petsc Development GIT revision: v3.5.3-2947-gc0ac3dd  GIT Date: 2015-03-10 22:35:11 -0500
> [0]PETSC ERROR: ./ex9 on a linux-c-dbg named bueler-leopard by ed Wed Mar 11 12:47:11 2015
> [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-fblaslapack --download-mpich --with-debugging=1
> [0]PETSC ERROR: #1 User provided function() line 0 in  unknown file
> application called MPI_Abort(MPI_COMM_WORLD, 59) - process 0
> [unset]: aborting job:
> application called MPI_Abort(MPI_COMM_WORLD, 59) - process 0
> ~/petsc-next/src/snes/examples/tutorials[next]$ 
> 
> ******* maint branch
> 
> ~/petsc-maint/src/snes/examples/tutorials[maint]$ make ex9
> make[1]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
> /home/ed/petsc-maint/linux-c-dbg/bin/mpicc -o ex9.o -c -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0   -I/home/ed/petsc-maint/include -I/home/ed/petsc-maint/linux-c-dbg/include    `pwd`/ex9.c
> /home/ed/petsc-maint/linux-c-dbg/bin/mpicc -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0  -o ex9 ex9.o -Wl,-rpath,/home/ed/petsc-maint/linux-c-dbg/lib -L/home/ed/petsc-maint/linux-c-dbg/lib  -lpetsc -Wl,-rpath,/home/ed/petsc-maint/linux-c-dbg/lib -lflapack -lfblas -lX11 -lpthread -lm -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -Wl,-rpath,/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu -L/lib/x86_64-linux-gnu -lmpichf90 -lgfortran -lm -lgfortran -lm -lquadmath -lm -lmpichcxx -lstdc++ -Wl,-rpath,/home/ed/petsc-maint/linux-c-dbg/lib -L/home/ed/petsc-maint/linux-c-dbg/lib -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -Wl,-rpath,/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu -L/lib/x86_64-linux-gnu -Wl,-rpath,/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -ldl -Wl,-rpath,/home/ed/petsc-maint/linux-c-dbg/lib -lmpich -lopa -lmpl -lrt -lpthread -lgcc_s -ldl  
> /bin/rm -f ex9.o
> ~/petsc-maint/src/snes/examples/tutorials[maint]$ ./ex9
> setup done: square       side length = 4.000
>             grid               Mx,My = 11,11
>             spacing            dx,dy = 0.400,0.400
> number of Newton iterations = 3; result = CONVERGED_FNORM_RELATIVE
> errors:    av |u-uexact|  = 7.156e-03
>            |u-uexact|_inf = 2.550e-02
> ~/petsc-maint/src/snes/examples/tutorials[maint]$ ./ex9 -pc_type svd
> setup done: square       side length = 4.000
>             grid               Mx,My = 11,11
>             spacing            dx,dy = 0.400,0.400
> number of Newton iterations = 2; result = CONVERGED_FNORM_RELATIVE
> errors:    av |u-uexact|  = 7.156e-03
>            |u-uexact|_inf = 2.550e-02
> ~/petsc-maint/src/snes/examples/tutorials[maint]$ ./ex9 -pc_type none
> setup done: square       side length = 4.000
>             grid               Mx,My = 11,11
>             spacing            dx,dy = 0.400,0.400
> number of Newton iterations = 2; result = CONVERGED_FNORM_RELATIVE
> errors:    av |u-uexact|  = 7.156e-03
>            |u-uexact|_inf = 2.550e-02
> 
> 
> -- 
> Ed Bueler
> Dept of Math and Stat and Geophysical Institute
> University of Alaska Fairbanks
> Fairbanks, AK 99775-6660
> 301C Chapman and 410D Elvey
> 907 474-7693 and 907 474-7199  (fax 907 474-5394)



More information about the petsc-users mailing list