Perhaps there are already some political decisions made. Since PETSc is part of xsdk - we are to commited to contirbute to it.
But then when evaluating MRs - its hard to rememer how to enforce some of these commitments. [so for improving CI is the primary suggestion - and only at the xsdk level] Also my comments so far are from xsdk point of view - and this thread started off from the burden petsc changes impose on regular users [and packages] - so those issues can't easily be addressed in any 'enforced DOE political decision' Satish On Sun, 3 Apr 2022, Barry Smith wrote: > > I think this requires the political decision to be made on the order of the > finalization and rules to enforce the order and timings. In a distributed DOE > world this kind of political decision is tough. > > I think a system more like just-in-time-packaging has to emerge to give > more flexibility for the free-wheeling open source work. I have no idea how > one could achieve this. Some kind of "smart" versioning that doe not require > one to explicitly manage a bunch of "if package version is x do y else if > version is z do w." > > > > > On Apr 3, 2022, at 1:29 PM, Satish Balay <ba...@mcs.anl.gov> wrote: > > > > 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/> > >>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>> > >>>>> > >>>> > >>> > >> > > >