[petsc-users] upgrading to 3.22.4

Sanjay Govindjee s_g at berkeley.edu
Sun Mar 23 17:22:51 CDT 2025


Barry and Jose,
I have gotten my compile issues down to the following:

    usolve.F:84:46:

        84 |       MatInfo        info(MAT_INFO_SIZE)
           |                                              1
    Error: Symbol 'mat_info_size' at (1) has no IMPLICIT type; did you
    mean 'mpi_win_size'?
    usolve.F:191:39:

       191 |             mal = info(MAT_INFO_MALLOCS)
           |                                       1
    Error: Symbol 'mat_info_mallocs' at (1) has no IMPLICIT type; did
    you mean 'mpi_info_null'?
    usolve.F:189:44:

       189 |             nza = info(MAT_INFO_NZ_ALLOCATED)
           |                                            1
    Error: Symbol 'mat_info_nz_allocated' at (1) has no IMPLICIT type;
    did you mean 'mpi_win_flavor_allocate'?
    usolve.F:190:39:

       190 |             nzr = info(MAT_INFO_NZ_USED)
           |                                       1
    Error: Symbol 'mat_info_nz_used' at (1) has no IMPLICIT type; did
    you mean 'mpi_info_null'?
    usolve.F:188:72:

       188 |             call MatGetInfo(Kmat, MAT_LOCAL, info, ierr)
    | 1
    Error: There is no specific subroutine for the generic 'matgetinfo'
    at (1)
    usolve.F:346:15:

It seems that my issues are revolve about MatInfo, but I can not see 
what I am doing wrong.
In terms of variable declarations, here is what I have

           MatInfo        info(MAT_INFO_SIZE)

One follow-up on a fix I made to remove some compile errors; I looked 
into petscksp.hf90 and found that the return value from 
KSPGetConvergedReason(kspsol,reason,ierr) can be accessed as reason%v. 
Is there a recommended way to get the value of the reason?  My use of 
reason%v seems rather unclean.  The use case is I want to know if the 
reason value is .gt.0 or .lt.0 and then given that I want to print a 
custom string to stdout and to a file unit.

All hints appreciated,
-sanjay



On 3/23/25 2:13 AM, Sanjay Govindjee wrote:
> Jose,
> Using the pointer construction to set up the arrays has resolved the 
> issue with finding the preallocation interfaces.
> I'll look at the other issues tomorrow.  Thanks for the help.
> -sanjay
> -
>
> On 3/23/25 1:43 AM, Sanjay Govindjee wrote:
>> Complicated history of a 40+ year old code.  But in short
>> mr( np(246) ) is the first location of an allocated block of memory.
>>
>> If need be I can explicitly set up a pointer to the array, something like
>>
>>     integer, pointer :: arname( : )
>>     arname(1:arrlen)      => mr(np(246):np(246)+arrlen-1)
>>
>> I'd rather not do this if I do not need to, but it is also not a big 
>> deal if that would
>> take care of the problem.
>> -------------------------------------------------------------------
>> Sanjay Govindjee, PhD, PE
>> Horace, Dorothy, and Katherine Johnson Professor in Engineering
>> Distinguished Professor of Civil and Environmental Engineering
>>
>> 779 Davis Hall
>> University of California
>> Berkeley, CA 94720-1710
>>
>> Voice:  +1 510 642 6060
>> FAX:    +1 510 643 5264
>> s_g at berkeley.edu
>> https://urldefense.us/v3/__http://faculty.ce.berkeley.edu/sanjay__;!!G_uCfscf7eWS!ehz0XBo49bhZyipfWPRxQNlqhVtKSPrq3HLOVdkkAI_8ML6Op73QTljYEYxjCbBRnJYZjqcpXu5s-73t7iL7HQ$ 
>> -------------------------------------------------------------------
>>
>> Books:
>>
>> Introduction to Mechanics of Solid Materials
>> https://urldefense.us/v3/__https://global.oup.com/academic/product/introduction-to-mechanics-of-solid-materials-9780192866080__;!!G_uCfscf7eWS!ehz0XBo49bhZyipfWPRxQNlqhVtKSPrq3HLOVdkkAI_8ML6Op73QTljYEYxjCbBRnJYZjqcpXu5s-72wUrGTLw$ 
>>
>> Continuum Mechanics of Solids
>> https://urldefense.us/v3/__https://global.oup.com/academic/product/continuum-mechanics-of-solids-9780198864721__;!!G_uCfscf7eWS!ehz0XBo49bhZyipfWPRxQNlqhVtKSPrq3HLOVdkkAI_8ML6Op73QTljYEYxjCbBRnJYZjqcpXu5s-73NKzuAHQ$ 
>>
>> Example Problems for Continuum Mechanics of Solids
>> https://urldefense.us/v3/__https://www.amazon.com/dp/1083047361/__;!!G_uCfscf7eWS!ehz0XBo49bhZyipfWPRxQNlqhVtKSPrq3HLOVdkkAI_8ML6Op73QTljYEYxjCbBRnJYZjqcpXu5s-735DnkCuw$ 
>>
>> Engineering Mechanics of Deformable Solids
>> https://urldefense.us/v3/__https://www.amazon.com/dp/0199651647__;!!G_uCfscf7eWS!ehz0XBo49bhZyipfWPRxQNlqhVtKSPrq3HLOVdkkAI_8ML6Op73QTljYEYxjCbBRnJYZjqcpXu5s-70b6-U0yw$ 
>>
>> Engineering Mechanics 3 (Dynamics) 2nd Edition
>> https://urldefense.us/v3/__http://www.amazon.com/dp/3642537111__;!!G_uCfscf7eWS!ehz0XBo49bhZyipfWPRxQNlqhVtKSPrq3HLOVdkkAI_8ML6Op73QTljYEYxjCbBRnJYZjqcpXu5s-73QO-rr2g$ 
>>
>> Engineering Mechanics 3, Supplementary Problems: Dynamics
>> https://urldefense.us/v3/__http://www.amzn.com/B00SOXN8JU__;!!G_uCfscf7eWS!ehz0XBo49bhZyipfWPRxQNlqhVtKSPrq3HLOVdkkAI_8ML6Op73QTljYEYxjCbBRnJYZjqcpXu5s-71XhgI3Fw$ 
>>
>> -------------------------------------------------------------------
>> NSF NHERI SimCenter
>> https://urldefense.us/v3/__https://simcenter.designsafe-ci.org/__;!!G_uCfscf7eWS!ehz0XBo49bhZyipfWPRxQNlqhVtKSPrq3HLOVdkkAI_8ML6Op73QTljYEYxjCbBRnJYZjqcpXu5s-70kbFz5Mg$ 
>> -------------------------------------------------------------------
>>
>> On 3/23/25 1:36 AM, Jose E. Roman wrote:
>>> What is mr(np(246))? It should be an array, not a single entry of an array. As indicated in the list of changes, in some cases you can use the syntax [z] instead of z to represent an array of single value z.
>>>
>>>
>>>> El 23 mar 2025, a las 9:24, Sanjay Govindjee<s_g at berkeley.edu> escribió:
>>>>
>>>> Jose,
>>>>     I've tried lots of combinations but I still get the same error.  I think the signatures are all correct.  I've attached the routine in case you see something obvious.  If not I will try to make a standalone program that generates the same compile error.
>>>> upremas.F:66:72:
>>>>
>>>>     66 |      &                               ierr)
>>>>        |                                                                        1
>>>> Error: There is no specific subroutine for the generic 'matmpibaijsetpreallocation' at (1)
>>>> upremas.F:69:72:
>>>>
>>>>     69 |      &                               ierr)
>>>>        |                                                                        1
>>>> Error: There is no specific subroutine for the generic 'matseqbaijsetpreallocation' at (1)
>>>> upremas.F:75:72:
>>>>
>>>>     75 |      &                             ierr)
>>>>        |                                                                        1
>>>> Error: There is no specific subroutine for the generic 'matmpiaijsetpreallocation' at (1)
>>>> upremas.F:78:72:
>>>>
>>>>     78 |      &                             ierr)
>>>>        |                                                                        1
>>>> Error: There is no specific subroutine for the generic 'matseqaijsetpreallocation' at (1)
>>>>
>>>> --
>>>>
>>>>
>>>> On 3/23/25 1:09 AM, Jose E. Roman wrote:
>>>>> "use petscmat" will use those definitions.
>>>>>
>>>>> As I said, you probably have mismatching arguments. For instance
>>>>> call MatSeqAIJSetPreallocation(Mmat,
>>>>> & PETSC_NULL_INTEGER_ARRAY,mr(np(246)),
>>>>> & ierr)
>>>>> The second argument is a PetscInt so PETSC_NULL_INTEGER_ARRAY is wrong, it should be PETSC_NULL_INTEGER.
>>>>>
>>>>> Now the compiler will help you fix this kind of errors, which would go unnoticed before.
>>>>>
>>>>> Jose
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> El 23 mar 2025, a las 9:02, Sanjay Govindjee<s_g at berkeley.edu> escribió:
>>>>>>
>>>>>> Jose,
>>>>>> What module should I be using to load petscmat.h90?
>>>>>> -sanjay
>>>>>>
>>>>>> --
>>>>>>
>>>>>> On 3/23/25 12:54 AM, Jose E. Roman wrote:
>>>>>>
>>>>>>> Have a look at the list of changes - it is currently herehttps://petsc.org/main/changes/dev/ until the new version is released. See the last section "Fortran".
>>>>>>>
>>>>>>> The functions ending in "F90" have been renamed, just remove the "F90" suffix.
>>>>>>>
>>>>>>> Regarding the info-related errors, a workaround is to append %v, for instance
>>>>>>> mal = info(MAT_INFO_MALLOCS%v)
>>>>>>> But Barry may want to provide a better fix for this.
>>>>>>>
>>>>>>> Jose
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> El 23 mar 2025, a las 8:42, Jose E. Roman via petsc-users<petsc-users at mcs.anl.gov> escribió:
>>>>>>>>
>>>>>>>> The Fortran interfaces for those functions are generated correctly, see $PETSC_ARCH/ftn/mat/petscmat.h90
>>>>>>>>
>>>>>>>> For instance:
>>>>>>>>
>>>>>>>> interface MatMPIBAIJSetPreallocation
>>>>>>>> subroutine MatMPIBAIJSetPreallocation(a,b,c,d,e,f, z)
>>>>>>>> import tMat
>>>>>>>> Mat :: a
>>>>>>>> PetscInt :: b
>>>>>>>> PetscInt :: c
>>>>>>>> PetscInt :: d(*)
>>>>>>>> PetscInt :: e
>>>>>>>> PetscInt :: f(*)
>>>>>>>> PetscErrorCode z
>>>>>>>> end subroutine
>>>>>>>> end interface
>>>>>>>>
>>>>>>>> The compiler message is probably due to the type of an argument not matching the expected one. In particular, if you are passing NULL in one of the array arguments, you should use PETSC_NULL_INTEGER_ARRAY and not PETSC_NULL_INTEGER.
>>>>>>>>
>>>>>>>> Jose
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> El 23 mar 2025, a las 8:25, Sanjay Govindjee via petsc-users<petsc-users at mcs.anl.gov> escribió:
>>>>>>>>>
>>>>>>>>> Small update. I managed to eliminate all the errors associated with PetscViewer and below (it had to do with the fact that I had not yet built a module that was needed). The errors related to the preallocation routines still persists.
>>>>>>>>> -sanjay
>>>>>>>>>
>>>>>>>>> On 3/23/25 12:19 AM, Sanjay Govindjee wrote:
>>>>>>>>>
>>>>>>>>>> Hi Barry,
>>>>>>>>>> I have moved to main and rebuilt the PETSc libraries etc. Right now I am having trouble just getting my source code to compile. Plenty of subroutines with PETSc calls compile but a few are throwing errors and killing my compile. I suspect there will be more but if I can figure these hopefully I can debug the ones that will follow.
>>>>>>>>>> -sanjay
>>>>>>>>>> Error: There is no specific subroutine for the generic 'matmpibaijsetpreallocation' at (1)
>>>>>>>>>> upremas.F:68:72:
>>>>>>>>>>
>>>>>>>>>> 68 | & ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'matseqbaijsetpreallocation' at (1)
>>>>>>>>>> upremas.F:74:72:
>>>>>>>>>>
>>>>>>>>>> 74 | & ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'matmpiaijsetpreallocation' at (1)
>>>>>>>>>> upremas.F:77:72:
>>>>>>>>>>
>>>>>>>>>> 77 | & ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'matseqaijsetpreallocation' at (1)
>>>>>>>>>>
>>>>>>>>>> parkv.F:58:25:
>>>>>>>>>>
>>>>>>>>>> 58 | PetscViewer Y_view
>>>>>>>>>> | 1
>>>>>>>>>> Error: Type name 'tpetscviewer' at (1) is ambiguous
>>>>>>>>>> parkv.F:69:9:
>>>>>>>>>>
>>>>>>>>>> 69 | endif
>>>>>>>>>> | 1
>>>>>>>>>> Error: Expecting END SUBROUTINE statement at (1)
>>>>>>>>>> parkv.F:72:9:
>>>>>>>>>>
>>>>>>>>>> 72 | endif
>>>>>>>>>> | 1
>>>>>>>>>> Error: Expecting END SUBROUTINE statement at (1)
>>>>>>>>>> parkv.F:91:66:
>>>>>>>>>>
>>>>>>>>>> 91 | call PetscViewerASCIIOpen(PETSC_COMM_WORLD,"yvec.m",Y_view,
>>>>>>>>>> | 1
>>>>>>>>>> Error: Symbol 'y_view' at (1) has no IMPLICIT type; did you mean 'yvec'?
>>>>>>>>>> parkv.F:65:72:
>>>>>>>>>>
>>>>>>>>>> 65 | call VecCreate (PETSC_COMM_WORLD, xvec, ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'veccreate' at (1)
>>>>>>>>>> parkv.F:67:72:
>>>>>>>>>>
>>>>>>>>>> 67 | call VecSetFromOptions(xvec, ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'vecsetfromoptions' at (1)
>>>>>>>>>> parkv.F:68:72:
>>>>>>>>>>
>>>>>>>>>> 68 | call VecDuplicate (xvec, yvec, ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'vecduplicate' at (1)
>>>>>>>>>> parkv.F:71:72:
>>>>>>>>>>
>>>>>>>>>> 71 | call VecDuplicate (xvec, yvec, ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'vecduplicate' at (1)
>>>>>>>>>> parkv.F:85:72:
>>>>>>>>>>
>>>>>>>>>> 85 | call VecAssemblyBegin(xvec, ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'vecassemblybegin' at (1)
>>>>>>>>>> parkv.F:86:72:
>>>>>>>>>>
>>>>>>>>>> 86 | call VecAssemblyEnd (xvec, ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'vecassemblyend' at (1)
>>>>>>>>>> parkv.F:88:72:
>>>>>>>>>>
>>>>>>>>>> 88 | call MatMult (Kmat, xvec, yvec, ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'matmult' at (1)
>>>>>>>>>> parkv.F:101:72:
>>>>>>>>>>
>>>>>>>>>> 101 | call VecGetOwnershipRange(yvec, starti, endi, ierr)
>>>>>>>>>> | 1
>>>>>>>>>> Error: There is no specific subroutine for the generic 'vecgetownershiprange' at (1)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 3/21/25 7:17 AM, Barry Smith wrote:
>>>>>>>>>>
>>>>>>>>>>> I have just pushed a major update to the Fortran interface to the main PETSc git branch. Could you please try to work with main (to become release in a couple of weeks) with your Fortran code as we debug the problem? This will save you a lot of work and hopefully make the debugging more straightforward.
>>>>>>>>>>>
>>>>>>>>>>> You can send the same output with the debugger if it crashes in the main branch and I can try to track down what is going wrong.
>>>>>>>>>>>
>>>>>>>>>>> Barry
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> On Mar 21, 2025, at 12:37 AM, Sanjay Govindjee via petsc-users<petsc-users at mcs.anl.gov> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> I am trying to upgrade my code to PETSc 3.22.4 (the code was last updated to 3.19.4 or perhaps 3.18.1, I've lost track). I've been using this code with PETSc for over 20 years.
>>>>>>>>>>>>
>>>>>>>>>>>> To get my code to compile and link during this update, I only need to make two changes; one was to use PetscViewerPushFormat instead of PetscViewerSetFormat and the other was to use PETSC_NULL_INTEGER_ARRAY in a spot or two.
>>>>>>>>>>>>
>>>>>>>>>>>> When I run the code however, I am getting an error very early on during a call to MatCreate near the beginning of the code. The screen output says:
>>>>>>>>>>>> [3]PETSC ERROR: matcreate_() at /Users/sg/petsc-3.22.4/gnug/src/mat/utils/ftn-auto/gcreatef.c:101 Cannot create PETSC_NULL_XXX object
>>>>>>>>>>>> [0]PETSC ERROR: matcreate_() at /Users/sg/petsc-3.22.4/gnug/src/mat/utils/ftn-auto/gcreatef.c:101 Cannot create PETSC_NULL_XXX object
>>>>>>>>>>>> [1]PETSC ERROR: matcreate_() at /Users/sg/petsc-3.22.4/gnug/src/mat/utils/ftn-auto/gcreatef.c:101 Cannot create PETSC_NULL_XXX object
>>>>>>>>>>>> [2]PETSC ERROR: matcreate_() at /Users/sg/petsc-3.22.4/gnug/src/mat/utils/ftn-auto/gcreatef.c:101 Cannot create PETSC_NULL_XXX object
>>>>>>>>>>>> I have a 4 processor run going. I am running with -on_error_attach_debugger but the debugger is giving me cryptic (at least to me) output (the same for all 4 processes modulo the PID). Stack traces seem to be unavailable :(
>>>>>>>>>>>> lldb -p 71963
>>>>>>>>>>>> (lldb) process attach --pid 71963
>>>>>>>>>>>> Process 71963 stopped
>>>>>>>>>>>> * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
>>>>>>>>>>>> frame #0: 0x00007fff69d92746 libsystem_kernel.dylib`__semwait_signal + 10
>>>>>>>>>>>> libsystem_kernel.dylib`__semwait_signal:
>>>>>>>>>>>> -> 0x7fff69d92746 <+10>: jae 0x7fff69d92750 ; <+20>
>>>>>>>>>>>> 0x7fff69d92748 <+12>: movq %rax, %rdi
>>>>>>>>>>>> 0x7fff69d9274b <+15>: jmp 0x7fff69d9121d ; cerror
>>>>>>>>>>>> 0x7fff69d92750 <+20>: retq
>>>>>>>>>>>> Target 0: (feap) stopped.
>>>>>>>>>>>>
>>>>>>>>>>>> Executable module set to "/Users/sg/Feap/ver87/parfeap/feap".
>>>>>>>>>>>> Architecture set to: x86_64h-apple-macosx-.
>>>>>>>>>>>> Does anyone have any hints as to what may be going on? Note the program starts normally and i can do stuff with the interactive interface for the code -- even plotting the mesh etc. so I believe the input data has been read in correctly. The crash only occurs when I initiate the formation of the matrix.
>>>>>>>>>>>>
>>>>>>>>>>>> I am attaching the /Users/sg/petsc-3.22.4/gnug/src/mat/utils/ftn-auto/gcreatef.c file in case that offers some insight.
>>>>>>>>>>>>
>>>>>>>>>>>> Note, I have been
>>>>>>>>>>>> -sanjay
>>>>>>>>>>>> -- 
>>>>>>>>>>>>
>>>>>>>>>>>> <gcreatef.c>
>>>>>>>>>>>>
>>>> <upremas.F>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20250323/852d6818/attachment-0001.html>


More information about the petsc-users mailing list