4 #################################################
6 #################################################
8 class Master < MsgProcess
14 # msg_main : that function that will be executed when Running Simulation
15 def msg_main(args) # args is an array containing arguments for function master
16 info("Hello From Master")
18 info ("Number of Args for Master = " + size.to_s)
20 info("args["+String(i)+"]="+args[i])
23 raise "Master needs 3 arguments" if size < 3
24 numberOfTask = Integer(args[0])
25 taskComputeSize = Float(args[1])
26 taskCommunicationSize = Float(args[2])
27 slaveCount = Integer(args[3])
29 #Creating & Sending Task
30 for i in 0..numberOfTask-1
33 task = Task.new("Task_"+ i.to_s, taskComputeSize , taskCommunicationSize );
34 s_alias = "slave>>" + (i%slaveCount).to_s
35 info("Master Sending "+ Task.name(task) + " to " + s_alias + " with Comput Size " + Task.compSize(task).to_s)
36 Task.send(task,s_alias)
37 info("Master Done Sending " +Task.name(task) + " to " + s_alias)
38 # sameTask = Task.receive(s_alias)
39 # puts "Master Receiving its Own Task"
42 # Sending Finalize Tasks
43 info ("Master: All tasks have been dispatched. Let's tell everybody the computation is over.")
44 for i in 0..slaveCount-1
45 s_alias = "slave " + i.to_s
46 info ("Master Sending Finalize to " + s_alias)
47 Task.send(Task.new("finalize",0,0),s_alias)
49 info("Master : Everything's Done")
53 #################################################
55 #################################################
56 class Slave < MsgProcess
62 # msg_main : that function that will be executed when Running Simulation
64 info("Hello From Slave")
65 s_mailbox = "slave>>" + args[0]
69 info("Ready to Receive Task")
70 task = Task.receive(s_mailbox)
71 task_name = Task.name(task)
72 info ("Task Received : " + task.name)
73 if (task_name == "finalize")
74 info("Slave" + s_mailbox + "got finalize msg")
77 info("Slave " + s_mailbox + " ...Processing" + Task.name(task))
80 info("Slave " + s_mailbox + "I'm Done , See You !!")
86 #################################################
88 #################################################
91 MSG.createEnvironment(ARGV[0])
92 MSG.deployApplication(ARGV[1])
94 MSG.createEnvironment("platform.xml")
95 MSG.deployApplication("deploy.xml")
96 Thread.list.each {|t| p t}
99 # Thread.list.each {|t| p t}