--- /dev/null
+function Sender(...)
+
+ simgrid.info("Hello From Sender")
+ receiver = simgrid.Host.getByName(arg[1])
+ task_comp = arg[2]
+ task_comm = arg[3]
+ rec_alias = arg[4]
+
+ size = 4
+ m1 = mkmatrix(size, size)
+ m2 = mkmatrix(size, size)
+
+ if (#arg ~= 4) then
+ error("Argc should be 4");
+ end
+ simgrid.info("Argc="..(#arg).." (should be 4)")
+
+ -- Sending Task
+ task = simgrid.Task.new("matrix_task",task_comp,task_comm);
+ task['matrix_1'] = m1;
+ task['matrix_2'] = m2;
+ task['size'] = size;
+ simgrid.info("Sending "..simgrid.Task.name(task).." to "..simgrid.Host.name(receiver));
+ simgrid.Task.send(task,rec_alias);
+ -- Read The Result
+ mm = task['matrix_res']
+ simgrid.info("Got the Multiplication result ...Bye");
+ --mprint(size,size,mm);
+
+end
+------------------------------------------------------
+function Receiver(...)
+
+ simgrid.info("Hello From Receiver")
+ sender = simgrid.Host.getByName(arg[1])
+ send_alias = arg[2]
+ recv_alias = "Receiver";
+ simgrid.info("Receiving Task from "..simgrid.Host.name(sender));
+ task = simgrid.Task.recv(recv_alias);
+ 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
+
+
+--end
+require "simgrid"
+simgrid.platform("../ruby/quicksort_platform.xml")
+simgrid.application("../ruby/quicksort_deployment.xml")
+simgrid.run()
+simgrid.info("Simulation's over.See you.")
+simgrid.clean()
+
+