function Master(...) simgrid.info("Hello from lua, I'm the master") for i, v in ipairs(arg) do simgrid.info("Got "..v) end local nb_task = arg[1] local comp_size = arg[2] local comm_size = arg[3] local slave_count = arg[4] if #arg ~= 4 then error("Argc should be 4") end simgrid.info("Argc=" .. (#arg) .. " (should be 4)") -- Dispatch the tasks for i = 1, nb_task do local tk = simgrid.Task.new("Task "..i, comp_size, comm_size) local task_name = simgrid.Task.name(tk) local alias = "slave " .. (i % slave_count) simgrid.info("Master sending '" .. task_name .. "' To '" .. alias .."'") simgrid.Task.send(tk,alias) -- C user data set to NULL simgrid.info("Master done sending '".. task_name .. "' To '" .. alias .."'") end -- Sending Finalize Message To Others simgrid.info("Master: All tasks have been dispatched. Let's tell everybody the computation is over.") for i = 0, slave_count - 1 do local alias = "slave " .. i simgrid.info("Master: sending finalize to " .. alias) local finalize = simgrid.Task.new("finalize", comp_size, comm_size) simgrid.Task.send(finalize, alias) end simgrid.info("Master: Everything's done.") end -- Master