[petsc-users] Loading vector in parallel using PetscBinaryRead

Matthew Knepley knepley at gmail.com
Tue Aug 30 01:08:59 CDT 2011


On Tue, Aug 30, 2011 at 3:43 AM, khalid ashraf <khalid_eee at yahoo.com> wrote:

> Hi,
> I am trying to load a vector that I saved as PetscBinary file.
> On a single processor, I have to put an initial PetscBinaryRead command &
> put the subsequent reads in the loop. Then I get the correct answer. I don't
> understand why an initial PetscBinaryRead is required. Anyway, with this,
> the code works fine on single processor.
>
> However, on multiple processors, the input file and the vector after
> reading are not in the same order. I think that somehow I have to pass the
> information to each processor as to which part of the binary file to read.
> Please tell me how to do this.
>

Is there a reason you are not using VecLoad,
http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/Vec/VecLoadIntoVector.html?

   Matt


> Thanks.
>
> Khalid
>
>
> Here is the code:
>
> PetscViewerBinaryOpen(appctx->comm,"Pxbin_10.out",FILE_MODE_READ,&viewer);
> PetscViewerBinaryGetDescriptor(viewer,&fd);
> PetscBinaryRead(fd,header,1,PETSC_SCALAR);
>
>  for (k=zs; k<zs+zm; k++) {
>   for (j=ys; j<ys+ym; j++) {
>   for (i=xs; i<xs+xm; i++) {
> PetscBinaryRead(fd,header,1,PETSC_SCALAR);
>     u_localptr[k][j][i] = header[0];
>   }
>   }
>   }
>
>


-- 
What most experimenters take for granted before they begin their experiments
is infinitely more interesting than any results to which their experiments
lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20110830/3215489d/attachment.htm>


More information about the petsc-users mailing list