Hi Dave, Yes it is parallel so the preallocation calls are not lowered by the allocation.
I am trying to use MatXAIJSetPreallocation, but not sure how, since the following link does not give an example: https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatXAIJSetPreallocation.html If I have the following matrix: 0 1 2 0 1 0 0 0 2 0 1 3 0 0 3 2 How should I put in the parameters of MatXAIJSetPreallocation? Thanks! Cheers, Yang Bo On 21 May 2020, at 5:42 PM, Dave May <dave.mayhe...@gmail.com<mailto:dave.mayhe...@gmail.com>> wrote: On Thu 21. May 2020 at 10:49, Yang Bo (Asst Prof) <yang...@ntu.edu.sg<mailto:yang...@ntu.edu.sg>> wrote: Hi Dave, Thank you very much for your reply. That is indeed the problem. I have been working with matrices in Slepc but I don’t really understand it. I tried to preallocate but it still does not work. Meaning the number of reported mallocs is still non-zero? Is the number reported with you preallocation calls lower than what you originally saw? If you look at my code below: ierr = MatCreate(PETSC_COMM_WORLD,&A);CHKERRQ(ierr); ierr = MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,h_dim,h_dim); // h_dim is the dimension of the square matrix A ierr = MatSetFromOptions(A);CHKERRQ(ierr); ierr = MatSetUp(A);CHKERRQ(ierr); ierr = MatGetOwnershipRange(A,&Istart,&Iend);CHKERRQ(ierr); MatSeqAIJSetPreallocation(A,0,nnz); // I try to preallocate here, where nnz is the array containing the number of non-zero entries each row for (int i=0;i<row.size();i++) { MatSetValue(A,row[i],column[i],h[i],INSERT_VALUES); } I am not sure what other information I need to give for the pre-allocation… This looks fine. However MatSeqAIJSetPreallocation() has no effect if the Mat type is not SEQAIJ. Are you running in parallel? If yes then the Mat type will be MATMPIAIJ and you either have to call the MPI specific preallocator or use the generic one I pointed you too. Thanks Dave Cheers, Yang Bo On 21 May 2020, at 4:08 PM, Dave May <dave.mayhe...@gmail.com<mailto:dave.mayhe...@gmail.com>> wrote: -info | grep malloc ________________________________ CONFIDENTIALITY: This email is intended solely for the person(s) named and may be confidential and/or privileged. If you are not the intended recipient, please delete it, notify us and do not copy, use, or disclose its contents. Towards a sustainable earth: Print only when necessary. Thank you.