Open cocreature opened 7 years ago
I am a bit confused about what's going on when you call HyperLogLog().
Is my understanding correct?
In that case what we need to do to parallelize the result calculation is
In thrill terms:
I don’t think your explanation is correct. After the call to context_.net.AllReduce
each worker has the same result and they all calculate the result. This is the reason for the results being printed once for each worker.
The steps for parallelizing this look correct. The operation for scattering the vector is called Distribute
in Thrill. It probably also makes sense to make this optional since I would expect the overhead to be too large for small precisions.
Implemented in 54f0cd5256
We still need to figure out at which size we want to enable the parallelization.
Currently we only parallelize the aggregration phase but the result computation, in particular the calculation of
E
is not parallelized. For small precisions this is probably not worth it but for e.g. 16 we are summing calculatingstd::pow
and summing the results2^16
times so it probably makes sense to parallelize this.I’m not quite sure what the best way to accomplish this is. Do we need two nodes for this?