From 80daf536b469046756c5064f704e5089c85c1d0a Mon Sep 17 00:00:00 2001 From: mehdi Date: Mon, 11 Apr 2011 13:57:44 +0200 Subject: [PATCH] lua layer that reimplements SPLAY methodsfor rpc, job and events modules, with a SPLAYchool script that works on SimGrid --- examples/lua/SimSplay/platform_script.lua | 41 ++++++++++ examples/lua/SimSplay/sim_splay.lua | 91 +++++++++++++++++++++++ examples/lua/SimSplay/simgrid.so | 1 + examples/lua/SimSplay/splay_school.lua | 19 +++++ 4 files changed, 152 insertions(+) create mode 100644 examples/lua/SimSplay/platform_script.lua create mode 100644 examples/lua/SimSplay/sim_splay.lua create mode 120000 examples/lua/SimSplay/simgrid.so create mode 100644 examples/lua/SimSplay/splay_school.lua diff --git a/examples/lua/SimSplay/platform_script.lua b/examples/lua/SimSplay/platform_script.lua new file mode 100644 index 0000000000..59e37aac25 --- /dev/null +++ b/examples/lua/SimSplay/platform_script.lua @@ -0,0 +1,41 @@ +require "simgrid" + + simgrid.AS.new{id="AS0",mode="Full"}; + + simgrid.AS.addHost{AS="AS0",id="Tremblay",power=98095000}; + simgrid.AS.addHost{AS="AS0",id="Jupiter",power=76296000}; + simgrid.AS.addHost{AS="AS0",id="Fafard",power=76296000}; + + simgrid.Host.setProperty{host="Tremblay",prop_id="ip",prop_value="199.23.98.3"}; + simgrid.Host.setProperty{host="Tremblay",prop_id="port",prop_value="65"}; + simgrid.Host.setProperty{host="Jupiter",prop_id="ip",prop_value="199.23.98.4"}; + simgrid.Host.setProperty{host="Jupiter",prop_id="port",prop_value="83"}; + simgrid.Host.setProperty{host="Fafard",prop_id="ip",prop_value="199.23.98.5"}; + simgrid.Host.setProperty{host="Fafard",prop_id="port",prop_value="76"}; + -- 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","Tremblay","Jupiter",{"1"}); + simgrid.AS.addRoute("AS0","Tremblay","Fafard",{"0","1","2","3","4","8"}); + + simgrid.AS.addRoute("AS0","Jupiter","Tremblay",{"1"}); + simgrid.AS.addRoute("AS0","Jupiter","Fafard",{"0","1","2","3","4","8","9"}); + + simgrid.AS.addRoute("AS0","Fafard","Tremblay",{"0","1","2","3","4","8"}); + simgrid.AS.addRoute("AS0","Fafard","Jupiter",{"0","1","2","3","4","8","9"}); + + + --Save Platform + simgrid.msg_register_platform(); + + --Set Application + simgrid.Host.setFunction{host="Tremblay",fct="SPLAYschool",args=""}; + simgrid.Host.setFunction{host="Fafard",fct="SPLAYschool",args=""}; + simgrid.Host.setFunction{host="Jupiter",fct="SPLAYschool",args=""}; + + --Save Application + simgrid.msg_register_application(); + + diff --git a/examples/lua/SimSplay/sim_splay.lua b/examples/lua/SimSplay/sim_splay.lua new file mode 100644 index 0000000000..401c17dd90 --- /dev/null +++ b/examples/lua/SimSplay/sim_splay.lua @@ -0,0 +1,91 @@ +require "simgrid" +-- Splay global modules +rpc = {} +log = {} +job = {} +event = {} +os = {} +start = {} +-- Splay global variables +job.me ={} +job.nodes = {} +job.list_type = "random" + +--Init nodes tables +function init_nodes() + for i= 1,simgrid.Host.number() do + job.nodes[i] = simgrid.Host.getPropValue(simgrid.Host.at(i),"ip")..":"..simgrid.Host.getPropValue(simgrid.Host.at(i),"port"); + end +end + +function init_jobs() + init_nodes() +end + +-- Job methods +function job.me.ip() + return simgrid.Host.getPropValue(simgrid.Host.self(),"ip"); +end + +function job.me.port() + return simgrid.Host.getPropValue(simgrid.Host.self(),"port"); +end + +function job.position() + return simgrid.Host.getPropValue(simgrid.Host.self(),"position"); +end + +-- log Methods +function log:print(msg) + simgrid.info(msg); +end + +-- rpc Methods +function rpc.call(node,call) + --init_nodes(); + func = "empty" + arg = "empty" + mailbox = node + + if type(call) == "table" then + func = call[1] + arg = call[2] + end + task_call = simgrid.Task.new("splay_task",10000,10000); + task_call['func_call_name'] = func; + task_call['func_call_arg'] = arg; + --log:print("Sending Task to mailbox "..mailbox.." to call "..func.." with arg "..arg); + simgrid.Task.iSend(task_call,mailbox); + call_function(func,arg) +end + +-- event Methods +function event.sleep(time) + my_mailbox = job.me.ip()..":"..job.me.port() + task = simgrid.Task.splay_recv(my_mailbox, time) +end + +-- main func for each process, this is equivalent to the Deploiment file +function event.thread(main_func) + dofile("platform_script.lua"); + init_jobs() +end + +-- OS methods +function os.exit() + simgrid.Host.destroy(simgrid.Host.self()); +end + +-- Start Methods +function start.loop() + simgrid.run() + simgrid.clean() +end +-- useful functions +function call_function(fct,arg) + _G[fct](arg) +end + +function SPLAYschool() + simgrid.info("Calling me...") +end diff --git a/examples/lua/SimSplay/simgrid.so b/examples/lua/SimSplay/simgrid.so new file mode 120000 index 0000000000..df55d8552b --- /dev/null +++ b/examples/lua/SimSplay/simgrid.so @@ -0,0 +1 @@ +../../../lib/libsimgrid.so \ No newline at end of file diff --git a/examples/lua/SimSplay/splay_school.lua b/examples/lua/SimSplay/splay_school.lua new file mode 100644 index 0000000000..abaf7c97b3 --- /dev/null +++ b/examples/lua/SimSplay/splay_school.lua @@ -0,0 +1,19 @@ +dofile 'sim_splay.lua' + +function SPLAYschool() + log:print("My ip is :" ..job.me.ip()) + event.sleep(5) + rpc.call(job.nodes[3],{"call_me","Helloooooow"}) + event.sleep(5) + os.exit() +end + +function call_me(position) + log:print("I received an RPC from node "..position); +end + +event.thread("SPLAYschool") +start.loop() + + + -- 2.20.1