From b48cac624de7f6188f27714929304bb89268cf05 Mon Sep 17 00:00:00 2001 From: foreman Date: Tue, 3 Jan 2017 15:18:03 -0500 Subject: [PATCH] P4 to Git Change 1358001 by skudchad@skudchad_test_win_opencl2 on 2017/01/03 15:05:28 SWDEV-107271 - [OpenCL][GFXIP9 Bring up] add support for Raven(gfx901) - Add perf counter blocks in PAL backend. ReviewBoardURL = http://ocltc.amd.com/reviews/r/12108/diff/ Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcounters.cpp#7 edit ... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/runtime/OCLPerfCounters.cpp#36 edit --- rocclr/runtime/device/pal/palcounters.cpp | 119 +++++++++++++++++++++- 1 file changed, 117 insertions(+), 2 deletions(-) diff --git a/rocclr/runtime/device/pal/palcounters.cpp b/rocclr/runtime/device/pal/palcounters.cpp index 33f8ddd54c..a006de0656 100644 --- a/rocclr/runtime/device/pal/palcounters.cpp +++ b/rocclr/runtime/device/pal/palcounters.cpp @@ -228,7 +228,7 @@ std::array, 83> ciBlockIdOrcaToPal = }}; static const -std::array, 98> viBlockIdOrcaToPal = +std::array, 97> viBlockIdOrcaToPal = {{ {0x0F, 0}, // CB0 {0x0F, 1}, // CB1 @@ -329,6 +329,117 @@ std::array, 98> viBlockIdOrcaToPal = {0x18, 0}, // CPC }}; +// The number of counters per block has been increased for gfx9 but this table may not reflect all of them +// as compute may not use all of them. +static const +std::array, 104> gfx9BlockIdPal = +{{ + { 0x0F, 0 }, // CB0 + { 0x0F, 1 }, // CB1 + { 0x0F, 2 }, // CB2 + { 0x0F, 3 }, // CB3 + { 0x01, 0 }, // CPF0 + { 0x01, 1 }, // CPF1 + { 0x0E, 0 }, // DB0 + { 0x0E, 1 }, // DB1 + { 0x0E, 2 }, // DB2 + { 0x0E, 3 }, // DB3 + { 0x12, 0 }, // GRBM0 + { 0x12, 1 }, // GRBM1 + { 0x13, 0 }, // GRBMSE0 + { 0x04, 0 }, // PA_SU + { 0x04, 0 }, // PA_SC + { 0x06, 0 }, // SPI + { 0x07, 0 }, // SQ0 + { 0x07, 1 }, // SQ1 + { 0x07, 0 }, // SQ_ES + { 0x07, 0 }, // SQ_GS + { 0x07, 0 }, // SQ_VS + { 0x07, 0 }, // SQ_PS + { 0x07, 0 }, // SQ_LS + { 0x07, 0 }, // SQ_HS + { 0x07, 0 }, // SQ_CS0 + { 0x07, 1 }, // SQ_CS1 + { 0x08, 0 }, // SX + { 0x09, 0 }, // TA0 + { 0x09, 1 }, // TA1 + { 0x09, 2 }, // TA2 + { 0x09, 3 }, // TA3 + { 0x09, 4 }, // TA4 + { 0x09, 5 }, // TA5 + { 0x09, 6 }, // TA6 + { 0x09, 7 }, // TA7 + { 0x09, 8 }, // TA8 + { 0x09, 9 }, // TA9 + { 0x09, 0x0a }, // TA10 + { 0x09, 0x0b }, // TA11 + { 0x09, 0x0c }, // TA12 + { 0x09, 0x0d }, // TA13 + { 0x09, 0x0e }, // TA14 + { 0x09, 0x0f }, // TA15 + { 0x0D, 0 }, // TCA0 + { 0x0D, 1 }, // TCA1 + { 0x0C, 0 }, // TCC0 + { 0x0C, 1 }, // TCC1 + { 0x0C, 2 }, // TCC2 + { 0x0C, 3 }, // TCC3 + { 0x0C, 4 }, // TCC4 + { 0x0C, 5 }, // TCC5 + { 0x0C, 6 }, // TCC6 + { 0x0C, 7 }, // TCC7 + { 0x0C, 8 }, // TCC8 + { 0x0C, 9 }, // TCC9 + { 0x0C, 0x0a }, // TCC10 + { 0x0C, 0x0b }, // TCC11 + { 0x0C, 0x0c }, // TCC12 + { 0x0C, 0x0d }, // TCC13 + { 0x0C, 0x0e }, // TCC14 + { 0x0C, 0x0f }, // TCC15 + { 0x0A, 0 }, // TD0 + { 0x0A, 1 }, // TD1 + { 0x0A, 2 }, // TD2 + { 0x0A, 3 }, // TD3 + { 0x0A, 4 }, // TD4 + { 0x0A, 5 }, // TD5 + { 0x0A, 6 }, // TD6 + { 0x0A, 7 }, // TD7 + { 0x0A, 8 }, // TD8 + { 0x0A, 9 }, // TD9 + { 0x0A, 0x0a }, // TD10 + { 0x0A, 0x0b }, // TD11 + { 0x0A, 0x0c }, // TD12 + { 0x0A, 0x0d }, // TD13 + { 0x0A, 0x0e }, // TD14 + { 0x0A, 0x0f }, // TD15 + { 0x0B, 0 }, // TCP0 + { 0x0B, 1 }, // TCP1 + { 0x0B, 2 }, // TCP2 + { 0x0B, 3 }, // TCP3 + { 0x0B, 4 }, // TCP4 + { 0x0B, 5 }, // TCP5 + { 0x0B, 6 }, // TCP6 + { 0x0B, 7 }, // TCP7 + { 0x0B, 8 }, // TCP8 + { 0x0B, 9 }, // TCP9 + { 0x0B, 0x0a }, // TCP10 + { 0x0B, 0x0b }, // TCP11 + { 0x0B, 0x0c }, // TCP12 + { 0x0B, 0x0d }, // TCP13 + { 0x0B, 0x0e }, // TCP14 + { 0x0B, 0x0f }, // TCP15 + { 0x10, 0 }, // GDS0 + { 0x10, 1 }, // GDS1 + { 0x03, 0 }, // VGT + { 0x02, 0 }, // IA + { 0x16, 0 }, // MC + { 0x11, 0 }, // SRBM + { 0x19, 0 }, // WD + { 0x17, 0 }, // CPG0 + { 0x17, 1 }, // CPG1 + { 0x18, 0 }, // CPC0 + { 0x18, 1 }, // CPC1 +}}; + void PerfCounter::convertInfo() { switch (dev().ipLevel()) { @@ -347,7 +458,11 @@ void PerfCounter::convertInfo() } break; case Pal::GfxIpLevel::GfxIp9: - Unimplemented(); + if (info_.blockIndex_ < gfx9BlockIdPal.size()) { + auto p = gfx9BlockIdPal[info_.blockIndex_]; + info_.blockIndex_ = std::get<0>(p); + info_.counterIndex_ = std::get<1>(p); + } break; default: Unimplemented();