Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
aa1978d32139233cd5b702e5a6f515635b81079f
[simgrid.git] / examples / lua / multi_matrix / receiver.lua
1 ------------------------------------------------------
2 function Receiver(...)
3         
4         simgrid.info("Hello From Receiver")
5         sender = simgrid.Host.getByName(arg[1])
6         send_alias = arg[2]
7         recv_alias = "Receiver";
8         simgrid.info("Receiving Task from "..simgrid.Host.name(sender));
9         task = simgrid.Task.recv(recv_alias);
10         mm = mmult(task['size'],task['size'],task['matrix_1'],task['matrix_2']);
11         --mprint(task['size'],task['size'],mm)
12         task['matrix_res'] = mm;
13         simgrid.info("Calcul is done ... Bye");
14
15
16 end
17
18 local n = tonumber((arg and arg[1]) or 1)
19 function mkmatrix(rows, cols)
20     local count = 1
21     local mx = {}
22     for i=0,(rows - 1) do
23     local row = {}
24     for j=0,(cols - 1) do
25         row[j] = count
26         count = count + 1
27     end
28     mx[i] = row
29     end
30     return(mx)
31 end
32
33 function mmult(rows, cols, m1, m2)
34     local m3 = {}
35     for i=0,(rows-1) do
36         m3[i] = {}
37         for j=0,(cols-1) do
38             local rowj = 0
39             for k=0,(cols-1) do
40                 rowj = rowj + m1[i][k] * m2[k][j]
41             end
42             m3[i][j] = rowj
43         end
44     end
45     return(m3)
46 end
47
48 function mprint(rows,cols,m)
49  for i=0,(cols-1)do
50         for j=0,(rows-1)do
51                 print (m[i][j])
52         end
53  end
54 end