----------------------------------------------------------------------
| 1176 | |
| 1177 | // ---------------------------------------------------------------------- |
| 1178 | void CommProfStats::SendRecvData(const std::string &filenameprefix, |
| 1179 | const double tlo, const double thi) |
| 1180 | { |
| 1181 | amrex::ignore_unused(filenameprefix, tlo, thi); |
| 1182 | |
| 1183 | double dstart(amrex::ParallelDescriptor::second()); |
| 1184 | Real timeMin(std::numeric_limits<Real>::max()); |
| 1185 | Real timeMax(-std::numeric_limits<Real>::max()); |
| 1186 | |
| 1187 | Vector<Vector<Real> > sendCallTimes(dataNProcs); // [proc, bnum] |
| 1188 | Vector<Vector<Real> > recvCallTimes(dataNProcs); // [proc, bnum] |
| 1189 | Vector<Real> dataSentPerProc(dataNProcs * dataNProcs, 0.0); // [fromproc, toproc] |
| 1190 | Vector<unordered_map<int, unordered_multimap<long, SendRecvPairUnpaired> > > unpairedMessages; |
| 1191 | // [tag,[hash,msges]] |
| 1192 | Vector<Vector<SendRecvPair> > pairedMessages; |
| 1193 | //unpairedMessages.rehash(minComps); |
| 1194 | |
| 1195 | //double st(0.0); |
| 1196 | double s0(0.0), s1(0.0), s2(0.0), s3(0.0), rtime(0.0), ptime(0.0); |
| 1197 | long maxupmsize(0), upmsize(0), maxupmmapsize(0); |
| 1198 | Vector<long> upmsizeV; |
| 1199 | int maxTag(-1), maxNMatches(-1); |
| 1200 | //bool matches(false); |
| 1201 | long mTotal(0), mNeg(0); |
| 1202 | //float maxLF0(0.0), maxLF1(0.0); |
| 1203 | Real filterTLo(00.0), filterTHi(30000.0); |
| 1204 | |
| 1205 | #ifdef AMREX_USE_OMP |
| 1206 | int nReads(4); |
| 1207 | Vector<omp_lock_t> locks(nReads); |
| 1208 | for(int i(0); i < locks.size(); ++i) { |
| 1209 | omp_init_lock(&(locks[i])); |
| 1210 | } |
| 1211 | int nThreads(omp_get_max_threads()); |
| 1212 | int myThread(omp_get_thread_num()); |
| 1213 | #else |
| 1214 | int nThreads(1); |
| 1215 | int myThread(0); |
| 1216 | #endif |
| 1217 | |
| 1218 | procNodeNumber.resize(dataNProcs); |
| 1219 | |
| 1220 | Vector<DataBlock> dBlockV(nThreads); |
| 1221 | |
| 1222 | unpairedMessages.resize(nThreads); |
| 1223 | pairedMessages.resize(nThreads); |
| 1224 | for(int i(0); i < pairedMessages.size(); ++i) { |
| 1225 | pairedMessages[i].reserve(2000000); |
| 1226 | } |
| 1227 | |
| 1228 | int anyDataLeft(dataBlocks.size()); |
| 1229 | vector<bool> dataLeft(dataBlocks.size(), true); |
| 1230 | |
| 1231 | // ---- this part orders the indices by time, then processor number |
| 1232 | Vector<int> idbIndex; |
| 1233 | bool resort(true); |
| 1234 | if(resort) { |
| 1235 | map<int, multimap<int, int> > idbMM; // [time, [proc, index]] |
nothing calls this directly
no test coverage detected