<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><br></div>  I see<div><br></div><div><div>cdef extern from * nogil:</div><div>  ctypedef enum PetscErrorCode:</div><div>    PETSC_SUCCESS</div><div>    PETSC_ERR_PLIB</div><div>    PETSC_ERR_SUP</div><div>    PETSC_ERR_USER</div><div>    PETSC_ERR_MEM</div><div>    PETSC_ERR_MPI</div><div>    PETSC_ERR_PYTHON</div><div><br></div><div>  ctypedef enum PetscErrorType:</div><div>    PETSC_ERROR_INITIAL</div><div>    PETSC_ERROR_REPEAT</div><div><br></div><div>cdef PetscErrorCode CHKERR(PetscErrorCode) except PETSC_ERR_PYTHON nogil</div><div><br></div><div>in src/binding/petsc4py/src/petsc4py/PETSc.pxd</div><div><br></div><div>I don't know enough about cython to know how it could be accessible from Python code.</div><div><br></div><div><br></div><div><br><blockquote type="cite"><div>On Nov 27, 2023, at 3:46 AM, Miguel Angel Salazar de Troya <miguel.salazar@corintis.com> wrote:</div><br class="Apple-interchange-newline"><div><div dir="ltr"><div dir="ltr">Hello,<div><br></div><div>Is there any way to get the PETSc error codes in the python interface? The test I provided below is just a simple example that I know will run out of memory.</div><div><br></div><div>Miguel</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 15, 2023 at 10:00 AM Miguel Angel Salazar de Troya <<a href="mailto:miguel.salazar@corintis.com">miguel.salazar@corintis.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><span class="gmail_signature_prefix">Hello,</span></div><div><span class="gmail_signature_prefix"><br></span></div><div><span class="gmail_signature_prefix">The following </span><span class="gmail_signature_prefix">simple petsc4py </span><span class="gmail_signature_prefix">snippet runs out of memory, but I would like to handle it from python with the usual try-except. Is there any way to do so? How can I get the PETSc error codes in the python interface?</span></div><div><span class="gmail_signature_prefix"><br></span></div><div><span class="gmail_signature_prefix">Thanks<br></span></div><div><span class="gmail_signature_prefix"><br></span></div><div>from petsc4py import PETSc<br>import sys, petsc4py<br>petsc4py.init(sys.argv)<br>try:<br>    m, n = 1000000, 1000000<br>    A = PETSc.Mat().createAIJ([m, n], nnz=1e6)<br>   <br>    A.assemblyBegin()<br>    A.assemblyEnd()<br>except Exception as e:<br>    print(f"An error occurred: {e}")<br></div><div><br></div><div>An error occurred: error code 55<br>[0] MatSeqAIJSetPreallocation() at /Users/miguel/repos/firedrake-glacierware/src/petsc/src/mat/impls/aij/seq/aij.c:3942<br>[0] MatSeqAIJSetPreallocation_SeqAIJ() at /Users/miguel/repos/firedrake-glacierware/src/petsc/src/mat/impls/aij/seq/aij.c:4008<br>[0] PetscMallocA() at /Users/miguel/repos/firedrake-glacierware/src/petsc/src/sys/memory/mal.c:408<br>[0] PetscMallocAlign() at /Users/miguel/repos/firedrake-glacierware/src/petsc/src/sys/memory/mal.c:53<br>[0] Out of memory. Allocated: 0, Used by process: 59752448<br>[0] Memory requested 18446744064984991744</div><div><span class="gmail_signature_prefix"></span></div><div dir="ltr" class="gmail_signature"><table><tbody><tr><td height="1" width="500" style="line-height:1px"><br></td> </tr></tbody></table> <table cellpadding="0" cellspacing="0" border="0" style="float:none;font-size:12px;font-family:sans-serif;color:rgb(98,98,98);border-collapse:collapse"><tbody><tr> <td height="5" width="100%" style="font-size:5px;line-height:5px">   </td> </tr></tbody></table>   <table><tbody><tr> <td height="1" width="500" style="line-height:1px"> <img src="https://cdn.signite.io/static/spacer.gif" width="500" height="1" border="0" style="display: block;" alt=""> </td> </tr> </tbody></table></div></div>
</blockquote></div></div>
</div></blockquote></div><br></div></body></html>