Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill useless variable
[simgrid.git] / examples / java / basic / Master.java
1 /*
2  * $Id$
3  *
4  * Copyright 2006,2007 Martin Quinson, Malek Cherier         
5  * All rights reserved. 
6  *
7  * This program is free software; you can redistribute it and/or modify it
8  * under the terms of the license (GNU LGPL) which comes with this package. 
9  */
10
11 import simgrid.msg.*;
12
13 public class Master extends simgrid.msg.Process {
14    public void main(String[] args) throws JniException, NativeException {
15       Msg.info("hello!");
16         
17       int slaveCount = 0;
18       Host[] slaves = null;
19       
20       Msg.info("argc="+args.length);
21       for (int i = 0; i<args.length; i++)           
22         Msg.info("argv:"+args[i]);
23       
24       if (args.length < 3) {
25          Msg.info("Master needs 3 arguments");
26          System.exit(1);
27       }
28       
29       int numberOfTasks = Integer.valueOf(args[0]).intValue();          
30       double taskComputeSize = Double.valueOf(args[1]).doubleValue();           
31       double taskCommunicateSize = Double.valueOf(args[2]).doubleValue();
32       BasicTask[] todo = new BasicTask[numberOfTasks];
33       
34       for (int i = 0; i < numberOfTasks; i++) {
35          todo[i] = new BasicTask("Task_" + i, taskComputeSize, taskCommunicateSize); 
36       }
37       
38       slaveCount = args.length - 3;
39       slaves = new Host[slaveCount];
40       
41       for(int i = 3; i < args.length ; i++)  {
42          try {
43             slaves[i-3] = Host.getByName(args[i]);
44          }
45          catch(HostNotFoundException e) {
46             Msg.info("Unknown host " + args[i] + ". Stopping Now!");
47             e.printStackTrace();
48             System.exit(1);
49          }
50       }
51       
52       Msg.info("Got "+  slaveCount + " slave(s) :");
53       
54       for (int i = 0; i < slaveCount; i++)
55         Msg.info("\t"+slaves[i].getName());
56       
57       Msg.info("Got "+ numberOfTasks + " task to process.");
58       
59       Channel channel = new Channel(0);
60       
61       for (int i = 0; i < numberOfTasks; i++) {
62          Msg.info("Sending \"" + todo[i].getName()+ "\" to \"" + slaves[i % slaveCount].getName() + "\"");
63          
64          if((Host.currentHost()).equals(slaves[i % slaveCount])) 
65            Msg.info("Hey ! It's me ! ");
66          
67          channel.put(todo[i], slaves[i % slaveCount]);
68       }
69       
70       Msg.info("Send completed");
71       
72       Msg.info("All tasks have been dispatched. Let's tell everybody the computation is over.");
73       
74       for (int i = 0; i < slaveCount; i++) {
75          channel.put(new FinalizeTask(),slaves[i]);
76       }
77       
78       Msg.info("Goodbye now!");
79     }
80 }