Hi,

I currently generate PETSc matrices from scipy.sparse CSR format matrices as 
follows (where A is a scipy sparse CSR matrix):

pA = PETSc.Mat().createAIJ(size=A.shape, csr=(A.indptr, A.indices, A.data)) 

This work correctly on sequential runs, but if I run under MPI I get an error 
which I presume to be caused by the fact that all of my MPI processes try to 
simultaneously create this matrix, rather than splitting it? Eg. for 4 
processes I get:

ValueError: size(I) is 32769, expected 8193
    csr=(A.indptr, A.indices, A.data))
  File "Mat.pyx", line 256, in petsc4py.PETSc.Mat.createAIJ 
(src/petsc4py.PETSc.c:82905)

What is the best/simplest/most efficient way to convert existing data in CSR 
format to a parallel sparse PETSc matrix for use by multiple MPI processes?

Thanks for your help!
John





Reply via email to