Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
lua layer that reimplements SPLAY methodsfor rpc, job and events modules, with a...
authormehdi <mido.peace@gmail.com>
Mon, 11 Apr 2011 11:57:44 +0000 (13:57 +0200)
committermehdi <mido.peace@gmail.com>
Mon, 11 Apr 2011 11:57:44 +0000 (13:57 +0200)
examples/lua/SimSplay/platform_script.lua [new file with mode: 0644]
examples/lua/SimSplay/sim_splay.lua [new file with mode: 0644]
examples/lua/SimSplay/simgrid.so [new symlink]
examples/lua/SimSplay/splay_school.lua [new file with mode: 0644]

diff --git a/examples/lua/SimSplay/platform_script.lua b/examples/lua/SimSplay/platform_script.lua
new file mode 100644 (file)
index 0000000..59e37aa
--- /dev/null
@@ -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 (file)
index 0000000..401c17d
--- /dev/null
@@ -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 (symlink)
index 0000000..df55d85
--- /dev/null
@@ -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 (file)
index 0000000..abaf7c9
--- /dev/null
@@ -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()
+
+
+