1 | [If you're looking for a simple example of doing an island |
---|
2 | model, don't look here -- look instead in 3-Island.] |
---|
3 | |
---|
4 | This model is a special example of how to create a server |
---|
5 | that's not actually a client program -- the process |
---|
6 | SOLELY exists to be a server. Why would you want to do this? |
---|
7 | Well, we were running on a beowulf cluster maintained by a |
---|
8 | company that wouldn't allow us to know beforehand exactly |
---|
9 | what the IP address was of *any* node. (They were using a |
---|
10 | queueing system, argh). We got around this by putting our |
---|
11 | clients out on the cluster, but having a dedicated machine |
---|
12 | with a known IP address as the server. The company permitted |
---|
13 | this because the server doesn't have almost any network traffic |
---|
14 | going to it -- it's just for synchronization. |
---|
15 | |
---|
16 | So in this example we'll have two islands, Minoa and Crete, |
---|
17 | using minoa.params and crete.params, plus a separate server |
---|
18 | (in server.params). You need to launch the server differently |
---|
19 | than you'd normally launch an ECJ process. What you do here |
---|
20 | is launch the server as: |
---|
21 | |
---|
22 | java ec.exchange.IslandExchange -file server.params |
---|
23 | |
---|
24 | |
---|
25 | Then you launch your islands: |
---|
26 | |
---|
27 | java ec.Evolve -file crete.params |
---|
28 | |
---|
29 | java ec.Evolve -file minoa.params |
---|
30 | |
---|
31 | |
---|
32 | If you're running crete and minoa on separate machines from |
---|
33 | the server, you'll need to modify the parameter to tell them |
---|
34 | where the server is: |
---|
35 | |
---|
36 | java ec.Evolve -file crete.params \ |
---|
37 | -p exch.server-addr=address.of.server.com |
---|
38 | |
---|
39 | java ec.Evolve -file minoa.params \ |
---|
40 | -p exch.server-addr=address.of.server.com |
---|
41 | |
---|