[petsc-users] Write complex matrix/vector from Matlab
Barry Smith
bsmith at mcs.anl.gov
Sun Sep 4 21:59:27 CDT 2011
On Sep 4, 2011, at 9:52 PM, amrit poudel wrote:
>
>
> Hello Barry,
> Thanks for your quick response. The one that I have compiled was PETSc-3.1-p8. Does this mean I will need to re-compile the most recent 3.2 version to get this working? I was surprised due to the fact that PetscBinaryWrite.m did not even work for REAL matrix. The error I got while reading the file in PETSc was :
> [0]PETSC ERROR: Read from file failed!
> [0]PETSC ERROR: Read past end of file!
>
Please send your MATLAB code that generates the matrix to petsc-maint at mcs.anl.gov saving real matrices and reading them in PETSc should not be an issue. This should all work with petsc-3.1
>
> You mentioned in your reply that "reading ASCII files in parallel is not viable. "
> Does any part of my code show that I am trying to do this? I am asking this just to make sure that I am doing the right thing and not making any such mistakes.
> Did you mean that I should avoid doing something like this :
> ierr = MatLoad(binviewer, MATMPIAIJ, &C) ; CHKERRQ(ierr) ;
No, this is correct; this is reading a binary file. It is only reading ASCII sparse matrices in parallel that is a problem.
>
> Is this really not storing a sparse matrix(if C is sparse) in parallel across different processors( if I were running this on a multi-processor computer or a cluster)?
> My ultimate goal is the following, which I am copying here from my previous email :
> I plan on assembling my matrix (very large square sparse matrix, size greater than 1e+8) in MATLAB, which does not take too long to assemble in MATLAB at all. Then I will write the matrix to a binary file and read that in PETSc and solve a very large linear system of equations in parallel in PETSc using MPI.
>
> All I want to make sure is be able to read the matrix in PETSc and then have it distribute over different processors and then solve the linear system.
Yes, this is all supported and you should be able to do it.
Barry
>
> Sorry for repeating my goals here again, but I was just trying to get any feedback whether this is really the way to work with PETSc.
>
> Thank you for your help.
>
> -Amrit
>
>
>
> > From: bsmith at mcs.anl.gov
> > Date: Sun, 4 Sep 2011 21:14:24 -0500
> > To: petsc-users at mcs.anl.gov
> > Subject: Re: [petsc-users] Write complex matrix/vector from Matlab
> >
> >
> > Amrit,
> >
> > We have just recently made sure that PetscBinaryWrite.m and PetscBinaryRead.m fully support complex numbers; you can access the release candidate for PETSc 3.2 for this support
> >
> > One can use the following tarball. It will correspond to
> > petsc-3.2 sources for the next few days. And i've set it up to be
> > updated every 3 hours [from the sources in mercurial].
> >
> > http://ftp.mcs.anl.gov/pub/petsc/petsc-dev.tar.gz
> >
> > or
> >
> > >
> > > You can find the PETSc 3.2 release candidate via Mecurial at:
> > >>
> > >> ssh://petsc@petsc.cs.iit.edu//hg/petsc/releases/petsc-3.2 or http://petsc.cs.iit.edu/petsc/releases/petsc-3.2
> > >> ssh://petsc@petsc.cs.iit.edu//hg/petsc/releases/BuildSystem-3.2 or http://petsc.cs.iit.edu/petsc/releases/BuildSystem-3.2
> >
> > Should you have problems reading the complex matrices/vectors saved from MATLAB please send all information to petsc-maint at mcs.anl.gov
> >
> > We do not support the Matrix Market sparse format because it is not scalable for large matrices (i.e. it is too slow) ; reading ASCII files in parallel is not viable.
> >
> >
> > Barry
> >
> > On Sep 4, 2011, at 9:05 PM, amrit poudel wrote:
> >
> > >
> > > Hello everyone,
> > >
> > > Does anyone here know how one can write a complex or real, matrix or vector (matrix could be sparse or full) in MATLAB to a binary file such that it can be read correctly by PETSc?
> > > I tried using PetscBinaryWrite.m that came with PETSc ( /bin/matlab) to write a simple real (or complex), full (or sparse) matrix in binary file named 'matrix.dat' and tried reading it in PETSc, but it absolutely does not work :(
> > >
> > > I did PetscBinaryWrite('matrix.dat', C) to write a matrix C in an empty file named 'matrix.dat' in MATLAB. Then I tried reading 'matrix.dat' file in PETSc using the following command :
> > >
> > > PetscViewer binviewer ;
> > > Mat C ;
> > > char fileC[PETSC_MAX_PATH_LEN] ;
> > >
> > > ierr = PetscOptionsGetString(PETSC_NULL, "-fC", fileC, PETSC_MAX_PATH_LEN-1, PETSC_NULL) ; CHKERRQ(ierr) ;
> > >
> > > ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD, fileC, FILE_MODE_READ, &binviewer) ; CHKERRQ(ierr) ;
> > >
> > > ierr = MatLoad(binviewer, MATMPIAIJ, &C) ; CHKERRQ(ierr) ;
> > >
> > >
> > > I must add that I compiled PETSc with complex numbers.
> > >
> > > I plan on assembling my matrix (very large square sparse matrix, size greater than 1e+8) in MATLAB, which does not take too long to assemble in MATLAB at all. Then I will write the matrix to a binary file and read that in PETSc and solve a very large linear system of equations in parallel in PETSc using MPI. Hence, I really need to be able to write the matrix in MATLAB to a binary file such that PETSc can correctly read the matrix.
> > >
> > > I am really surprised to find out that PETSc cannot read/write a matrix or vector, full or sparse, real or complex in MATRIX MARKET FORMAT. I have gone though the manual, googled around quite a bit, but I just have not found anything useful.
> > >
> > > I will truly appreciate any help or a pointer in this regard.
> > >
> > > Thank you.
> > >
> > > Amrit
> > >
> >
More information about the petsc-users
mailing list