From fb450820a89a2e124df2ec668ecb0ddc95733272 Mon Sep 17 00:00:00 2001 From: coldpeace Date: Fri, 4 Mar 2011 14:23:31 +0000 Subject: [PATCH 1/1] splaySim: a lua implementation of a splay (simulation)scenario with a masterslave application git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9757 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- examples/lua/splaySim/master.lua | 41 +++++++++++++++++ examples/lua/splaySim/slave.lua | 24 ++++++++++ examples/lua/splaySim/splay_ctrl.lua | 16 +++++++ .../lua/splaySim/splay_deploy_masterslave.lua | 14 ++++++ examples/lua/splaySim/splay_platform.lua | 45 +++++++++++++++++++ 5 files changed, 140 insertions(+) create mode 100644 examples/lua/splaySim/master.lua create mode 100644 examples/lua/splaySim/slave.lua create mode 100644 examples/lua/splaySim/splay_ctrl.lua create mode 100644 examples/lua/splaySim/splay_deploy_masterslave.lua create mode 100644 examples/lua/splaySim/splay_platform.lua diff --git a/examples/lua/splaySim/master.lua b/examples/lua/splaySim/master.lua new file mode 100644 index 0000000000..38765cacb3 --- /dev/null +++ b/examples/lua/splaySim/master.lua @@ -0,0 +1,41 @@ +--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] + +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 + 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); + finalize = simgrid.Task.new("finalize",comp_size,comm_size); + simgrid.Task.send(finalize,alias) +end + simgrid.info("Master: Everything's done."); +end + +-- end_of_master diff --git a/examples/lua/splaySim/slave.lua b/examples/lua/splaySim/slave.lua new file mode 100644 index 0000000000..555d940c40 --- /dev/null +++ b/examples/lua/splaySim/slave.lua @@ -0,0 +1,24 @@ +-- Slave Function --------------------------------------------------------- +function Slave(...) + +local my_mailbox="slave "..arg[1] +simgrid.info("Hello from lua, I'm a poor slave with mbox: "..my_mailbox) + +while true do + + local tk = simgrid.Task.recv(my_mailbox); + if (simgrid.Task.name(tk) == "finalize") then + simgrid.info("Slave '" ..my_mailbox.."' got finalize msg"); + break + end + --local tk_name = simgrid.Task.name(tk) + 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 + +-- end_of_slave diff --git a/examples/lua/splaySim/splay_ctrl.lua b/examples/lua/splaySim/splay_ctrl.lua new file mode 100644 index 0000000000..5c8007c961 --- /dev/null +++ b/examples/lua/splaySim/splay_ctrl.lua @@ -0,0 +1,16 @@ + +-- Simulation Code ---------------------------------------------------------- + +require "simgrid" +if (#arg == 2) then + dofile (arg[1]) + dofile (arg[2]) +else + dofile "splay_platform.lua" + dofile "splay_deploy_masterslave.lua" +end + +simgrid.run() +simgrid.info("Simulation's over.See you.") +simgrid.clean() + diff --git a/examples/lua/splaySim/splay_deploy_masterslave.lua b/examples/lua/splaySim/splay_deploy_masterslave.lua new file mode 100644 index 0000000000..8aca194887 --- /dev/null +++ b/examples/lua/splaySim/splay_deploy_masterslave.lua @@ -0,0 +1,14 @@ + + dofile "master.lua" + dofile "slave.lua" + --Set Application + simgrid.Host.setFunction{host="Splayd_1",fct="Master",args="20,550000000,1000000,4"}; + simgrid.Host.setFunction{host="Splayd_5",fct="Slave",args="0"}; + simgrid.Host.setFunction{host="Splayd_2",fct="Slave",args="1"}; + simgrid.Host.setFunction{host="Splayd_3",fct="Slave",args="2"}; + simgrid.Host.setFunction{host="Splayd_4",fct="Slave",args="3"}; + + simgrid.info("Start Saving Platform..."); + --Save Application + simgrid.msg_register_application(); + simgrid.info("Platform Saved..."); diff --git a/examples/lua/splaySim/splay_platform.lua b/examples/lua/splaySim/splay_platform.lua new file mode 100644 index 0000000000..468a097a0b --- /dev/null +++ b/examples/lua/splaySim/splay_platform.lua @@ -0,0 +1,45 @@ +require "simgrid" + + simgrid.AS.new{id="AS0",mode="Full"}; + + -- create 5 Splayd (Hosts) + for i=0,5,1 do + simgrid.AS.addHost{AS="AS0",id="Splayd_"..i,power= 7000000+i*1000000} + end + + -- create Links + for i=10,0,-1 do + simgrid.AS.addLink{AS="AS0",id=i,bandwidth=252750+ i*768,latency=0.000270544+i*0.087}; + end + -- simgrid.Route.new(src_id,des_id,links_nb,links_list) + simgrid.AS.addRoute("AS0","Splayd_1","Splayd_2",{"1"}); + simgrid.AS.addRoute("AS0","Splayd_1","Splayd_3",{"0","1","2","3","4","8"}); + simgrid.AS.addRoute("AS0","Splayd_1","Splayd_4",{"3","4","5"}); + simgrid.AS.addRoute("AS0","Splayd_1","Splayd_5",{"0","1","3","2","4","6","7"}); + + simgrid.AS.addRoute("AS0","Splayd_2","Splayd_1",{"1"}); + simgrid.AS.addRoute("AS0","Splayd_2","Splayd_3",{"0","1","2","3","4","8","9"}); + simgrid.AS.addRoute("AS0","Splayd_2","Splayd_4",{"3","4","5","9"}); + simgrid.AS.addRoute("AS0","Splayd_2","Splayd_5",{"0","1","2","3","4","6","7","9"}); + + simgrid.AS.addRoute("AS0","Splayd_3","Splayd_1",{"0","1","2","3","4","8"}); + simgrid.AS.addRoute("AS0","Splayd_3","Splayd_2",{"0","1","2","3","4","8","9"}); + simgrid.AS.addRoute("AS0","Splayd_3","Splayd_4",{"0","1","2","5","8"}); + simgrid.AS.addRoute("AS0","Splayd_3","Splayd_5",{"6","7","8"}); + + simgrid.AS.addRoute("AS0","Splayd_4","Splayd_1",{"3","4","5"}); + simgrid.AS.addRoute("AS0","Splayd_4","Splayd_2",{"3","4","5","9"}); + simgrid.AS.addRoute("AS0","Splayd_4","Splayd_3",{"0","1","2","5","8"}); + simgrid.AS.addRoute("AS0","Splayd_4","Splayd_5",{"0","1","2","5","6","7"}); + + simgrid.AS.addRoute("AS0","Splayd_5","Splayd_1",{"0","1","3","2","4","6","7"}); + simgrid.AS.addRoute("AS0","Splayd_5","Splayd_2",{"0","1","2","3","4","6","7","9"}); + simgrid.AS.addRoute("AS0","Splayd_5","Splayd_3",{"6","7","8"}); + simgrid.AS.addRoute("AS0","Splayd_5","Splayd_4",{"0","1","2","5","6","7"}); + + --Save Platform + simgrid.msg_register_platform(); + simgrid.info("Platform Saved...") + + + -- 2.20.1