Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void ParallelPulseShapingOptimizerChirp::sendParentsToSlaves(Population &parents) {
- const int tag = 0;
- //Send parents to children
- std::vector<double> parentsSend, parentsReceive;
- if (isMaster()) {
- std::cout << "Master " << rank << " sending parents to slaves";
- parentsSend.reserve(parents.size() * ParamsOptimizationPulseShapingChirp::getNumParameters());
- for(unsigned long j = 0; parents.size(); j++) {
- Ps_Individual ind = std::static_pointer_cast<ParamsOptimizationPulseShapingChirp>(parents.at(j));
- auto mat = ind->pulseParameters.data();
- //Note that insert() resizes the vector accordingly, so it's important we called reserve() instead of resize() above!
- parentsSend.insert(parentsSend.end(), &mat[0], &mat[ParamsOptimizationPulseShapingChirp::getNumParameters()]);
- }
- std::cout << "sending parents ";
- for(double d : parentsSend)
- std::cout << d << " ";
- std::cout << " to all slaves." << std::endl;
- } else {
- parentsReceive.resize(parents.size() * ParamsOptimizationPulseShapingChirp::getNumParameters());
- }
- MPI_Bcast(parentsSend.data(), parentsSend.size(), MPI_DOUBLE, 0, masterSlaveComm);
- MPI_Recv(parentsReceive.data(), parentsReceive.size(), MPI_DOUBLE, getMasterIndex(), tag, comm, MPI_STATUS_IGNORE);
- std::cout << "Hello, I am the slave " << getSlaveIndex() << " of master rank " << getMasterIndex() << " and my rank is " << rank;
- std::cout << " - I got ";
- for(double d : parentsReceive)
- std::cout << d << " ";
- std::cout << std::endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement