Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
SURF: Unify the types of models in a uniq s_surf_model_t (using an union) +reindent...
[simgrid.git] / examples / java / explicitDestination / Master.java
1 /*\r
2  * $Id: Master.java 5059 2007-11-19 20:01:59Z mquinson $\r
3  *\r
4  * Copyright 2006,2007 Martin Quinson, Malek Cherier         \r
5  * All rights reserved. \r
6  *\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
9  */\r
10 \r
11 import simgrid.msg.*;\r
12 \r
13 public class Master extends simgrid.msg.Process \r
14 {\r
15         public void main(String[] args) throws JniException, NativeException \r
16         {\r
17                 \r
18                 Msg.info("hello!");\r
19                 \r
20                 Msg.info("argc="+args.length);\r
21                 \r
22                 for (int i = 0; i<args.length; i++)         \r
23                         Msg.info("argv:"+args[i]);\r
24                 \r
25                 if (args.length < 3) \r
26                 {\r
27                         Msg.info("Master needs 3 arguments");\r
28                         System.exit(1);\r
29                 }\r
30                 \r
31                 int numberOfTasks = Integer.valueOf(args[0]).intValue();        \r
32                         \r
33                 double taskComputeSize = Double.valueOf(args[1]).doubleValue(); \r
34                         \r
35                 double taskCommunicateSize = Double.valueOf(args[2]).doubleValue();\r
36                 \r
37                 BasicTask[] basicTasks = new BasicTask[numberOfTasks];\r
38                 \r
39                 for (int i = 0; i < numberOfTasks; i++) \r
40                 {\r
41                         basicTasks[i] = new BasicTask("Task_" + i, taskComputeSize, taskCommunicateSize); \r
42                 }\r
43                 \r
44                 int aliasCount = args.length - 3;\r
45                 \r
46                 String[] aliases = new String[aliasCount];\r
47                 \r
48                 for(int i = 3; i < args.length ; i++)  \r
49                 {\r
50                                 aliases[i-3] = args[i];\r
51                 }\r
52                 \r
53                 Msg.info("Got "+  aliasCount + " alias(es) :");\r
54                 \r
55                 for (int i = 0; i < aliasCount; i++)\r
56                         Msg.info("\t"+ aliases[i]);\r
57                 \r
58                 Msg.info("Got "+ numberOfTasks + " task to process.");\r
59                 \r
60                 for (int i = 0; i < numberOfTasks; i++) \r
61                 {\r
62                         Msg.info("Sending \"" + basicTasks[i].getName()+ "\" to \"" + aliases[i % aliasCount] + "\"");\r
63                 \r
64                         if((Host.currentHost()).getName().equals(aliases[i % aliasCount])) \r
65                                 Msg.info("Hey ! It's me ! ");\r
66                                 \r
67                         basicTasks[i].send(aliases[i % aliasCount]);\r
68                 }\r
69                 \r
70                 Msg.info("Send completed");\r
71                 \r
72                 Msg.info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
73                 \r
74                 FinalizeTask finalizeTask;\r
75                 \r
76                 for (int i = 0; i < aliasCount; i++) \r
77                 {\r
78                         finalizeTask = new FinalizeTask();\r
79                         \r
80                         finalizeTask.send(aliases[i]);\r
81                 }\r
82                 \r
83                 Msg.info("Goodbye now!");\r
84         }\r
85 }\r