there is certainly frustration with changes.

And then there could be real issues. If similar major changes land in sept 
release [at the last minite] in any critical packages [that others packages 
don't quickly add it to their own sept release ] - that might break things in a 
way that xsdk release could not be delivered.

[and usually triggers hard to resolve discussion of who should address this 
failure - that changed package - or dependent packages. And even if patches are 
available - they might not get in - due to workflow isues and such].

Satish

On Sun, 3 Apr 2022, Barry Smith wrote:

> 
>   We have not updated Sundials because they developed an entirely new code 
> with new APIs, it is essentially a new package with tons of new 
> functionality. Had they been incrementally changing things over the years we 
> would have actually kept up with it; so this is not a good example of how 
> small API changes keep us from upgrading, not at all. It is just an example 
> of how it takes a lot of work to wrap a new large package like Sundials 3 
> from scratch and someone must make a big effort to do it. Note: I think 
> Sundials was right to do a rewrite, their classic design was preventing them 
> from making dramatic additions to the old code by doing a complete rewrite 
> they could accomplish so much more.
> 
>   MOAB has not been updated presumably because there are no or very 
> unaggressive users.
> 
>   Side note: I understand the frustration and grumbling that takes place when 
> one has to deal with change, especially when from a perspective as an 
> outer-sider to a project the change may seem unnecessary, that frustration 
> and grumbling is normal, I do it all the time. But it should not dictate 
> policy.
> 
> 
> 
>   
> 
> > On Apr 3, 2022, at 12:58 PM, Satish Balay <ba...@mcs.anl.gov> wrote:
> > 
> > On Sun, 3 Apr 2022, Barry Smith wrote:
> > 
> >> 
> >> 
> >>> On Apr 3, 2022, at 12:24 PM, Satish Balay <ba...@mcs.anl.gov> wrote:
> >>> 
> >>>> If we had this attitude with the external packages PETSc uses we would 
> >>>> have to stop using most of the packages/*.py. 
> >>> 
> >>> Sure one can take extreme view on both sides. [no change, vs won't 
> >>> hesitate to change] - having a manageable (minimal) change is harder to 
> >>> do.
> >>> 
> >>> I would point out that most externalpackages don't change much and we 
> >>> benefit from it - hence we are able to support so may. Some packages had 
> >>> major changes - and we haven't upgraded to their new versions.
> >> 
> >>  What packages are these?  We should have a tool that runs through all the 
> >> packages/xxx.py and determines the date of release of the version we are 
> >> using and if there are any newer versions available. We could run this 
> >> tool automatically a month before each PETSc release sending its output to 
> >> petsc-dev to see what we should be updating. 
> > 
> > sundials, moab [,trilinos - ml was only recently updated] - that I can 
> > think off right now.
> > 
> > Satish
> > 
> >> 
> >>  Note also that some packages we don't update to, not because of API 
> >> changes but because the new releases are broken in some way, this is life 
> >> in the HPC world.
> >> 
> >> 
> >> 
> >> 
> >>> 
> >>> [i.e with the current state one can use them only if they completely buy 
> >>> into petsc ecosystem i.e use old version - but not any larger one - as in 
> >>> use newer features from them]
> >>> 
> >>> We did update to newer interfaces in some packages.
> >>> 
> >>> But these problems remain - and have to be dealt with - and sometimes the 
> >>> complexity increases based on the dependency tree.
> >>> 
> >>> [and also results in folk using and requiring help with older  petsc 
> >>> versions]
> >>> 
> >>> Satish
> >>> 
> >>> 
> >>> On Sun, 3 Apr 2022, Barry Smith wrote:
> >>> 
> >>>> 
> >>>> I would say it is not reasonable for the package developers in the xsdk 
> >>>> ecosystem to expect that they can just continue to use another HPC 
> >>>> package for multiple years without doing some minimal amount of work to 
> >>>> keep up with the other packages' new releases. If we had this attitude 
> >>>> with the external packages PETSc uses we would have to stop using most 
> >>>> of the packages/*.py. Yes, it is a constant race to keep up the versions 
> >>>> in packages/*.py and requires some effort but if you want to play in 
> >>>> this game that is a race you have to remain in. And it goes way beyond 
> >>>> HPC, to say you do software development but don't need to manage 
> >>>> constant change in everything is an oxymoron. There was never a golden 
> >>>> age of computing where things didn't change rapidly, pretending there 
> >>>> was or can be is not productive. Of course, we want to minimize public 
> >>>> change, but having a goal of no public change is not a realistic or even 
> >>>> desirable goal.
> >>>> 
> >>>>> Just noticed - CHKERRQ() got removed from fortran interface - breaking 
> >>>>> pflotran
> >>>> 
> >>>> This was just a oversight, easily fixed. 
> >>>> 
> >>>>> On Apr 3, 2022, at 11:13 AM, Satish Balay <ba...@mcs.anl.gov> wrote:
> >>>>> 
> >>>>> 
> >>>>> Note this  is not just 'users should update their code' issue.
> >>>>> - all packages (that use petsc) would need to do this update
> >>>>> - and this update doesn't always happen - so pakages will stay at old 
> >>>>> release - some might not
> >>>>> - so now we cant build PETSc with both these packages together.
> >>>>> 
> >>>>> this type of change causes major issues in xsdk ecosystem (depends on 
> >>>>> how many direct/indirect dependencies are on the given package)
> >>>>> 
> >>>>> Just noticed - CHKERRQ() got removed from fortran interface - breaking 
> >>>>> pflotran
> >>>>> 
> >>>>> https://gitlab.com/xsdk-project/spack-xsdk/-/jobs/2285145624
> >>>>> 
> >>>>> [also CHKERRABORT]. Perhaps they can be added back in.
> >>>>> 
> >>>>> $ git diff release-3.16..release include/petsc/finclude/petscsys.h
> >>>>> diff --git a/include/petsc/finclude/petscsys.h 
> >>>>> b/include/petsc/finclude/petscsys.h
> >>>>> <snip>
> >>>>> #define SETERRABORT(c,ierr,s)  call PetscError(c,ierr,0,s); call 
> >>>>> MPI_Abort(c,ierr)
> >>>>> -#define CHKERRQ(ierr) if (ierr .ne. 0) then;call 
> >>>>> PetscErrorF(ierr);return;endif
> >>>>> +#define PetscCall(ierr) if (ierr .ne. 0) then;call 
> >>>>> PetscErrorF(ierr);return;endif
> >>>>> #define CHKERRA(ierr) if (ierr .ne. 0) then;call PetscErrorF(ierr);call 
> >>>>> MPIU_Abort(PETSC_COMM_SELF,ierr);endif
> >>>>> -#define CHKERRABORT(c,ierr) if (ierr .ne. 0) then;call 
> >>>>> PetscErrorF(ierr);call MPI_Abort(c,ierr);endif
> >>>>> +#define PetscCallAbort(c,ierr) if (ierr .ne. 0) then;call 
> >>>>> PetscErrorF(ierr);call MPI_Abort(c,ierr);endif
> >>>>> #define CHKMEMQ call chkmemfortran(__LINE__,__FILE__,ierr)
> >>>>> 
> >>>>> Satish
> >>>>> 
> >>>>> On Sun, 3 Apr 2022, Barry Smith wrote:
> >>>>> 
> >>>>>> 
> >>>>>> To use the latest version of PETSc, each user needs to remove the 
> >>>>>> error checks on these calls. The resulting code will work with 
> >>>>>> previous versions of PETSc as well as the current version of PETSc.  
> >>>>>> PETSc has never promised complete backward compatibility in the sense 
> >>>>>> of promising that one can use new PETSc releases without any changes 
> >>>>>> to their code; the documentation has always stated new releases will 
> >>>>>> contain changes in the API. We began using depreciate a few years ago 
> >>>>>> to limit the number of changes that needed to be made immediately for 
> >>>>>> each release but depreciate is not suitable for all changes and so 
> >>>>>> users do need to make some changes for each new release. 
> >>>>>> 
> >>>>>> 
> >>>>>> 
> >>>>>> 
> >>>>>> 
> >>>>>>> On Apr 3, 2022, at 7:23 AM, Lisandro Dalcin <dalc...@gmail.com> wrote:
> >>>>>>> 
> >>>>>>> The recent PetscUse/TryMethod changes are backward incompatible. 
> >>>>>>> Third-party codes cannot compile without modification. Our users 
> >>>>>>> deserve better.
> >>>>>>> 
> >>>>>>> 
> >>>>>>> -- 
> >>>>>>> Lisandro Dalcin
> >>>>>>> ============
> >>>>>>> Senior Research Scientist
> >>>>>>> Extreme Computing Research Center (ECRC)
> >>>>>>> King Abdullah University of Science and Technology (KAUST)
> >>>>>>> http://ecrc.kaust.edu.sa/ <http://ecrc.kaust.edu.sa/>
> >>>>>> 
> >>>>>> 
> >>>>> 
> >>>> 
> >>> 
> >> 
> > 
> 

Reply via email to