4 * Copyright 2006,2007 Martin Quinson, Malek Cherier
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.
13 public class Master extends simgrid.msg.Process {
14 public void main(String[] args) throws JniException, NativeException {
21 Msg.info("argc="+args.length);
22 for (int i = 0; i<args.length; i++)
23 Msg.info("argv:"+args[i]);
25 if (args.length < 3) {
26 Msg.info("Master needs 3 arguments");
30 int numberOfTasks = Integer.valueOf(args[0]).intValue();
31 double taskComputeSize = Double.valueOf(args[1]).doubleValue();
32 double taskCommunicateSize = Double.valueOf(args[2]).doubleValue();
33 BasicTask[] todo = new BasicTask[numberOfTasks];
35 for (int i = 0; i < numberOfTasks; i++) {
36 todo[i] = new BasicTask("Task_" + i, taskComputeSize, taskCommunicateSize);
39 slaveCount = args.length - 3;
40 slaves = new Host[slaveCount];
42 for(int i = 3; i < args.length ; i++) {
44 slaves[i-3] = Host.getByName(args[i]);
46 catch(HostNotFoundException e) {
47 Msg.info("Unknown host " + args[i] + ". Stopping Now!");
53 Msg.info("Got "+ slaveCount + " slave(s) :");
55 for (int i = 0; i < slaveCount; i++)
56 Msg.info("\t"+slaves[i].getName());
58 Msg.info("Got "+ numberOfTasks + " task to process.");
60 for (int i = 0; i < numberOfTasks; i++) {
61 Msg.info("Sending \"" + todo[i].getName()+ "\" to \"" + slaves[i % slaveCount].getName() + "\"");
63 if((Host.currentHost()).equals(slaves[i % slaveCount]))
64 Msg.info("Hey ! It's me ! ");
66 slaves[i % slaveCount].put(channel, todo[i]);
69 Msg.info("Send completed");
71 Msg.info("All tasks have been dispatched. Let's tell everybody the computation is over.");
73 for (int i = 0; i < slaveCount; i++) {
74 slaves[i].put(channel, new FinalizeTask());
77 Msg.info("Goodbye now!");