Logo AND Algorithmique Numérique Distribuée

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