<div dir="ltr"><div><div><div>Hi everyone,<br><br></div>I am trying to use Mat.view and Mat.load that you suggested. Regardless of the fact that the matrix i get is not what i had initially, my question is about how Mat.load reads the matrix in Parallel. Am i able to read the matrix in parallel regardless how it was written with Mat.view() ? My second question is about the difference between PETSc.COMM_WORLD and MPI.COMM_WORLD, i have read in the user's manual that they are the practically the same, but creating a viewer with MPI.COMM_WORLD returns an error and it works with PETSc.COMM_WORLD. <br><br></div><div>ps:<br></div><b>Here is the code i am using to write the matrix</b><br><br>comm = PETSc.COMM_WORLD<br>rank = comm.Get_rank()<br>size = comm.Get_size()<br><br>sizeGlob,nnzGlob,size,nnz,I,J,A=readMat('jacobian/matJ%i'%rank)<br><br>M=PETSc.Mat()<br>M.create()<br>M.setSizes(size=(sizeGlob,sizeGlob))<br>M.setType('aij')<br>M.setUp()<br>for i in range(nnz):            #each proc holds different I,J,A and i simply fill in the matrix<br>    M[I[i]-1,J[i]-1]=A[i]<br>M.assemblyBegin()<br>M.assemblyEnd()<br>                                                                                                                                                                                                                                   <br>vi = PETSc.Viewer()<br>vi.createBinary('matJacobian',mode=1,comm=comm)<br>M.view(viewer=vi)<br><br></div><b>And the code i am using to read it:</b><br><br><div>comm = PETSc.COMM_WORLD<br>rank = comm.Get_rank()<br>size = comm.Get_size()<br><br>A = PETSc.Mat(comm)<br>vi = PETSc.Viewer()<br>vi.createBinary('matJacobian',mode=0,comm=comm)<br>A.load(vi)<br><br></div><div>Checking the matrix after reading it with A.getType returns seqaij as if it wasn't distributed on each proc!<br><br></div><div>Thank you so much for your time,<br></div><div>Sohaib<br></div><div><br></div></div>