public class PiDistributed extends PiParallel
OperationServer
.
The names and ports of the cluster nodes are read from the file
cluster.properties
, or a ResourceBundle
by the name "cluster". The format of the property file is as
follows:
server1=hostname.company.com:1234 server2=hostname2.company.com:2345 server3=hostname3.company.com:3456 weight1=100 weight2=110 weight3=50The server addresses are specified as hostname:port. Weights can (but don't have to) be assigned to nodes to indicate the relative performance of each node, to allow distributing a suitable amount of work for each node. For example,
weight2
is the
relative performance of server2
etc. The weights must
be integers in the range 1...1000.Guidelines for configuring the servers:
clockFrequency * numberOfProcessors
. For example,
a machine with two 1600MHz processors is four times as fast as
a machine with one 800MHz processor.
PiParallel
with one
million digits. Remember to specify the correct number of
CPUs on each machine.OperationServer
on the cluster nodes,
specify the number of worker threads for each server to be
the same as the number of CPUs of the machine.apfloat.properties
file
for each cluster server.
Similarly as with PiParallel
, if some nodes have multiple
CPUs, to get any performance gain from running many
threads in parallel, the JVM must be executing native threads.
If the JVM is running in green threads mode, there is no
advantage of having multiple threads, as the JVM will in fact
execute just one thread and divide its time to multiple
simulated threads.
Modifier and Type | Class and Description |
---|---|
protected static class |
PiDistributed.DistributedBinarySplittingPiCalculator
Distributed version of the binary splitting algorithm.
|
static class |
PiDistributed.DistributedChudnovskyPiCalculator
Class for calculating pi using the distributed Chudnovskys' binary splitting algorithm.
|
static class |
PiDistributed.DistributedRamanujanPiCalculator
Class for calculating pi using the distributed Ramanujan's binary splitting algorithm.
|
protected static class |
PiDistributed.Node
RemoteOperationExecutor that implements the weight property.
|
PiParallel.ParallelBinarySplittingPiCalculator, PiParallel.ParallelChudnovskyPiCalculator, PiParallel.ParallelRamanujanPiCalculator, PiParallel.ThreadLimitedOperation<T>
Pi.AbstractBinarySplittingSeries, Pi.BinarySplittingPiCalculator, Pi.BinarySplittingProgressIndicator, Pi.BinarySplittingSeries, Pi.BorweinPiCalculator, Pi.ChudnovskyBinarySplittingSeries, Pi.ChudnovskyPiCalculator, Pi.GaussLegendrePiCalculator, Pi.RamanujanBinarySplittingSeries, Pi.RamanujanPiCalculator
Modifier and Type | Method and Description |
---|---|
static void |
main(String[] args)
Command-line entry point.
|
public static void main(String[] args) throws IOException, ApfloatRuntimeException
args
- Command-line parameters.IOException
- In case writing the output fails.ApfloatRuntimeException
Copyright © 2019. All rights reserved.