Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
First version of ruby bindings by Medhi
[simgrid.git] / src / bindings / ruby / MasterSlave.rb
1 require 'msg'
2 require 'RubyProcess'
3
4 def Master(*args)
5   
6    puts "Hey ..from Master"#info("Hey")
7     
8    slaves = Array.new()
9    
10    size = args.size
11    
12    puts "Args = " + size
13    
14    for i in 0..size-1
15      puts "argv :" + args[1]
16    end
17    
18    raise "Master needs 3 arguments" if size < 3
19    
20    numberOfTask = args[0] #convert to int
21    taskComputeSize = args[1] #convert to double
22    taskCommunicationSize = args[2] #convert to double
23    slaveCount = args[3] #convert to int
24    
25    
26 #    todo = Array.new(numberOfTask)
27    
28    #Creating & Sending Task
29    for i in 0..numberOfTask 
30      
31      task = RbTask.new("Task_" + i.to_s, taskComputeSize , taskCommunicationSize );
32      s_alias = "slave " + (i%slaveCount).to_s
33      puts "Master Sending "+ RbTask.name(task) + " to " + s_alias
34      RbTask.send(task,s_alias)
35      puts "Master Done Sending " +RbTask.name(task) + " to " + s_alias
36      
37    end
38   
39    # Sending Finalize Tasks
40    puts "Master: All tasks have been dispatched. Let's tell everybody the computation is over."
41    for i in 0..slaveCount-1
42      s_alias = "slave " + i.to_s
43      puts "Master Sending Finalize to " + s_alias
44      RbTask.send(RbTask.new("finalize",0,0),s_alias)
45    end
46      
47    puts "Master : Everything's Done"
48   
49   
50   
51 end
52
53
54 def Slave(*args)
55   
56    puts "Hello From Slave"
57     s_mailbox = "slave" + args[0]
58     
59     
60     while true
61       
62       task = RbTask.recieve(s_mailbox)
63       
64       task_name = RbTask.name(task)
65       
66       if ( task_name == "finalize" )
67         puts "Slave" + s_mailbox + "got finalize msg"
68         break
69       end
70       
71       puts "Slave " + s_mailbox + "Processing" + RbTask.name(task)
72       RbTask.execute(task)
73       
74     end
75         
76     puts "Slave " + s_mailbox + "I'm Done , See You !!"
77   
78   
79 end