-- under the terms of the license (GNU LGPL) which comes with this package.
--Master Function
-function Master(...)
+function Master(...)
- if #arg ~= 4 then
- error("Wrong number of arguments (got " .. #arg ..
- ", expected 4: nb_tasks comp_size comm_size slave_count)")
+ if select("#", ...) ~= 4 then
+ error("Wrong number of arguments (got " .. select("#", ...) ..
+ ", expected 4: nb_tasks comp_size comm_size slave_count)")
end
simgrid.info("Hello from lua, I'm the master")
- for i,v in ipairs(arg) do
+ for i,v in ipairs({...}) do
simgrid.info("Got " .. v)
end
- local nb_task, comp_size, comm_size, slave_count = unpack(arg)
+ local nb_task, comp_size, comm_size, slave_count = select(1, ...)
- simgrid.info("Argc=" .. (#arg) .. " (should be 4)")
+ simgrid.info("Argc=" .. select("#", ...) .. " (should be 4)")
-- Dispatch the tasks
for i = 1, nb_task do
task = simgrid.task.new("Task " .. i, comp_size, comm_size);
local task_name = simgrid.task.get_name(task)
- alias = "slave " .. (i%slave_count);
+ alias = "slave " .. string.format("%d",i%slave_count);
simgrid.info("Master sending '" .. task_name .. "' To '" .. alias .. "'");
simgrid.task.send(task, alias); -- C user data set to NULL
simgrid.info("Master done sending '" .. task_name .. "' To '" .. alias .. "'");
-- Slave Function ---------------------------------------------------------
function Slave(...)
- if #arg ~= 1 then
+ if select("#", ...) ~= 1 then
error("Wrong number of arguments (got " .. #arg .. ", expected 1: slave_id)")
end
- local my_mailbox = "slave " .. arg[1]
+ local my_mailbox = "slave " .. select(1, ...)
simgrid.info("Hello from lua, I'm a poor slave with mbox: " .. my_mailbox)
while true do
simgrid.info("Slave '" .. my_mailbox .. "' got finalize msg");
break
end
- --local tk_name = simgrid.task.get_name(tk)
+ --local tk_name = simgrid.task.get_name(tk)
simgrid.info("Slave '" .. my_mailbox .. "' processing " .. task:get_name())
simgrid.task.execute(task)
simgrid.info("Slave '" .. my_mailbox .. "': task " .. task:get_name() .. " done")
simgrid.info("Slave '" .. my_mailbox .. "': I'm Done . See You !!");
-end
+end
-- end_of_slave