Skip to content

Commit e8f0ecf

Browse files
authored
Add ability to add metadata to performance output file for code that consumes winmlrunner as static lib (#220)
1 parent 25e1ded commit e8f0ecf

File tree

4 files changed

+26
-8
lines changed

4 files changed

+26
-8
lines changed

Tools/WinMLRunner/src/CommandLineArgs.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -345,9 +345,9 @@ CommandLineArgs::CommandLineArgs(const std::vector<std::wstring>& args)
345345
CheckForInvalidArguments();
346346
}
347347

348-
void CommandLineArgs::SetupOutputDirectories(const std::wstring &sBaseOutputPath,
349-
const std::wstring &sPerfOutputPath,
350-
const std::wstring &sPerIterationDataPath)
348+
void CommandLineArgs::SetupOutputDirectories(const std::wstring& sBaseOutputPath,
349+
const std::wstring& sPerfOutputPath,
350+
const std::wstring& sPerIterationDataPath)
351351
{
352352
std::filesystem::path PerfOutputPath(sPerfOutputPath);
353353
std::filesystem::path BaseOutputPath(sBaseOutputPath);

Tools/WinMLRunner/src/CommandLineArgs.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class CommandLineArgs
3030
const std::wstring& FolderPath() const { return m_modelFolderPath; }
3131
const std::wstring& ModelPath() const { return m_modelPath; }
3232
const std::wstring& PerIterationDataPath() const { return m_perIterationDataPath; }
33+
std::vector<std::pair<std::string, std::string>>& GetPerformanceFileMetadata() { return m_perfFileMetadata; }
3334
#ifdef DXCORE_SUPPORTED_BUILD
3435
const std::wstring& GetGPUAdapterName() const { return m_adapterName; }
3536
#endif
@@ -109,7 +110,10 @@ class CommandLineArgs
109110
void SetTopK(unsigned k) { m_topK = k; }
110111
void SetPerformanceCSVPath(const std::wstring& performanceCSVPath) { m_perfOutputPath = performanceCSVPath; }
111112
void SetRunIterations(const uint32_t iterations) { m_numIterations = iterations; }
112-
113+
void AddPerformanceFileMetadata(const std::pair<std::string, std::string>& metadata)
114+
{
115+
m_perfFileMetadata.push_back(metadata);
116+
}
113117
std::wstring SaveTensorMode() const { return m_saveTensorMode; }
114118

115119
private:
@@ -151,6 +155,7 @@ class CommandLineArgs
151155
uint32_t m_numThreads = 1;
152156
uint32_t m_threadInterval = 0;
153157
uint32_t m_topK = 1;
158+
std::vector<std::pair<std::string, std::string>> m_perfFileMetadata;
154159

155160
void CheckNextArgument(const std::vector<std::wstring>& args, UINT i);
156161
void CheckForInvalidArguments();

Tools/WinMLRunner/src/OutputHelper.h

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,8 @@ class OutputHelper
742742

743743
void WritePerformanceDataToCSV(const Profiler<WINML_MODEL_TEST_PERF>& profiler, int numIterations,
744744
std::wstring model, const std::string& deviceType, const std::string& inputBinding,
745-
const std::string& inputType, const std::string& deviceCreationLocation) const
745+
const std::string& inputType, const std::string& deviceCreationLocation,
746+
const std::vector<std::pair<std::string,std::string>>& perfFileMetadata) const
746747
{
747748
double loadTime = profiler[LOAD_MODEL].GetAverage(CounterType::TIMER);
748749
double createSessionTime = profiler[CREATE_SESSION].GetAverage(CounterType::TIMER);
@@ -913,7 +914,13 @@ class OutputHelper
913914
<< ","
914915
<< "evaluate max shared memory (MB)"
915916
<< ","
916-
<< "evaluate min shared memory (MB)" << std::endl;
917+
<< "evaluate min shared memory (MB)"
918+
<< ",";
919+
for (auto metaDataPair : perfFileMetadata)
920+
{
921+
fout << metaDataPair.first << ",";
922+
}
923+
fout << std::endl;
917924
}
918925
fout << modelName << "," << deviceType << "," << inputBinding << "," << inputType << ","
919926
<< deviceCreationLocation << "," << numIterations << "," << loadTime << "," << createSessionTime << ","
@@ -941,7 +948,12 @@ class OutputHelper
941948
<< (numIterations <= 1 ? 0 : minBindSharedMemoryUsage) << "," << firstEvalSharedMemoryUsage << ","
942949
<< (numIterations <= 1 ? 0 : averageEvalSharedMemoryUsage) << ","
943950
<< (numIterations <= 1 ? 0 : maxEvalSharedMemoryUsage) << ","
944-
<< (numIterations <= 1 ? 0 : minEvalSharedMemoryUsage) << "," << std::endl;
951+
<< (numIterations <= 1 ? 0 : minEvalSharedMemoryUsage) << ",";
952+
for (auto metaDataPair : perfFileMetadata)
953+
{
954+
fout << metaDataPair.second << ",";
955+
}
956+
fout << std::endl;
945957
fout.close();
946958
}
947959
}

Tools/WinMLRunner/src/Run.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,8 @@ int run(CommandLineArgs& args, Profiler<WINML_MODEL_TEST_PERF>& profiler) try
709709
output.WritePerformanceDataToCSV(profiler, args.NumIterations(), path,
710710
deviceTypeStringified, inputDataTypeStringified,
711711
inputBindingTypeStringified,
712-
deviceCreationLocationStringified);
712+
deviceCreationLocationStringified,
713+
args.GetPerformanceFileMetadata());
713714
}
714715
}
715716

0 commit comments

Comments
 (0)