Skip to content

Commit 5ff78d6

Browse files
authored
Merge pull request #41 from kmokstad/mempoll
Optional memory profiling
2 parents 1d00dd5 + 3807825 commit 5ff78d6

File tree

9 files changed

+96
-62
lines changed

9 files changed

+96
-62
lines changed

src/FFlLib/FFlLinkHandler.C

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2250,13 +2250,13 @@ void FFlLinkHandler::countElements() const
22502250
}
22512251

22522252

2253-
void FFlLinkHandler::dump() const
2253+
void FFlLinkHandler::dump(const std::string& heading) const
22542254
{
22552255
if (myNumElements.empty())
22562256
this->countElements();
22572257

2258-
std::cout <<"\nFFlLinkHandler::dump()"
2259-
<<"\n Elements: "<< myElements.size();
2258+
std::cout <<"\nFFlLinkHandler::dump("<< heading
2259+
<<")\n Elements: "<< myElements.size();
22602260
for (const ElmTypeCount::value_type& ec : myNumElements)
22612261
std::cout <<"\n\t"<< ec.first <<"\t"<< ec.second;
22622262

src/FFlLib/FFlLinkHandler.H

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ public:
297297
const Strings& getOP2files() const { return myOP2files; }
298298
size_t getNumberOfGenDofs() const { return nGenDofs; }
299299

300-
void dump() const;
300+
void dump(const std::string& heading = "") const;
301301

302302
#ifdef FT_USE_CONNECTORS
303303
int createConnector(const FFaCompoundGeometry& compound,

src/FFlrLib/FFlrFringeCreator.C

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,24 +55,34 @@ bool FFlrFringeCreator::getColorData(std::vector<double>& colors,
5555
}
5656

5757

58-
void FFlrFringeCreator::deleteColorsXfs(FFlGroupPartData& visRep)
58+
void FFlrFringeCreator::deleteColorsXfs(FFlGroupPartData& visRep, bool
59+
#ifdef FT_USE_PROFILER
60+
memPoll
61+
#endif
62+
)
5963
{
64+
#ifdef FT_USE_PROFILER
65+
size_t oneQuart = visRep.colorOps.size();
66+
if (memPoll) oneQuart /= 4;
67+
#endif
68+
6069
for (size_t i = 0; i < visRep.colorOps.size(); i++)
6170
{
6271
if (visRep.colorOps[i])
6372
visRep.colorOps[i]->unref();
6473
#ifdef FT_USE_PROFILER
65-
if (i == visRep.colorOps.size()/4)
74+
if (i == oneQuart)
6675
FFaMemoryProfiler::reportMemoryUsage(" Kvartveis");
67-
if (i == visRep.colorOps.size()/2)
76+
else if (i == 2*oneQuart)
6877
FFaMemoryProfiler::reportMemoryUsage(" Halveis");
69-
if (i == 3*visRep.colorOps.size()/4)
78+
else if (i == 3*oneQuart)
7079
FFaMemoryProfiler::reportMemoryUsage(" Trekvartveis");
7180
#endif
7281
}
7382

7483
#ifdef FT_USE_PROFILER
75-
FFaMemoryProfiler::reportMemoryUsage(" Helveis");
84+
if (memPoll)
85+
FFaMemoryProfiler::reportMemoryUsage(" Helveis");
7686
#endif
7787

7888
FFlrOperations empty;

src/FFlrLib/FFlrFringeCreator.H

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ namespace FFlrFringeCreator
2121
bool getColorData(std::vector<double>& colors,
2222
const FFlGroupPartData& visRep, bool isPrFace);
2323

24-
void deleteColorsXfs(FFlGroupPartData& visRep);
24+
void deleteColorsXfs(FFlGroupPartData& visRep, bool memPoll = false);
2525

2626
int buildColorXfs(FFlGroupPartData& visRep,
2727
FFlLinkHandler* lh, const FapFringeSetup& setup);

src/FFrLib/FFrExtractor.C

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ void FFrExtractor::releaseMemoryBlocks(bool readOps)
9090
*/
9191

9292
bool FFrExtractor::addFiles(const std::set<std::string>& fileNames,
93-
bool showProgress)
93+
bool showProgress, bool doMemPoll)
9494
{
9595
if (fileNames.empty()) return true;
9696

@@ -99,7 +99,7 @@ bool FFrExtractor::addFiles(const std::set<std::string>& fileNames,
9999
for (const std::string& fileName : fileNames)
100100
fileVec.push_back(fileName);
101101

102-
return this->addFiles(fileVec,showProgress);
102+
return this->addFiles(fileVec,showProgress,false,doMemPoll);
103103
}
104104

105105

@@ -109,7 +109,7 @@ bool FFrExtractor::addFiles(const std::set<std::string>& fileNames,
109109
*/
110110

111111
bool FFrExtractor::addFiles(const std::vector<std::string>& fileNames,
112-
bool showProgress, bool mustExist)
112+
bool showProgress, bool mustExist, bool doMemPoll)
113113
{
114114
#if FFR_DEBUG > 1
115115
std::cout <<"FFrExtractor::addFiles()"<< std::endl;
@@ -128,7 +128,7 @@ bool FFrExtractor::addFiles(const std::vector<std::string>& fileNames,
128128
FFaMsg::setSubTask(FFaFilePath::getFileName(fileName));
129129
FFaMsg::setSubStep(++subStep);
130130
}
131-
if (!this->addFile(fileName,mustExist))
131+
if (!this->addFile(fileName,mustExist,doMemPoll))
132132
retval = false;
133133
}
134134

@@ -166,7 +166,8 @@ FFrResultContainer* FFrExtractor::getResultContainer(const std::string& fileName
166166
}
167167

168168

169-
bool FFrExtractor::addFile(const std::string& fileName, bool mustExist)
169+
bool FFrExtractor::addFile(const std::string& fileName,
170+
bool mustExist, bool doMemPoll)
170171
{
171172
#if FFR_DEBUG > 1
172173
std::cout <<"FFrExtractor::addFile()\n\tfilename: "<< fileName << std::endl;
@@ -177,9 +178,9 @@ bool FFrExtractor::addFile(const std::string& fileName, bool mustExist)
177178
if (container) return true;
178179

179180
// Create a new result container for the given results file.
180-
// The header section of if is then parsed if the file is a valid.
181+
// The header section of it is then parsed if the file is a valid.
181182
container = new FFrResultContainer(this,fileName);
182-
switch (this->doSingleResultFileUpdate(container)) {
183+
switch (this->doResultFileUpdate(container,doMemPoll)) {
183184
case FFrResultContainer::FFR_CONTAINER_INVALID:
184185
FFaMsg::list(" * Note: Ignoring invalid results database file:\n");
185186
break;
@@ -201,7 +202,11 @@ bool FFrExtractor::addFile(const std::string& fileName, bool mustExist)
201202
}
202203

203204

204-
bool FFrExtractor::updateExtractorHeader(FFrResultContainer* container)
205+
bool FFrExtractor::updateExtractorHeader(FFrResultContainer* container, bool
206+
#ifdef FT_USE_PROFILER
207+
doMemPoll
208+
#endif
209+
)
205210
{
206211
#if FFR_DEBUG > 1
207212
std::cout <<"FFrExtractor::updateExtractorHeader()\n\tfilename: "
@@ -210,9 +215,10 @@ bool FFrExtractor::updateExtractorHeader(FFrResultContainer* container)
210215
if (!container->isHeaderComplete()) return false;
211216

212217
#ifdef FT_USE_PROFILER
213-
FFaProfiler timer("ExtractorTimer");
218+
FFaProfiler timer("ExtractorTimer: " + container->getFileName());
214219
timer.startTimer("updateExtractorHeader");
215-
FFaMemoryProfiler::reportMemoryUsage("> updateExtractorHeader");
220+
if (doMemPoll)
221+
FFaMemoryProfiler::reportMemoryUsage("> updateExtractorHeader");
216222
#endif
217223

218224
for (FFrEntryBase* entry : container->topLevel())
@@ -283,7 +289,8 @@ bool FFrExtractor::updateExtractorHeader(FFrResultContainer* container)
283289
#endif
284290

285291
#ifdef FT_USE_PROFILER
286-
FFaMemoryProfiler::reportMemoryUsage(" updateExtractorHeader >");
292+
if (doMemPoll)
293+
FFaMemoryProfiler::reportMemoryUsage(" updateExtractorHeader >");
287294
timer.stopTimer("updateExtractorHeader");
288295
timer.report();
289296
#endif
@@ -523,27 +530,28 @@ FFrEntryBase* FFrExtractor::findVar(const std::string& oType, int baseId,
523530
}
524531

525532

526-
void FFrExtractor::doResultFilesUpdate()
533+
void FFrExtractor::doResultFilesUpdate(bool doMemPoll)
527534
{
528535
for (const ContainerMap::value_type& c : myContainers)
529-
this->doSingleResultFileUpdate(c.second);
536+
this->doResultFileUpdate(c.second,doMemPoll);
530537
}
531538

532539

533-
int FFrExtractor::doSingleResultFileUpdate(FFrResultContainer* container)
540+
int FFrExtractor::doResultFileUpdate(FFrResultContainer* container,
541+
bool doMemPoll)
534542
{
535543
#if FFR_DEBUG > 2
536-
std::cout <<"FFrExtractor::doSingleResultFileUpdate()\n\tfilename: "
544+
std::cout <<"FFrExtractor::doResultFileUpdate()\n\tfilename: "
537545
<< container->getFileName() << std::endl;
538546
#endif
539547

540548
if (container->getContainerStatus() == FFrResultContainer::FFR_DATA_CLOSED)
541549
return FFrResultContainer::FFR_DATA_CLOSED;
542550

543551
bool wasComplete = container->isHeaderComplete();
544-
int status = container->updateContainerStatus();
552+
int status = container->updateStatus(doMemPoll);
545553
if (!wasComplete && container->isHeaderComplete())
546-
this->updateExtractorHeader(container);
554+
this->updateExtractorHeader(container,doMemPoll);
547555

548556
return status;
549557
}

src/FFrLib/FFrExtractor.H

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,14 @@ public:
5757

5858
//! \brief Adds a set of files to the RDB.
5959
bool addFiles(const std::set<std::string>& fileNames,
60-
bool showProgress = false);
60+
bool showProgress = false, bool doMemPoll = false);
6161
//! \brief Adds a list of files to the RDB.
6262
virtual bool addFiles(const std::vector<std::string>& fileNames,
63-
bool showProgress = false, bool mustExist = false);
63+
bool showProgress = false, bool mustExist = false,
64+
bool doMemPoll = false);
6465
//! \brief Adds a single file to the RDB.
65-
bool addFile(const std::string& fileName, bool mustExist = false);
66+
bool addFile(const std::string& fileName, bool mustExist = false,
67+
bool doMemPoll = false);
6668

6769
//! \brief Closes all result container files.
6870
void closeFiles();
@@ -77,7 +79,7 @@ public:
7779
virtual bool removeFiles(const std::set<std::string>& fileNames);
7880

7981
//! \brief Checks if there is new data on disk.
80-
virtual void doResultFilesUpdate();
82+
virtual void doResultFilesUpdate(bool doMemPoll = true);
8183

8284
//! \brief Returns a pointer to the variables container of this extractor.
8385
VariableSet* getVariables() { return &myVariables; }
@@ -165,9 +167,9 @@ public:
165167

166168
protected:
167169
//! \brief Checks if there is new data on disk for the given \a container.
168-
virtual int doSingleResultFileUpdate(FFrResultContainer* container);
170+
virtual int doResultFileUpdate(FFrResultContainer* container, bool memPoll);
169171
//! \brief Updates the top-level containers with items from \a container.
170-
bool updateExtractorHeader(FFrResultContainer* container);
172+
bool updateExtractorHeader(FFrResultContainer* container, bool memPoll);
171173

172174
private:
173175
std::string myName; //!< Name of this extractor
@@ -177,7 +179,7 @@ private:
177179
std::set<std::string> myDict;
178180

179181
//! File name to result container mapping
180-
typedef std::map<std::string,FFrResultContainer*> ContainerMap;
182+
using ContainerMap = std::map<std::string,FFrResultContainer*>;
181183

182184
ContainerMap myContainers; //!< All result containers in this extractor
183185
VariableSet myVariables; //!< All variables in this extractor

src/FFrLib/FFrExtractor_F.C

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,13 @@ SUBROUTINE(ffr_init,FFR_INIT) (const char* file,
6464
{
6565
for (std::string& file : files)
6666
ListUI <<"\n * Reading results file "<< FFaFilePath::checkName(file);
67-
ierr = ourRdb->addFiles(files,false,true) ? 0 : 1;
67+
ierr = ourRdb->addFiles(files,false,true,true) ? 0 : 1;
6868
}
6969
}
7070
else
7171
{
7272
ListUI <<"\n * Reading results file "<< FFaFilePath::checkName(fnames);
73-
ierr = ourRdb->addFile(fnames,true) ? 0 : 1;
73+
ierr = ourRdb->addFile(fnames,true,true) ? 0 : 1;
7474
}
7575
ListUI <<"\n\n";
7676
}

0 commit comments

Comments
 (0)