Skip to content

Commit ad30094

Browse files
fftzengsys_zuul
authored andcommitted
1. fix counter overflow issue
2. modify timestatsCoarse to show top level breakdowns Change-Id: I21c1ddeb351f56dfc980116099cd26190ca2b509
1 parent 942034c commit ad30094

File tree

2 files changed

+71
-36
lines changed

2 files changed

+71
-36
lines changed

IGC/common/Stats.cpp

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -876,13 +876,13 @@ namespace {
876876
return numStr;
877877
}
878878

879-
std::string str( int num, unsigned width )
879+
std::string str( uint64_t num, unsigned width )
880880
{
881881
char numStr[32];
882882
#if defined( WIN32 ) || defined( _WIN64 )
883-
sprintf_s(numStr, "%*d", width, num);
883+
sprintf_s(numStr, "%*llu", width, num);
884884
#else
885-
snprintf(numStr, sizeof(numStr), "%*d", width, num);
885+
snprintf(numStr, sizeof(numStr), "%*llu", width, (long long unsigned int)num);
886886
#endif
887887
return numStr;
888888
}
@@ -920,21 +920,56 @@ void TimeStats::printSumTimeTable( llvm::raw_ostream & OS ) const
920920
FS << "\n";
921921

922922
// table body
923-
for (int i=0;i<MAX_COMPILE_TIME_INTERVALS;i++)
923+
if (IGC::Debug::GetDebugFlag(IGC::Debug::DebugFlag::TIME_STATS_COARSE))
924924
{
925-
const COMPILE_TIME_INTERVALS interval = static_cast<COMPILE_TIME_INTERVALS>(i);
926-
if (!skipTimer(i))
925+
uint64_t timeNotInCoarse = getCompileTime(TIME_TOTAL);
926+
for (int i = 0; i < MAX_COMPILE_TIME_INTERVALS; i++)
927+
{
928+
const COMPILE_TIME_INTERVALS interval = static_cast<COMPILE_TIME_INTERVALS>(i);
929+
if (!skipTimer(i))
930+
{
931+
const uint64_t intervalTicks = getCompileTime(interval);
932+
if (intervalTicks)
933+
{
934+
if (interval != TIME_TOTAL)
935+
{
936+
timeNotInCoarse -= intervalTicks;
937+
}
938+
FS.PadToColumn(startCol) << g_cCompTimeIntervals[interval];
939+
FS.PadToColumn(ticksCol) << str(intervalTicks, colWidth);
940+
FS.PadToColumn(secsCol) << str(intervalTicks / (double)m_freq, colWidth, 4);
941+
FS.PadToColumn(percCol) << str(intervalTicks / (double)getCompileTime(TIME_TOTAL) * 100.0, colWidth, 2);
942+
FS.PadToColumn(percCol) << str(m_hitCount[i], colWidth);
943+
FS << "\n";
944+
}
945+
}
946+
}
947+
// print the "others" for coarse
948+
FS.PadToColumn(startCol) << "Others";
949+
FS.PadToColumn(ticksCol) << str(timeNotInCoarse, colWidth);
950+
FS.PadToColumn(secsCol) << str(timeNotInCoarse / (double)m_freq, colWidth, 4);
951+
FS.PadToColumn(percCol) << str(timeNotInCoarse / (double)getCompileTime(TIME_TOTAL) * 100.0, colWidth, 2);
952+
FS.PadToColumn(percCol) << str(0, colWidth);
953+
FS << "\n";
954+
}
955+
else
956+
{
957+
for (int i = 0; i < MAX_COMPILE_TIME_INTERVALS; i++)
927958
{
928-
const uint64_t intervalTicks = getCompileTime(interval);
929-
if (intervalTicks)
959+
const COMPILE_TIME_INTERVALS interval = static_cast<COMPILE_TIME_INTERVALS>(i);
960+
if (!skipTimer(i))
930961
{
931-
FS.PadToColumn(startCol).indent(2 * parentIntervalDepth(interval))
932-
<< g_cCompTimeIntervals[interval];
933-
FS.PadToColumn(ticksCol) << str((int)intervalTicks, colWidth);
934-
FS.PadToColumn(secsCol) << str((int)intervalTicks / (double)m_freq, colWidth, 4);
935-
FS.PadToColumn(percCol) << str((int)intervalTicks / (double)getCompileTime(TIME_TOTAL) * 100.0, colWidth, 2);
936-
FS.PadToColumn(percCol) << str((int)m_hitCount[i], colWidth);
937-
FS << "\n";
962+
const uint64_t intervalTicks = getCompileTime(interval);
963+
if (intervalTicks)
964+
{
965+
FS.PadToColumn(startCol).indent(2 * parentIntervalDepth(interval))
966+
<< g_cCompTimeIntervals[interval];
967+
FS.PadToColumn(ticksCol) << str(intervalTicks, colWidth);
968+
FS.PadToColumn(secsCol) << str(intervalTicks / (double)m_freq, colWidth, 4);
969+
FS.PadToColumn(percCol) << str(intervalTicks / (double)getCompileTime(TIME_TOTAL) * 100.0, colWidth, 2);
970+
FS.PadToColumn(percCol) << str(m_hitCount[i], colWidth);
971+
FS << "\n";
972+
}
938973
}
939974
}
940975
}
@@ -985,9 +1020,9 @@ void TimeStats::printPerPassSumTime(llvm::raw_ostream& OS) const
9851020

9861021
// pass ticks % hit
9871022
FS.PadToColumn(startCol) << iter->first.substr(0, ticksCol - startCol - 1);
988-
FS.PadToColumn(ticksCol) << str((int)ticks, colWidth);
989-
FS.PadToColumn(percCol) << str((int)ticks / (double)m_PassTotalTicks * 100.0, colWidth, 2);
990-
FS.PadToColumn(percCol) << str((int)stat.PassHitCount, colWidth);
1023+
FS.PadToColumn(ticksCol) << str(ticks, colWidth);
1024+
FS.PadToColumn(percCol) << str(ticks / (double)m_PassTotalTicks * 100.0, colWidth, 2);
1025+
FS.PadToColumn(percCol) << str(stat.PassHitCount, colWidth);
9911026
FS << "\n";
9921027
}
9931028

IGC/common/timeStats.def

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,20 @@ DEFINE_TIME_STAT( TIME_TOTAL, "Total",
1414
DEFINE_TIME_STAT( TIME_ASMToLLVMIR, "ASMToLLVMIR", TIME_TOTAL, false, false, true, true )
1515
DEFINE_TIME_STAT( TIME_UnificationPasses, "UnificationPasses", TIME_TOTAL, false, false, true, true )
1616
DEFINE_TIME_STAT( TIME_OptimizationPasses, "OptimizationPasses", TIME_TOTAL, false, false, true, true )
17-
DEFINE_TIME_STAT( TIME_CodeGen, "CodeGen", TIME_TOTAL, false, false, true, true )
18-
DEFINE_TIME_STAT( TIME_CG_Add_Passes, "CodeGen Add Passes", TIME_CodeGen, false, false, true, true )
17+
DEFINE_TIME_STAT( TIME_CodeGen, "CodeGen", TIME_TOTAL, false, false, false, true )
18+
DEFINE_TIME_STAT( TIME_CG_Add_Passes, "CodeGen Add Passes", TIME_CodeGen, false, false, false, true )
1919
DEFINE_TIME_STAT( TIME_CG_Add_Legalization_Passes, "CodeGen Add Legalization Passes", TIME_CG_Add_Passes, false, false, false, true )
2020
DEFINE_TIME_STAT( TIME_CG_Add_Analysis_Passes, "CodeGen Add Analysis Passes", TIME_CG_Add_Passes, false, false, false, true )
2121
DEFINE_TIME_STAT( TIME_CG_Add_CodeGen_Passes, "CodeGen Add CodeGen Passes", TIME_CG_Add_Passes, false, false, false, true )
2222
DEFINE_TIME_STAT( TIME_CG_Legalization, "CodeGen Legalization", TIME_CodeGen, false, false, true, true )
2323
DEFINE_TIME_STAT( TIME_CG_Analysis, "CodeGen Analysis", TIME_CodeGen, false, false, true, true )
24-
DEFINE_TIME_STAT( TIME_CG_vISACompile, "vISACompile (by IGC)", TIME_CodeGen, false, false, true, true )
25-
DEFINE_TIME_STAT( TIME_VISA_TOTAL, "VISA Total", TIME_CG_vISACompile, true, false, true, true )
24+
DEFINE_TIME_STAT( TIME_CG_vISACompile, "vISACompile (by IGC)", TIME_CodeGen, false, false, false, true )
25+
DEFINE_TIME_STAT( TIME_VISA_TOTAL, "VISA Total", TIME_CG_vISACompile, true, false, false, true )
2626
DEFINE_TIME_STAT( TIME_VISA_BUILDER, "VISA Builder", TIME_VISA_TOTAL, true, false, true, true )
2727
DEFINE_TIME_STAT( TIME_VISA_CFG, "VISA CFG", TIME_VISA_TOTAL, true, false, true, true )
28-
DEFINE_TIME_STAT( TIME_VISA_OPTIMIZER, "VISA Optimizer", TIME_VISA_TOTAL, true, false, true, true )
28+
DEFINE_TIME_STAT( TIME_VISA_OPTIMIZER, "VISA Optimizer", TIME_VISA_TOTAL, true, false, false, true )
2929
DEFINE_TIME_STAT( TIME_VISA_HW_CONFORMITY, "VISA HW Conformity", TIME_VISA_TOTAL, true, false, true, true )
30-
DEFINE_TIME_STAT( TIME_VISA_MISC_OPTS, "VISA Misc opts", TIME_VISA_TOTAL, true, false, true, true )
30+
DEFINE_TIME_STAT( TIME_VISA_MISC_OPTS, "VISA Misc opts", TIME_VISA_TOTAL, true, false, false, true )
3131
DEFINE_TIME_STAT( TIME_VISA_TOTAL_RA, "VISA Total RA", TIME_VISA_TOTAL, true, false, true, true )
3232
DEFINE_TIME_STAT( TIME_VISA_ADDR_FLAG_RA, "VISA Addr Flag RA", TIME_VISA_TOTAL_RA, true, false, false, true )
3333
DEFINE_TIME_STAT( TIME_VISA_LOCAL_RA, "VISA Local RA", TIME_VISA_TOTAL_RA, true, false, false, true )
@@ -41,20 +41,20 @@ DEFINE_TIME_STAT( TIME_VISA_SCHEDULING, "VISA Schedulin
4141
DEFINE_TIME_STAT( TIME_VISA_ENCODE_AND_EMIT, "VISA Encode and Emit", TIME_VISA_TOTAL, true, false, true, true )
4242
DEFINE_TIME_STAT( TIME_VISA_ENCODE_COMPACTION, "VISA Encode Compaction", TIME_VISA_ENCODE_AND_EMIT, true, false, false, true )
4343
DEFINE_TIME_STAT( TIME_VISA_IGA_ENCODER, "VISA IGA Encoding", TIME_VISA_ENCODE_AND_EMIT, true, false, false, true )
44-
DEFINE_TIME_STAT( TIME_VISA_BUILDER_APPEND_INST, "VISA Builder Append Instruction", TIME_VISA_TOTAL, true, false, true, true )
45-
DEFINE_TIME_STAT( TIME_VISA_BUILDER_CREATE_VAR, "VISA Builder Create Var", TIME_VISA_TOTAL, true, false, true, true )
46-
DEFINE_TIME_STAT( TIME_VISA_BUILDER_CREATE_OPND, "VISA Builder Create Operand", TIME_VISA_TOTAL, true, false, true, true )
47-
DEFINE_TIME_STAT( TIME_VISA_BUILDER_IR_CONSTRUCTION, "VISA Builder IR Construction", TIME_VISA_TOTAL, true, false, true, true )
44+
DEFINE_TIME_STAT( TIME_VISA_BUILDER_APPEND_INST, "VISA Builder Append Instruction", TIME_VISA_TOTAL, true, false, false, true )
45+
DEFINE_TIME_STAT( TIME_VISA_BUILDER_CREATE_VAR, "VISA Builder Create Var", TIME_VISA_TOTAL, true, false, false, true )
46+
DEFINE_TIME_STAT( TIME_VISA_BUILDER_CREATE_OPND, "VISA Builder Create Operand", TIME_VISA_TOTAL, true, false, false, true )
47+
DEFINE_TIME_STAT( TIME_VISA_BUILDER_IR_CONSTRUCTION, "VISA Builder IR Construction", TIME_VISA_TOTAL, true, false, false, true )
4848
DEFINE_TIME_STAT( TIME_VISA_Liveness, "VISA Liveness", TIME_VISA_TOTAL_RA, true, false, false, false )
4949
DEFINE_TIME_STAT( TIME_VISA_RPE, "VISA Reg Pressure Estimate", TIME_VISA_TOTAL_RA, true, false, false, false )
50-
DEFINE_TIME_STAT( TIME_VISA_Unaccounted, "VISA Total Unaccounted", TIME_VISA_TOTAL, false, true, true, true )
51-
DEFINE_TIME_STAT( TIME_vISACompile_Unaccounted, "vISACompile Unaccounted", TIME_CG_vISACompile, false, true, true, true )
52-
DEFINE_TIME_STAT( TIME_CG_Unaccounted, "CodeGen Unaccounted", TIME_CodeGen, false, true, true, true )
53-
DEFINE_TIME_STAT( TIME_VulkanFrontend, "VulkanFrontend", TIME_TOTAL, false, false, true, true )
54-
DEFINE_TIME_STAT( TIME_VkFe_ParseSpirV, "VkFeParsing", TIME_VulkanFrontend, false, false, true, false )
55-
DEFINE_TIME_STAT( TIME_VkFe_TranslateSpirV, "VkFeTranslation", TIME_VulkanFrontend, false, false, true, false )
56-
DEFINE_TIME_STAT( TIME_VkFe_CompileSpirV, "VkFeBackendCompilation", TIME_VulkanFrontend, false, false, true, false )
57-
DEFINE_TIME_STAT( TIME_TOTAL_Unaccounted, "Total Unaccounted", TIME_TOTAL, false, true, true, true )
50+
DEFINE_TIME_STAT( TIME_VISA_Unaccounted, "VISA Total Unaccounted", TIME_VISA_TOTAL, false, true, false, true )
51+
DEFINE_TIME_STAT( TIME_vISACompile_Unaccounted, "vISACompile Unaccounted", TIME_CG_vISACompile, false, true, false, true )
52+
DEFINE_TIME_STAT( TIME_CG_Unaccounted, "CodeGen Unaccounted", TIME_CodeGen, false, true, false, true )
53+
DEFINE_TIME_STAT( TIME_VulkanFrontend, "VulkanFrontend", TIME_TOTAL, false, false, false, true )
54+
DEFINE_TIME_STAT( TIME_VkFe_ParseSpirV, "VkFeParsing", TIME_VulkanFrontend, false, false, false, false )
55+
DEFINE_TIME_STAT( TIME_VkFe_TranslateSpirV, "VkFeTranslation", TIME_VulkanFrontend, false, false, false, false )
56+
DEFINE_TIME_STAT( TIME_VkFe_CompileSpirV, "VkFeBackendCompilation", TIME_VulkanFrontend, false, false, false, false )
57+
DEFINE_TIME_STAT( TIME_TOTAL_Unaccounted, "Total Unaccounted", TIME_TOTAL, false, true, false, true )
5858

5959
// This must be the last one in the list
6060
DEFINE_TIME_STAT( MAX_COMPILE_TIME_INTERVALS, "", MAX_COMPILE_TIME_INTERVALS, false, false, false, false )

0 commit comments

Comments
 (0)