Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
rearrange lua example in separate simulation component files
[simgrid.git] / examples / lua / tracing / master.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 prop_value = simgrid.Host.getPropValue(simgrid.Host.self(),"peace");
10 simgrid.info("Prop Value >>> ".. prop_value);
11
12 nb_task = arg[1];
13 comp_size = arg[2];
14 comm_size = arg[3];
15 slave_count = arg[4]
16
17 if (#arg ~= 4) then
18     error("Argc should be 4");
19 end
20 simgrid.info("Argc="..(#arg).." (should be 4)")
21
22 -- Dispatch the tasks
23
24 for i=1,nb_task do
25   tk = simgrid.Task.new("Task "..i,comp_size,comm_size);
26   alias = "slave "..(i%slave_count);
27   -- Set Trace Category
28   simgrid.Trace.setTaskCategory(tk,"compute");
29   simgrid.info("Master sending  '" .. simgrid.Task.name(tk) .."' To '" .. alias .."'");
30   simgrid.Task.send(tk,alias); -- C user data set to NULL
31   simgrid.info("Master done sending '".. simgrid.Task.name(tk) .."' To '" .. alias .."'");
32 end
33
34 -- Sending Finalize Message To Others
35
36 simgrid.info("Master: All tasks have been dispatched. Let's tell everybody the computation is over.");
37 for i=0,slave_count-1 do
38   alias = "slave "..i;
39   simgrid.info("Master: sending finalize to "..alias);
40   finalize = simgrid.Task.new("finalize",comp_size,comm_size);
41   --set Trace Category 
42   simgrid.Trace.setTaskCategory(finalize,"finalize");
43   simgrid.Task.send(finalize,alias);
44 end
45   simgrid.info("Master: Everything's done.");
46 end
47
48 --end of master