--- /dev/null
+ dofile 'master.lua'
+ dofile 'slave.lua'
+ --Set Application
+ simgrid.Host.setFunction{host="Tremblay",fct="Master",args="20,550000000,1000000,4"};
+ simgrid.Host.setFunction{host="Bourassa",fct="Slave",args="0"};
+ simgrid.Host.setFunction{host="Jupiter",fct="Slave",args="1"};
+ simgrid.Host.setFunction{host="Fafard",fct="Slave",args="2"};
+ simgrid.Host.setFunction{host="Ginette",fct="Slave",args="3"};
+
+ --Save Application
+ simgrid.msg_register_application();
--- /dev/null
+--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
--- /dev/null
+require "simgrid"
+dofile 'platform.lua'
+dofile 'deploy.lua'
+--Rutform.lua'
+ simgrid.run()
+ simgrid.info("Simulation's over.See you.")
+ simgrid.clean()
+
--- /dev/null
+# compile the master_slave_bypass example
+
+$ lua master_slave.lua --log=surf_parse.thres:critical
+> [Tremblay:Master:(1) 0.000000] [lua/INFO] Hello from lua, I'm the master
+> [Tremblay:Master:(1) 0.000000] [lua/INFO] Got 20
+> [Tremblay:Master:(1) 0.000000] [lua/INFO] Got 50000000
+> [Tremblay:Master:(1) 0.000000] [lua/INFO] Got 1000000
+> [Tremblay:Master:(1) 0.000000] [lua/INFO] Got 4
+> [Tremblay:Master:(1) 0.000000] [lua/INFO] Argc=4 (should be 4)
+> [Tremblay:Master:(1) 0.000000] [lua/INFO] Master sending 'Task 1' To 'slave 1'
+> [Bourassa:Slave:(2) 0.000000] [lua/INFO] Hello from lua, I'm a poor slave with mbox: slave 0
+> [Jupiter:Slave:(3) 0.000000] [lua/INFO] Hello from lua, I'm a poor slave with mbox: slave 1
+> [Fafard:Slave:(4) 0.000000] [lua/INFO] Hello from lua, I'm a poor slave with mbox: slave 2
+> [Ginette:Slave:(5) 0.000000] [lua/INFO] Hello from lua, I'm a poor slave with mbox: slave 3
+> [Jupiter:Slave:(3) 0.165962] [lua/INFO] Slave 'slave 1' processing Task 1
+> [Tremblay:Master:(1) 0.165962] [lua/INFO] Master done sending 'Task 1' To 'slave 1'
+> [Tremblay:Master:(1) 0.165962] [lua/INFO] Master sending 'Task 2' To 'slave 2'
+> [Fafard:Slave:(4) 0.384115] [lua/INFO] Slave 'slave 2' processing Task 2
+> [Tremblay:Master:(1) 0.384115] [lua/INFO] Master done sending 'Task 2' To 'slave 2'
+> [Tremblay:Master:(1) 0.384115] [lua/INFO] Master sending 'Task 3' To 'slave 3'
+> [Ginette:Slave:(5) 0.524575] [lua/INFO] Slave 'slave 3' processing Task 3
+> [Tremblay:Master:(1) 0.524575] [lua/INFO] Master done sending 'Task 3' To 'slave 3'
+> [Tremblay:Master:(1) 0.524575] [lua/INFO] Master sending 'Task 4' To 'slave 0'
+> [Bourassa:Slave:(2) 0.740447] [lua/INFO] Slave 'slave 0' processing Task 4
+> [Tremblay:Master:(1) 0.740447] [lua/INFO] Master done sending 'Task 4' To 'slave 0'
+> [Tremblay:Master:(1) 0.740447] [lua/INFO] Master sending 'Task 5' To 'slave 1'
+> [Jupiter:Slave:(3) 0.821304] [lua/INFO] Slave 'slave 1': task Task 1 done
+> [Jupiter:Slave:(3) 0.987266] [lua/INFO] Slave 'slave 1' processing Task 5
+> [Tremblay:Master:(1) 0.987266] [lua/INFO] Master done sending 'Task 5' To 'slave 1'
+> [Tremblay:Master:(1) 0.987266] [lua/INFO] Master sending 'Task 6' To 'slave 2'
+> [Fafard:Slave:(4) 1.039457] [lua/INFO] Slave 'slave 2': task Task 2 done
+> [Fafard:Slave:(4) 1.257610] [lua/INFO] Slave 'slave 2' processing Task 6
+> [Tremblay:Master:(1) 1.257610] [lua/INFO] Master done sending 'Task 6' To 'slave 2'
+> [Tremblay:Master:(1) 1.257610] [lua/INFO] Master sending 'Task 7' To 'slave 3'
+> [Ginette:Slave:(5) 1.555672] [lua/INFO] Slave 'slave 3': task Task 3 done
+> [Jupiter:Slave:(3) 1.642608] [lua/INFO] Slave 'slave 1': task Task 5 done
+> [Ginette:Slave:(5) 1.696132] [lua/INFO] Slave 'slave 3' processing Task 7
+> [Tremblay:Master:(1) 1.696132] [lua/INFO] Master done sending 'Task 7' To 'slave 3'
+> [Tremblay:Master:(1) 1.696132] [lua/INFO] Master sending 'Task 8' To 'slave 0'
+> [Bourassa:Slave:(2) 1.771545] [lua/INFO] Slave 'slave 0': task Task 4 done
+> [Fafard:Slave:(4) 1.912953] [lua/INFO] Slave 'slave 2': task Task 6 done
+> [Bourassa:Slave:(2) 1.987417] [lua/INFO] Slave 'slave 0' processing Task 8
+> [Tremblay:Master:(1) 1.987417] [lua/INFO] Master done sending 'Task 8' To 'slave 0'
+> [Tremblay:Master:(1) 1.987417] [lua/INFO] Master sending 'Task 9' To 'slave 1'
+> [Jupiter:Slave:(3) 2.153379] [lua/INFO] Slave 'slave 1' processing Task 9
+> [Tremblay:Master:(1) 2.153379] [lua/INFO] Master done sending 'Task 9' To 'slave 1'
+> [Tremblay:Master:(1) 2.153379] [lua/INFO] Master sending 'Task 10' To 'slave 2'
+> [Fafard:Slave:(4) 2.371532] [lua/INFO] Slave 'slave 2' processing Task 10
+> [Tremblay:Master:(1) 2.371532] [lua/INFO] Master done sending 'Task 10' To 'slave 2'
+> [Tremblay:Master:(1) 2.371532] [lua/INFO] Master sending 'Task 11' To 'slave 3'
+> [Ginette:Slave:(5) 2.727230] [lua/INFO] Slave 'slave 3': task Task 7 done
+> [Jupiter:Slave:(3) 2.808721] [lua/INFO] Slave 'slave 1': task Task 9 done
+> [Ginette:Slave:(5) 2.867690] [lua/INFO] Slave 'slave 3' processing Task 11
+> [Tremblay:Master:(1) 2.867690] [lua/INFO] Master done sending 'Task 11' To 'slave 3'
+> [Tremblay:Master:(1) 2.867690] [lua/INFO] Master sending 'Task 12' To 'slave 0'
+> [Bourassa:Slave:(2) 3.018515] [lua/INFO] Slave 'slave 0': task Task 8 done
+> [Fafard:Slave:(4) 3.026874] [lua/INFO] Slave 'slave 2': task Task 10 done
+> [Bourassa:Slave:(2) 3.234387] [lua/INFO] Slave 'slave 0' processing Task 12
+> [Tremblay:Master:(1) 3.234387] [lua/INFO] Master done sending 'Task 12' To 'slave 0'
+> [Tremblay:Master:(1) 3.234387] [lua/INFO] Master sending 'Task 13' To 'slave 1'
+> [Jupiter:Slave:(3) 3.400349] [lua/INFO] Slave 'slave 1' processing Task 13
+> [Tremblay:Master:(1) 3.400349] [lua/INFO] Master done sending 'Task 13' To 'slave 1'
+> [Tremblay:Master:(1) 3.400349] [lua/INFO] Master sending 'Task 14' To 'slave 2'
+> [Fafard:Slave:(4) 3.618502] [lua/INFO] Slave 'slave 2' processing Task 14
+> [Tremblay:Master:(1) 3.618502] [lua/INFO] Master done sending 'Task 14' To 'slave 2'
+> [Tremblay:Master:(1) 3.618502] [lua/INFO] Master sending 'Task 15' To 'slave 3'
+> [Ginette:Slave:(5) 3.898788] [lua/INFO] Slave 'slave 3': task Task 11 done
+> [Ginette:Slave:(5) 4.039247] [lua/INFO] Slave 'slave 3' processing Task 15
+> [Tremblay:Master:(1) 4.039247] [lua/INFO] Master done sending 'Task 15' To 'slave 3'
+> [Tremblay:Master:(1) 4.039247] [lua/INFO] Master sending 'Task 16' To 'slave 0'
+> [Jupiter:Slave:(3) 4.055691] [lua/INFO] Slave 'slave 1': task Task 13 done
+> [Bourassa:Slave:(2) 4.265485] [lua/INFO] Slave 'slave 0': task Task 12 done
+> [Fafard:Slave:(4) 4.273845] [lua/INFO] Slave 'slave 2': task Task 14 done
+> [Bourassa:Slave:(2) 4.481357] [lua/INFO] Slave 'slave 0' processing Task 16
+> [Tremblay:Master:(1) 4.481357] [lua/INFO] Master done sending 'Task 16' To 'slave 0'
+> [Tremblay:Master:(1) 4.481357] [lua/INFO] Master sending 'Task 17' To 'slave 1'
+> [Jupiter:Slave:(3) 4.647319] [lua/INFO] Slave 'slave 1' processing Task 17
+> [Tremblay:Master:(1) 4.647319] [lua/INFO] Master done sending 'Task 17' To 'slave 1'
+> [Tremblay:Master:(1) 4.647319] [lua/INFO] Master sending 'Task 18' To 'slave 2'
+> [Fafard:Slave:(4) 4.865472] [lua/INFO] Slave 'slave 2' processing Task 18
+> [Tremblay:Master:(1) 4.865472] [lua/INFO] Master done sending 'Task 18' To 'slave 2'
+> [Tremblay:Master:(1) 4.865472] [lua/INFO] Master sending 'Task 19' To 'slave 3'
+> [Ginette:Slave:(5) 5.070345] [lua/INFO] Slave 'slave 3': task Task 15 done
+> [Ginette:Slave:(5) 5.210805] [lua/INFO] Slave 'slave 3' processing Task 19
+> [Tremblay:Master:(1) 5.210805] [lua/INFO] Master done sending 'Task 19' To 'slave 3'
+> [Tremblay:Master:(1) 5.210805] [lua/INFO] Master sending 'Task 20' To 'slave 0'
+> [Jupiter:Slave:(3) 5.302662] [lua/INFO] Slave 'slave 1': task Task 17 done
+> [Bourassa:Slave:(2) 5.512455] [lua/INFO] Slave 'slave 0': task Task 16 done
+> [Fafard:Slave:(4) 5.520815] [lua/INFO] Slave 'slave 2': task Task 18 done
+> [Bourassa:Slave:(2) 5.728328] [lua/INFO] Slave 'slave 0' processing Task 20
+> [Tremblay:Master:(1) 5.728328] [lua/INFO] Master done sending 'Task 20' To 'slave 0'
+> [Tremblay:Master:(1) 5.728328] [lua/INFO] Master: All tasks have been dispatched. Let's tell everybody the computation is over.
+> [Tremblay:Master:(1) 5.728328] [lua/INFO] Master: sending finalize to slave 0
+> [Ginette:Slave:(5) 6.241903] [lua/INFO] Slave 'slave 3': task Task 19 done
+> [Bourassa:Slave:(2) 6.759426] [lua/INFO] Slave 'slave 0': task Task 20 done
+> [Bourassa:Slave:(2) 6.975298] [lua/INFO] Slave 'slave 0' got finalize msg
+> [Bourassa:Slave:(2) 6.975298] [lua/INFO] Slave 'slave 0': I'm Done . See You !!
+> [Tremblay:Master:(1) 6.975298] [lua/INFO] Master: sending finalize to slave 1
+> [Jupiter:Slave:(3) 7.141260] [lua/INFO] Slave 'slave 1' got finalize msg
+> [Jupiter:Slave:(3) 7.141260] [lua/INFO] Slave 'slave 1': I'm Done . See You !!
+> [Tremblay:Master:(1) 7.141260] [lua/INFO] Master: sending finalize to slave 2
+> [Fafard:Slave:(4) 7.359413] [lua/INFO] Slave 'slave 2' got finalize msg
+> [Fafard:Slave:(4) 7.359413] [lua/INFO] Slave 'slave 2': I'm Done . See You !!
+> [Tremblay:Master:(1) 7.359413] [lua/INFO] Master: sending finalize to slave 3
+> [Ginette:Slave:(5) 7.499872] [lua/INFO] Slave 'slave 3' got finalize msg
+> [Ginette:Slave:(5) 7.499872] [lua/INFO] Slave 'slave 3': I'm Done . See You !!
+> [Tremblay:Master:(1) 7.499872] [lua/INFO] Master: Everything's done.
+> [7.499872] [lua/INFO] Simulation's over.See you.
--- /dev/null
+
+ --create new routing model
+ --simgrid.AS.new(AS_id,AS_mode)
+ simgrid.AS.new{id="AS0",mode="Full"};
+ --simgrid.Host.new(host_id,power)
+ 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.AS.addHost{AS="AS0",id="Ginette",power=48492000};
+ simgrid.AS.addHost{AS="AS0",id="Bourassa",power=48492000};
+
+ -- 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{AS="AS0",src="Tremblay",dest="Jupiter",links="1"};
+ simgrid.AS.addRoute{AS="AS0",src="Tremblay",dest="Fafard",links="0,1,2,3,4,8"};
+ simgrid.AS.addRoute{AS="AS0",src="Tremblay",dest="Ginette",links="3,4,5"};
+ simgrid.AS.addRoute{AS="AS0",src="Tremblay",dest="Bourassa",links="0,1,3,2,4,6,7"};
+
+ simgrid.AS.addRoute{AS="AS0",src="Jupiter",dest="Tremblay",links="1"};
+ simgrid.AS.addRoute{AS="AS0",src="Jupiter",dest="Fafard",links="0,1,2,3,4,8,9"};
+ simgrid.AS.addRoute{AS="AS0",src="Jupiter",dest="Ginette",links="3,4,5,9"};
+ simgrid.AS.addRoute{AS="AS0",src="Jupiter",dest="Bourassa",links="0,1,2,3,4,6,7,9"};
+
+ simgrid.AS.addRoute{AS="AS0",src="Fafard",dest="Tremblay",links="0,1,2,3,4,8"};
+ simgrid.AS.addRoute{AS="AS0",src="Fafard",dest="Jupiter",links="0,1,2,3,4,8,9"};
+ simgrid.AS.addRoute{AS="AS0",src="Fafard",dest="Ginette",links="0,1,2,5,8"};
+ simgrid.AS.addRoute{AS="AS0",src="Fafard",dest="Bourassa",links="6,7,8"};
+
+ simgrid.AS.addRoute{AS="AS0",src="Ginette",dest="Tremblay",links="3,4,5"};
+ simgrid.AS.addRoute{AS="AS0",src="Ginette",dest="Jupiter",links="3,4,5,9"};
+ simgrid.AS.addRoute{AS="AS0",src="Ginette",dest="Fafard",links="0,1,2,5,8"};
+ simgrid.AS.addRoute{AS="AS0",src="Ginette",dest="Bourassa",links="0,1,2,5,6,7"};
+
+ simgrid.AS.addRoute{AS="AS0",src="Bourassa",dest="Tremblay",links="0,1,3,2,4,6,7"};
+ simgrid.AS.addRoute{AS="AS0",src="Bourassa",dest="Jupiter",links="0,1,2,3,4,6,7,9"};
+ simgrid.AS.addRoute{AS="AS0",src="Bourassa",dest="Fafard",links="6,7,8"};
+ simgrid.AS.addRoute{AS="AS0",src="Bourassa",dest="Ginette",links="0,1,2,5,6,7"};
+
+ --Save Platform
+ --simgrid.info("start registering platform");
+ simgrid.msg_register_platform();
+ --simgrid.info("platform registered");
--- /dev/null
+
+
+-- 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
--- /dev/null
+--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
--- /dev/null
+dofile 'master.lua'
+dofile 'slave.lua'
+-- Simulation Code ----------------------------------------------------------
+
+require "simgrid"
+if (#arg == 2) then
+simgrid.platform(arg[1])
+simgrid.application(arg[2])
+else
+simgrid.platform("../../msg/small_platform.xml")
+simgrid.application("../deploy.xml")
+end
+simgrid.run()
+simgrid.info("Simulation's over.See you.")
+simgrid.clean()
+
--- /dev/null
+
+ --create new routing model
+ --simgrid.AS.new(AS_id,AS_mode)
+ simgrid.AS.new{id="AS0",mode="Full"};
+ --simgrid.Host.new(host_id,power)
+ 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.AS.addHost{AS="AS0",id="Ginette",power=48492000};
+ simgrid.AS.addHost{AS="AS0",id="Bourassa",power=48492000};
+
+ -- 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{AS="AS0",src="Tremblay",dest="Jupiter",links="1"};
+ simgrid.AS.addRoute{AS="AS0",src="Tremblay",dest="Fafard",links="0,1,2,3,4,8"};
+ simgrid.AS.addRoute{AS="AS0",src="Tremblay",dest="Ginette",links="3,4,5"};
+ simgrid.AS.addRoute{AS="AS0",src="Tremblay",dest="Bourassa",links="0,1,3,2,4,6,7"};
+
+ simgrid.AS.addRoute{AS="AS0",src="Jupiter",dest="Tremblay",links="1"};
+ simgrid.AS.addRoute{AS="AS0",src="Jupiter",dest="Fafard",links="0,1,2,3,4,8,9"};
+ simgrid.AS.addRoute{AS="AS0",src="Jupiter",dest="Ginette",links="3,4,5,9"};
+ simgrid.AS.addRoute{AS="AS0",src="Jupiter",dest="Bourassa",links="0,1,2,3,4,6,7,9"};
+
+ simgrid.AS.addRoute{AS="AS0",src="Fafard",dest="Tremblay",links="0,1,2,3,4,8"};
+ simgrid.AS.addRoute{AS="AS0",src="Fafard",dest="Jupiter",links="0,1,2,3,4,8,9"};
+ simgrid.AS.addRoute{AS="AS0",src="Fafard",dest="Ginette",links="0,1,2,5,8"};
+ simgrid.AS.addRoute{AS="AS0",src="Fafard",dest="Bourassa",links="6,7,8"};
+
+ simgrid.AS.addRoute{AS="AS0",src="Ginette",dest="Tremblay",links="3,4,5"};
+ simgrid.AS.addRoute{AS="AS0",src="Ginette",dest="Jupiter",links="3,4,5,9"};
+ simgrid.AS.addRoute{AS="AS0",src="Ginette",dest="Fafard",links="0,1,2,5,8"};
+ simgrid.AS.addRoute{AS="AS0",src="Ginette",dest="Bourassa",links="0,1,2,5,6,7"};
+
+ simgrid.AS.addRoute{AS="AS0",src="Bourassa",dest="Tremblay",links="0,1,3,2,4,6,7"};
+ simgrid.AS.addRoute{AS="AS0",src="Bourassa",dest="Jupiter",links="0,1,2,3,4,6,7,9"};
+ simgrid.AS.addRoute{AS="AS0",src="Bourassa",dest="Fafard",links="6,7,8"};
+ simgrid.AS.addRoute{AS="AS0",src="Bourassa",dest="Ginette",links="0,1,2,5,6,7"};
+
+ --Save Platform
+ --simgrid.info("start registering platform");
+ simgrid.msg_register_platform();
+ --simgrid.info("platform registered");
--- /dev/null
+
+-- 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
+
--- /dev/null
+
+
+-- 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
--- /dev/null
+dofile 'sender.lua'
+dofile 'receiver.lua'
+require "simgrid"
+simgrid.platform("quicksort_platform.xml")
+simgrid.application("quicksort_deployment.xml")
+simgrid.run()
+simgrid.info("Simulation's over.See you.")
+simgrid.clean()
+
+
+
--- /dev/null
+# compile the mult_matrix example
+
+# Later modify the commande and specify the platform and deployment path
+
+! output sort
+$ lua mult_matrix.lua "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (1:Sender@Inmos) Hello From Sender
+> [ 0.000000] (1:Sender@Inmos) Argc=4 (should be 4)
+> [ 0.000000] (1:Sender@Inmos) Sending matrix_task to Bellevue
+> [ 0.000000] (2:Receiver@Bellevue) Hello From Receiver
+> [ 0.000000] (2:Receiver@Bellevue) Receiving Task from Inmos
+> [ 0.030276] (0:@) Simulation's over.See you.
+> [ 0.030276] (1:Sender@Inmos) Got the Multiplication result ...Bye
+> [ 0.030276] (2:Receiver@Bellevue) Calcul is done ... Bye
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+<platform version="3">
+ <process host="Inmos" function="Sender">
+ <argument value ="Bellevue"/>
+ <argument value="5000000"/>
+ <argument value="100000"/>
+ <argument value="Receiver"/> <!--will be used as a mailbox alias-->
+ </process>
+ <process host="Bellevue" function="Receiver">
+ <argument value="Inmos"/>
+ <argument value="Sender"/> <!--will be used as a mailbox alias-->
+ </process>
+</platform>
--- /dev/null
+<?xml version='1.0'?>
+ <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+ <platform version="3">
+ <AS id="AS0" routing="Full">
+ <!-- ljlkj -->
+ <host id="Inmos" power="98095000"/>
+ <host id="Bellevue" power="76296000"/>
+ <host id="Fafard" power="76296000"/>
+ <host id="Ginette" power="48492000"/>
+ <host id="Bourassa" power="48492000"/>
+ <link id="6" bandwidth="41279125" latency="5.9904e-05"/>
+ <link id="11" bandwidth="252750" latency="0.00570455"/>
+ <link id="3" bandwidth="34285625" latency="0.000514433"/>
+ <link id="7" bandwidth="11618875" latency="0.00018998"/>
+ <link id="9" bandwidth="7209750" latency="0.001461517"/>
+ <link id="12" bandwidth="1792625" latency="0.007877863"/>
+ <link id="2" bandwidth="118682500" latency="0.000136931"/>
+ <link id="8" bandwidth="8158000" latency="0.000270544"/>
+ <link id="1" bandwidth="34285625" latency="0.000514433"/>
+ <link id="4" bandwidth="10099625" latency="0.00047978"/>
+ <link id="0" bandwidth="41279125" latency="5.9904e-05"/>
+ <link id="10" bandwidth="4679750" latency="0.000848712"/>
+ <link id="5" bandwidth="27946250" latency="0.000278066"/>
+ <link id="loopback_FATPIPE" bandwidth="10000000" latency="0.1" sharing_policy="FATPIPE"/>
+ <link id="loopback" bandwidth="498000000" latency="0.000015"/>
+ <route src="Inmos" dst="Inmos"><link_ctn id="loopback"/></route>
+ <route src="Bellevue" dst="Bellevue"><link_ctn id="loopback"/></route>
+ <route src="Fafard" dst="Fafard"><link_ctn id="loopback"/></route>
+ <route src="Ginette" dst="Ginette"><link_ctn id="loopback"/></route>
+ <route src="Bourassa" dst="Bourassa"><link_ctn id="loopback"/></route>
+ <route src="Inmos" dst="Bellevue">
+ <link_ctn id="9"/>
+ </route>
+ <route src="Inmos" dst="Fafard">
+ <link_ctn id="4"/><link_ctn id="3"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="8"/>
+ </route>
+ <route src="Inmos" dst="Ginette">
+ <link_ctn id="4"/><link_ctn id="3"/><link_ctn id="5"/>
+ </route>
+ <route src="Inmos" dst="Bourassa">
+ <link_ctn id="4"/><link_ctn id="3"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="6"/><link_ctn id="7"/>
+ </route>
+ <route src="Bellevue" dst="Inmos">
+ <link_ctn id="9"/>
+ </route>
+ <route src="Bellevue" dst="Fafard">
+ <link_ctn id="9"/><link_ctn id="4"/><link_ctn id="3"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="8"/>
+ </route>
+ <route src="Bellevue" dst="Ginette">
+ <link_ctn id="9"/><link_ctn id="4"/><link_ctn id="3"/><link_ctn id="5"/>
+ </route>
+ <route src="Bellevue" dst="Bourassa">
+ <link_ctn id="9"/><link_ctn id="4"/><link_ctn id="3"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="6"/><link_ctn id="7"/>
+ </route>
+ <route src="Fafard" dst="Inmos">
+ <link_ctn id="8"/><link_ctn id="1"/><link_ctn id="0"/><link_ctn id="2"/><link_ctn id="3"/><link_ctn id="4"/>
+ </route>
+ <route src="Fafard" dst="Bellevue">
+ <link_ctn id="8"/><link_ctn id="1"/><link_ctn id="0"/><link_ctn id="2"/><link_ctn id="3"/><link_ctn id="4"/><link_ctn id="9"/>
+ </route>
+ <route src="Fafard" dst="Ginette">
+ <link_ctn id="8"/><link_ctn id="1"/><link_ctn id="0"/><link_ctn id="2"/><link_ctn id="5"/>
+ </route>
+ <route src="Fafard" dst="Bourassa">
+ <link_ctn id="8"/><link_ctn id="6"/><link_ctn id="7"/>
+ </route>
+ <route src="Ginette" dst="Inmos">
+ <link_ctn id="5"/><link_ctn id="3"/><link_ctn id="4"/>
+ </route>
+ <route src="Ginette" dst="Bellevue">
+ <link_ctn id="5"/><link_ctn id="3"/><link_ctn id="4"/><link_ctn id="9"/>
+ </route>
+ <route src="Ginette" dst="Fafard">
+ <link_ctn id="5"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="8"/>
+ </route>
+ <route src="Ginette" dst="Bourassa">
+ <link_ctn id="5"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="6"/><link_ctn id="7"/>
+ </route>
+ <route src="Bourassa" dst="Inmos">
+ <link_ctn id="7"/><link_ctn id="6"/><link_ctn id="1"/><link_ctn id="0"/><link_ctn id="2"/><link_ctn id="3"/><link_ctn id="4"/>
+ </route>
+ <route src="Bourassa" dst="Bellevue">
+ <link_ctn id="7"/><link_ctn id="6"/><link_ctn id="1"/><link_ctn id="0"/><link_ctn id="2"/><link_ctn id="3"/><link_ctn id="4"/><link_ctn id="9"/>
+ </route>
+ <route src="Bourassa" dst="Fafard">
+ <link_ctn id="7"/><link_ctn id="6"/><link_ctn id="8"/>
+ </route>
+ <route src="Bourassa" dst="Ginette">
+ <link_ctn id="7"/><link_ctn id="6"/><link_ctn id="1"/><link_ctn id="0"/><link_ctn id="2"/><link_ctn id="5"/>
+ </route>
+ </AS>
+ </platform>
--- /dev/null
+------------------------------------------------------
+function Receiver(...)
+
+ simgrid.info("Hello From Receiver")
+ sender = simgrid.Host.getByName(arg[1])
+ send_alias = arg[2]
+ recv_alias = "Receiver";
+ simgrid.info("Receiving Task from "..simgrid.Host.name(sender));
+ task = simgrid.Task.recv(recv_alias);
+ mm = mmult(task['size'],task['size'],task['matrix_1'],task['matrix_2']);
+ --mprint(task['size'],task['size'],mm)
+ task['matrix_res'] = mm;
+ simgrid.info("Calcul is done ... Bye");
+
+
+end
+
+local n = tonumber((arg and arg[1]) or 1)
+function mkmatrix(rows, cols)
+ local count = 1
+ local mx = {}
+ for i=0,(rows - 1) do
+ local row = {}
+ for j=0,(cols - 1) do
+ row[j] = count
+ count = count + 1
+ end
+ mx[i] = row
+ end
+ return(mx)
+end
+
+function mmult(rows, cols, m1, m2)
+ local m3 = {}
+ for i=0,(rows-1) do
+ m3[i] = {}
+ for j=0,(cols-1) do
+ local rowj = 0
+ for k=0,(cols-1) do
+ rowj = rowj + m1[i][k] * m2[k][j]
+ end
+ m3[i][j] = rowj
+ end
+ end
+ return(m3)
+end
+
+function mprint(rows,cols,m)
+ for i=0,(cols-1)do
+ for j=0,(rows-1)do
+ print (m[i][j])
+ end
+ end
+end
--- /dev/null
+function Sender(...)
+
+ simgrid.info("Hello From Sender")
+ receiver = simgrid.Host.getByName(arg[1])
+ task_comp = arg[2]
+ task_comm = arg[3]
+ rec_alias = arg[4]
+
+ size = 4
+ m1 = mkmatrix(size, size)
+ m2 = mkmatrix(size, size)
+
+ if (#arg ~= 4) then
+ error("Argc should be 4");
+ end
+ simgrid.info("Argc="..(#arg).." (should be 4)")
+
+ -- Sending Task
+ task = simgrid.Task.new("matrix_task",task_comp,task_comm);
+ task['matrix_1'] = m1;
+ task['matrix_2'] = m2;
+ task['size'] = size;
+ simgrid.info("Sending "..simgrid.Task.name(task).." to "..simgrid.Host.name(receiver));
+ simgrid.Task.send(task,rec_alias);
+ -- Read The Result
+ mm = task['matrix_res']
+ simgrid.info("Got the Multiplication result ...Bye");
+ --mprint(size,size,mm);
+
+end
--- /dev/null
+PERIODICITY 10
+ 0 0.5
+10 0.5
+20 1.00
+30 0.5
+40 0.5
+50 0.5
+60 0.5
--- /dev/null
+--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
+
+prop_value = simgrid.Host.getPropValue(simgrid.Host.self(),"peace");
+simgrid.info("Prop Value >>> ".. prop_value);
+
+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);
+ -- Set Trace Category
+ simgrid.Trace.setTaskCategory(tk,"compute");
+ 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);
+ --set Trace Category
+ simgrid.Trace.setTaskCategory(finalize,"finalize");
+ simgrid.Task.send(finalize,alias);
+end
+ simgrid.info("Master: Everything's done.");
+end
+
+--end of master
--- /dev/null
+dofile 'master.lua'
+dofile 'slave.lua'
+
+require "simgrid"
+-- Declaring the simulation tracing
+simgrid.Trace.start();
+-- Declaring tracing categories
+simgrid.Trace.category("compute");
+--:
+simgrid.Trace.category("finalize");
+
+if (#arg == 2) then
+simgrid.platform(arg[1])
+simgrid.application(arg[2])
+else
+simgrid.platform("../../msg/small_platform.xml")
+simgrid.application("../deploy.xml")
+end
+
+simgrid.run()
+simgrid.info("Simulation's over.See you.")
+simgrid.clean()
+simgrid.Trace.finish()
+
--- /dev/null
+%EventDef PajeDefineContainerType 0
+% Alias string
+% ContainerType string
+% Name string
+%EndEventDef
+%EventDef PajeDefineStateType 1
+% Alias string
+% ContainerType string
+% Name string
+%EndEventDef
+%EventDef PajeDefineEntityValue 2
+% Alias string
+% EntityType string
+% Name string
+%EndEventDef
+%EventDef PajeDefineEventType 3
+% Alias string
+% EntityType string
+% Name string
+%EndEventDef
+%EventDef PajeDefineLinkType 4
+% Alias string
+% ContainerType string
+% SourceContainerType string
+% DestContainerType string
+% Name string
+%EndEventDef
+%EventDef PajeCreateContainer 5
+% Time date
+% Alias string
+% Type string
+% Container string
+% Name string
+%EndEventDef
+%EventDef PajeDestroyContainer 9
+% Time date
+% Type string
+% Container string
+%EndEventDef
+%EventDef PajeSetState 6
+% Time date
+% EntityType string
+% Container string
+% Value string
+%EndEventDef
+%EventDef PajePopState 8
+% Time date
+% EntityType string
+% Container string
+%EndEventDef
+%EventDef PajeStartLink 12
+% Time date
+% EntityType string
+% Container string
+% Value string
+% SourceContainer string
+% Key string
+%EndEventDef
+%EventDef PajeEndLink 13
+% Time date
+% EntityType string
+% Container string
+% Value string
+% DestContainer string
+% Key string
+%EndEventDef
+%EventDef PajePushState 19
+% Time date
+% EntityType string
+% Container string
+% Value string
+%EndEventDef
+%EventDef PajeSetVariable 22
+% Time date
+% EntityType string
+% Container string
+% Value string
+%EndEventDef
+%EventDef PajeAddVariable 23
+% Time date
+% EntityType string
+% Container string
+% Value string
+%EndEventDef
+%EventDef PajeSubVariable 24
+% Time date
+% EntityType string
+% Container string
+% Value string
+%EndEventDef
+%EventDef PajeDefineVariableType 25
+% Alias string
+% ContainerType string
+% Name string
+%EndEventDef
+%EventDef PajeDefineVariableType 21
+% Alias string
+% ContainerType string
+% Name string
+% Color color
+%EndEventDef
+%EventDef PajeStartLink 26
+% Time date
+% EntityType string
+% Container string
+% Value string
+% SourceContainer string
+% Key string
+% Volume string
+%EndEventDef
+%EventDef PajeNewEvent 27
+% Time date
+% EntityType string
+% Container string
+% Value string
+%EndEventDef
+0 PLATFORM 0 platform
+0 HOST PLATFORM HOST
+0 LINK PLATFORM LINK
+5 0.000000 platform PLATFORM 0 simgrid-platform
+0 user_type 0 user_type
+5 0.000000 compute user_type 0 compute
+5 0.000000 finalize user_type 0 finalize
+5 0.000000 Tremblay HOST platform Tremblay
+5 0.000000 Jupiter HOST platform Jupiter
+5 0.000000 Fafard HOST platform Fafard
+5 0.000000 Ginette HOST platform Ginette
+5 0.000000 Bourassa HOST platform Bourassa
+5 0.000000 0x9ba7920 LINK platform 6
+5 0.000000 0x9ba7d40 LINK platform 11
+5 0.000000 0x9ba8160 LINK platform 3
+5 0.000000 0x9ba8580 LINK platform 7
+5 0.000000 0x9ba89a0 LINK platform 9
+5 0.000000 0x9ba8dc0 LINK platform 12
+5 0.000000 0x9ba91e0 LINK platform 2
+5 0.000000 0x9ba9600 LINK platform 8
+5 0.000000 0x9ba9a20 LINK platform 1
+5 0.000000 0x9ba9e40 LINK platform 4
+5 0.000000 0x9baa260 LINK platform 0
+5 0.000000 0x9baa680 LINK platform 10
+5 0.000000 0x9baaaa0 LINK platform 5
+27 0.000000 source 0x9ba89a0 Tremblay
+27 0.000000 destination 0x9ba89a0 Jupiter
+27 0.000000 source 0x9ba89a0 Jupiter
+27 0.000000 destination 0x9ba89a0 Tremblay
+9 7.499872 HOST Fafard
+9 7.499872 HOST Tremblay
+9 7.499872 HOST Bourassa
+9 7.499872 HOST Jupiter
+9 7.499872 HOST Ginette
+9 7.499872 LINK 0x9ba91e0
+9 7.499872 LINK 0x9ba8160
+9 7.499872 LINK 0x9ba9a20
+9 7.499872 LINK 0x9baa680
+9 7.499872 LINK 0x9ba89a0
+9 7.499872 LINK 0x9ba7920
+9 7.499872 LINK 0x9ba8dc0
+9 7.499872 LINK 0x9baaaa0
+9 7.499872 LINK 0x9ba8580
+9 7.499872 LINK 0x9baa260
+9 7.499872 LINK 0x9ba7d40
+9 7.499872 LINK 0x9ba9e40
+9 7.499872 LINK 0x9ba9600
--- /dev/null
+
+-- 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
+