Hi,

I have a vector with ghost nodes where each process may or may not change the 
value of a specific ghost node  (using INSERT_VALUES). 

At the end I would like for each process, that see a particular ghost node, to 
have the smallest of the set values. 

I do not think there is a straightforward way to achieve this, but I would like 
to be wrong.

Any suggestion?

%%%%%%%%%%%%%%%%

To build a work around I need to understand better the behavior of 
VecGhostUpdateBegin(...);  VecGhostUpdateEnd(...).

In particular in the documentation I do not see the option

VecGhostUpdateBegin(v, INSERT_VALUES, SCATTER_REVERSE);
VecGhostUpdateEnd(v, INSERT_VALUES, SCATTER_REVERSE);

In case this is possible to be used, what is the behavior of this call in the 
following two cases?

1) Assume that node-i belongs to proc0, and is ghosted in proc1 and proc2, also
assume that the current value of node-i is value0 and proc0 does not modify it, 
but proc1 and proc2 do.

start with:
proc0 -> value0 
proc1 -> value0
proc2 -> value0

change to:
proc0 -> value0 
proc1 -> value1
proc2 -> value2

I assume that calling
VecGhostUpdateBegin(v, INSERT_VALUES, SCATTER_REVERSE);
VecGhostUpdateEnd(v, INSERT_VALUES, SCATTER_REVERSE);
will have an unpredictable behavior as

proc0 -> either value1 or value2 
proc1 -> value1
proc2 -> value2

2) Assume now that node-i belongs to proc0, and is ghosted in proc1 and proc2, 
also
assume that the current value of node-i is value0 and proc0 and proc1 do not 
modify it, but proc2 does.

start with:
proc0 -> value0 
proc1 -> value0
proc2 -> value0

change to:
proc0 -> value0 
proc1 -> value0
proc2 -> value2

Is the call 
VecGhostUpdateBegin(v, INSERT_VALUES, SCATTER_REVERSE);
VecGhostUpdateEnd(v, INSERT_VALUES, SCATTER_REVERSE);
still unpredictable?

proc0 -> either value0 or value2 
proc1 -> value0
proc2 -> value2

or

proc0 -> value2  (since proc1 did not modify the original value, so it did not 
reverse scatter)
proc1 -> value0
proc2 -> value2

Thanks a lot for your help
Eugenio







Reply via email to