Skip to content

Commit 5926f66

Browse files
yskim1501Ryan Lai
authored andcommitted
Print Memory Peak Working Set Usage (#168)
* print peak working set usage * pass in optional second value for parameter -SaveTensorData and fix test cases to compare csv values correctly * refactor working set print * add extra line
1 parent 014a092 commit 5926f66

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

Tools/WinMLRunner/src/OutputHelper.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,20 +200,24 @@ class OutputHelper
200200
double firstLoadWorkingSetMemoryUsage = profiler[LOAD_MODEL].GetAverage(CounterType::WORKING_SET_USAGE);
201201
double firstLoadSharedMemoryUsage = profiler[LOAD_MODEL].GetAverage(CounterType::GPU_SHARED_MEM_USAGE);
202202
double firstLoadDedicatedMemoryUsage = profiler[LOAD_MODEL].GetAverage(CounterType::GPU_DEDICATED_MEM_USAGE);
203+
double firstLoadPeakWorkingSetUsage = profiler[LOAD_MODEL].GetAverage(CounterType::PEAK_WORKING_SET_USAGE);
203204

204205
double firstSessionCreationWorkingSetMemoryUsage = profiler[CREATE_SESSION].GetAverage(CounterType::WORKING_SET_USAGE);
205206
double firstSessionCreationSharedMemoryUsage = profiler[CREATE_SESSION].GetAverage(CounterType::GPU_SHARED_MEM_USAGE);
206207
double firstSessionCreationDedicatedMemoryUsage = profiler[CREATE_SESSION].GetAverage(CounterType::GPU_DEDICATED_MEM_USAGE);
208+
double firstSessionPeakWorkingSetUsage = profiler[CREATE_SESSION].GetAverage(CounterType::PEAK_WORKING_SET_USAGE);
207209

208210
double averageBindMemoryUsage = profiler[BIND_VALUE].GetAverage(CounterType::WORKING_SET_USAGE);
209211
double minBindMemoryUsage = profiler[BIND_VALUE].GetMin(CounterType::WORKING_SET_USAGE);
210212
double maxBindMemoryUsage = profiler[BIND_VALUE].GetMax(CounterType::WORKING_SET_USAGE);
211213
double firstBindMemoryUsage = profiler[BIND_VALUE_FIRST_RUN].GetAverage(CounterType::WORKING_SET_USAGE);
214+
double firstBindPeakMemoryUsage = profiler[BIND_VALUE_FIRST_RUN].GetAverage(CounterType::PEAK_WORKING_SET_USAGE);
212215

213216
double averageEvalMemoryUsage = profiler[EVAL_MODEL].GetAverage(CounterType::WORKING_SET_USAGE);
214217
double minEvalMemoryUsage = profiler[EVAL_MODEL].GetMin(CounterType::WORKING_SET_USAGE);
215218
double maxEvalMemoryUsage = profiler[EVAL_MODEL].GetMax(CounterType::WORKING_SET_USAGE);
216219
double firstEvalMemoryUsage = profiler[EVAL_MODEL_FIRST_RUN].GetAverage(CounterType::WORKING_SET_USAGE);
220+
double firstEvalPeakMemoryUsage = profiler[EVAL_MODEL_FIRST_RUN].GetAverage(CounterType::PEAK_WORKING_SET_USAGE);
217221

218222
double averageBindDedicatedMemoryUsage = profiler[BIND_VALUE].GetAverage(CounterType::GPU_DEDICATED_MEM_USAGE);
219223
double minBindDedicatedMemoryUsage = profiler[BIND_VALUE].GetMin(CounterType::GPU_DEDICATED_MEM_USAGE);
@@ -253,6 +257,8 @@ class OutputHelper
253257
profiler[BIND_VALUE_FIRST_RUN].GetAverage(CounterType::GPU_DEDICATED_MEM_USAGE) +
254258
profiler[EVAL_MODEL_FIRST_RUN].GetAverage(CounterType::GPU_DEDICATED_MEM_USAGE);
255259

260+
double firstIterationPeakWorkingSet = firstLoadPeakWorkingSetUsage + firstSessionPeakWorkingSetUsage + firstBindPeakMemoryUsage + firstEvalPeakMemoryUsage;
261+
256262
printf("\nResults (device = %s, numIterations = %d, inputBinding = %s, inputDataType = %s, deviceCreationLocation = %s):\n",
257263
TypeHelper::Stringify(deviceType).c_str(),
258264
numIterations,
@@ -280,6 +286,17 @@ class OutputHelper
280286
std::cout << " Working Set Memory usage (evaluate): " << firstEvalMemoryUsage << " MB" << std::endl;
281287
std::cout << " Working Set Memory usage (load, bind, session creation, and evaluate): " << firstIterationWorkingSetMemoryUsage << " MB" << std::endl;
282288

289+
if (isPerformanceConsoleOutputVerbose)
290+
{
291+
std::cout << std::endl;
292+
std::cout << " Peak Working Set Memory Difference (from start to load): " << firstLoadPeakWorkingSetUsage << " MB" << std::endl;
293+
std::cout << " Peak Working Set Memory Difference (from model load to session creation): " << firstSessionPeakWorkingSetUsage << " MB" << std::endl;
294+
std::cout << " Peak Working Set Memory Difference (from session to bind): " << firstBindPeakMemoryUsage << " MB" << std::endl;
295+
std::cout << " Peak Working Set Memory Difference (from bind to evaluate): " << firstEvalPeakMemoryUsage << " MB" << std::endl;
296+
}
297+
298+
std::cout << " Peak Working Set Memory Difference (load, bind, session creation, and evaluate): " << firstIterationPeakWorkingSet << " MB" << std::endl;
299+
283300
if (isPerformanceConsoleOutputVerbose)
284301
{
285302
std::cout << "\n Dedicated Memory usage (load): " << firstLoadDedicatedMemoryUsage << " MB" << std::endl;

Tools/WinMLRunner/src/TimerHelper.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ class CpuPerfCounter
129129

130130
private:
131131

132-
bool GetProcessMemoryCounters(DWORD pid, ULONG& pageFaultCount, SIZE_T& pageFileUsage, SIZE_T& peakPageFileUsage, SIZE_T& workingSetSize, SIZE_T& peakWorkingSetSize)
132+
bool GetProcessMemoryCounters(DWORD pid, ULONG& pageFaultCount, SIZE_T& pageFileUsage, SIZE_T& peakPageFileUsage,
133+
SIZE_T& workingSetSize, SIZE_T& peakWorkingSetSize)
133134
{
134135
HANDLE hProcess = NULL;
135136

0 commit comments

Comments
 (0)