[petsc-users] Read in sequential, solve in parallel

Satish Balay balay at mcs.anl.gov
Wed Sep 29 05:58:58 CDT 2010


check mat/examples/tests/ex72.c,ex50.c for examples.

Also ksp/ksp/examples/tutorials/ex10.c - for loading up this matrix
and solving parallely.

Satish

On Wed, 29 Sep 2010, Jed Brown wrote:

> On Wed, Sep 29, 2010 at 11:46, Moinier, Pierre (UK)
> <Pierre.Moinier at baesystems.com> wrote:
> > I have a Matrix and a Right Hand Side (RHS) in an ASCII format stored in 2
> > different files. I have written the code that reads the data and solve the
> > system in sequential. I would like to solve the same problem in parallel. I
> > read the FAQ section that says:
> >
> > Never read or write in parallel an ASCII matrix file, instead for reading:
> > read in sequentially then save the matrix with the binary viewer
> > PetscBinaryViewerOpen() and load the matrix in parallel with MatLoad().
> >
> > So far, I did not manage to implement this. Could any one help me?
> 
> With your matrix assembled in serial:
> 
>     ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD,"A.dat",FILE_MODE_WRITE,&viewer);CHKERRQ(ierr);
>     ierr = MatView(A,viewer);CHKERRQ(ierr);
>     ierr = PetscViewerDestroy(viewer);CHKERRQ(ierr);
> 
> In parallel:
> 
>     ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD,"A.dat",FILE_MODE_READ,&viewer);CHKERRQ(ierr);
>     ierr = MatCreate(PETSC_COMM_WORLD,&A);CHKERRQ(ierr);
>     ierr = MatLoad(A,viewer);CHKERRQ(ierr);
>     ierr = PetscViewerDestroy(viewer);CHKERRQ(ierr);
>     ierr = KSPSetOperators(ksp,A,A,DIFFERENT_NONZERO_PATTERN);CHKERRQ(ierr);
> 
> 
> Jed
> 


More information about the petsc-users mailing list