Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
c5c21eb600503b038909fafb07214546a4e8a3c0
[simgrid.git] / examples / lua / masterslave / master.lua
1 function Master(...) 
2
3   simgrid.info("Hello from lua, I'm the master")
4   for i, v in ipairs(arg) do
5     simgrid.info("Got "..v)
6   end
7
8   local nb_task = arg[1]
9   local comp_size = arg[2]
10   local comm_size = arg[3]
11   local slave_count = arg[4]
12
13   if #arg ~= 4 then
14     error("Argc should be 4")
15   end
16   simgrid.info("Argc=" .. (#arg) .. " (should be 4)")
17
18   -- Dispatch the tasks
19
20   for i = 1, nb_task do
21     local tk = simgrid.task.new("Task "..i, comp_size, comm_size)
22     local task_name = simgrid.task.name(tk)
23     local alias = "slave " .. (i % slave_count)
24     simgrid.info("Master sending  '" .. task_name .. "' To '" .. alias .."'")
25     simgrid.task.send(tk,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     local alias = "slave " .. i
34     simgrid.info("Master: sending finalize to " .. alias)
35     local 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 -- Master
40