Logo AND Algorithmique Numérique Distribuée

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