Hi Vasia, 

okay I understand now :)
So it works fine if I want to collect the sum of values.
But what if I need to reset the DoubleSumAggregator back to 0 in order to then 
set it to a new value to save the absolute maximum?
Please have a look at the code above. 

Any idea why it is not working?
 

public static class VertexDistanceUpdater extends VertexUpdateFunction<Integer, 
Double, Double> {

    DoubleSumAggregator aggregator = new DoubleSumAggregator();

    public void preSuperstep() {
        // retrieve the Aggregator
        aggregator = getIterationAggregator("sumAggregator");
    }

    public void updateVertex(Vertex<Integer, Double> vertex, 
MessageIterator<Double> inMessages) {
        double sum = 0;
        for (double msg : inMessages) {
                sum = sum + (msg);
        }

        if((Math.abs(sum) > Math.abs(aggregator.getAggregate().getValue()))){

            aggregator.reset();
            aggregator.aggregate(sum);

        }
        setNewVertexValue(sum);
    }
}



> Am 13.05.2016 um 09:25 schrieb Vasiliki Kalavri <vasilikikala...@gmail.com>:
> 
> Hi Lydia, 
> 
> an iteration aggregator combines all aggregates globally once per superstep 
> and makes them available in the *next* superstep.
> Within each scatter-gather iteration, one MessagingFunction (scatter phase) 
> and one VertexUpdateFunction (gather phase) are executed. Thus, if you set an 
> aggregate value within one of those, the value will be available in the next 
> superstep. You can retrieve it calling the getPreviousIterationAggregate() 
> method.
> Let me know if that clears things up!
> 
> -Vasia.
> 
> On 13 May 2016 at 08:57, Lydia Ickler <ickle...@googlemail.com 
> <mailto:ickle...@googlemail.com>> wrote:
> Hi Vasia, 
> 
> yes, but only independently within each Function or not?
> 
> If I set the aggregator in VertexUpdateFunction then the newly set value is 
> not visible in the MessageFunction.
> Or am I doing something wrong? I would like to have a shared aggregator to 
> normalize vertices.
> 
> 
>> Am 13.05.2016 um 08:04 schrieb Vasiliki Kalavri <vasilikikala...@gmail.com 
>> <mailto:vasilikikala...@gmail.com>>:
>> 
>> Hi Lydia,
>> 
>> registered aggregators through the ScatterGatherConfiguration are accessible 
>> both in the VertexUpdateFunction and in the MessageFunction.
>> 
>> Cheers,
>> -Vasia.
>> 
>> On 12 May 2016 at 20:08, Lydia Ickler <ickle...@googlemail.com 
>> <mailto:ickle...@googlemail.com>> wrote:
>> Hi,
>> 
>> I have a question regarding the Aggregators of a Scatter-Gather Iteration.
>> Is it possible to have a global aggregator that is accessible in 
>> VertexUpdateFunction() and MessagingFunction() at the same time?
>> 
>> Thanks in advance,
>> Lydia
>> 
> 
> 

Reply via email to