Techically even a cycle can be dealt with.

- have a june release of all packages (with old version dependencies).
- have a sept release of all packages (with new versiondependencies) - but 
don't change API from june to sept

But practically - every packages has their own release cyle [and
issues] and perhaps a world view [the same way we think in PETSc centric mode] -

So far (within the xsdk side of things) - issues came up and were able
to deal with when discovered. But its not clear how we can improve on this

[witout some buy-in from individual packages to not beak things in a
major way. and adding testing to detect things early enough so there
is time to deal with them.]

Satish

On Sun, 3 Apr 2022, Barry Smith wrote:

> 
>   I agree this is an issue with xsdk; I don't have any good technical 
> solution for packages with cyclic dependencies; for one-way dependencies the 
> solution is easy as Jed pointed out, just sort the dependencies and make sure 
> that packages that depend on, for example, PETSc get final xsdk "releases" 
> after PETSc. Politically this may be hard, technically it is easy. This would 
> mean finalizing hypre and superlu_dist then finalizing PETSc then finalizing 
> dealii. 
> 
> 
> 
> > On Apr 3, 2022, at 1:15 PM, Satish Balay via petsc-dev 
> > <petsc-dev@mcs.anl.gov> wrote:
> > 
> > This issue comes up in xsdk. most packages [superlu_dist, hypre, petsc, 
> > trilinos - and a bunch of others] attempt to make a release in sept [ECP 
> > milestone].
> > 
> > But then there are non-ecp packages that don't do that - and isues come up 
> > [for ex: dealii usually has an earlier release - that has a dependency on 
> > petsc.]
> > 
> > One of the tasks is to setup CI to detect this early enough. But then - 
> > there could be many breakages - and the first brakage [until its addressed] 
> > prevents one from noticing the next breakage]
> > 
> > https://gitlab.com/xsdk-project/spack-xsdk/-/jobs/2285145631
> > 
> > There are multiple challanges here - [apart from the moving target in each 
> > packages] - just identifying the correct target for the external package - 
> > i.e: will there be a new release of the external package-A before package-B 
> > - and what branch should one target (to test) for that new release etc..
> > 
> > And Its not clear if we can push some of this testing to individual package 
> > test suite [instead of completely at the xsdk level]. i.e what kind of 
> > testing in the PETSc CI cycle would help here?
> > 
> > Just having 1 moving package [petsc4py] in this CI cycle - triggered in a 
> > merge of petsc4py sources in petsc source tree. Not sure how what issues 
> > would come up if we have others.
> > 
> > I have a small subset of this in xsdk ci 
> > https://gitlab.com/xsdk-project/spack-xsdk/-/jobs/2285145624
> > 
> > $ nice ./bin/spack install --fail-fast -j24 slepc@main 
> > ^petsc@main+mpi+hypre+superlu-dist+metis+hdf5~mumps+double~int64 
> > ^netlib-lapack pflotran@develop 
> > ^petsc@main+mpi+hypre+superlu-dist+metis+hdf5~mumps+double~int64 
> > ^netlib-lapack
> > 
> > Satish
> > 
> > On Sun, 3 Apr 2022, Jed Brown wrote:
> > 
> >> Sundials, for example.
> >> 
> >> PETSc is still relatively low in the software stack. If everyone is making 
> >> biannual releases for ECP, then we'd need a topological sort on 
> >> dependencies and PETSc would need to release (or at least freeze) early, 
> >> e.g., January or February, so other packages have time to update by their 
> >> March deadlines.
> >> 
> >> I understand there may have been an assessment that PetscTryMethod sees 
> >> vanishing use by dependencies. I think if we're doing that, it should 
> >> probably be earlier in the release cycle with more effort to assess and 
> >> notify such dependencies. Maybe we could keep a list of high profile 
> >> packages, a script to grep them all, and a weekly(?) CI job that builds 
> >> them.
> >> 
> >> On Sun, Apr 3, 2022, at 10:45 AM, 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. 
> >>> 
> >>>  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