X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cf422acd1a7a2fc27b76d9d82db6f778e97a3092..521aa2e579bdf76e25487fb6b9019e78ec75ad32:/src/bindings/lua/master_slave.lua diff --git a/src/bindings/lua/master_slave.lua b/src/bindings/lua/master_slave.lua new file mode 100644 index 0000000000..25e2c84240 --- /dev/null +++ b/src/bindings/lua/master_slave.lua @@ -0,0 +1,81 @@ + +--Master Function +function Master(...) + +simgrid.info("Hello from lua, I'm the master") +for i,v in ipairs(arg) do + simgrid.info("Got "..v) +end + +nb_task = arg[1]; +comp_size = arg[2]; +comm_size = arg[3]; +slave_count = arg[4] + + +simgrid.info("Argc="..(#arg).." (should be 4)") + +-- Dispatch the tasks + +for i=1,nb_task do + tk = simgrid.Task.new("Task "..i,comp_size,comm_size); + alias = "slave "..(i%slave_count); + simgrid.info("Master sending '" .. simgrid.Task.name(tk) .."' To '" .. alias .."'"); + simgrid.Task.send(tk,alias); -- C user data set to NULL + simgrid.info("Master done sending '".. simgrid.Task.name(tk) .."' 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 + alias = "slave "..i; + simgrid.info("Master: sending finalize to "..alias); + simgrid.Task.send(simgrid.Task.new("finalize",0,0),alias); +end +simgrid.info("Master: Everything's done."); + + +end + +-- Slave Function --------------------------------------------------------- +function Slave(...) + +my_mailbox="slave "..arg[1] +simgrid.info("Hello from lua, I'm a poor slave with mbox: "..my_mailbox) + + +while true do +-- tk = simgrid.Task.new("",0,0); --?? +-- simgrid.Task.recv2(tk,my_mailbox); + tk = simgrid.Task.recv(my_mailbox); + + tk_name = simgrid.Task.name(tk) + + if (tk_name == "finalize") then + simgrid.info("Slave '" ..my_mailbox.."' got finalize msg"); + break + end + + simgrid.info("Slave '" ..my_mailbox.."' processing "..simgrid.Task.name(tk)) + simgrid.Task.execute(tk); + + simgrid.info("Slave '" ..my_mailbox.."': task "..simgrid.Task.name(tk) .. " done") +end -- while + +simgrid.info("Slave '" ..my_mailbox.."': I'm Done . See You !!"); + +end -- function ---------------------------------------------------------- +--]] + +function doyield() + coroutine.yield() +end + +require "simgrid" + +simgrid.platform("../../../examples/msg/small_platform.xml") +simgrid.application("../ruby/deploy.xml") +simgrid.run() +simgrid.info("Simulation's over. See you.") +simgrid.clean() \ No newline at end of file