-#include "Master.hpp"\r
-#include "BasicTask.hpp"\r
-#include "FinalizeTask.hpp"\r
-#include <Host.hpp>\r
-#include <HostNotFoundException.hpp>\r
-\r
-#include <Msg.hpp>\r
-\r
-#include <iostream>\r
-using namespace std;\r
-\r
-\r
-#ifndef BUFFMAX\r
-#define BUFFMAX 260\r
-#endif\r
-\r
-MSG_IMPLEMENT_DYNAMIC(Master, Process);\r
-\r
-int Master::main(int argc, char** argv)\r
-{\r
- int channel = 0;\r
- char buff[BUFFMAX + 1] = {0};\r
- int numberOfTasks; \r
- double taskComputeSize; \r
- double taskCommunicateSize;\r
-\r
- if (argc < 3) \r
- {\r
- cerr <<"Master needs 3 arguments" << endl;\r
- exit(1);\r
- }\r
- \r
- cout << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl;\r
- \r
- int slaveCount = 0;\r
- Host* slaves = NULL;\r
- \r
- cout << "argc=" << argc << endl;\r
- \r
- for (int i = 0; i< argc; i++) \r
- cout << "argv:" << argv[i] << endl;\r
- \r
- sscanf(argv[0],"%d", &numberOfTasks);\r
- \r
- sscanf(argv[1],"%lg", &taskComputeSize);\r
- \r
- sscanf(argv[2],"%lg", &taskCommunicateSize);\r
- \r
- BasicTaskPtr* todo = new BasicTaskPtr[numberOfTasks];\r
- \r
- for (int i = 0; i < numberOfTasks; i++) \r
- {\r
- sprintf(buff,"Task_%d",i);\r
- todo[i] = new BasicTask(buff, taskComputeSize, taskCommunicateSize);\r
- memset(buff, 0 , BUFFMAX + 1); \r
- }\r
- \r
- slaveCount = argc - 3;\r
- slaves = new Host[slaveCount];\r
- \r
- for(int i = 3; i < argc ; i++) \r
- {\r
- try \r
- {\r
- slaves[i-3] = Host::getByName(argv[i]);\r
- }\r
- \r
- catch(HostNotFoundException e) \r
- {\r
- cerr << e.toString() <<". Stopping Now!" << endl;\r
- exit(1);\r
- }\r
- }\r
- \r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got slave(s) :" << slaveCount << endl;\r
- \r
- for (int i = 0; i < slaveCount; i++)\r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "\t" << slaves[i].getName() << endl;\r
- \r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got " << numberOfTasks << " task to process." << endl;\r
- \r
- for (int i = 0; i < numberOfTasks; i++) \r
- {\r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Sending \"" << todo[i]->getName() << "\" to \"" << slaves[i % slaveCount].getName() << "\"" << endl;\r
- \r
- if(!strcmp(Host::currentHost().getName(), slaves[i % slaveCount].getName())) \r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hey ! It's me ! ";\r
-\r
- slaves[i % slaveCount].put(channel, todo[i]);\r
- }\r
- \r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Send completed" << endl;\r
- \r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "All tasks have been dispatched. Let's tell everybody the computation is over." << endl;\r
- \r
- for (int i = 0; i < slaveCount; i++) \r
- slaves[i].put(channel, new FinalizeTask());\r
-\r
- delete[] todo;\r
- delete[] slaves;\r
- \r
- cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Goodbye now!" << endl;\r
-\r
- delete this;\r
-\r
- return 0;\r
-}
\ No newline at end of file
+#include "Master.hpp"
+#include "BasicTask.hpp"
+#include "FinalizeTask.hpp"
+#include <MsgHost.hpp>
+#include <HostNotFoundException.hpp>
+
+#include <Msg.hpp>
+
+#include <iostream>
+using namespace std;
+
+
+#ifndef BUFFMAX
+#define BUFFMAX 260
+#endif
+
+MSG_IMPLEMENT_DYNAMIC(Master, Process)
+
+int Master::main(int argc, char** argv)
+{
+ int channel = 0;
+
+ int numberOfTasks;
+ double taskComputeSize;
+ double taskCommunicateSize;
+ StringHelper s;
+
+ if (argc < 3)
+ {
+ error("Master needs 3 arguments");
+ exit(1);
+ }
+
+ info("Hello");
+
+ int slaveCount = 0;
+ Host* slaves = NULL;
+
+
+ info( TEXT_("argc=") + TEXT_(argc));
+
+ for (int i = 0; i< argc; i++)
+ info(TEXT_("argv:") + TEXT_(argv[i]));
+
+ sscanf(argv[0],"%d", &numberOfTasks);
+
+ sscanf(argv[1],"%lg", &taskComputeSize);
+
+ sscanf(argv[2],"%lg", &taskCommunicateSize);
+
+ BasicTaskPtr* todo = new BasicTaskPtr[numberOfTasks];
+
+ for (int i = 0; i < numberOfTasks; i++)
+ todo[i] = new BasicTask((TEXT_("Task_") + TEXT_(i)), taskComputeSize, taskCommunicateSize);
+
+ slaveCount = argc - 3;
+ slaves = new Host[slaveCount];
+
+ for(int i = 3; i < argc ; i++)
+ {
+ try
+ {
+ slaves[i-3] = Host::getByName(argv[i]);
+ }
+
+ catch(HostNotFoundException e)
+ {
+ cerr << e.toString() <<". Stopping Now!" << endl;
+ exit(1);
+ }
+ }
+
+ info(TEXT_("Got slave(s) :") + TEXT_(slaveCount));
+
+ for (int i = 0; i < slaveCount; i++)
+ info(TEXT_("\t") + TEXT_(slaves[i].getName()));
+
+ info(TEXT_("Got ") + TEXT_(numberOfTasks) + TEXT_(" task to process."));
+
+ for (int i = 0; i < numberOfTasks; i++)
+ {
+ info(TEXT_("Sending \"") + TEXT_(todo[i]->getName()) + TEXT_("\" to \"") + TEXT_(slaves[i % slaveCount].getName()) + TEXT_("\""));
+
+ if(!strcmp(Host::currentHost().getName(), slaves[i % slaveCount].getName()))
+ info("Hey ! It's me ! ");
+
+ slaves[i % slaveCount].put(channel, todo[i]);
+ }
+
+ info("Send completed");
+
+ info("All tasks have been dispatched. Let's tell everybody the computation is over.");
+
+ for (int i = 0; i < slaveCount; i++)
+ slaves[i].put(channel, new FinalizeTask());
+
+ delete[] todo;
+ delete[] slaves;
+
+ info("Goodbye now!");
+
+ delete this;
+
+ return 0;
+}
+