Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Rename directory.
[simgrid.git] / examples / lua / master_slave_bypass.lua
1 --Master Function
2 function Master(...) 
3
4 simgrid.info("Hello from lua, I'm the master")
5 for i,v in ipairs(arg) do
6     simgrid.info("Got "..v)
7 end
8
9 nb_task = arg[1];
10 comp_size = arg[2];
11 comm_size = arg[3];
12 slave_count = arg[4]
13
14
15 if (#arg ~= 4) then
16     error("Argc should be 4");
17 end
18 simgrid.info("Argc="..(#arg).." (should be 4)")
19
20 -- Dispatch the tasks
21
22 for i=1,nb_task do
23   tk = simgrid.Task.new("Task "..i,comp_size,comm_size);
24   alias = "slave "..(i%slave_count);
25   simgrid.info("Master sending  '" .. simgrid.Task.name(tk) .."' To '" .. alias .."'");
26   simgrid.Task.send(tk,alias); -- C user data set to NULL
27   simgrid.info("Master done sending '".. simgrid.Task.name(tk) .."' To '" .. alias .."'");
28 end
29
30 -- Sending Finalize Message To Others
31
32 simgrid.info("Master: All tasks have been dispatched. Let's tell everybody the computation is over.");
33 for i=0,slave_count-1 do
34   alias = "slave "..i;
35   simgrid.info("Master: sending finalize to "..alias);
36   finalize = simgrid.Task.new("finalize",comp_size,comm_size);
37   simgrid.Task.send(finalize,alias)
38 end
39   simgrid.info("Master: Everything's done.");
40 end
41
42 --end_of_master
43
44 -- Slave Function ---------------------------------------------------------
45 function Slave(...)
46
47 local my_mailbox="slave "..arg[1]
48 simgrid.info("Hello from lua, I'm a poor slave with mbox: "..my_mailbox)
49
50 while true do
51
52   local tk = simgrid.Task.recv(my_mailbox);
53   if (simgrid.Task.name(tk) == "finalize") then
54     simgrid.info("Slave '" ..my_mailbox.."' got finalize msg");
55     break
56   end
57   --local tk_name = simgrid.Task.name(tk) 
58   simgrid.info("Slave '" ..my_mailbox.."' processing "..simgrid.Task.name(tk))
59   simgrid.Task.execute(tk)
60   simgrid.info("Slave '" ..my_mailbox.."': task "..simgrid.Task.name(tk) .. " done")
61 end -- while
62
63 simgrid.info("Slave '" ..my_mailbox.."': I'm Done . See You !!");
64
65 end 
66
67 -- end_of_slave
68
69 -- Simulation Core ----------------------------------------------------------
70 --]]
71
72 require "simgrid"
73   
74   --simgrid.Host.new(host_id,power)
75   simgrid.Host.new("Tremblay",98095000);
76   simgrid.Host.new("Jupiter",76296000);
77   simgrid.Host.new("Fafard",76296000);
78   simgrid.Host.new("Ginette",48492000);
79   simgrid.Host.new("Bourassa",48492000);
80
81     -- create Links
82   for i=0,11 do
83     simgrid.Link.new(i,252750+ i*768,0.000270544+i*0.087);   
84   end
85
86
87
88   -- simgrid.Route.new(src_id,des_id,links_nb,links_list)
89   simgrid.Route.new("Tremblay","Jupiter",1,{"1"});
90   simgrid.Route.new("Tremblay","Fafard",6,{"0","1","2","3","4","8"});
91   simgrid.Route.new("Tremblay","Ginette",3,{"3","4","5"});
92   simgrid.Route.new("Tremblay","Bourassa",7,{"0","1","3","2","4","6","7"});
93
94    simgrid.Route.new("Jupiter","Tremblay",1,{"1"});
95    simgrid.Route.new("Jupiter","Fafard",7,{"0","1","2","3","4","8","9"});
96    simgrid.Route.new("Jupiter","Ginette",4,{"3","4","5","9"});
97    simgrid.Route.new("Jupiter","Bourassa",8,{"0","1","2","3","4","6","7","9"});
98  
99    simgrid.Route.new("Fafard","Tremblay",6,{"0","1","2","3","4","8"});
100    simgrid.Route.new("Fafard","Jupiter",7,{"0","1","2","3","4","8","9"});
101    simgrid.Route.new("Fafard","Ginette",5,{"0","1","2","5","8"});
102    simgrid.Route.new("Fafard","Bourassa",3,{"6","7","8"});
103   
104    simgrid.Route.new("Ginette","Tremblay",3,{"3","4","5"});
105    simgrid.Route.new("Ginette","Jupiter",4,{"3","4","5","9"});
106    simgrid.Route.new("Ginette","Fafard",5,{"0","1","2","5","8"});
107    simgrid.Route.new("Ginette","Bourassa",6,{"0","1","2","5","6","7"});
108
109    simgrid.Route.new("Bourassa","Tremblay",7,{"0","1","3","2","4","6","7"});
110    simgrid.Route.new("Bourassa","Jupiter",8,{"0","1","2","3","4","6","7","9"});
111    simgrid.Route.new("Bourassa","Fafard",3,{"6","7","8"});
112    simgrid.Route.new("Bourassa","Ginette",6,{"0","1","2","5","6","7"});
113   
114    --Save Platform
115    simgrid.info("start registering platform");
116    simgrid.register_platform();
117    simgrid.info("platform registered");
118
119   
120   --Set Application
121
122   --simgrid.Host.setFunction(host_id,function_name,args_nb,args_list)
123    simgrid.Host.setFunction("Tremblay","Master",4,{"20","550000000","1000000","4"});
124    simgrid.Host.setFunction("Bourassa","Slave",1,{"0"});
125    simgrid.Host.setFunction("Jupiter","Slave",1,{"1"});
126    simgrid.Host.setFunction("Fafard","Slave",1,{"2"});
127    simgrid.Host.setFunction("Ginette","Slave",1,{"3"});
128    
129   --Save Application 
130    simgrid.register_application();
131
132 -- Run The Application
133
134    simgrid.run()
135    simgrid.info("Simulation's over.See you.")
136    simgrid.clean()
137
138