Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Usage of xbt_new0 instead calloc
[simgrid.git] / examples / java / alias0 / 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                 \r
21                 Msg.info("argc="+args.length);\r
22                 \r
23                 for (int i = 0; i<args.length; i++)         \r
24                         Msg.info("argv:"+args[i]);\r
25                 \r
26                 if (args.length < 3) \r
27                 {\r
28                         Msg.info("Master needs 3 arguments");\r
29                         System.exit(1);\r
30                 }\r
31                 \r
32                 int taskCount = Integer.valueOf(args[0]).intValue();    \r
33                         \r
34                 double taskComputeSize = Double.valueOf(args[1]).doubleValue();\r
35                                 \r
36                 double taskCommunicateSize = Double.valueOf(args[2]).doubleValue();\r
37                 \r
38                 BasicTask[] basicTasks = new BasicTask[taskCount];\r
39                 \r
40                 for (int i = 0; i < taskCount; i++) \r
41                 {\r
42                         basicTasks[i] = new BasicTask("Task_" + i, taskComputeSize, taskCommunicateSize); \r
43                 }\r
44                 \r
45                 int aliasCount = args.length - 3;\r
46                 \r
47                 String[] aliases = new String[aliasCount];\r
48                 \r
49                 for(int i = 3; i < args.length ; i++) \r
50                         aliases[i - 3] = args[i];\r
51                 \r
52                 Msg.info("Got "+  aliasCount + " alias(es) :");\r
53                 \r
54                 for (int i = 0; i < aliasCount; i++)\r
55                         Msg.info("\t"+ aliases[i]);\r
56                 \r
57                 Msg.info("Got "+ taskCount + " task to process.");\r
58                 \r
59                 for (int i = 0; i < taskCount; i++) \r
60                 {       \r
61                         Msg.info("current host name : " + (aliases[i % aliasCount].split(":"))[0]);\r
62                         \r
63                         if((Host.currentHost().getName()).equals((aliases[i % aliasCount].split(":"))[0]))\r
64                                 Msg.info("Hey ! It's me ! ");\r
65                                 \r
66                         basicTasks[i].send(aliases[i % aliasCount]);\r
67                 }\r
68                 \r
69                 Msg.info("Send completed");\r
70                 \r
71                 Msg.info("All tasks have been dispatched. Let's tell everybody the computation is over.");\r
72                 \r
73                 FinalizeTask finalizeTask;\r
74                 \r
75                 for (int i = 0; i < aliasCount; i++) \r
76                 {\r
77                         finalizeTask = new FinalizeTask();\r
78                         finalizeTask.send(aliases[i]);\r
79                         \r
80                 }\r
81                 \r
82                 Msg.info("Goodbye now!");\r
83         }\r
84 }\r