Okay that's what I figured, thanks you very much
On Wed, Apr 29, 2015 at 10:39 AM, Jason Sarich <[email protected]> wrote: > Hi Justin, > > This expected behavior due to the accumulation of numerical round-offs. If > this is a problem or if you just want to confirm that this is the cause, > you can try configuring PETSc for quad precision > (--with-precision=__float128, works with GNU compilers) and the results > should match better. > > Jason > > > On Tue, Apr 28, 2015 at 10:19 PM, Justin Chang <[email protected]> wrote: > >> Jason (or anyone), >> >> I am noticing that the iteration numbers reported by >> TaoGetSolutionStatus() for blmvm differ whenever I change the number of >> processes. The solution seems to remain the same though. Is there a reason >> why this could be happening? >> >> Thanks, >> >> On Tue, Apr 21, 2015 at 10:40 AM, Jason Sarich <[email protected]> >> wrote: >> >>> Justin, >>> >>> 1) The big difference between TRON and BLMVM is that TRON requires >>> hessian information, BLMVM only uses gradient information. Thus TRON will >>> usually converge faster, but requires more information, memory, and a KSP >>> solver. GPCG (gradient projected conjugate gradient) is another >>> gradient-only option, but usually performs worse than BLMVM. >>> >>> 2) TaoGetLinearSolveIterations() will get the total number of KSP >>> iterations per solve >>> >>> Jason >>> >>> >>> On Tue, Apr 21, 2015 at 10:33 AM, Justin Chang <[email protected]> >>> wrote: >>> >>>> Jason, >>>> >>>> Tightening the tolerances did the trick. Thanks. Though I do have a >>>> couple more related questions: >>>> >>>> 1) Is there a general guideline for choosing tron over blmvm or vice >>>> versa? Also is there another tao type that is also suitable given only >>>> bounded constraints? >>>> >>>> 2) Is it possible to obtain the total number of KSP and/or PG >>>> iterations from tron? >>>> >>>> Thanks, >>>> Justin >>>> >>>> On Tue, Apr 21, 2015 at 9:52 AM, Jason Sarich <[email protected]> >>>> wrote: >>>> >>>>> Hi Justin, >>>>> >>>>> blmvm believes that it is already sufficiently close to a minimum, so >>>>> it doesn't do anything. You may need to tighten some of the tolerance to >>>>> force an iteration. >>>>> >>>>> Jason >>>>> >>>>> >>>>> On Tue, Apr 21, 2015 at 9:48 AM, Justin Chang <[email protected]> >>>>> wrote: >>>>> >>>>>> Time step 1: >>>>>> >>>>>> Tao Object: 1 MPI processes >>>>>> type: blmvm >>>>>> Gradient steps: 0 >>>>>> TaoLineSearch Object: 1 MPI processes >>>>>> type: more-thuente >>>>>> Active Set subset type: subvec >>>>>> convergence tolerances: fatol=0.0001, frtol=0.0001 >>>>>> convergence tolerances: gatol=0, steptol=0, gttol=0 >>>>>> Residual in Function/Gradient:=0.0663148 >>>>>> Objective value=-55.5945 >>>>>> total number of iterations=35, (max: 2000) >>>>>> total number of function/gradient evaluations=37, (max: 4000) >>>>>> Solution converged: estimated |f(x)-f(X*)|/|f(X*)| <= frtol >>>>>> >>>>>> Time step 2: >>>>>> >>>>>> Tao Object: 1 MPI processes >>>>>> type: blmvm >>>>>> Gradient steps: 0 >>>>>> TaoLineSearch Object: 1 MPI processes >>>>>> type: more-thuente >>>>>> Active Set subset type: subvec >>>>>> convergence tolerances: fatol=0.0001, frtol=0.0001 >>>>>> convergence tolerances: gatol=0, steptol=0, gttol=0 >>>>>> Residual in Function/Gradient:=0.0682307 >>>>>> Objective value=-66.9675 >>>>>> total number of iterations=23, (max: 2000) >>>>>> total number of function/gradient evaluations=25, (max: 4000) >>>>>> Solution converged: estimated |f(x)-f(X*)|/|f(X*)| <= frtol >>>>>> >>>>>> Time step 3: >>>>>> >>>>>> Tao Object: 1 MPI processes >>>>>> type: blmvm >>>>>> Gradient steps: 0 >>>>>> TaoLineSearch Object: 1 MPI processes >>>>>> type: more-thuente >>>>>> Active Set subset type: subvec >>>>>> convergence tolerances: fatol=0.0001, frtol=0.0001 >>>>>> convergence tolerances: gatol=0, steptol=0, gttol=0 >>>>>> Residual in Function/Gradient:=0.0680522 >>>>>> Objective value=-71.8211 >>>>>> total number of iterations=19, (max: 2000) >>>>>> total number of function/gradient evaluations=22, (max: 4000) >>>>>> Solution converged: estimated |f(x)-f(X*)|/|f(X*)| <= frtol >>>>>> >>>>>> Time step 4: >>>>>> >>>>>> Tao Object: 1 MPI processes >>>>>> type: blmvm >>>>>> Gradient steps: 0 >>>>>> TaoLineSearch Object: 1 MPI processes >>>>>> type: more-thuente >>>>>> Active Set subset type: subvec >>>>>> convergence tolerances: fatol=0.0001, frtol=0.0001 >>>>>> convergence tolerances: gatol=0, steptol=0, gttol=0 >>>>>> Residual in Function/Gradient:=0.0551556 >>>>>> Objective value=-75.1252 >>>>>> total number of iterations=18, (max: 2000) >>>>>> total number of function/gradient evaluations=20, (max: 4000) >>>>>> Solution converged: estimated |f(x)-f(X*)|/|f(X*)| <= frtol >>>>>> >>>>>> Time step 5: >>>>>> >>>>>> Tao Object: 1 MPI processes >>>>>> type: blmvm >>>>>> Gradient steps: 0 >>>>>> TaoLineSearch Object: 1 MPI processes >>>>>> type: more-thuente >>>>>> Active Set subset type: subvec >>>>>> convergence tolerances: fatol=0.0001, frtol=0.0001 >>>>>> convergence tolerances: gatol=0, steptol=0, gttol=0 >>>>>> Residual in Function/Gradient:=0.0675667 >>>>>> Objective value=-77.4414 >>>>>> total number of iterations=6, (max: 2000) >>>>>> total number of function/gradient evaluations=8, (max: 4000) >>>>>> Solution converged: estimated |f(x)-f(X*)|/|f(X*)| <= frtol >>>>>> >>>>>> Time step 6: >>>>>> >>>>>> Tao Object: 1 MPI processes >>>>>> type: blmvm >>>>>> Gradient steps: 0 >>>>>> TaoLineSearch Object: 1 MPI processes >>>>>> type: more-thuente >>>>>> Active Set subset type: subvec >>>>>> convergence tolerances: fatol=0.0001, frtol=0.0001 >>>>>> convergence tolerances: gatol=0, steptol=0, gttol=0 >>>>>> Residual in Function/Gradient:=0.059143 >>>>>> Objective value=-79.5007 >>>>>> total number of iterations=3, (max: 2000) >>>>>> total number of function/gradient evaluations=5, (max: 4000) >>>>>> Solution converged: estimated |f(x)-f(X*)|/|f(X*)| <= frtol >>>>>> >>>>>> Time step 7: >>>>>> >>>>>> Tao Object: 1 MPI processes >>>>>> type: blmvm >>>>>> Gradient steps: 0 >>>>>> TaoLineSearch Object: 1 MPI processes >>>>>> type: more-thuente >>>>>> Active Set subset type: subvec >>>>>> convergence tolerances: fatol=0.0001, frtol=0.0001 >>>>>> convergence tolerances: gatol=0, steptol=0, gttol=0 >>>>>> Residual in Function/Gradient:=0.0433683 >>>>>> Objective value=-81.3546 >>>>>> total number of iterations=5, (max: 2000) >>>>>> total number of function/gradient evaluations=8, (max: 4000) >>>>>> Solution converged: estimated |f(x)-f(X*)|/|f(X*)| <= frtol >>>>>> >>>>>> Time step 8: >>>>>> >>>>>> Tao Object: 1 MPI processes >>>>>> type: blmvm >>>>>> Gradient steps: 0 >>>>>> TaoLineSearch Object: 1 MPI processes >>>>>> type: more-thuente >>>>>> Active Set subset type: subvec >>>>>> convergence tolerances: fatol=0.0001, frtol=0.0001 >>>>>> convergence tolerances: gatol=0, steptol=0, gttol=0 >>>>>> Residual in Function/Gradient:=0.0840676 >>>>>> Objective value=-82.9382 >>>>>> total number of iterations=0, (max: 2000) >>>>>> total number of function/gradient evaluations=1, (max: 4000) >>>>>> Solution converged: estimated |f(x)-f(X*)|/|f(X*)| <= frtol >>>>>> >>>>>> Time step 9: >>>>>> >>>>>> Tao Object: 1 MPI processes >>>>>> type: blmvm >>>>>> Gradient steps: 0 >>>>>> TaoLineSearch Object: 1 MPI processes >>>>>> type: more-thuente >>>>>> Active Set subset type: subvec >>>>>> convergence tolerances: fatol=0.0001, frtol=0.0001 >>>>>> convergence tolerances: gatol=0, steptol=0, gttol=0 >>>>>> Residual in Function/Gradient:=0.0840676 >>>>>> Objective value=-82.9382 >>>>>> total number of iterations=0, (max: 2000) >>>>>> total number of function/gradient evaluations=1, (max: 4000) >>>>>> Solution converged: estimated |f(x)-f(X*)|/|f(X*)| <= frtol >>>>>> >>>>>> Time step 10: >>>>>> >>>>>> Tao Object: 1 MPI processes >>>>>> type: blmvm >>>>>> Gradient steps: 0 >>>>>> TaoLineSearch Object: 1 MPI processes >>>>>> type: more-thuente >>>>>> Active Set subset type: subvec >>>>>> convergence tolerances: fatol=0.0001, frtol=0.0001 >>>>>> convergence tolerances: gatol=0, steptol=0, gttol=0 >>>>>> Residual in Function/Gradient:=0.0840676 >>>>>> Objective value=-82.9382 >>>>>> total number of iterations=0, (max: 2000) >>>>>> total number of function/gradient evaluations=1, (max: 4000) >>>>>> Solution converged: estimated |f(x)-f(X*)|/|f(X*)| <= frtol >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Tue, Apr 21, 2015 at 9:28 AM, Jason Sarich <[email protected] >>>>>> > wrote: >>>>>> >>>>>>> Hi Justin, >>>>>>> >>>>>>> what reason is blmvm giving for stopping the solve? (you can use >>>>>>> -tao_view or -tao_converged_reason to get this) >>>>>>> >>>>>>> Jason >>>>>>> >>>>>>> On Mon, Apr 20, 2015 at 6:32 PM, Justin Chang <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Jason, >>>>>>>> >>>>>>>> I am using TaoGetSolutionStatus(tao,&its, ...) and it gives me >>>>>>>> exactly what I want. However, I seem to be having an issue with blmvm >>>>>>>> >>>>>>>> I wrote my own backward euler code for a transient linear >>>>>>>> diffusion problem with lower bounds >= 0 and upper bounds <= 1. For the >>>>>>>> first several time steps I am getting its > 0, and it decreases over >>>>>>>> time >>>>>>>> due to the nature of the discrete maximum principles. However, at some >>>>>>>> point my its become 0 and the solution does not "update", which seems >>>>>>>> to me >>>>>>>> that TaoSolve is not doing anything after that. This doesn't happen if >>>>>>>> I >>>>>>>> were to use tron (my KSP and PC are cg and jacobi respectively). >>>>>>>> >>>>>>>> Do you know why this behavior may occur? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> On Tue, Apr 14, 2015 at 9:35 AM, Jason Sarich < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> Hi Justin, >>>>>>>>> >>>>>>>>> I have pushed these changes to the "next" branch, your code >>>>>>>>> snippet should work fine there. >>>>>>>>> >>>>>>>>> Note that there is also available (since version 3.5.0) the >>>>>>>>> routine TaoGetSolutionStatus(tao,&its,NULL,NULL,NULL,NULL,NULL) which >>>>>>>>> will >>>>>>>>> provide the >>>>>>>>> same information >>>>>>>>> >>>>>>>>> Jason >>>>>>>>> >>>>>>>>> On Fri, Apr 10, 2015 at 6:28 PM, Justin Chang <[email protected] >>>>>>>>> > wrote: >>>>>>>>> >>>>>>>>>> Whatever is convenient and/or follow the "PETSc" standards. >>>>>>>>>> Something similar to SNESGetIterationNumber() or >>>>>>>>>> KSPGetIterationNumber() >>>>>>>>>> would be nice. Ideally I want my code to look like this: >>>>>>>>>> >>>>>>>>>> ierr = TaoGetIterationNumber(tao,&its);CHKERRQ(ierr); >>>>>>>>>> ierr = PetscPrintf(PETSC_COMM_WORLD, "Number of Tao iterations = >>>>>>>>>> %D\n", its); >>>>>>>>>> >>>>>>>>>> Thanks :) >>>>>>>>>> >>>>>>>>>> On Fri, Apr 10, 2015 at 5:53 PM, Jason Sarich < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Justin, I'll get this in. I assume that displaying the number >>>>>>>>>>> of iterations with tao_converged_reason is what you are asking for >>>>>>>>>>> in >>>>>>>>>>> particular? Or did you have something else in mind? >>>>>>>>>>> >>>>>>>>>>> Jason >>>>>>>>>>> On Apr 10, 2015 16:42, "Smith, Barry F." <[email protected]> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Justin, >>>>>>>>>>>> >>>>>>>>>>>> Sorry TAO simply doesn't even collect this information >>>>>>>>>>>> currently. But yes we should definitely make it available! >>>>>>>>>>>> >>>>>>>>>>>> Jason, >>>>>>>>>>>> >>>>>>>>>>>> Could you please add this; almost all the TaoSolve_xxx() >>>>>>>>>>>> have a local variable iter; change that to tao->niter (I'm guess >>>>>>>>>>>> this is >>>>>>>>>>>> suppose to capture this information) and add a >>>>>>>>>>>> TaoGetIterationNumber() and >>>>>>>>>>>> the uses can access this. Also modify at the end of TaoSolve() >>>>>>>>>>>> -tao_converged_reason to also print the iteration count. At the >>>>>>>>>>>> same time >>>>>>>>>>>> since you add this you can add a tao->totalits which would >>>>>>>>>>>> accumulate all >>>>>>>>>>>> iterations over all the solves for that Tao object and the routine >>>>>>>>>>>> TaoGetTotalIterations() to access this. Note that TaoSolve() would >>>>>>>>>>>> initialize tao->niter = 0 at the top. >>>>>>>>>>>> >>>>>>>>>>>> Thanks >>>>>>>>>>>> >>>>>>>>>>>> Barry >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> > On Apr 10, 2015, at 4:16 PM, Justin Chang <[email protected]> >>>>>>>>>>>> wrote: >>>>>>>>>>>> > >>>>>>>>>>>> > Hi all, >>>>>>>>>>>> > >>>>>>>>>>>> > Is there a way to generically obtain the number of Tao >>>>>>>>>>>> iterations? I am looking through the -help options for Tao and I >>>>>>>>>>>> don't see >>>>>>>>>>>> any metric where you can output this quantity in the manner that >>>>>>>>>>>> you could >>>>>>>>>>>> for SNES or KSP solves. I am currently using blmvm and tron, and >>>>>>>>>>>> the only >>>>>>>>>>>> way I can see getting this metric is by outputting -tao_view and/or >>>>>>>>>>>> -tao_monitor and manually finding this number. I find this >>>>>>>>>>>> cumbersome >>>>>>>>>>>> especially for transient problems where I would like to simply >>>>>>>>>>>> have this >>>>>>>>>>>> number printed for each step instead of ending up with unnecessary >>>>>>>>>>>> info. >>>>>>>>>>>> > >>>>>>>>>>>> > Thanks, >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > -- >>>>>>>>>>>> > Justin Chang >>>>>>>>>>>> > PhD Candidate, Civil Engineering - Computational Sciences >>>>>>>>>>>> > University of Houston, Department of Civil and Environmental >>>>>>>>>>>> Engineering >>>>>>>>>>>> > Houston, TX 77004 >>>>>>>>>>>> > (512) 963-3262 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >> >> -- >> Justin Chang >> PhD Candidate, Civil Engineering - Computational Sciences >> University of Houston, Department of Civil and Environmental Engineering >> Houston, TX 77004 >> (512) 963-3262 >> > > -- Justin Chang PhD Candidate, Civil Engineering - Computational Sciences University of Houston, Department of Civil and Environmental Engineering Houston, TX 77004 (512) 963-3262
