<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Aug 12, 2014 at 11:30 AM, Mari Pecha <span dir="ltr"><<a href="mailto:pecha.mari@gmail.com" target="_blank">pecha.mari@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
So, I've tried options with VecScatterCreateToZero but I got error
message <br>
<br>
[0]PETSC ERROR: Nonconforming object sizes<br>
[0]PETSC ERROR: Vector wrong size 10 for scatter 2 (scatter reverse
and vector to != ctx from size)<br>
<br>
I'm not sure what is wrong. Could you help me? My code I've add to
attachements.<br></div></blockquote><div><br></div><div>Your vector arguments for the scatter are reversed. You are scattering from the local vector with pixel data</div><div>to the global vector.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
Thank you for your time<br>
Mari<br>
<br>
P.S: I use PETSc 3.5 and SCATTER_BACKWARD is changed to
SCATTER_REVERSE.<br></div></blockquote><div><br></div><div>Yes, that is right.</div><div><br></div><div> Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>On 12.8.2014 17:53, Matthew Knepley
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Tue, Aug 12, 2014 at 9:22 AM, Mari
Pecha <span dir="ltr"><<a href="mailto:pecha.mari@gmail.com" target="_blank">pecha.mari@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Okay. I understand
my explanation it sees to be chaotic. I try to describe
my problem on simple simple.<br>
<br>
Process with rank zero loads grayscale image from OpenCV
library then I'd like to distribute values of pixels to
grid (DMDA). And I can't find any solution for this
problem.<br>
</div>
</blockquote>
<div><br>
</div>
<div>The right thing to do is to create a custom scatter for
this case. However, you can do this in two parts. First,</div>
<div>read it in on proc 0, and then scatter to all procs
using</div>
<div><br>
</div>
<div> <a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecScatterCreateToZero.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecScatterCreateToZero.html</a></div>
<div><br>
</div>
<div>where you SCATTER_BACKWARD. Then use</div>
<div><br>
</div>
<div> <a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMDANaturalToGlobalBegin.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMDANaturalToGlobalBegin.html</a></div>
<div><br>
</div>
<div>to permute from the natural ordering that you read in
to the PETSc ordering. You could do this in one</div>
<div>step if you allow each process to read its piece of the
vector independently.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> <br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> <br>
Thank you<br>
Mari<br>
<br>
<div>On 12.8.2014 16:12, Matthew Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Tue, Aug 12, 2014 at
8:53 AM, Mari Pecha <span dir="ltr"><<a href="mailto:pecha.mari@gmail.com" target="_blank">pecha.mari@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Good
morning,<br>
<br>
I'm Mari and I'm beginner PETSc user and I'd
like to ask about tough problem, especially
for me.<br>
I solve problem of data-set distribution,
which are saved only on zero-rank process, to
DMDA global vector. It means that every
process stores a appropriate subset of
data-set. I used DMDAGlobalToNaturalAllCreate
and DMDANaturalAllToGlobalCreate function, and
then VecScatterBegin and VecScatterEnd
functions ... see please code below<br>
</blockquote>
<div><br>
</div>
<div>I have no idea what you really want to do.
How about describing your problem with</div>
<div>2 procs and 3 values per proc.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
...<br>
<br>
ierr = DMDAGlobalToNaturalAllCreate( da,
&tolocalall ); CHKERRQ(ierr);<br>
ierr = DMDANaturalAllToGlobalCreate( da,
&fromlocalall ); CHKERRQ(ierr);<br>
<br>
if( rank == 0 )<br>
{<br>
<br>
ierr = VecCreateSeq( PETSC_COMM_SELF,
SIZE, &localall );<br>
<br>
ierr = VecScatterBegin( tolocalall, x,
localall, ADD_VALUES, SCATTER_FORWARD_LOCAL );
CHKERRQ(ierr);<br>
ierr = VecScatterEnd( tolocalall, x,
localall, ADD_VALUES, SCATTER_FORWARD_LOCAL );
CHKERRQ(ierr);<br>
</blockquote>
<div><br>
</div>
<div>This will not work since you have a
collective call (VecScatterBegin) inside
if(!rank)</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
ierr = VecGetArray( x, &vlocal );
CHKERRQ(ierr);<br>
<br>
PetscInt s;<br>
VecGetSize( localall, &s );<br>
<br>
ierr = VecView( localall,
PETSC_VIEWER_STDOUT_SELF ); CHKERRQ( ierr );<br>
<br>
//create data on zero rank process<br>
for ( int i = 0; i < s; i++)
*vlocal++ = i;<br>
<br>
ierr = VecRestoreArray( localall,
&vlocal ); CHKERRQ(ierr);<br>
<br>
ierr = VecScatterBegin(fromlocalall,
localall, x, ADD_VALUES, SCATTER_FORWARD_LOCAL
); CHKERRQ(ierr);<br>
ierr = VecScatterEnd( fromlocalall,
localall, x, ADD_VALUES, SCATTER_FORWARD_LOCAL
); CHKERRQ(ierr);<br>
}<br>
<br>
....<br>
<br>
But the piece of code gets and distributes
only vector-values belong to zero-rank
process. So, I haven't any idea how can I
solve my problem only with PETSc functions.
I'd like to get all values from global vector
to zero-rank process and put back all data-set
only from zero-rank to global vector. Can you
help me, please?<br>
<br>
Thanks for your response<span><font color="#888888"><br>
Mari<br>
</font></span></blockquote>
</div>
<br>
<br clear="all"><span class="HOEnZb"><font color="#888888">
<span><font color="#888888">
<div><br>
</div>
-- <br>
What most experimenters take for granted
before they begin their experiments is
infinitely more interesting than any results
to which their experiments lead.<br>
-- Norbert Wiener </font></span></font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
<br>
</font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
</font></span></div><span class="HOEnZb"><font color="#888888">
<br>
<br clear="all">
<div><br>
</div>
-- <br>
What most experimenters take for granted before they begin
their experiments is infinitely more interesting than any
results to which their experiments lead.<br>
-- Norbert Wiener
</font></span></div>
</div>
</blockquote>
<br>
</div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>