[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