2 * $Id: Master.java 5059 2007-11-19 20:01:59Z mquinson $
\r
4 * Copyright 2006,2007 Martin Quinson, Malek Cherier
\r
5 * All rights reserved.
\r
7 * This program is free software; you can redistribute it and/or modify it
\r
8 * under the terms of the license (GNU LGPL) which comes with this package.
\r
11 import simgrid.msg.*;
\r
13 public class Master extends simgrid.msg.Process
\r
15 public void main(String[] args) throws JniException, NativeException
\r
20 Msg.info("argc="+args.length);
\r
22 for (int i = 0; i<args.length; i++)
\r
23 Msg.info("argv:"+args[i]);
\r
25 if (args.length < 3)
\r
27 Msg.info("Master needs 3 arguments");
\r
31 int numberOfTasks = Integer.valueOf(args[0]).intValue();
\r
33 double taskComputeSize = Double.valueOf(args[1]).doubleValue();
\r
35 double taskCommunicateSize = Double.valueOf(args[2]).doubleValue();
\r
37 BasicTask[] basicTasks = new BasicTask[numberOfTasks];
\r
39 for (int i = 0; i < numberOfTasks; i++)
\r
41 basicTasks[i] = new BasicTask("Task_" + i, taskComputeSize, taskCommunicateSize);
\r
44 int aliasCount = args.length - 3;
\r
46 String[] aliases = new String[aliasCount];
\r
48 for(int i = 3; i < args.length ; i++)
\r
50 aliases[i-3] = args[i];
\r
53 Msg.info("Got "+ aliasCount + " alias(es) :");
\r
55 for (int i = 0; i < aliasCount; i++)
\r
56 Msg.info("\t"+ aliases[i]);
\r
58 Msg.info("Got "+ numberOfTasks + " task to process.");
\r
60 for (int i = 0; i < numberOfTasks; i++)
\r
62 Msg.info("Sending \"" + basicTasks[i].getName()+ "\" to \"" + aliases[i % aliasCount] + "\"");
\r
64 if((Host.currentHost()).getName().equals(aliases[i % aliasCount]))
\r
65 Msg.info("Hey ! It's me ! ");
\r
67 basicTasks[i].send(aliases[i % aliasCount]);
\r
70 Msg.info("Send completed");
\r
72 Msg.info("All tasks have been dispatched. Let's tell everybody the computation is over.");
\r
74 FinalizeTask finalizeTask;
\r
76 for (int i = 0; i < aliasCount; i++)
\r
78 finalizeTask = new FinalizeTask();
\r
80 finalizeTask.send(aliases[i]);
\r
83 Msg.info("Goodbye now!");
\r