Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
f96c5b21f4fcc494252746e407976eab6b05aa0a
[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
10  
11   
12   def initialize(*args)
13     
14     super()
15     channel = 0
16     puts "Hey ..from Master"#info("Hey")
17     
18    slaves = Array.new()
19    
20    size = args.size
21    
22    puts "Args = " + size
23    
24    for i in 0..size-1
25      puts "argv :" + args[1]
26    end
27    
28    raise "Master needs 3 arguments" if size < 3
29    
30    numberOfTask = args[0] #convert to int
31    taskComputeSize = args[1] #convert to double
32    taskCommunicationSize = args[2] #convert to double
33    slaveCount = args[3] #convert to int
34    
35    
36 #    todo = Array.new(numberOfTask)
37    
38    #Creating & Sending Task
39    for i in 0..numberOfTask 
40      
41      task = RbTask.new("Task_" + i.to_s, taskComputeSize , taskCommunicationSize );
42      s_alias = "slave " + (i%slaveCount).to_s
43      puts "Master Sending "+ RbTask.name(task) + " to " + s_alias
44      RbTask.send(task,s_alias)
45      puts "Master Done Sending " +RbTask.name(task) + " to " + s_alias
46      
47    end
48   
49    # Sending Finalize Tasks
50    puts "Master: All tasks have been dispatched. Let's tell everybody the computation is over."
51    for i in 0..slaveCount-1
52      s_alias = "slave " + i.to_s
53      puts "Master Sending Finalize to " + s_alias
54      RbTask.send(RbTask.new("finalize",0,0),s_alias)
55    end
56      
57    puts "Master : Everything's Done"
58    
59   end
60   
61 end
62
63