Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
f2f1913fa37d781f33851c5dddf2152de4efb31e
[simgrid.git] / src / bindings / ruby / Master.rb
1 require 'msg'
2 require 'RubyProcess'
3
4 include MSG
5
6 class Master < RbProcess  
7   def initialize()
8     super()
9   end
10
11  
12   # msg_main : that function that will be executed when Running Simulation
13   def msg_main(args) # args is an array Containin' arguments for function master
14     puts "Hey From Ruby...I'm The Master" 
15     size = args.size
16     puts "Number of Args for Master = " + size.to_s
17    for i in 0..size-1
18       puts  args[i]
19    end
20    
21    raise "Master needs 3 arguments" if size < 3 
22    numberOfTask = Integer(args[0]) 
23    taskComputeSize = Float(args[1])
24    taskCommunicationSize = Float(args[2])
25    slaveCount = Integer(args[3]) 
26    
27    #Creating & Sending Task
28    for i in 0..numberOfTask
29   
30      task = RbTask.new("Task_" + i.to_s, taskComputeSize , taskCommunicationSize );
31      s_alias = "slave>>" + (i%slaveCount).to_s
32      puts "Master Sending "+ RbTask.name(task) + " to " + s_alias + " with Comput Size " + RbTask.compSize(task).to_s 
33      RbTask.send(task,s_alias)
34      puts "Master Done Sending " +RbTask.name(task) + " to " + s_alias
35   
36    end
37   
38    # Sending Finalize Tasks
39    puts "Master: All tasks have been dispatched. Let's tell everybody the computation is over."
40    for i in 0..slaveCount-1
41      s_alias = "slave " + i.to_s
42      puts "Master Sending Finalize to " + s_alias
43      RbTask.send(RbTask.new("finalize",0,0),s_alias)
44    end
45    puts "Master : Everything's Done"
46   end  
47   
48 end