X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ce7fc8b7a8a23fabcb30bb3846043442927eb013..d2b7bc8b012af5858b6dba6ba5285f5e29d12e70:/src/bindings/lua/tasklua.lua diff --git a/src/bindings/lua/tasklua.lua b/src/bindings/lua/tasklua.lua index ece8bb31f6..511f78979f 100644 --- a/src/bindings/lua/tasklua.lua +++ b/src/bindings/lua/tasklua.lua @@ -1,12 +1,3 @@ -function getn(t) - if type(t.n) == "number" then return t.n end - local max=0 - for i,_ in to do - if type(i) == "number" and i>max then max=i end - end - t.n = max - return max -end --Master Function function master(...) @@ -15,54 +6,38 @@ print("Hello from lua, I'm the master") for i,v in ipairs(arg) do print("Got "..v) end -t_tasks={} --tasks table -t_slaves={} --slaves table nb_task = arg[1]; comp_size = arg[2]; comm_size = arg[3]; - --- Let's Create the tasks to dispatch -for i=1,nb_task do - t_tasks[i] = Task.new("Task "..i,comp_size,comm_size); --data set to NULL -end +slave_count = arg[4] --- Process Organisation +argc=#arg +print("Argc="..argc.." (should be 4)") -argc=getn(arg) -print("Argc="..argc.." (should be 8)") +-- Dispatch the tasks -slave_count = getn(arg) -3; - -for i=4,argc do -slv_name = arg[i]; -t_slaves[i - 3] = Host.new(slv_name); --- do not do directly that : t_slaves[i - 4] = Host.new(argv[i]); +for i=1,nb_task do + tk = Msg.Task.new("Task "..i,comp_size,comm_size); + alias = "slave "..(i%slave_count); + print("Master sending '" .. Msg.Task.name(tk) .."' To '" .. alias .."'"); + Msg.Task.send(tk,alias); -- C user data set to NULL + print("Master done sending '".. Msg.Task.name(tk) .."' To '" .. alias .."'"); end - - - --- Print List Of Tasks / Slaves --[[ -for i=1,nb_task do -todo = Task.name(t_tasks[i]); -print(i % slave_count+1); -slv = Host.name(t_slaves[i % slave_count+1]); -print ( "Sending : " .. todo .. " To : " .. slv); -end -]]-- - - +Sending Finalize Message To Others +--]] -for i=1,nb_task do -tk_name = Task.name(t_tasks[i]); -ht_name = Host.name(t_slaves[i]); -print("Sending " .. tk_name .." To " .. ht_name); -Task.send(t_task[i],"slave "..(i%slave_count)); -print("Sent"); +print("Master: All tasks have been dispatched. Let's tell everybody the computation is over."); +for i=0,slave_count-1 do + alias = "slave "..i; + print("Master: sending finalize to "..alias); + Msg.Task.send(Msg.Task.new("finalize",0,0),alias); end +print("Master: Everything's done."); + end @@ -72,24 +47,26 @@ function slave(...) my_mailbox="slave "..arg[1] print("Hello from lua, I'm a poor slave with mbox: "..my_mailbox) + while true do - tk = Task.recv(my_mailbox); - print("Got something"); - --testing res !!!! - tk_name = Task.name(tk) +-- tk = Msg.Task.new("",0,0); --?? +-- Msg.Task.recv2(tk,my_mailbox); + tk = Msg.Task.recv(my_mailbox); + + tk_name = Msg.Task.name(tk) if (tk_name == "finalize") then - Task.destroy(tk); - end + print("Slave '" ..my_mailbox.."' got finalize msg"); + break + end - print("Processing "..Task.name(tk)) - Task.execute(tk); + print("Slave '" ..my_mailbox.."' processing "..Msg.Task.name(tk)) + Msg.Task.execute(tk); - print(Task.name(tk) .. "Done") - Task.destroy(tk); + print("Slave '" ..my_mailbox.."': task "..Msg.Task.name(tk) .. " done") end -- while -print("I'm Done . See You !!"); +print("Slave '" ..my_mailbox.."': I'm Done . See You !!"); end -- function ---------------------------------------------------------- --]]