-- Copyright (c) 2011, 2014. The SimGrid Team. -- All rights reserved. -- This program is free software; you can redistribute it and/or modify it -- under the terms of the license (GNU LGPL) which comes with this package. function Receiver(...) simgrid.info("Hello From Receiver") local sender = simgrid.host.get_by_name(arg[1]) local send_alias = arg[2] local recv_alias = "Receiver" simgrid.info("Receiving Task from " .. simgrid.host.name(sender)) local task = simgrid.task.recv(recv_alias) local mm = mmult(task['size'], task['size'], task['matrix_1'], task['matrix_2']) --mprint(task['size'], task['size'], mm) task['matrix_res'] = mm simgrid.info("Calcul is done ... Bye") end local n = tonumber((arg and arg[1]) or 1) function mkmatrix(rows, cols) local count = 1 local mx = {} for i = 0, (rows - 1) do local row = {} for j = 0, (cols - 1) do row[j] = count count = count + 1 end mx[i] = row end return mx end function mmult(rows, cols, m1, m2) local m3 = {} for i = 0, (rows - 1) do m3[i] = {} for j = 0, (cols - 1) do local rowj = 0 for k = 0, (cols - 1) do rowj = rowj + m1[i][k] * m2[k][j] end m3[i][j] = rowj end end return m3 end function mprint(rows, cols, m) for i = 0, (cols - 1) do for j = 0, (rows - 1 )do print(m[i][j]) end end end