X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2abf25f94d9a3fd19a5d85637d6758932be8b047..e961475b4dde3a8ca4f66a0986d6289085138128:/examples/cxx/basic/Master.cxx?ds=sidebyside diff --git a/examples/cxx/basic/Master.cxx b/examples/cxx/basic/Master.cxx index f6e06d207f..9bf085eb4b 100644 --- a/examples/cxx/basic/Master.cxx +++ b/examples/cxx/basic/Master.cxx @@ -1,110 +1,106 @@ -#include "Master.hpp" -#include "BasicTask.hpp" -#include "FinalizeTask.hpp" -#include -#include - -#include -using namespace std; - - -#ifndef BUFFMAX -#define BUFFMAX 260 -#endif - -MSG_IMPLEMENT_DYNAMIC(Master, Process); - -int Master::main(int argc, char** argv) -{ - int channel = 0; - char buff[BUFFMAX + 1] = {0}; - int numberOfTasks; - double taskComputeSize; - double taskCommunicateSize; - - if (argc < 3) - { - cerr <<"Master needs 3 arguments" << endl; - exit(1); - } - - cout << "Hello I'm " << getName() << " on " << getHost().getName() << "!" << endl; - - int slaveCount = 0; - Host* slaves = NULL; - - cout << "argc=" << argc << endl; - - for (int i = 0; i< argc; i++) - cout << "argv:" << argv[i] << endl; - - 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++) - { - sprintf(buff,"Task_%d",i); - todo[i] = new BasicTask(buff, taskComputeSize, taskCommunicateSize); - memset(buff, 0 , BUFFMAX + 1); - } - - 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); - } - } - - cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got slave(s) :" << slaveCount << endl; - - for (int i = 0; i < slaveCount; i++) - cout <<"[" << getName() << ":" << getHost().getName() << "] " << "\t" << slaves[i].getName() << endl; - - cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Got " << numberOfTasks << " task to process." << endl; - - for (int i = 0; i < numberOfTasks; i++) - { - cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Sending \"" << todo[i]->getName() << "\" to \"" << slaves[i % slaveCount].getName() << "\"" << endl; - - if(!strcmp(Host::currentHost().getName(), slaves[i % slaveCount].getName())) - cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Hey ! It's me ! "; - - slaves[i % slaveCount].put(channel, todo[i]); - } - - cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Send completed" << endl; - - cout <<"[" << getName() << ":" << getHost().getName() << "] " << "All tasks have been dispatched. Let's tell everybody the computation is over." << endl; - - for (int i = 0; i < slaveCount; i++) - { - slaves[i].put(channel, new FinalizeTask()); - } - - - for(int i = 0; i < numberOfTasks; i++) - delete todo[i]; - - delete[] todo; - - delete[] slaves; - - cout <<"[" << getName() << ":" << getHost().getName() << "] " << "Goodbye now!" << endl; - - return 0; -} \ No newline at end of file +#include "Master.hpp" +#include "BasicTask.hpp" +#include "FinalizeTask.hpp" +#include +#include + +#include + +#include +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; +} +