Logo AND Algorithmique Numérique Distribuée

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