To complete your query - you'll also need a Vec with the same communicator - i.e PETSC_COMM_SELF - for your approach to work. One way to do this is:
VecGetArray(vec,&v) VecGetLocalSize(vec,size) VecCreateSeqWithArray(MPI_COMM_SELF,size,v,&seqvec) VecView(seqvec,seqviewer) VecDestroy(seqvec) VecRestoreArray(vec,&v) Satish On Thu, 23 Nov 2006, Barry Smith wrote: > > NEVER use ascii for large data sets. Use the binary viewer to save > them. See PetscViewerBinaryOpen(). > > Barry > > > On Thu, 23 Nov 2006, Matteo Semplice wrote: > > > This is really a newbie question but I am struggling to solve out of memory > > troubles on my first processor. > > > > I have a parallel global vector, say v, that I obtain with a call to > > DAGetGlobalVector. I save it to disk opening an ASCII standard viewer on > > PETSC_COMM_WORLD and calling VecView. As I understand from the manual, this > > causes all processors to send their data to the first one and this one > > writes > > them to disk. This works fine for small computational grids, but hangs my > > program if the grid is bigger. > > > > I am thinking to get each processor to write its own file and reassemble > > the > > data at the end of the program. I tried to create the viewer with the > > communicator PETSC_COMM_SELF and issue VecView. I get as many files as > > processors, but the first one contains all the data and the others are > > empty! > > > > Why? And, more importantly, what's the best way to achieve my goal? > > > > Thanks a lot. > > > > Matteo > > > > > >
