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