In [1]:
from petsc4py import PETSc
from PyTrilinos import EpetraExt, Epetra
from numpy import array,loadtxt
import scipy.sparse as sps
import scipy.io
from scipy2Trilinos import scipy_csr_matrix2CrsMatrix
import ipdb
from dolfin import *
import matplotlib.pylab as plt
# data = loadtxt("A_epetra.txt")
# col,row,values = data[:,0]-1,data[:,1]-1,data[:,2]
n = 1000.0
A = scipy.sparse.rand(n, n, density=1/(n**1.4), format='csr')
comm = Epetra.PyComm()
tic()
As = scipy_csr_matrix2CrsMatrix(A, comm)
print toc()
tic()
As = PETSc.Mat().createAIJ(size=A.shape,csr=(A.indptr, A.indices, A.data))
print toc()

plt.spy(A)
plt.show()


0.00518798828125
0.000851154327393

In [9]:
print As.convert?

In [17]:
from petsc4py import PETSc as _PETSc
data = As.getValuesCSR()
(Istart,Iend) = As.getOwnershipRange()
columns = As.getSize()[0]
sparseSubMat = sps.csr_matrix(data[::-1],shape=(Iend-Istart,columns))
comm = _PETSc.COMM_WORLD

sparseSubMat = comm.tompi4py().allgather(sparseSubMat)
A = sps.vstack(sparseSubMat)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-17-7d134faa38a6> in <module>()
      7 
      8 sparseSubMat = comm.tompi4py().allgather(sparseSubMat)
----> 9 A = sparse.vstack(sparseSubMat)

NameError: name 'sparse' is not defined

In [ ]: