2 #include "CommTimeTask.hpp"
3 #include "FinalizeTask.hpp"
5 #include <HostNotFoundException.hpp>
10 MSG_IMPLEMENT_DYNAMIC(Master, Process)
12 int Master::main(int argc, char** argv)
15 double taskComputeSize;
16 double taskCommunicateSize;
20 error("Master needs 3 arguments");
29 sscanf(argv[0],"%d", &numberOfTasks);
31 sscanf(argv[1],"%lg", &taskComputeSize);
33 sscanf(argv[2],"%lg", &taskCommunicateSize);
36 slaveCount = argc - 3;
37 slaves = new Host[slaveCount];
39 for(int i = 3; i < argc ; i++)
43 slaves[i-3] = Host::getByName(argv[i]);
46 catch(HostNotFoundException e)
48 error(TEXT_(e.toString()) + TEXT_(". Stopping Now!"));
53 info(TEXT_("Got slave(s) :" ) + TEXT_(slaveCount));
55 for (int i = 0; i < slaveCount; i++)
56 info(TEXT_("\t") + TEXT_(slaves[i].getName()));
58 info(TEXT_("Got ") + TEXT_(numberOfTasks) + TEXT_(" task to process."));
61 for (int i = 0; i < numberOfTasks; i++)
63 CommTimeTask* task = new CommTimeTask(TEXT_("Task_") + TEXT_(i), taskComputeSize, taskCommunicateSize);
64 task->setTime(getClock());
65 slaves[i % slaveCount].put(0, task);
69 info("All tasks have been dispatched. Let's tell everybody the computation is over.");
71 for (int i = 0; i < slaveCount; i++)
73 info(TEXT_("Finalize host ") + TEXT_(slaves[i].getName()) + TEXT_(" [") + TEXT_(i) + TEXT_("]"));
74 slaves[i].put(0, new FinalizeTask());
77 info("All finalize messages have been dispatched. Goodbye now!");