org.apfloat.samples
Class PiDistributed.DistributedBinarySplittingPiCalculator

java.lang.Object
  extended by org.apfloat.samples.Pi.BinarySplittingPiCalculator
      extended by org.apfloat.samples.PiParallel.ParallelBinarySplittingPiCalculator
          extended by org.apfloat.samples.PiDistributed.DistributedBinarySplittingPiCalculator
All Implemented Interfaces:
Serializable
Enclosing class:
PiDistributed

protected static class PiDistributed.DistributedBinarySplittingPiCalculator
extends PiParallel.ParallelBinarySplittingPiCalculator

Distributed version of the binary splitting algorithm. Uses multiple computers to calculate pi in parallel.

See Also:
Serialized Form

Constructor Summary
PiDistributed.DistributedBinarySplittingPiCalculator(Pi.BinarySplittingSeries series)
          Construct a distributed pi calculator with the specified precision and radix.
 
Method Summary
 OperationExecutor[] getNodes()
          Get the available set of operation executor nodes.
 void r(long n1, long n2, ApfloatHolder T, ApfloatHolder Q, ApfloatHolder P, ApfloatHolder F, OperationExecutor[] nodes, Pi.BinarySplittingProgressIndicator progressIndicator)
          Entry point for the parallel binary splitting algorithm.
 OperationExecutor[] recombineNodes(OperationExecutor[] nodes, int numberNeeded)
          Attempt to combine or split nodes to form the needed number of nodes.
 
Methods inherited from class org.apfloat.samples.Pi.BinarySplittingPiCalculator
r
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PiDistributed.DistributedBinarySplittingPiCalculator

public PiDistributed.DistributedBinarySplittingPiCalculator(Pi.BinarySplittingSeries series)
Construct a distributed pi calculator with the specified precision and radix.

Parameters:
series - The binary splitting series to be used.
Method Detail

r

public void r(long n1,
              long n2,
              ApfloatHolder T,
              ApfloatHolder Q,
              ApfloatHolder P,
              ApfloatHolder F,
              OperationExecutor[] nodes,
              Pi.BinarySplittingProgressIndicator progressIndicator)
       throws ApfloatRuntimeException
Description copied from class: PiParallel.ParallelBinarySplittingPiCalculator
Entry point for the parallel binary splitting algorithm.

Overrides:
r in class PiParallel.ParallelBinarySplittingPiCalculator
Parameters:
n1 - Start term.
n2 - End term.
T - Algorithm parameter.
Q - Algorithm parameter.
P - Algorithm parameter.
F - Pointer to inverse square root parameter.
nodes - The operation executors to be used for the calculation.
progressIndicator - Class to print out the progress of the calculation.
Throws:
ApfloatRuntimeException

getNodes

public OperationExecutor[] getNodes()
Get the available set of operation executor nodes. This implementation returns RemoteOperationExecutors, which execute operations on the cluster's nodes.

Overrides:
getNodes in class PiParallel.ParallelBinarySplittingPiCalculator
Returns:
The nodes of the cluster.

recombineNodes

public OperationExecutor[] recombineNodes(OperationExecutor[] nodes,
                                          int numberNeeded)
Description copied from class: PiParallel.ParallelBinarySplittingPiCalculator
Attempt to combine or split nodes to form the needed number of nodes. The returned number of nodes is something between the number of nodes input and the number of nodes requested. The requested number of nodes can be less than or greater than the number of input nodes.

Overrides:
recombineNodes in class PiParallel.ParallelBinarySplittingPiCalculator
Parameters:
nodes - The operation executors to recombine.
numberNeeded - The requested number of operation executors.
Returns:
The set of recombined operation executors.