Hi, I would like to preallocate my highly sparse matrices to get speed up during assembling.
Up to 70000x70000, it works fine in parallel. But when I exceed around 70000 rows/columns, I receive following error at preallocation line; petsc4py.PETSc.Error: error code 4031 [0] MatMPIAIJSetPreallocation() at /home/ekrem/Dev/Venvs/dolfinxcomplex/installation/petsc/src/mat/impls/aij/mpi/mpiaij.c:4039 [0] MatMPIAIJSetPreallocation_MPIAIJ() at /home/ekrem/Dev/Venvs/dolfinxcomplex/installation/petsc/src/mat/impls/aij/mpi/mpiaij.c:2845 [0] MatSeqAIJSetPreallocation() at /home/ekrem/Dev/Venvs/dolfinxcomplex/installation/petsc/src/mat/impls/aij/seq/aij.c:3963 [0] MatSeqAIJSetPreallocation_SeqAIJ() at /home/ekrem/Dev/Venvs/dolfinxcomplex/installation/petsc/src/mat/impls/aij/seq/aij.c:4031 [0] PetscMallocA() at /home/ekrem/Dev/Venvs/dolfinxcomplex/installation/petsc/src/sys/memory/mal.c:401 [0] PetscMallocAlign() at /home/ekrem/Dev/Venvs/dolfinxcomplex/installation/petsc/src/sys/memory/mal.c:49 [0] MatSeqAIJSetPreallocation_SeqAIJ I have attached my sparsity pattern as CSR.png. I use petsc4py for matrix generation, and here are the commands that I am using to generate matrix; row # global row numbers col = # global column numbers val = # flattened 2D nonzero array mat = PETSc.Mat().create(PETSc.COMM_WORLD) mat.setSizes([(local_size, global_size), (local_size, global_size)]) mat.setType('mpiaij') ONNZ = len(row)*np.ones(local_size,dtype=np.int32) mat.setPreallocationNNZ([ONNZ,ONNZ]) # This line throws the error above mat.setOption(PETSc.Mat.Option.NEW_NONZERO_ALLOCATION_ERR, False) mat.setUp() mat.setValues(row, col, val, addv=PETSc.InsertMode.ADD_VALUES) mat.assemblyBegin() mat.assemblyEnd() Many thanks for your response in advance, Kind regards