Logo AND Algorithmique Numérique Distribuée

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