> 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.

[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