Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge with master
[simgrid.git] / examples / lua / console / master.lua
1 --Master Function
2 function Master(...) 
3
4   if #arg ~= 4 then
5     error("Wrong number of arguments (got " .. #arg ..
6           ", expected 4: nb_tasks comp_size comm_size slave_count)")
7   end
8
9   simgrid.info("Hello from lua, I'm the master")
10   for i,v in ipairs(arg) do
11       simgrid.info("Got " .. v)
12   end
13
14   local nb_task, comp_size, comm_size, slave_count = unpack(arg)
15
16   simgrid.info("Argc=" .. (#arg) .. " (should be 4)")
17
18   -- Dispatch the tasks
19
20   for i = 1, nb_task do
21     task = simgrid.task.new("Task " .. i, comp_size, comm_size);
22     local task_name = simgrid.task.get_name(task)
23     alias = "slave " .. (i%slave_count);
24     simgrid.info("Master sending  '" .. task_name .. "' To '" .. alias .. "'");
25     simgrid.task.send(task, alias); -- C user data set to NULL
26     simgrid.info("Master done sending '" .. task_name .. "' To '" .. alias .. "'");
27   end
28
29   -- Sending Finalize Message To Others
30
31   simgrid.info("Master: All tasks have been dispatched. Let's tell everybody the computation is over.");
32   for i = 0, slave_count-1 do
33     alias = "slave " .. i;
34     simgrid.info("Master: sending finalize to " .. alias);
35     finalize = simgrid.task.new("finalize", comp_size, comm_size);
36     simgrid.task.send(finalize, alias)
37   end
38   simgrid.info("Master: Everything's done.");
39 end
40 --end_of_master