MCPcopy Create free account
hub / github.com/AMReX-Codes/amrex / SendRecvData

Method SendRecvData

Src/Extern/ProfParser/AMReX_CommProfStats.cpp:1178–1804  ·  view source on GitHub ↗

----------------------------------------------------------------------

Source from the content-addressed store, hash-verified

1176
1177// ----------------------------------------------------------------------
1178void 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]]

Callers

nothing calls this directly

Calls 14

secondFunction · 0.85
SendRecvPairClass · 0.85
TopIVFromProcNumberFunction · 0.85
MatchesMethod · 0.80
WriteFabFunction · 0.50
sizeMethod · 0.45
resizeMethod · 0.45
reserveMethod · 0.45
insertMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected