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

Reply via email to