> On Mar 11, 2015, at 2:21 PM, Ed Bueler <[email protected]> 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 [email protected] > 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)
