include MSG
-class Master < RbProcess
+class Master < RbProcess
+ def initialize2()
+ super()
+ end
+
+ #for Testing
+ def msg_main2(args)
+ info("Hello From Master")
+ end
-
-
- def initialize(*args)
-
- super()
- channel = 0
- puts "Hey ..from Master"#info("Hey")
-
- slaves = Array.new()
-
- size = args.size
-
- puts "Args = " + size
-
+ # msg_main : that function that will be executed when Running Simulation
+ def msg_main(args) # args is an array Containin' arguments for function master
+ info("Hello From Master")
+ size = args.size
+ info ("Number of Args for Master = " + size.to_s)
for i in 0..size-1
- puts "argv :" + args[1]
+ info(args[i])
end
- raise "Master needs 3 arguments" if size < 3
-
- numberOfTask = args[0] #convert to int
- taskComputeSize = args[1] #convert to double
- taskCommunicationSize = args[2] #convert to double
- slaveCount = args[3] #convert to int
-
-
-# todo = Array.new(numberOfTask)
+ raise "Master needs 3 arguments" if size < 3
+ numberOfTask = Integer(args[0])
+ taskComputeSize = Float(args[1])
+ taskCommunicationSize = Float(args[2])
+ slaveCount = Integer(args[3])
#Creating & Sending Task
- for i in 0..numberOfTask
+ for i in 0..numberOfTask-1
+
- task = RbTask.new("Task_" + i.to_s, taskComputeSize , taskCommunicationSize );
- s_alias = "slave " + (i%slaveCount).to_s
- puts "Master Sending "+ RbTask.name(task) + " to " + s_alias
+ task = RbTask.new("Task_"+ i.to_s, taskComputeSize , taskCommunicationSize );
+ s_alias = "slave>>" + (i%slaveCount).to_s
+ info("Master Sending "+ RbTask.name(task) + " to " + s_alias + " with Comput Size " + RbTask.compSize(task).to_s)
RbTask.send(task,s_alias)
- puts "Master Done Sending " +RbTask.name(task) + " to " + s_alias
-
+ info("Master Done Sending " +RbTask.name(task) + " to " + s_alias)
+# sameTask = RbTask.receive(s_alias)
+# puts "Master Receiving its Own Task"
end
# Sending Finalize Tasks
- puts "Master: All tasks have been dispatched. Let's tell everybody the computation is over."
+ info ("Master: All tasks have been dispatched. Let's tell everybody the computation is over.")
for i in 0..slaveCount-1
s_alias = "slave " + i.to_s
- puts "Master Sending Finalize to " + s_alias
+ info ("Master Sending Finalize to " + s_alias)
RbTask.send(RbTask.new("finalize",0,0),s_alias)
end
-
- puts "Master : Everything's Done"
-
- end
+ info("Master : Everything's Done")
+ end
-end
-
-
+end
\ No newline at end of file