diff --git a/.github/workflows/analyze-workloads.yml b/.github/workflows/rhel-8.yml similarity index 67% rename from .github/workflows/analyze-workloads.yml rename to .github/workflows/rhel-8.yml index ef38abfdde..5fe6d5aede 100644 --- a/.github/workflows/analyze-workloads.yml +++ b/.github/workflows/rhel-8.yml @@ -1,7 +1,6 @@ # This is a basic workflow to help you get started with Actions -name: analyze-workloads - +name: RHEL 8 # Controls when the workflow will run on: @@ -19,7 +18,7 @@ jobs: # The type of runner that the job will run on runs-on: ubuntu-latest container: - image: rocm/dev-ubuntu-22.04:5.3 + image: colramos/target-images:rhel8 # Steps represent a sequence of tasks that will be executed as part of the job steps: # Cancel any previous runs @@ -27,26 +26,31 @@ jobs: uses: styfle/cancel-workflow-action@0.11.0 - name: Install baseline OS dependencies run: | - sudo apt-get update - sudo apt-get install -y git - sudo apt-get install -y python3-pip - sudo apt-get install -y cmake - - name: Checkout + yum -y update + yum -y install git + yum -y install python39 + yum -y install cmake3 + yum -y install which + - name: Checkout uses: actions/checkout@v3 with: submodules: recursive token: ${{ secrets.GH_PAT }} - name: Install Python prereqs run: | - python3 -m pip install -r requirements.txt - python3 -m pip install pyinstaller pytest pytest-cov - - name: Configure and install + python3.9 -m pip install -r requirements.txt + python3.9 -m pip install pyinstaller pytest pytest-cov mock + - name: Configure and install run: | mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/opt/omniperf .. make install - - name: run ctest + - name: CTest- Analyze Commands + run: | + cd build + ctest --verbose -R test_analyze_commands + - name: CTest- Analyze Workloads run: | cd build ctest --verbose -R test_analyze_workloads test_saved_analysis diff --git a/.github/workflows/analyze-commands.yml b/.github/workflows/ubuntu-focal.yml similarity index 88% rename from .github/workflows/analyze-commands.yml rename to .github/workflows/ubuntu-focal.yml index 786195916a..d9683af8c1 100644 --- a/.github/workflows/analyze-commands.yml +++ b/.github/workflows/ubuntu-focal.yml @@ -1,6 +1,6 @@ # This is a basic workflow to help you get started with Actions -name: analyze-commands +name: Ubuntu 20.04 # Controls when the workflow will run on: @@ -45,7 +45,11 @@ jobs: cd build cmake -DCMAKE_INSTALL_PREFIX=/opt/omniperf .. make install - - name: Run ctest + - name: CTest- Analyze Commands run: | cd build ctest --verbose -R test_analyze_commands + - name: CTest- Analyze Workloads + run: | + cd build + ctest --verbose -R test_analyze_workloads test_saved_analysis diff --git a/CHANGES b/CHANGES index 0d3f2025a1..f38ea5f1a1 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,17 @@ +Version 1.0.7 (21 Feb 2023) + + * update documentation (#52, #64) + * improved detection of invalid command line arguments (#58, #76) + * enhancements to standalone roofline (#61) + * enable Omniperf on systems with X-server (#62) + * raise minimum version requirement for rocm (#64) + * enable baseline comparison in CLI analysis (#65) + * add multi-normalization to new metrics (#68, #81) + * support alternative profilers (#70) + * add MI100 configs to override rocprofiler's incomplete default (#75) + * improve error message when no GPU(s) detected (#85) + * separate CI tests by Linux distro and add status badges + Version 1.0.6 (21 Dec 2022) * CI update: documentation now published via github action (#22) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c03d08f95..724d37f0d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,7 +83,8 @@ set(pythonDeps "tabulate" "tqdm" "dash_svg" - "dash_bootstrap_components") + "dash_bootstrap_components" + "kaleido") message(STATUS "Checking for required Python package dependencies...") set_property(GLOBAL PROPERTY pythonDepsFlag "groovy") @@ -291,6 +292,18 @@ install( # set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "omniperf") set(CPACK_RESOURCE_FILE_LICENSE # "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") +# License header update(s) +add_custom_target( + license + COMMAND + ${PROJECT_SOURCE_DIR}/utils/update_license.py --source ${PROJECT_SOURCE_DIR}/src + --license ${PROJECT_SOURCE_DIR}/LICENSE --extension '.py' + COMMAND + ${PROJECT_SOURCE_DIR}/utils/update_license.py --source ${PROJECT_SOURCE_DIR} + --license ${PROJECT_SOURCE_DIR}/LICENSE --file + "src/omniperf,cmake/Dockerfile,cmake/rocm_install.sh,docker/docker-entrypoint.sh,src/omniperf_analyze/convertor/mongodb/convert" + ) + # Source tarball set(CPACK_SOURCE_GENERATOR "TGZ") set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME}-${FULL_VERSION_STRING}) diff --git a/LICENSE b/LICENSE index 5477049050..057656b358 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 Advanced Micro Devices, Inc. All Rights Reserved. +Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 8bfa56510b..90b8c3547e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Ubuntu 20.04](https://github.com/AMDResearch/omniperf/actions/workflows/ubuntu-focal.yml/badge.svg)](https://github.com/AMDResearch/omniperf/actions/workflows/ubuntu-focal.yml) +[![RHEL 8](https://github.com/AMDResearch/omniperf/actions/workflows/opensuse.yml/badge.svg)](https://github.com/AMDResearch/omniperf/actions/workflows/opensuse.yml) [![Docs](https://github.com/AMDResearch/omniperf/actions/workflows/docs.yml/badge.svg)](https://amdresearch.github.io/omniperf/) [![DOI](https://zenodo.org/badge/561919887.svg)](https://zenodo.org/badge/latestdoi/561919887) diff --git a/cmake/Dockerfile b/cmake/Dockerfile index f95e18d4d0..766be0894f 100644 --- a/cmake/Dockerfile +++ b/cmake/Dockerfile @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,17 +10,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el FROM ubuntu:20.04 diff --git a/cmake/miperf.sh.in b/cmake/miperf.sh.in deleted file mode 100644 index bf600808dc..0000000000 --- a/cmake/miperf.sh.in +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash - -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ - -set -e - -SCRIPT_DIR=$(realpath $(dirname ${BASH_SOURCE[0]})) - -OMNIPERF_DIR=$(realpath ${SCRIPT_DIR}/@OMNIPERF_RELATIVE_PATH@) - -if [ ! -f ${OMNIPERF_DIR}/omniperf ]; then - echo -e "Error! Expected omniperf installation in ${OMNIPERF_DIR}" - exit 1 -fi - -eval ${OMNIPERF_DIR}/omniperf "${@}" diff --git a/cmake/modfile.crusher.mod b/cmake/modfile.crusher.mod index 144b2143da..46d6111574 100644 --- a/cmake/modfile.crusher.mod +++ b/cmake/modfile.crusher.mod @@ -1,4 +1,4 @@ -- Crusher-specific additions depends_on "cray-python" depends_on "rocm" -prereq(atleast("rocm","5.1.0")) +prereq(atleast("rocm","5.2.0")) diff --git a/cmake/modfile.thera.mod b/cmake/modfile.thera.mod index f253723ae2..5e5cb5fdfe 100644 --- a/cmake/modfile.thera.mod +++ b/cmake/modfile.thera.mod @@ -1,6 +1,6 @@ -- Thera-specific additions depends_on "python" depends_on "rocm" -prereq(atleast("rocm","5.1.0")) +prereq(atleast("rocm","5.2.0")) local home = os.getenv("HOME") setenv("MPLCONFIGDIR",pathJoin(home,".matplotlib")) diff --git a/cmake/rocm_install.sh b/cmake/rocm_install.sh index 8ac34caad5..57d2331779 100755 --- a/cmake/rocm_install.sh +++ b/cmake/rocm_install.sh @@ -1,7 +1,9 @@ #!/usr/bin/env bash -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -10,17 +12,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el declare -a rocm_versions=("4.3.1" "4.5.2" "5.0.2" "5.1.3" "5.2.3") wget https://repo.radeon.com/amdgpu-install/22.10/ubuntu/focal/amdgpu-install_22.10.50100-1_all.deb @@ -29,4 +31,4 @@ for rocm_version in ${rocm_versions[@]}; do echo "deb [arch=amd64] https://repo.radeon.com/rocm/apt/$rocm_version ubuntu main" | tee /etc/apt/sources.list.d/rocm.list apt update amdgpu-install -y --usecase=rocm --rocmrelease=$rocm_version --no-dkms -done \ No newline at end of file +done diff --git a/dashboards/Omniperf_v1.0.7_pub.json b/dashboards/Omniperf_v1.0.7_pub.json new file mode 100644 index 0000000000..c4b0899796 --- /dev/null +++ b/dashboards/Omniperf_v1.0.7_pub.json @@ -0,0 +1,13325 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 42, + "iteration": 1674838967359, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 217, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [] + }, + "gridPos": { + "h": 23, + "w": 13, + "x": 0, + "y": 1 + }, + "id": 159, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.sysinfo.aggregate([\n {\"$project\": {\n \"_id\": 0,\n \"date\":1,\n \"command\": 1,\n \"host_name\": 1,\n \"host_cpu\": 1,\n \"host_distro\": 1,\n \"host_kernel\": 1,\n \"host_rocmver\": 1,\n \"gpu_soc\": 1,\n \"name\": 1,\n \"numSE\": 1,\n \"numSQC\": 1,\n \"numCU\": 1,\n \"numSIMD\": 1,\n \"waveSize\": 1,\n \"maxWavesPerCU\": 1,\n \"maxWorkgroupSize\":1,\n \"L1\":1,\n \"L2\":1,\n \"L2Banks\": 1,\n \"sclk\":1,\n \"mclk\":1,\n \"cur_sclk\": 1,\n \"cur_mclk\":1,\n \"hbmBW\":1\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\":\"Date\",\n \"Value\": \"&date\"\n },\n {\n \"Metric\":\"App Command\",\n \"Value\": \"&command\"\n },\n {\n \"Metric\":\"Host Name\",\n \"Value\": \"&host_name\"\n },\n {\n \"Metric\":\"Host CPU\",\n \"Value\": \"&host_cpu\"\n },\n {\n \"Metric\":\"Host Distro\",\n \"Value\": \"&host_distro\"\n },\n {\n \"Metric\":\"Host Kernel\",\n \"Value\": \"&host_kernel\"\n },\n {\n \"Metric\":\"ROCm Version\",\n \"Value\": \"&host_rocmver\"\n },\n {\n \"Metric\":\"GFX SoC\",\n \"Value\": \"&name\"\n },\n {\n \"Metric\":\"GFX ID\",\n \"Value\": \"&gpu_soc\"\n },\n {\n \"Metric\":\"Total SEs\",\n \"Value\":\"&numSE\"\n },\n {\n \"Metric\":\"Total SQCs\",\n \"Value\":\"&numSQC\"\n },\n {\n\n \"Metric\":\"Total CUs\",\n \"Value\":\"&numCU\"\n },\n {\n \"Metric\":\"SIMDs/CU\",\n \"Value\": \"&numSIMD\"\n },\n {\n \"Metric\":\"Max Wavefronts Occupancy Per CU\",\n \"Value\":\"&maxWavesPerCU\"\n },\n {\n \"Metric\":\"Max Workgroup Size\",\n \"Value\":\"&maxWorkgroupSize\"\n },\n {\n \"Metric\":\"L1Cache per CU (KB)\",\n \"Value\":\"&L1\"\n },\n {\n \"Metric\":\"L2Cache (KB)\",\n \"Value\":\"&L2\"\n },\n {\n \"Metric\":\"L2Cache Channels\",\n \"Value\":\"&L2Banks\"\n },\n {\n \"Metric\":\"Sys Clock (Max) - MHz\",\n \"Value\":\"&sclk\"\n \n },\n {\n \"Metric\":\"Memory Clock (Max) - MHz\",\n \"Value\":\"&mclk\"\n },\n {\n \"Metric\":\"Sys Clock (Cur) - MHz\",\n \"Value\":\"&cur_sclk\"\n \n },\n {\n \"Metric\":\"Memory Clock (Cur) - MHz\",\n \"Value\":\"&cur_mclk\"\n },\n {\n \"Metric\":\"HBM Bandwidth - GB/s\",\n \"Value\":\"&hbmBW\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.sysinfo.aggregate([\n {\"$match\": {\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(System Info)\"}}\n }},\n\n {\"$project\": {\n \"_id\": 0,\n \"date\":1,\n \"command\": 1,\n \"host_name\": 1,\n \"host_cpu\": 1,\n \"host_distro\": 1,\n \"host_kernel\": 1,\n \"host_rocmver\": 1,\n \"gpu_soc\": 1,\n \"name\": 1,\n \"numSE\": 1,\n \"numSQC\": 1,\n \"numCU\": 1,\n \"numSIMD\": 1,\n \"waveSize\": 1,\n \"maxWavesPerCU\": 1,\n \"maxWorkgroupSize\":1,\n \"L1\":1,\n \"L2\":1,\n \"L2Banks\": 1,\n \"sclk\":1,\n \"mclk\":1,\n \"cur_sclk\": 1,\n \"cur_mclk\":1,\n \"hbmBW\":1\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\":\"Date\",\n \"Value\": \"&date\"\n },\n {\n \"Metric\":\"App Command\",\n \"Value\": \"&command\"\n },\n {\n \"Metric\":\"Host Name\",\n \"Value\": \"&host_name\"\n },\n {\n \"Metric\":\"Host CPU\",\n \"Value\": \"&host_cpu\"\n },\n {\n \"Metric\":\"Host Distro\",\n \"Value\": \"&host_distro\"\n },\n {\n \"Metric\":\"Host Kernel\",\n \"Value\": \"&host_kernel\"\n },\n {\n \"Metric\":\"ROCm Version\",\n \"Value\": \"&host_rocmver\"\n },\n {\n \"Metric\":\"GFX SoC\",\n \"Value\": \"&name\"\n },\n {\n \"Metric\":\"GFX ID\",\n \"Value\": \"&gpu_soc\"\n },\n {\n \"Metric\":\"Total SEs\",\n \"Value\":\"&numSE\"\n },\n {\n \"Metric\":\"Total SQCs\",\n \"Value\":\"&numSQC\"\n },\n {\n\n \"Metric\":\"Total CUs\",\n \"Value\":\"&numCU\"\n },\n {\n \"Metric\":\"SIMDs/CU\",\n \"Value\": \"&numSIMD\"\n },\n {\n \"Metric\":\"Max Wavefronts Occupancy Per CU\",\n \"Value\":\"&maxWavesPerCU\"\n },\n {\n \"Metric\":\"Max Workgroup Size\",\n \"Value\":\"&maxWorkgroupSize\"\n },\n {\n \"Metric\":\"L1Cache per CU (KB)\",\n \"Value\":\"&L1\"\n },\n {\n \"Metric\":\"L2Cache (KB)\",\n \"Value\":\"&L2\"\n },\n {\n \"Metric\":\"L2Cache Channels\",\n \"Value\":\"&L2Banks\"\n },\n {\n \"Metric\":\"Sys Clock (Max) - MHz\",\n \"Value\":\"&sclk\"\n \n },\n {\n \"Metric\":\"Memory Clock (Max) - MHz\",\n \"Value\":\"&mclk\"\n },\n {\n \"Metric\":\"Sys Clock (Cur) - MHz\",\n \"Value\":\"&cur_sclk\"\n \n },\n {\n \"Metric\":\"Memory Clock (Cur) - MHz\",\n \"Value\":\"&cur_mclk\"\n },\n {\n \"Metric\":\"HBM Bandwidth - GB/s\",\n \"Value\":\"&hbmBW\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "System Info", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true + }, + "indexByName": {}, + "renameByName": { + "Value 1": "Current", + "Value 2": "Baseline" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "System Info", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 108, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false + }, + "decimals": 0, + "links": [], + "mappings": [ + { + "options": { + "match": "false", + "result": { + "index": 0 + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text" + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Percent of Peak - PoP" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "transparent" + }, + { + "color": "orange", + "value": 50 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + { + "id": "custom.displayMode", + "value": "color-background" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Metric" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "color-text" + }, + { + "id": "custom.width", + "value": 252 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Unit 1" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "color-background" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 137 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 125 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "custom.width", + "value": 161 + } + ] + } + ] + }, + "gridPos": { + "h": 29, + "w": 15, + "x": 0, + "y": 2 + }, + "id": 110, + "interval": "2h", + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"valu_flops_val\": {\n \"$avg\": { \"$divide\": [ { \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", \"&SQ_INSTS_VALU_TRANS_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }] }] }\n ]}\n ,{ \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }]\n }},\n \n \"valu_intOps_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_INT32\", \"&SQ_INSTS_VALU_INT64\"] }] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] }\n },\n \n \"mfma_flops_f16_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_bf16_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_f32_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_f64_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_i8_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \n \n \"salu_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_ACTIVE_INST_SCA\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU] }] }\n },\n \n \"valu_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_ACTIVE_INST_VALU\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU] }] }\n },\n \n \"mfma_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_VALU_MFMA_BUSY_CYCLES\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU, 4] }] }\n },\n\n \n \"lds_bconf\": {\n \"$avg\": {\"$cond\": [ {\"$ne\": [{\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 0]},\n {\"$divide\": [\n \"&SQ_LDS_BANK_CONFLICT\",\n {\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}\n ]},\n null\n ]\n } \n },\n \n \n \"lds_bw\": {\n \"$avg\": {\"$divide\":[ \n { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, \n 4, \n {\"$toInt\": \"$L2Banks\"}\n ]}, \n {\"$subtract\": [\"&EndNs\", \"&BeginNs\"]}\n ]}\n },\n \n \"lds_bw_pop\": {\n \"$avg\": {\"$divide\": [\n {\"$divide\":[ \n { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, \n 4, \n {\"$toInt\": \"$L2Banks\"}\n ]}, \n {\"$subtract\": [\"&EndNs\", \"&BeginNs\"]}\n ]}, \n {\"$multiply\": [$sclk, $numCU, 0.00128]}\n ]}\n },\n \n \"unpredthreads_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\":[\"&SQ_ACTIVE_INST_VALU\" , 0]},\n { \"$divide\": [\"&SQ_THREAD_CYCLES_VALU\", \"&SQ_ACTIVE_INST_VALU\"] },\n null\n ]\n }\n },\n \n \"ipcIssue_val\": {\n \"$avg\": { \"$divide\": [{ \"$add\": [\"&SQ_INSTS_VALU\", \"&SQ_INSTS_VMEM\", \"&SQ_INSTS_SALU\", \"&SQ_INSTS_SMEM\", \"&SQ_INSTS_GDS\", \"&SQ_INSTS_BRANCH\", \"&SQ_INSTS_SENDMSG\", \"&SQ_INSTS_VSKIPPED\"] }, \"&SQ_ACTIVE_INST_ANY\"] }\n },\n \"eaWriteLat_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_WRREQ_sum\" , 0]},\n { \"$divide\": [\"&TCC_EA_WRREQ_LEVEL_sum\", \"&TCC_EA_WRREQ_sum\"] },\n null \n ]\n }\n },\n \"eaReadLat_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_RDREQ_sum\" , 0]},\n { \"$divide\": [\"&TCC_EA_RDREQ_LEVEL_sum\", \"&TCC_EA_RDREQ_sum\"] },\n null \n ]\n }\n },\n \"eaWriteBW_val\": {\n \"$avg\": { \"$divide\": [{ \"$add\": [{ \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64] }, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] }] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] }\n }, \n \"eaReadBW_val\": {\n \"$avg\": { \"$divide\": [{ \"$add\": [{ \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32] }, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] }] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] }\n },\n \"l2_cacheHits_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&TCC_HIT_sum\", \"&TCC_MISS_sum\"] }, 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [\"&TCC_HIT_sum\", \"&TCC_MISS_sum\"] }] },\n null \n ]\n }\n },\n \"vecl1_cacheHits_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0]},\n { \"$subtract\": [100, { \"$divide\": [{ \"$multiply\": [100, { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }] }, \"&TCP_TOTAL_CACHE_ACCESSES_sum\"] }] },\n null\n ]\n }\n },\n \"vecl1_BW_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64 ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n },\n \"l1k_cacheHits_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\"]} , 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&SQC_DCACHE_HITS\"] }, { \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\"]}] },\n null\n ]\n }\n },\n \"l1i_hitRate_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQC_ICACHE_HITS\"] }, { \"$add\": [\"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_MISSES\"]}] }\n },\n \"l1i_BW_val\": {\n \"$avg\": { \"$multiply\": [{ \"$divide\": [\"&SQC_ICACHE_REQ\",{ \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }, 64] }\n },\n \"l1k_BW_val\": {\n \"$avg\": { \"$multiply\": [{ \"$divide\": [\"&SQC_DCACHE_REQ\", { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }, 64] }\n }\n \n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"VALU FLOPs\",\n \"Value\": \"&valu_flops_val\",\n \"Unit\": \"GFLOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 64, 2 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&valu_flops_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 64, 2 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"VALU IOPs\",\n \"Value\": \"&valu_intOps_val\",\n \"Unit\": \"GIOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 64, 2 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&valu_intOps_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 64, 2 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"MFMA FLOPs (BF16)\",\n \"Value\": \"&mfma_flops_bf16_val\",\n \"Unit\": \"GFLOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 512 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_bf16_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 512 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"MFMA FLOPs (F16)\",\n \"Value\": \"&mfma_flops_f16_val\",\n \"Unit\": \"GFLOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 1024 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f16_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 1024 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"MFMA FLOPs (F32)\",\n \"Value\": \"&mfma_flops_f32_val\",\n \"Unit\": \"GFLOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 256 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f32_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 256 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"MFMA FLOPs (F64)\",\n \"Value\": \"&mfma_flops_f64_val\",\n \"Unit\": \"GFLOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 256 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f64_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 256 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"MFMA IOPs (Int8)\",\n \"Value\": \"&mfma_flops_i8_val\",\n \"Unit\": \"GIOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 1024 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_i8_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 1024 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"Active CUs\",\n \"Value\": $numActiveCUs,\n \"Unit\": \"CUs\",\n \"peak\": $numCU,\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, $numActiveCUs] }, $numCU]}\n },\n \n {\n \"Metric\": \"SALU Util\",\n \"Value\": \"&salu_val\",\n \"Unit\": \"pct\",\n \"peak\": 100,\n \"Percent of Peak - PoP\": \"&salu_val\"\n },\n {\n \"Metric\": \"VALU Util\",\n \"Value\": \"&valu_val\",\n \"Unit\": \"pct\",\n \"peak\": 100,\n \"Percent of Peak - PoP\": \"&valu_val\"\n },\n {\n \"Metric\": \"MFMA Util\",\n \"Value\": \"&mfma_val\",\n \"Unit\": \"pct\",\n \"peak\": 100,\n \"Percent of Peak - PoP\": \"&mfma_val\"\n },\n {\n \"Metric\": \"VALU Active Threads/Wave\",\n \"Value\": \"&unpredthreads_val\",\n \"Unit\": \"Threads\",\n \"peak\": 64,\n \"Percent of Peak - PoP\": { \"$multiply\": [\"&unpredthreads_val\", 1.5625]}\n },\n {\n \"Metric\": \"IPC - Issue\",\n \"Value\": \"&ipcIssue_val\",\n \"Unit\": \"Instr/cycle\",\n \"peak\": 5,\n \"Percent of Peak - PoP\": {\"$divide\": [{ \"$multiply\": [100, \"&ipcIssue_val\"] }, 5] }\n },\n {\n \"Metric\": \"LDS BW\",\n \"Value\": \"&lds_bw\",\n \"Unit\": \"GB/sec\",\n \"peak\": {\"$multiply\": [$sclk, $numCU, 0.128]},\n \"Percent of Peak - PoP\": \"&lds_bw_pop\"\n },\n {\n \"Metric\": \"LDS Bank Conflict\",\n \"Value\": \"&lds_bconf\",\n \"Unit\": \"Conflicts/access\",\n \"peak\": \"32\",\n \"Percent of Peak - PoP\": {\"$divide\": [{ \"$multiply\": [100, \"&lds_bconf\"] }, 32] }\n },\n {\n \"Metric\": \"Instr Cache Hit Rate\",\n \"Value\": \"&l1i_hitRate_val\",\n \"Unit\": \"pct\",\n \"peak\": \"100\",\n \"Percent of Peak - PoP\": \"&l1i_hitRate_val\"\n }, \n {\n \"Metric\": \"Instr Cache BW\",\n \"Value\": \"&l1i_BW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk, 1000] }, 64] }, $numSQC]},\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&l1i_BW_val\"] }, { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk, 1000] }, 64] }, $numSQC]}] }\n },\n {\n \"Metric\": \"Scalar L1D Cache Hit Rate\",\n \"Value\": \"&l1k_cacheHits_val\",\n \"Unit\": \"pct\",\n \"peak\": \"100\",\n \"Percent of Peak - PoP\": \"&l1k_cacheHits_val\"\n },\n {\n \"Metric\": \"Scalar L1D Cache BW\",\n \"Value\": \"&l1k_BW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk, 1000] }, 64] }, $numSQC]},\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&l1k_BW_val\"] }, { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk, 1000] }, 64] }, $numSQC]}] }\n },\n\n {\n \"Metric\": \"Vector L1D Cache Hit Rate\",\n \"Value\": \"&vecl1_cacheHits_val\",\n \"Unit\": \"pct\",\n \"peak\": \"100\",\n \"Percent of Peak - PoP\": \"&vecl1_cacheHits_val\"\n },\n {\n \"Metric\": \"Vector L1D Cache BW\",\n \"Value\": \"&vecl1_BW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk, 1000] }, 64] }, $numCU]},\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&vecl1_BW_val\"] }, { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk, 1000] }, 64] }, $numCU]}] }\n },\n {\n \"Metric\": \"L2 Cache Hit Rate\",\n \"Value\": \"&l2_cacheHits_val\",\n \"Unit\": \"pct\",\n \"peak\": \"100\",\n \"Percent of Peak - PoP\": \"&l2_cacheHits_val\"\n },\n {\n \"Metric\": \"L2-Fabric Read BW\",\n \"Value\": \"&eaReadBW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": \"$hbmBW\",\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&eaReadBW_val\"] }, $hbmBW] }\n },\n {\n \"Metric\": \"L2-Fabric Write BW\",\n \"Value\": \"&eaWriteBW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": \"$hbmBW\",\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&eaWriteBW_val\"] }, $hbmBW] }\n },\n {\n \"Metric\": \"L2-Fabric Read Latency\",\n \"Value\": \"&eaReadLat_val\",\n \"Unit\": \"Cycles\",\n \"peak\": \"\",\n \"Percent of Peak - PoP\": \"\"\n },\n {\n \"Metric\": \"L2-Fabric Write Latency\",\n \"Value\": \"&eaWriteLat_val\",\n \"Unit\": \"Cycles\",\n \"peak\": \"\",\n \"Percent of Peak - PoP\": \"\"\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }},\n {\"$unionWith\": {\n \"coll\": \"SQ_LEVEL_WAVES\",\n \"pipeline\": [\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n \n {\"$group\": {\n \"_id\": null,\n \"waveOcc_val\": {\n \"$avg\": { \"$divide\": [\"&SQ_ACCUM_PREV_HIRES\", \"&GRBM_GUI_ACTIVE\"] }\n },\n \"waveOcc_pop\": {\n \"$avg\": { \"$divide\": [{ \"$divide\": [\"&SQ_ACCUM_PREV_HIRES\", \"&GRBM_GUI_ACTIVE\"] },{ \"$multiply\": [$maxWavesPerCU, $numCU] }] }\n }\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Wave Occupancy\",\n \"Value\": \"&waveOcc_val\",\n \"Unit\": \"Wavefronts\",\n \"peak\": { \"$multiply\": [$maxWavesPerCU, $numCU] },\n \"Percent of Peak - PoP\": { \"$multiply\": [100, \"&waveOcc_pop\"] }\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n\n ]\n }},\n {\"$unionWith\": {\n \"coll\": \"SQ_IFETCH_LEVEL\",\n \"pipeline\": [\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n \n {\"$group\": {\n \"_id\": null,\n \"instrFetchBW_val\": {\n \"$avg\": { \"$multiply\": [{ \"$divide\": [\"&SQ_IFETCH\", { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] }, 32] }\n },\n \"instrFetchLat_val\": {\n \"$avg\": { \"$divide\": [\"&SQ_ACCUM_PREV_HIRES\", \"&SQ_IFETCH\"] }\n }\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Instr Fetch BW\",\n \"Value\": \"&instrFetchBW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk, 1000] }, 32] }, $numSQC]},\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&instrFetchBW_val\"]}, { \"$multiply\": [$numSQC, { \"$multiply\": [{ \"$divide\": [$sclk, 1000] }, 32] }] }] }\n },\n {\n \"Metric\": \"Instr Fetch Latency\",\n \"Value\": \"&instrFetchLat_val\",\n \"Unit\": \"Cycles\",\n \"peak\": \"\",\n \"Percent of Peak - PoP\": \"\"\n\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n\n ]\n }}\n\n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"System Speed-of-Light\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"valu_flops_val\": {\n \"$avg\": { \"$divide\": [ { \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", \"&SQ_INSTS_VALU_TRANS_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }] }] }\n ]}\n ,{ \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }]\n }},\n \n \"valu_intOps_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_INT32\", \"&SQ_INSTS_VALU_INT64\"] }] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] }\n },\n \n \"mfma_flops_f16_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_bf16_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_f32_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_f64_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_i8_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \n \n \"salu_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_ACTIVE_INST_SCA\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2] }] }\n },\n \n \"valu_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_ACTIVE_INST_VALU\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2] }] }\n },\n \n \"mfma_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_VALU_MFMA_BUSY_CYCLES\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2, 4] }] }\n },\n \n \"lds_bconf\": {\n \"$avg\": {\"$cond\": [ {\"$ne\": [{\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 0]},\n {\"$divide\": [\n \"&SQ_LDS_BANK_CONFLICT\",\n {\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}\n ]},\n null\n ]\n } \n },\n \n \"lds_bw\": {\n \"$avg\": {\"$divide\":[ \n { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, \n 4, \n {\"$toInt\": \"$L2Banks2\"}\n ]}, \n {\"$subtract\": [\"&EndNs\", \"&BeginNs\"]}\n ]}\n },\n \n \"lds_bw_pop\": {\n \"$avg\": {\"$divide\": [\n {\"$divide\":[ \n { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, \n 4, \n {\"$toInt\": \"$L2Banks2\"}\n ]}, \n {\"$subtract\": [\"&EndNs\", \"&BeginNs\"]}\n ]}, \n {\"$multiply\": [$sclk2, $numCU2, 0.00128]}\n ]}\n },\n \n \"unpredthreads_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\":[\"&SQ_ACTIVE_INST_VALU\" , 0]},\n { \"$divide\": [\"&SQ_THREAD_CYCLES_VALU\", \"&SQ_ACTIVE_INST_VALU\"] },\n null\n ]\n }\n },\n \n \"ipcIssue_val\": {\n \"$avg\": { \"$divide\": [{ \"$add\": [\"&SQ_INSTS_VALU\", \"&SQ_INSTS_VMEM\", \"&SQ_INSTS_SALU\", \"&SQ_INSTS_SMEM\", \"&SQ_INSTS_GDS\", \"&SQ_INSTS_BRANCH\", \"&SQ_INSTS_SENDMSG\", \"&SQ_INSTS_VSKIPPED\"] }, \"&SQ_ACTIVE_INST_ANY\"] }\n },\n \"eaWriteLat_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_WRREQ_sum\" , 0]},\n { \"$divide\": [\"&TCC_EA_WRREQ_LEVEL_sum\", \"&TCC_EA_WRREQ_sum\"] },\n null \n ]\n }\n },\n \"eaReadLat_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_RDREQ_sum\" , 0]},\n { \"$divide\": [\"&TCC_EA_RDREQ_LEVEL_sum\", \"&TCC_EA_RDREQ_sum\"] },\n null \n ]\n }\n },\n \"eaWriteBW_val\": {\n \"$avg\": { \"$divide\": [{ \"$add\": [{ \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64] }, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] }] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] }\n }, \n \"eaReadBW_val\": {\n \"$avg\": { \"$divide\": [{ \"$add\": [{ \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32] }, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] }] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] }\n },\n \"l2_cacheHits_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&TCC_HIT_sum\", \"&TCC_MISS_sum\"] }, 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [\"&TCC_HIT_sum\", \"&TCC_MISS_sum\"] }] },\n null \n ]\n }\n },\n \"vecl1_cacheHits_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0]},\n { \"$subtract\": [100, { \"$divide\": [{ \"$multiply\": [100, { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }] }, \"&TCP_TOTAL_CACHE_ACCESSES_sum\"] }] },\n null\n ]\n }\n },\n \"vecl1_BW_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64 ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n },\n \"l1k_cacheHits_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\"]} , 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&SQC_DCACHE_HITS\"] }, { \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\"]}] },\n null\n ]\n }\n },\n \"l1i_hitRate_val\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQC_ICACHE_HITS\"] }, { \"$add\": [\"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_MISSES\"]}] }\n },\n \"l1i_BW_val\": {\n \"$avg\": { \"$multiply\": [{ \"$divide\": [\"&SQC_ICACHE_REQ\",{ \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }, 64] }\n },\n \"l1k_BW_val\": {\n \"$avg\": { \"$multiply\": [{ \"$divide\": [\"&SQC_DCACHE_REQ\", { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }, 64] }\n }\n \n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"VALU FLOPs\",\n \"Value\": \"&valu_flops_val\",\n \"Unit\": \"GFLOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 64, 2 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&valu_flops_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 64, 2 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"VALU IOPs\",\n \"Value\": \"&valu_intOps_val\",\n \"Unit\": \"GIOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 64, 2 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&valu_intOps_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 64, 2 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"MFMA FLOPs (BF16)\",\n \"Value\": \"&mfma_flops_bf16_val\",\n \"Unit\": \"GFLOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 512 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_bf16_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 512 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"MFMA FLOPs (F16)\",\n \"Value\": \"&mfma_flops_f16_val\",\n \"Unit\": \"GFLOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 1024 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f16_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 1024 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"MFMA FLOPs (F32)\",\n \"Value\": \"&mfma_flops_f32_val\",\n \"Unit\": \"GFLOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 256 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f32_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 256 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"MFMA FLOPs (F64)\",\n \"Value\": \"&mfma_flops_f64_val\",\n \"Unit\": \"GFLOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 256 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f64_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 256 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"MFMA IOPs (Int8)\",\n \"Value\": \"&mfma_flops_i8_val\",\n \"Unit\": \"GIOP\",\n \"peak\": { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 1024 ]}, 1000] },\n \"Percent of Peak - PoP\": {\n \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_i8_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 1024 ]}, 1000] }]\n }\n },\n {\n \"Metric\": \"Active CUs\",\n \"Value\": $numActiveCUs2,\n \"Unit\": \"CUs\",\n \"peak\": $numCU2,\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, $numActiveCUs2] }, $numCU2]}\n },\n \n {\n \"Metric\": \"SALU Util\",\n \"Value\": \"&salu_val\",\n \"Unit\": \"pct\",\n \"peak\": 100,\n \"Percent of Peak - PoP\": \"&salu_val\"\n },\n {\n \"Metric\": \"VALU Util\",\n \"Value\": \"&valu_val\",\n \"Unit\": \"pct\",\n \"peak\": 100,\n \"Percent of Peak - PoP\": \"&valu_val\"\n },\n {\n \"Metric\": \"MFMA Util\",\n \"Value\": \"&mfma_val\",\n \"Unit\": \"pct\",\n \"peak\": 100,\n \"Percent of Peak - PoP\": \"&mfma_val\"\n },\n {\n \"Metric\": \"VALU Active Threads/Wave\",\n \"Value\": \"&unpredthreads_val\",\n \"Unit\": \"Threads\",\n \"peak\": 64,\n \"Percent of Peak - PoP\": { \"$multiply\": [\"&unpredthreads_val\", 1.5625]}\n },\n {\n \"Metric\": \"IPC - Issue\",\n \"Value\": \"&ipcIssue_val\",\n \"Unit\": \"Instr/cycle\",\n \"peak\": 5,\n \"Percent of Peak - PoP\": {\"$divide\": [{ \"$multiply\": [100, \"&ipcIssue_val\"] }, 5] }\n },\n {\n \"Metric\": \"LDS BW\",\n \"Value\": \"&lds_bw\",\n \"Unit\": \"GB/sec\",\n \"peak\": {\"$multiply\": [$sclk2, $numCU2, 0.128]},\n \"Percent of Peak - PoP\": \"&lds_bw_pop\"\n },\n {\n \"Metric\": \"LDS Bank Conflict\",\n \"Value\": \"&lds_bconf\",\n \"Unit\": \"Conflicts/access\",\n \"peak\": \"32\",\n \"Percent of Peak - PoP\": {\"$divide\": [{ \"$multiply\": [100, \"&lds_bconf\"] }, 32] }\n },\n {\n \"Metric\": \"Instr Cache Hit Rate\",\n \"Value\": \"&l1i_hitRate_val\",\n \"Unit\": \"pct\",\n \"peak\": \"100\",\n \"Percent of Peak - PoP\": \"&l1i_hitRate_val\"\n }, \n {\n \"Metric\": \"Instr Cache BW\",\n \"Value\": \"&l1i_BW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk2, 1000] }, 64] }, $numSQC2]},\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&l1i_BW_val\"] }, { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk2, 1000] }, 64] }, $numSQC2]}] }\n },\n {\n \"Metric\": \"Scalar L1D Cache Hit Rate\",\n \"Value\": \"&l1k_cacheHits_val\",\n \"Unit\": \"pct\",\n \"peak\": \"100\",\n \"Percent of Peak - PoP\": \"&l1k_cacheHits_val\"\n },\n {\n \"Metric\": \"Scalar L1D Cache BW\",\n \"Value\": \"&l1k_BW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk2, 1000] }, 64] }, $numSQC2]},\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&l1k_BW_val\"] }, { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk2, 1000] }, 64] }, $numSQC2]}] }\n },\n\n {\n \"Metric\": \"Vector L1D Cache Hit Rate\",\n \"Value\": \"&vecl1_cacheHits_val\",\n \"Unit\": \"pct\",\n \"peak\": \"100\",\n \"Percent of Peak - PoP\": \"&vecl1_cacheHits_val\"\n },\n {\n \"Metric\": \"Vector L1D Cache BW\",\n \"Value\": \"&vecl1_BW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk2, 1000] }, 64] }, $numCU2]},\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&vecl1_BW_val\"] }, { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk2, 1000] }, 64] }, $numCU2]}] }\n },\n {\n \"Metric\": \"L2 Cache Hit Rate\",\n \"Value\": \"&l2_cacheHits_val\",\n \"Unit\": \"pct\",\n \"peak\": \"100\",\n \"Percent of Peak - PoP\": \"&l2_cacheHits_val\"\n }, \n {\n \"Metric\": \"L2-Fabric Read BW\",\n \"Value\": \"&eaReadBW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": \"$hbmBW2\",\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&eaReadBW_val\"] }, $hbmBW2] }\n },\n {\n \"Metric\": \"L2-Fabric Write BW\",\n \"Value\": \"&eaWriteBW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": \"$hbmBW2\",\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&eaWriteBW_val\"] }, $hbmBW2] }\n },\n {\n \"Metric\": \"L2-Fabric Read Latency\",\n \"Value\": \"&eaReadLat_val\",\n \"Unit\": \"Cycles\",\n \"peak\": \"\",\n \"Percent of Peak - PoP\": \"\"\n },\n {\n \"Metric\": \"L2-Fabric Write Latency\",\n \"Value\": \"&eaWriteLat_val\",\n \"Unit\": \"Cycles\",\n \"peak\": \"\",\n \"Percent of Peak - PoP\": \"\"\n }\n \n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }},\n {\"$unionWith\": {\n \"coll\": \"SQ_LEVEL_WAVES\",\n \"pipeline\": [\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"System Speed-of-Light\"}}\n }},\n \n {\"$group\": {\n \"_id\": null,\n \"waveOcc_val\": {\n \"$avg\": { \"$divide\": [\"&SQ_ACCUM_PREV_HIRES\", \"&GRBM_GUI_ACTIVE\"] }\n },\n \"waveOcc_pop\": {\n \"$avg\": { \"$divide\": [{ \"$divide\": [\"&SQ_ACCUM_PREV_HIRES\", \"&GRBM_GUI_ACTIVE\"] },{ \"$multiply\": [$maxWavesPerCU2, $numCU2] }] }\n }\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Wave Occupancy\",\n \"Value\": \"&waveOcc_val\",\n \"Unit\": \"Wavefronts\",\n \"peak\": { \"$multiply\": [$maxWavesPerCU2, $numCU2] },\n \"Percent of Peak - PoP\": { \"$multiply\": [100, \"&waveOcc_pop\"] }\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n\n ]\n }},\n {\"$unionWith\": {\n \"coll\": \"SQ_IFETCH_LEVEL\",\n \"pipeline\": [\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"System Speed-of-Light\"}}\n }},\n \n {\"$group\": {\n \"_id\": null,\n \"instrFetchBW_val\": {\n \"$avg\": { \"$multiply\": [{ \"$divide\": [\"&SQ_IFETCH\", { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] }, 32] }\n },\n \"instrFetchLat_val\": {\n \"$avg\": { \"$divide\": [\"&SQ_ACCUM_PREV_HIRES\", \"&SQ_IFETCH\"] }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Instr Fetch BW\",\n \"Value\": \"&instrFetchBW_val\",\n \"Unit\": \"GB/s\",\n \"peak\": { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk2, 1000] }, 32] }, $numSQC2]},\n \"Percent of Peak - PoP\": { \"$divide\": [{ \"$multiply\": [100, \"&instrFetchBW_val\"]}, { \"$multiply\": [$numSQC2, { \"$multiply\": [{ \"$divide\": [$sclk2, 1000] }, 32] }] }] }\n },\n {\n \"Metric\": \"Instr Fetch Latency\",\n \"Value\": \"&instrFetchLat_val\",\n \"Unit\": \"Cycles\",\n \"peak\": \"\",\n \"Percent of Peak - PoP\": \"\"\n\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]\n }}\n\n ]);", + "type": "table" + } + ], + "title": "Speed of Light", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Unit 2": true + }, + "indexByName": { + "Metric 1": 0, + "Metric 2": 7, + "Percent of Peak - PoP 1": 5, + "Percent of Peak - PoP 2": 6, + "Unit 1": 8, + "Unit 2": 9, + "Value 1": 1, + "Value 2": 2, + "peak 1": 3, + "peak 2": 4 + }, + "renameByName": { + "Percent of Peak - PoP": "Pct-of-Peak", + "Percent of Peak - PoP 1": "Pct-of-Peak (Current)", + "Percent of Peak - PoP 2": "Pct-of-Peak (Baseline)", + "Unit": "", + "Value": "Avg", + "Value 1": "Avg (Current)", + "Value 2": "Avg (Baseline)", + "peak": "Theoretical Max", + "peak 1": "Theoretical Max (Current)", + "peak 2": "Theoretical Max (Baseline)" + } + } + } + ], + "type": "table" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Dispatch ID" + }, + "properties": [ + { + "id": "custom.width", + "value": 126 + } + ] + } + ] + }, + "gridPos": { + "h": 29, + "w": 4, + "x": 16, + "y": 2 + }, + "id": 175, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "$Workload1.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"Dispatch ID\": \"&Index\",\n \"Kernel Name\": \"&KernelName\"\n }},\n {\"$sort\": {\n \"Dispatch ID\": 1\n }}\n],\n{ allowDiskUse: true }\n);", + "type": "table" + } + ], + "title": "Dispatch IDs - Current", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "_id": "Dispatch ID" + } + } + } + ], + "type": "table" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Dispatch ID" + }, + "properties": [ + { + "id": "custom.width", + "value": 127 + } + ] + } + ] + }, + "gridPos": { + "h": 29, + "w": 4, + "x": 20, + "y": 2 + }, + "id": 215, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "tlh8EwUnk" + }, + "rawQuery": true, + "refId": "A", + "target": "$Workload2.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"Dispatch ID\": \"&Index\",\n \"Kernel Name\": \"&KernelName\"\n }},\n {\"$sort\": {\n \"Dispatch ID\": 1\n }}\n]);", + "type": "table" + } + ], + "title": "Dispatch IDs - Baseline", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "_id": "Dispatch ID" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "System Speed-of-Light", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 2 + }, + "id": 36, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1 + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 157, + "options": { + "bucketOffset": 0, + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "bottom" + } + }, + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "u5Z2zJhnk" + }, + "hide": false, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n{\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"elapsedTime1\": {\n \"$divide\": [{\"$subtract\": [\"&EndNs\", \"&BeginNs\"]}, 1000]\n }\n }},\n\n {\"$project\": {\n \"_id\": 0,\n \"elapsedTime1\": 1\n }}\n]);", + "type": "table" + } + ], + "title": "Kernel Time Histogram", + "transparent": true, + "type": "histogram" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "transparent" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "TotalDuration" + }, + "properties": [ + { + "id": "unit", + "value": "ns" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg Duration" + }, + "properties": [ + { + "id": "unit", + "value": "ns" + }, + { + "id": "custom.width", + "value": 107 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "LDS" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + }, + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "L1 Cache" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + }, + { + "id": "custom.width", + "value": 95 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "L2 Cache" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + }, + { + "id": "custom.width", + "value": 123 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "HBM BW " + }, + "properties": [ + { + "id": "unit", + "value": "GBs" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Calls" + }, + "properties": [ + { + "id": "custom.width", + "value": 69 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Name" + }, + "properties": [ + { + "id": "custom.width", + "value": 165 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total Duration" + }, + "properties": [ + { + "id": "custom.width", + "value": 126 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "MFMA FLOPs (F16)" + }, + "properties": [ + { + "id": "custom.width", + "value": 143 + }, + { + "id": "decimals", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "MFMA FLOPs (BF16)" + }, + "properties": [ + { + "id": "custom.width", + "value": 155 + }, + { + "id": "decimals", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "MFMA FLOPs (F32)" + }, + "properties": [ + { + "id": "custom.width", + "value": 146 + }, + { + "id": "decimals", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "MFMA FLOPs (F64)" + }, + "properties": [ + { + "id": "custom.width", + "value": 146 + }, + { + "id": "decimals", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Throughput" + }, + "properties": [ + { + "id": "unit", + "value": "gflops" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total FLOPs" + }, + "properties": [ + { + "id": "decimals", + "value": 0 + }, + { + "id": "custom.width", + "value": 141 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "VALU FLOPs" + }, + "properties": [ + { + "id": "decimals", + "value": 0 + }, + { + "id": "custom.width", + "value": 130 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "AI (HBM)" + }, + "properties": [ + { + "id": "custom.width", + "value": 89 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "AI (L2 Cache)" + }, + "properties": [ + { + "id": "custom.width", + "value": 103 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "AI (L1 Cache)" + }, + "properties": [ + { + "id": "custom.width", + "value": 114 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Performance" + }, + "properties": [ + { + "id": "custom.width", + "value": 144 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Peak FLOPs" + }, + "properties": [ + { + "id": "unit", + "value": "gflops" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "HBM" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + } + ] + } + ] + }, + "gridPos": { + "h": 12, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 213, + "interval": "2h", + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "L1 Cache (Bytes)" + } + ] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "HV80ot2nz" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n\n { \"$group\": { \n \"_id\": \"&KernelName\", \n \"Calls\": { \"$sum\": 1} ,\n \"TotalDuration\": { \"$sum\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n \"AvgDuration\": { \"$avg\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n\n \"Throughput\": {\n \"$avg\": { \"$divide\": [\n \n {\"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }\n ]},\n {\"$subtract\": [\"&EndNs\", \"&BeginNs\"]}\n ]}\n },\n\n \"total_flops\": {\n \"$avg\":{\"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }\n ]}\n },\n\n \"valu_flops\": {\n \"$avg\": { \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] }\n ]}\n },\n \n \"mfma_flops_f16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] } },\n \"mfma_flops_bf16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] } },\n \"mfma_flops_f32\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] } },\n \"mfma_flops_f64\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] } },\n\n\n \"LDS_data\": {\n \"$avg\": { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 128 ]} \n },\n\n \"L1cache_data\": {\n \"$avg\": { \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64] } \n },\n\n \"L2cache_data\": {\n \"$avg\": {\n \"$multiply\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \n \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, 64]}\n },\n\n \"hbm_data\": {\n \"$avg\": {\n \"$add\": [ { \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] },\n { \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] }\n ]\n }\n },\n \"hbm_bw\": {\n \"$avg\": {\n \"$divide\": [\n {\n \"$add\": [ { \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] },\n { \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] }\n ]\n },\n {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}\n ]\n\n }\n }\n\n }},\n \n {\"$sort\": { \"TotalDuration\": -1 }},\n \n { \"$limit\": $TopN },\n\n {\"$addFields\": {\n \"ai_L1\": { \"$cond\": [\n {\"$ne\": [\"&L1cache_data\", 0]},\n {\"$divide\": [\"&total_flops\", \"&L1cache_data\"]},\n \"\"\n ]},\n \"ai_L2\": { \"$cond\": [\n {\"$ne\": [\"&L2cache_data\", 0]},\n {\"$divide\": [\"&total_flops\", \"&L2cache_data\"]},\n \"\"\n ]},\n \"ai_hbm\": { \"$cond\": [\n {\"$ne\": [\"&hbm_data\", 0]},\n {\"$divide\": [\"&total_flops\", \"&hbm_data\"]},\n \"\"\n ]}\n }}\n]);", + "type": "table" + } + ], + "title": "Top Kernels", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "AvgDuration": 5, + "Calls": 1, + "L1cache_data": 16, + "L2cache_data": 17, + "LDS_data": 15, + "Throughput": 2, + "TotalDuration": 4, + "_id": 0, + "ai_L1": 6, + "ai_L2": 7, + "ai_hbm": 8, + "hbm_bw": 3, + "hbm_data": 18, + "mfma_flops_bf16": 12, + "mfma_flops_f16": 11, + "mfma_flops_f32": 13, + "mfma_flops_f64": 14, + "total_flops": 9, + "valu_flops": 10 + }, + "renameByName": { + "AvgDuration": "Avg Duration", + "Calls": "", + "L1cache_data": "Vector L1D Cache", + "L2cache_data": "L2 Cache", + "LDS_data": "LDS", + "Throughput": "Performance", + "TotalDuration": "Total Duration", + "_id": "Name", + "ai_L1": "AI (Vector L1D Cache)", + "ai_L2": "AI (L2 Cache)", + "ai_hbm": "AI (HBM)", + "hbm_bw": "HBM BW ", + "hbm_data": "HBM", + "mfma_flops_bf16": "MFMA FLOPs (BF16)", + "mfma_flops_f16": "MFMA FLOPs (F16)", + "mfma_flops_f32": "MFMA FLOPs (F32)", + "mfma_flops_f64": "MFMA FLOPs (F64)", + "peak_flops": "Peak FLOPs", + "total_flops": "Total FLOPs", + "valu_flops": "VALU FLOPs" + } + } + } + ], + "type": "table" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "transparent" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "TotalDuration" + }, + "properties": [ + { + "id": "unit", + "value": "ns" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg Duration" + }, + "properties": [ + { + "id": "unit", + "value": "ns" + }, + { + "id": "custom.width", + "value": 138 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "LDS " + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + }, + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "L1 Cache" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + }, + { + "id": "custom.width", + "value": 95 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "L2 Cache" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + }, + { + "id": "custom.width", + "value": 87 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "HBM BW " + }, + "properties": [ + { + "id": "unit", + "value": "GBs" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Calls" + }, + "properties": [ + { + "id": "custom.width", + "value": 69 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Name" + }, + "properties": [ + { + "id": "custom.width", + "value": 165 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total Duration" + }, + "properties": [ + { + "id": "custom.width", + "value": 153 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "MFMA FLOPs (F16)" + }, + "properties": [ + { + "id": "custom.width", + "value": 143 + }, + { + "id": "decimals", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "MFMA FLOPs (BF16)" + }, + "properties": [ + { + "id": "custom.width", + "value": 155 + }, + { + "id": "decimals", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "MFMA FLOPs (F32)" + }, + "properties": [ + { + "id": "custom.width", + "value": 146 + }, + { + "id": "decimals", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "MFMA FLOPs (F64)" + }, + "properties": [ + { + "id": "custom.width", + "value": 146 + }, + { + "id": "decimals", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Throughput" + }, + "properties": [ + { + "id": "unit", + "value": "gflops" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total FLOPs" + }, + "properties": [ + { + "id": "decimals", + "value": 0 + }, + { + "id": "custom.width", + "value": 141 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "VALU FLOPs" + }, + "properties": [ + { + "id": "decimals", + "value": 0 + }, + { + "id": "custom.width", + "value": 130 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "AI (HBM)" + }, + "properties": [ + { + "id": "custom.width", + "value": 89 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "AI (L2 Cache)" + }, + "properties": [ + { + "id": "custom.width", + "value": 103 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "AI (L1 Cache)" + }, + "properties": [ + { + "id": "custom.width", + "value": 114 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "LDS (Bytes)" + }, + "properties": [ + { + "id": "custom.width", + "value": 98 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "HBM" + }, + "properties": [ + { + "id": "custom.width", + "value": 124 + }, + { + "id": "unit", + "value": "decbytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Dispatch" + }, + "properties": [ + { + "id": "custom.width", + "value": 108 + } + ] + } + ] + }, + "gridPos": { + "h": 12, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 251, + "interval": "2h", + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "HV80ot2nz" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n\n { \"$group\": { \n \"_id\": \"&Index\", \n \"Calls\": { \"$sum\": 1} ,\n \"TotalDuration\": { \"$sum\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n \"AvgDuration\": { \"$avg\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n\n \"Throughput\": {\n \"$avg\": { \"$divide\": [\n \n {\"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }\n ]},\n {\"$subtract\": [\"&EndNs\", \"&BeginNs\"]}\n ]}\n },\n\n \"total_flops\": {\n \"$avg\":{\"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }\n ]}\n },\n\n \"valu_flops\": {\n \"$avg\": { \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] }\n ]}\n },\n \n \"mfma_flops_f16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] } },\n \"mfma_flops_bf16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] } },\n \"mfma_flops_f32\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] } },\n \"mfma_flops_f64\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] } },\n\n\n \"LDS_data\": {\n \"$avg\": { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 128]\n } \n },\n\n \"L1cache_data\": {\n \"$avg\": { \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64] } \n },\n\n \"L2cache_data\": {\n \"$avg\": {\n \"$multiply\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \n \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, 64]}\n },\n\n \"hbm_data\": {\n \"$avg\": {\n \"$add\": [ { \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] },\n { \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] }\n ]\n }\n },\n\n \"hbm_bw\": {\n \"$avg\": {\n \"$divide\": [\n {\n \"$add\": [ { \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] },\n { \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] }\n ]\n },\n {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}\n ]\n\n }\n }\n\n }},\n \n {\"$sort\": { \"TotalDuration\": -1 }},\n { \"$limit\": $TopN },\n\n {\"$addFields\": {\n \"ai_L1\": { \"$cond\": [\n {\"$ne\": [\"&L1cache_data\", 0]},\n {\"$divide\": [\"&total_flops\", \"&L1cache_data\"]},\n \"\"\n ]},\n \"ai_L2\": { \"$cond\": [\n {\"$ne\": [\"&L2cache_data\", 0]},\n {\"$divide\": [\"&total_flops\", \"&L2cache_data\"]},\n \"\"\n ]},\n \"ai_hbm\": { \"$cond\": [\n {\"$ne\": [\"&hbm_data\", 0]},\n {\"$divide\": [\"&total_flops\", \"&hbm_data\"]},\n \"\"\n ]}\n\n }}\n]);", + "type": "table" + } + ], + "title": "Top Dispatches", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "AvgDuration": 5, + "Calls": 1, + "L1cache_data": 16, + "L2cache_data": 17, + "LDS_data": 15, + "Throughput": 2, + "TotalDuration": 4, + "_id": 0, + "ai_L1": 6, + "ai_L2": 7, + "ai_hbm": 8, + "hbm_bw": 3, + "hbm_data": 18, + "mfma_flops_bf16": 12, + "mfma_flops_f16": 11, + "mfma_flops_f32": 13, + "mfma_flops_f64": 14, + "peak_flops": 19, + "total_flops": 9, + "valu_flops": 10 + }, + "renameByName": { + "AvgDuration": "Avg Duration", + "Calls": "", + "L1cache_data": "Vector L1D Cache", + "L2cache_data": "L2 Cache", + "LDS_data": "LDS ", + "Throughput": "Performance", + "TotalDuration": "Total Duration", + "_id": "Dispatch", + "ai_L1": "AI (Vector L1D Cache)", + "ai_L2": "AI (L2 Cache)", + "ai_hbm": "AI (HBM)", + "hbm_bw": "HBM BW ", + "hbm_data": "HBM", + "mfma_flops_bf16": "MFMA FLOPs (BF16)", + "mfma_flops_f16": "MFMA FLOPs (F16)", + "mfma_flops_f32": "MFMA FLOPs (F32)", + "mfma_flops_f64": "MFMA FLOPs (F64)", + "total_flops": "Total FLOPs", + "valu_flops": "VALU FLOPs" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Kernel Statistics", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 40, + "panels": [ + { + "description": "All transaction units default to Billion, when per-sec norm is used", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 285, + "options": { + "addAllIDs": false, + "captureMappings": false, + "eventAutoComplete": true, + "eventSource": "options.animateLogo(svgmap, data);\r\nconsole.log(\"Starting render\");\r\nlet buff = data.series[0].fields[2].values.buffer;\r\nlet valueCount = buff.length;\r\nconsole.log(\"The buff is \", valueCount, \" long\");\r\n\r\nsvgmap.wave_life_.text(buff[0]);\r\nsvgmap.active_cu_.text(buff[1]);\r\nsvgmap.salu_.text(buff[2]);\r\nsvgmap.smem_.text(buff[3]);\r\nsvgmap.valu_.text(buff[4]);\r\nsvgmap.mfma_.text(buff[5]);\r\nsvgmap.vmem_.text(buff[6]);\r\nsvgmap.lds_.text(buff[7]);\r\nsvgmap.gws_.text(buff[8]);\r\nsvgmap.br_.text(buff[9]);\r\nsvgmap.vgpr_.text(buff[10]);\r\nsvgmap.sgpr_.text(buff[11]);\r\nsvgmap.lds_alloc_.text(buff[12]);\r\nsvgmap.scratch_alloc_.text(buff[13]);\r\nsvgmap.wavefronts_.text(buff[14]);\r\nsvgmap.workgroups_.text(buff[15]);\r\nsvgmap.lds_req_.text(buff[16]);\r\nsvgmap.il1_fetch_.text(buff[17]);\r\nsvgmap.il1_hit_.text(buff[18]);\r\nsvgmap.il1_l2_rd_.text(buff[19]);\r\nsvgmap.sl1_rd_.text(buff[20]);\r\nsvgmap.sl1_hit_.text(buff[21]);\r\nsvgmap.sl1_l2_rd_.text(buff[22]);\r\nsvgmap.sl1_l2_wr_.text(buff[23]);\r\nsvgmap.sl1_l2_atom_.text(buff[24]);\r\nsvgmap.vl1_rd_.text(buff[25]);\r\nsvgmap.vl1_wr_.text(buff[26]);\r\nsvgmap.vl1_atom_.text(buff[27]);\r\nsvgmap.vl1_hit_.text(buff[28]);\r\nsvgmap.vl1_lat_.text(buff[29]);\r\nsvgmap.vl1_l2_rd_.text(buff[30]);\r\nsvgmap.vl1_l2_wr_.text(buff[31]);\r\nsvgmap.vl1_l2_atom_.text(buff[32]);\r\nsvgmap.l2_rd_.text(buff[33]);\r\nsvgmap.l2_wr_.text(buff[34])\r\nsvgmap.l2_atom_.text(buff[35]);\r\nsvgmap.l2_hit_.text(buff[36]);\r\nsvgmap.l2_rd_lat_.text(buff[37]);\r\nsvgmap.l2_wr_lat_.text(buff[38]);\r\nsvgmap.fabric_rd_lat_.text(buff[39]);\r\nsvgmap.fabric_wr_lat_.text(buff[40]);\r\nsvgmap.fabric_atom_lat_.text(buff[41]);\r\nsvgmap.l2_fabric_rd_.text(buff[42]);\r\nsvgmap.l2_fabric_wr_.text(buff[43]);\r\nsvgmap.l2_fabric_atom_.text(buff[44]);\r\nsvgmap.hbm_rd_.text(buff[45]);\r\nsvgmap.hbm_wr_.text(buff[46]);\r\nsvgmap.lds_util_.text(buff[47]);\r\nsvgmap.vl1_coales_.text(buff[48]);\r\nsvgmap.vl1_stall_.text(buff[49]);\r\nsvgmap.wave_occ_.text(buff[50]);\r\nsvgmap.lds_lat_.text(buff[51]);\r\nsvgmap.il1_lat_.text(buff[52]);\r\nsvgmap.sl1_lat_.text(buff[53]);\r\nsvgmap.gds_req_.text(buff[54]);", + "initAutoComplete": true, + "initSource": "options.animateLogo = (svgmap, data) => {\r\n \r\n}\r\n ", + "svgMappings": [ + { + "mappedName": "wave_life_", + "svgId": "wave_life" + }, + { + "mappedName": "wave_occ_", + "svgId": "wave_occ" + }, + { + "mappedName": "salu_", + "svgId": "salu" + }, + { + "mappedName": "smem_", + "svgId": "smem" + }, + { + "mappedName": "valu_", + "svgId": "valu" + }, + { + "mappedName": "mfma_", + "svgId": "mfma" + }, + { + "mappedName": "vmem_", + "svgId": "vmem" + }, + { + "mappedName": "lds_", + "svgId": "lds" + }, + { + "mappedName": "gws_", + "svgId": "gws" + }, + { + "mappedName": "br_", + "svgId": "br" + }, + { + "mappedName": "active_cu_", + "svgId": "active_cu" + }, + { + "mappedName": "vgpr_", + "svgId": "vgpr" + }, + { + "mappedName": "sgpr_", + "svgId": "sgpr" + }, + { + "mappedName": "lds_alloc_", + "svgId": "lds_alloc" + }, + { + "mappedName": "scratch_alloc_", + "svgId": "scratch_alloc" + }, + { + "mappedName": "wavefronts_", + "svgId": "wavefronts" + }, + { + "mappedName": "workgroups_", + "svgId": "workgroups" + }, + { + "mappedName": "lds_req_", + "svgId": "lds_req" + }, + { + "mappedName": "vl1_wr_", + "svgId": "vl1_wr" + }, + { + "mappedName": "vl1_atom_", + "svgId": "vl1_atom" + }, + { + "mappedName": "sl1_rd_", + "svgId": "sl1_rd" + }, + { + "mappedName": "il1_fetch_", + "svgId": "il1_fetch" + }, + { + "mappedName": "lds_lat_", + "svgId": "lds_lat" + }, + { + "mappedName": "lds_bw_", + "svgId": "lds_bw" + }, + { + "mappedName": "lds_util_", + "svgId": "lds_util" + }, + { + "mappedName": "vl1_hit_", + "svgId": "vl1_hit" + }, + { + "mappedName": "vl1_lat_", + "svgId": "vl1_lat" + }, + { + "mappedName": "vl1_coales_", + "svgId": "vl1_coales" + }, + { + "mappedName": "vl1_stall_", + "svgId": "vl1_stall" + }, + { + "mappedName": "sl1_hit_", + "svgId": "sl1_hit" + }, + { + "mappedName": "sl1_lat_", + "svgId": "sl1_lat" + }, + { + "mappedName": "il1_hit_", + "svgId": "il1_hit" + }, + { + "mappedName": "il1_lat_", + "svgId": "il1_lat" + }, + { + "mappedName": "sl1_l2_rd_", + "svgId": "sl1_l2_rd" + }, + { + "mappedName": "sl1_l2_wr_", + "svgId": "sl1_l2_wr" + }, + { + "mappedName": "sl1_l2_atom_", + "svgId": "sl1_l2_atom" + }, + { + "mappedName": "il1_l2_rd_", + "svgId": "il1_l2_rd" + }, + { + "mappedName": "sl1_l2_rd_", + "svgId": "sl1_l2_rd" + }, + { + "mappedName": "sl1_l2_wr_", + "svgId": "sl1_l2_wr" + }, + { + "mappedName": "sl1_l2_atom_", + "svgId": "sl1_l2_atom" + }, + { + "mappedName": "l2_rd_", + "svgId": "l2_rd" + }, + { + "mappedName": "l2_wr_", + "svgId": "l2_wr" + }, + { + "mappedName": "l2_atom_", + "svgId": "l2_atom" + }, + { + "mappedName": "l2_hit_", + "svgId": "l2_hit" + }, + { + "mappedName": "l2_rd_lat_", + "svgId": "l2_rd_lat" + }, + { + "mappedName": "l2_wr_lat_", + "svgId": "l2_wr_lat" + }, + { + "mappedName": "l2_fabric_rd_", + "svgId": "l2_fabric_rd" + }, + { + "mappedName": "l2_fabric_wr_", + "svgId": "l2_fabric_wr" + }, + { + "mappedName": "l2_fabric_atom_", + "svgId": "l2_fabric_atom" + }, + { + "mappedName": "fabric_rd_lat_", + "svgId": "fabric_rd_lat" + }, + { + "mappedName": "fabric_wr_lat_", + "svgId": "fabric_wr_lat" + }, + { + "mappedName": "fabric_atom_lat_", + "svgId": "fabric_atom_lat" + }, + { + "mappedName": "fabric_hbm_rd_", + "svgId": "fabric_hbm_rd" + }, + { + "mappedName": "fabric_hbm_wr_", + "svgId": "fabric_hbm_wr" + }, + { + "mappedName": "vl1_rd_", + "svgId": "vl1_rd" + }, + { + "mappedName": "vl1_l2_rd_", + "svgId": "vl1_l2_rd" + }, + { + "mappedName": "vl1_l2_wr_", + "svgId": "vl1_l2_wr" + }, + { + "mappedName": "vl1_l2_atom_", + "svgId": "vl1_l2_atom" + }, + { + "mappedName": "hbm_rd_", + "svgId": "hbm_rd" + }, + { + "mappedName": "hbm_wr_", + "svgId": "hbm_wr" + } + ], + "svgSource": "\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Wave Occupancy\r\n \r\n Wave Life\r\n \r\n \r\n \r\n xGMI /\r\n PCIe\r\n \r\n GMI\r\n \r\n HBM\r\n \r\n Fabric\r\n \r\n \r\n SALU:\r\n 00000\r\n \r\n \r\n SMEM:\r\n 00000\r\n \r\n \r\n VALU:\r\n 00000\r\n \r\n \r\n MFMA:\r\n 00000\r\n \r\n \r\n VMEM:\r\n 00000\r\n \r\n \r\n LDS:\r\n 00000\r\n \r\n \r\n GWS:\r\n 00000\r\n \r\n \r\n Br:\r\n 00000\r\n \r\n \r\n cycles\r\n Rd:\r\n 00000\r\n \r\n \r\n cycles\r\n Wr:\r\n 00000\r\n \r\n \r\n cycles\r\n Atomic:\r\n 00000\r\n \r\n \r\n Rd:\r\n 00000\r\n \r\n \r\n Wr:\r\n \r\n \r\n 00000\r\n \r\n \r\n Atomic:\r\n 00000\r\n \r\n \r\n cycles\r\n Lat:\r\n 00000\r\n \r\n \r\n %\r\n Hit:\r\n 00000\r\n \r\n \r\n cycles\r\n Lat:\r\n 00000\r\n \r\n \r\n %\r\n Hit:\r\n 00000\r\n \r\n \r\n cycles\r\n Lat:\r\n 00000\r\n 00000\r\n Rd:\r\n 00000\r\n Wr:\r\n 00000\r\n Req:\r\n 00000\r\n 00000\r\n 00000\r\n Rd:\r\n Wr:\r\n Atomic:\r\n per-GCD\r\n cycles\r\n \r\n \r\n %\r\n Hit:\r\n 00000\r\n \r\n \r\n cycles\r\n Rd:\r\n 00000\r\n \r\n \r\n cycles\r\n Wr:\r\n 00000\r\n Wave 0 Instr buff\r\n Wave N-1 Instr buff\r\n Active CUs\r\n \r\n \r\n %\r\n Hit:\r\n 00000\r\n \r\n \r\n cycles\r\n Lat:\r\n 00000\r\n \r\n \r\n %\r\n Util:\r\n 00000\r\n \r\n \r\n %\r\n Coales:\r\n 00000\r\n Exec\r\n Instr Buff\r\n Instr Dispatch\r\n LDS\r\n Vector L1 Cache\r\n Scalar L1D Cache\r\n Instr L1 Cache\r\n L2 Cache\r\n 00000\r\n Req:\r\n \r\n \r\n %\r\n Stall:\r\n 00000\r\n 00000\r\n Fetch:\r\n 0000000\r\n 00000\r\n 000/000\r\n \r\n Latency\r\n \r\n LDS Alloc:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 00000\r\n \r\n Scratch Alloc:\r\n \r\n 00000\r\n \r\n Wavefronts:\r\n \r\n 00000\r\n \r\n Workgroups:\r\n \r\n 00000\r\n \r\n VGPRs:\r\n \r\n 00000\r\n \r\n SGPRs:\r\n \r\n 00000\r\n \r\n \r\n 00000\r\n Rd:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 00000\r\n 00000\r\n 00000\r\n Rd:\r\n Wr:\r\n Atomic:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 00000\r\n 00000\r\n 00000\r\n Rd:\r\n Wr:\r\n Atomic:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 00000\r\n 00000\r\n 00000\r\n Rd:\r\n Wr:\r\n Atomic:\r\n \r\n \r\n \r\n Latency\r\n \r\n \r\n \r\n \r\n Text is not SVG - cannot display\r\n \r\n \r\n" + }, + "pluginVersion": "8.4.0", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "rawQuery": true, + "refId": "pmc_perf", + "target": "$Workload1.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"wave_life\": {\n \"$avg\": {\n \"$cond\": [\n { \"$ne\": [\"&SQ_WAVES\", 0] },\n { \"$multiply\": [4, { \"$divide\": [\"&SQ_WAVE_CYCLES\", \"&SQ_WAVES\"] }] },\n null\n ]\n }\n },\n \"salu\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_SALU\", \"&denom\" ] }\n },\n \"smem\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_SMEM\", \"&denom\" ] }\n },\n \"valu\": {\n \"$avg\": { \"$divide\": [\"&SQ_INSTS_VALU\", \"&denom\"] }\n },\n \"mfma\": {\n \"$avg\": { \"$divide\": [\"&SQ_INSTS_MFMA\", \"&denom\"] }\n },\n \"vmem\": {\n \"$avg\": { \"$divide\": [\"&SQ_INSTS_VMEM\", \"&denom\"] }\n },\n \"lds_instr\": {\n \"$avg\": { \"$divide\": [\"&SQ_INSTS_LDS\", \"&denom\"] }\n },\n \"gws\": {\n \"$avg\": { \"$divide\": [\"&SQ_INSTS_GDS\", \"&denom\"] }\n },\n \"br\": {\n \"$avg\": { \"$divide\": [\"&SQ_INSTS_BRANCH\", \"&denom\"] }\n },\n \"vgpr\": {\n \"$avg\": \"&vgpr\"\n },\n \"sgpr\": {\n \"$avg\": \"&sgpr\"\n },\n \"lds_alloc\": {\n \"$avg\": \"&lds\"\n },\n \"scratch_alloc\": {\n \"$avg\": \"&scr\"\n },\n \"wavefronts\": {\n \"$avg\": \"&SPI_CSN_WAVE\"\n },\n \"workgroups\": {\n \"$avg\": \"&SPI_CSN_NUM_THREADGROUPS\"\n },\n \"lds_req\": {\n \"$avg\": { \"$divide\": [\"&SQ_INSTS_LDS\", \"&denom\"] }\n }, \n \"lds_util\": {\n \"$avg\": {\"$divide\":[ \n { \"$multiply\": [ 100, \"&SQ_LDS_IDX_ACTIVE\" ]}, \n {\"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}\n ]}\n },\n \"vl1_rd\": {\n \"$avg\": { \"$divide\": [\"&TCP_TOTAL_READ_sum\", \"&denom\"] }\n },\n \"vl1_wr\": {\n \"$avg\": { \"$divide\": [\"&TCP_TOTAL_WRITE_sum\", \"&denom\"] }\n },\n \"vl1_atom\": {\n \"$avg\": { \"$divide\": [{ \"$add\": [\"&TCP_TOTAL_ATOMIC_WITH_RET_sum\", \"&TCP_TOTAL_ATOMIC_WITHOUT_RET_sum\"] }, \"&denom\"] }\n },\n \"il1_fetch\": {\n \"$avg\": { \"$divide\": [\"&SQC_ICACHE_REQ\", \"&denom\"] }\n },\n \"il1_hit\": {\n \"$avg\": { \"$divide\": [\"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_REQ\"] }\n },\n \"il1_l2_req\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_INST_REQ\", \"&denom\"] }\n },\n \"sl1_rd\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ\", \"&denom\"] }\n },\n \"sl1_hit\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQC_DCACHE_REQ\", 0]},\n { \"$divide\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_REQ\"] },\n \"\"\n ]\n }\n},\n \"sl1_l2_rd\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_DATA_READ_REQ\", \"&denom\"] }\n },\n \"sl1_l2_wr\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_DATA_WRITE_REQ\", \"&denom\"] }\n },\n \"sl1_l2_atom\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_DATA_ATOMIC_REQ\", \"&denom\"] }\n },\n \"vl1_hit\": {\n \"$avg\": {\n \"$cond\": [\n { \"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0] },\n { \"$subtract\": [100, { \"$divide\": [{ \"$multiply\": [100, { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }] }, \"&TCP_TOTAL_CACHE_ACCESSES_sum\"] }] },\n null\n ]\n }\n },\n \"vl1_lat\": {\n \"$avg\": { \n \"$cond\": [\n { \"$ne\": [\"&TCP_TA_TCP_STATE_READ_sum\", 0] },\n { \"$divide\": [\"&TCP_TCP_LATENCY_sum\", \"&TCP_TA_TCP_STATE_READ_sum\"] },\n null\n ]\n }\n },\n \"vl1_coales\": {\n \"$avg\": {\n \"$cond\": [ {\"$ne\": [\"&TCP_TOTAL_ACCESSES_sum\", 0] },\n { \"$divide\": [{\"$multiply\": [\"&TA_TOTAL_WAVEFRONTS_sum\", 64, 100]}, {\"$multiply\": [\"&TCP_TOTAL_ACCESSES_sum\", 4]}] },\n 0\n ]\n }\n },\n \"vl1_stall\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_TCR_TCP_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n \"\"\n ]\n }},\n \"vl1_l2_rd\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_READ_REQ_sum\", \"&denom\"] }\n },\n \"vl1_l2_wr\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"vl1_l2_atom\": {\n \"$avg\": { \"$divide\": [{ \"$add\": [\"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, \"&denom\"] }\n },\n \"l2_rd\": {\n \"$avg\": { \"$divide\": [\"&TCC_READ_sum\", \"&denom\"] }\n },\n \"l2_wr\": {\n \"$avg\": { \"$divide\": [\"&TCC_WRITE_sum\", \"&denom\"] }\n },\n \"l2_atom\": {\n \"$avg\": { \"$divide\": [\"&TCC_ATOMIC_sum\", \"&denom\"] }\n },\n \"l2_hit\": {\n \"$avg\": {\n \"$cond\": [\n { \"$ne\": [{ \"$add\": [\"&TCC_HIT_sum\", \"&TCC_MISS_sum\"] }, 0] },\n { \"$divide\": [{ \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [\"&TCC_HIT_sum\", \"&TCC_MISS_sum\"] }] },\n null\n ]\n }\n },\n \"l2_rd_lat\": {\n \"$avg\": {\n \"$cond\": [\n { \"$ne\": [{ \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"] }, 0] },\n { \"$divide\": [\"&TCP_TCC_READ_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"] }] },\n null\n ]\n }\n },\n \"l2_wr_lat\": {\n \"$avg\": {\n \"$cond\": [\n { \"$ne\": [{ \"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, 0] },\n { \"$divide\": [\"&TCP_TCC_WRITE_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }] },\n null\n ]\n }\n },\n \"fabric_rd_lat\": {\n \"$avg\": {\n \"$cond\": [\n { \"$ne\": [\"&TCC_EA_RDREQ_sum\", 0] },\n { \"$divide\": [\"&TCC_EA_RDREQ_LEVEL_sum\", \"&TCC_EA_RDREQ_sum\"] },\n null\n ]\n }\n },\n \"fabric_wr_lat\": { \n \"$avg\": {\n \"$cond\": [\n { \"$ne\": [\"&TCC_EA_WRREQ_sum\", 0] },\n { \"$divide\": [\"&TCC_EA_WRREQ_LEVEL_sum\", \"&TCC_EA_WRREQ_sum\"] },\n null\n ]\n }\n },\n \"fabric_atom_lat\": {\n \"$avg\": {\n \"$cond\": [\n { \"$ne\": [\"&TCC_EA_ATOMIC_sum\", 0] },\n { \"$divide\": [\"&TCC_EA_ATOMIC_LEVEL_sum\", \"&TCC_EA_ATOMIC_sum\"] },\n null\n ]\n }\n },\n \"l2_fabric_rd\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_RDREQ_sum\", \"&denom\"] }\n },\n \"l2_fabric_wr\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_WRREQ_sum\", \"&denom\"] }\n },\n \"l2_fabric_atom\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_ATOMIC_sum\", \"&denom\"] }\n },\n \"hbm_rd\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_RDREQ_DRAM_sum\", \"&denom\"] }\n },\n \"hbm_wr\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_WRREQ_DRAM_sum\", \"&denom\"] }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Wave Life\",\n \"Alias\": \"wave_life_\",\n \"Value\": { \"$round\": [\"&wave_life\", 0] }\n },\n {\n \"Metric\": \"Active CUs\",\n \"Alias\": \"active_cu_\",\n \"Value\": {\"$concat\": [\"$numActiveCUs\", \"/\", \"$numCU\"]}\n },\n {\n \"Metric\": \"SALU\",\n \"Alias\": \"salu_\",\n \"Value\": { \"$round\": [\"&salu\", 0] }\n },\n {\n \"Metric\": \"SMEM\",\n \"Alias\": \"smem_\",\n \"Value\": { \"$round\": [\"&smem\", 0] }\n },\n {\n \"Metric\": \"VALU\",\n \"Alias\": \"valu_\",\n \"Value\": { \"$round\": [\"&valu\", 0] }\n },\n {\n \"Metric\": \"MFMA\",\n \"Alias\": \"mfma_\",\n \"Value\": { \"$round\": [\"&mfma\", 0] }\n },\n {\n \"Metric\": \"VMEM\",\n \"Alias\": \"vmem_\",\n \"Value\": { \"$round\": [\"&vmem\", 0] }\n },\n {\n \"Metric\": \"LDS\",\n \"Alias\": \"lds_\",\n \"Value\": { \"$round\": [\"&lds_instr\", 0] }\n },\n {\n \"Metric\": \"GWS\",\n \"Alias\": \"gws_\",\n \"Value\": { \"$round\": [\"&gws\", 0] }\n },\n {\n \"Metric\": \"BR\",\n \"Alias\": \"br_\",\n \"Value\": { \"$round\": [\"&br\", 0] }\n },\n {\n \"Metric\": \"VGPR\",\n \"Alias\": \"vgpr_\",\n \"Value\": { \"$round\": [\"&vgpr\", 0] }\n },\n {\n \"Metric\": \"SGPR\",\n \"Alias\": \"sgpr_\",\n \"Value\": { \"$round\": [\"&sgpr\", 0] }\n },\n {\n \"Metric\": \"LDS Allocation\",\n \"Alias\": \"lds_alloc_\",\n \"Value\": { \"$round\": [\"&lds_alloc\", 0] }\n },\n {\n \"Metric\": \"Scratch Allocation\",\n \"Alias\": \"scratch_alloc_\",\n \"Value\": { \"$round\": [\"&scratch_alloc\", 0] }\n },\n {\n \"Metric\": \"Wavefronts\",\n \"Alias\": \"wavefronts_\",\n \"Value\": { \"$round\": [\"&wavefronts\", 0] }\n },\n {\n \"Metric\": \"Workgroups\",\n \"Alias\": \"workgroups_\",\n \"Value\": { \"$round\": [\"&workgroups\", 0] }\n },\n {\n \"Metric\": \"LDS Req\",\n \"Alias\": \"lds_req_\",\n \"Value\": { \"$round\": [\"&lds_req\", 0] }\n },\n {\n \"Metric\": \"IL1 Fetch\",\n \"Alias\": \"il1_fetch_\",\n \"Value\": { \"$round\": [\"&il1_fetch\", 0] }\n },\n {\n \"Metric\": \"IL1 Hit\",\n \"Alias\": \"il1_hit_\",\n \"Value\": { \"$round\": [{ \"$multiply\": [\"&il1_hit\", 100] }, 0] }\n },\n {\n \"Metric\": \"IL1_L2 Rd\",\n \"Alias\": \"il1_l2_req_\",\n \"Value\": { \"$round\": [\"&il1_l2_req\", 0] }\n },\n {\n \"Metric\": \"vL1D Rd\",\n \"Alias\": \"sl1_rd_\",\n \"Value\": { \"$round\": [\"&sl1_rd\", 0] }\n },\n {\n \"Metric\": \"vL1D Hit\",\n \"Alias\": \"sl1_hit_\",\n \"Value\": { \"$round\": [{ \"$multiply\": [\"&sl1_hit\", 100] }, 0] }\n },\n {\n \"Metric\": \"vL1D_L2 Rd\",\n \"Alias\": \"sl1_l2_rd_\",\n \"Value\": { \"$round\": [\"&sl1_l2_rd\", 0] }\n },\n {\n \"Metric\": \"vL1D_L2 Wr\",\n \"Alias\": \"sl1_l2_wr_\",\n \"Value\": { \"$round\": [\"&sl1_l2_wr\", 0] }\n },\n {\n \"Metric\": \"vL1D_L2 Atomic\",\n \"Alias\": \"sl1_l2_atom_\",\n \"Value\": { \"$round\": [\"&sl1_l2_atom\", 0] }\n },\n {\n \"Metric\": \"VL1 Rd\",\n \"Alias\": \"vl1_rd_\",\n \"Value\": { \"$round\": [\"&vl1_rd\", 0] }\n },\n {\n \"Metric\": \"VL1 Wr\",\n \"Alias\": \"vl1_wr_\",\n \"Value\": { \"$round\": [\"&vl1_wr\", 0] }\n },\n {\n \"Metric\": \"VL1 Atomic\",\n \"Alias\": \"vl1_atom_\",\n \"Value\": { \"$round\": [\"&vl1_atom\", 0] }\n },\n {\n \"Metric\": \"VL1 Hit\",\n \"Alias\": \"vl1_hit_\",\n \"Value\": { \"$round\": [\"&vl1_hit\", 0] }\n },\n {\n \"Metric\": \"VL1 Lat\",\n \"Alias\": \"vl1_lat_\",\n \"Value\": { \"$round\": [\"&vl1_lat\", 0] }\n },\n {\n \"Metric\": \"VL1_L2 Rd\",\n \"Alias\": \"vl1_l2_rd_\",\n \"Value\": { \"$round\": [\"&vl1_l2_rd\", 0] }\n },\n {\n \"Metric\": \"VL1_L2 Wr\",\n \"Alias\": \"vl1_l2_wr_\",\n \"Value\": { \"$round\": [\"&vl1_l2_wr\", 0] }\n },\n {\n \"Metric\": \"vL1_L2 Atomic\",\n \"Alias\": \"vl1_l2_atom_\",\n \"Value\": { \"$round\": [\"&vl1_l2_atom\", 0] }\n },\n {\n \"Metric\": \"L2 Rd\",\n \"Alias\": \"l2_rd_\",\n \"Value\": { \"$round\": [\"&l2_rd\", 0] }\n },\n {\n \"Metric\": \"L2 Wr\",\n \"Alias\": \"l2_wr_\",\n \"Value\": { \"$round\": [\"&l2_wr\", 0] }\n },\n {\n \"Metric\": \"L2 Atomic\",\n \"Alias\": \"l2_atom_\",\n \"Value\": { \"$round\": [\"&l2_atom\", 0] }\n },\n {\n \"Metric\": \"L2 Hit\",\n \"Alias\": \"l2_hit_\",\n \"Value\": { \"$round\": [\"&l2_hit\", 0] }\n },\n {\n \"Metric\": \"L2 Rd Lat\",\n \"Alias\": \"l2_rd_lat_\",\n \"Value\": { \"$round\": [\"&l2_rd_lat\", 0] }\n },\n {\n \"Metric\": \"L2 Wr Lat\",\n \"Alias\": \"l2_wr_lat_\",\n \"Value\": { \"$round\": [\"&l2_wr_lat\", 0] }\n },\n {\n \"Metric\": \"Fabric Rd Lat\",\n \"Alias\": \"fabric_rd_lat_\",\n \"Value\": { \"$round\": [\"&fabric_rd_lat\", 0] }\n },\n {\n \"Metric\": \"Fabric Wr Lat\",\n \"Alias\": \"fabric_wr_lat_\",\n \"Value\": { \"$round\": [\"&fabric_wr_lat\", 0] }\n },\n {\n \"Metric\": \"Fabric Atomic Lat\",\n \"Alias\": \"fabric_atom_lat_\",\n \"Value\": { \"$round\": [\"&fabric_atom_lat\", 0] }\n },\n {\n \"Metric\": \"Fabric_L2 Rd\",\n \"Alias\": \"l2_fabric_rd_\",\n \"Value\": { \"$round\": [\"&l2_fabric_rd\", 0] }\n },\n {\n \"Metric\": \"Fabric_L2 Wr\",\n \"Alias\": \"l2_fabric_wr_\",\n \"Value\": { \"$round\": [\"&l2_fabric_wr\", 0] }\n },\n {\n \"Metric\": \"Fabric_l2 Atomic\",\n \"Alias\": \"l2_fabric_atom_\",\n \"Value\": { \"$round\": [\"&l2_fabric_atom\", 0] }\n },\n {\n \"Metric\": \"HBM Rd\",\n \"Alias\": \"hbm_rd_\",\n \"Value\": { \"$round\": [\"&hbm_rd\", 0] }\n },\n {\n \"Metric\": \"HBM Wr\",\n \"Alias\": \"hbm_wr_\",\n \"Value\": { \"$round\": [\"&hbm_wr\", 0] }\n },\n {\n \"Metric\": \"LDS Util\",\n \"Alias\": \"lds_util_\",\n \"Value\": { \"$round\": [\"&lds_util\", 0] }\n },\n {\n \"Metric\": \"VL1 Coalesce\",\n \"Alias\": \"vl1_coales_\",\n \"Value\": { \"$round\": [\"&vl1_coales\", 0]}\n },\n {\n \"Metric\": \"VL1 Stall\",\n \"Alias\": \"vl1_stall_\",\n \"Value\": { \"$round\": [\"&vl1_stall\", 0]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"$array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"$array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQ_LEVEL_WAVES", + "target": "$Workload1.SQ_LEVEL_WAVES.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"wave_occ\": {\n \"$avg\": { \"$divide\": [{ \"$divide\": [\"&SQ_ACCUM_PREV_HIRES\",\"&GRBM_GUI_ACTIVE\"] }, $numActiveCUs]}\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Wave Occupancy\",\n \"Alias\": \"wave_occ_\",\n \"Value\":{ \"$round\": [\"&wave_occ\", 0] }\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQ_INST_LEVEL_LDS", + "target": "$Workload1.SQ_INST_LEVEL_LDS.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"lds_lat\": {\n \"$avg\": { \n \"$cond\": [\n { \"$ne\": [\"&SQ_INSTS_LDS\", 0] },\n { \"$divide\": [\"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\"] },\n null\n ]\n }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"LDS Lat\",\n \"Alias\": \"lds_lat_\",\n \"Value\":{ \"$round\": [\"&lds_lat\", 0] }\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQC_ICACHE_INFLIGHT", + "target": "$Workload1.pmc_perf.aggregate([\n\t{\"$match\": {\n\t\t\"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \t\t\"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \t\t\"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n \t}},\n\t{\"$lookup\": {\n\t\t\"from\": \"SQ_IFETCH_LEVEL\",\n\t\t\"localField\": \"Index\",\n\t\t\"foreignField\": \"Index\",\n\t\t\"as\": \"SQ_IFETCH_LEVEL\",\n\t\t\"pipeline\": [\n\t\t\t{\"$match\": {\n\t\t\t\t\"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \t\t\t\t\"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \t\t\t\t\"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n \t\t\t}},\n\t\t\t{\"$project\":{\n\t\t\t\t\"_id\": 0,\n\t\t\t\t\"SQ_ACCUM_PREV_HIRES\": 1\n\t\t\t}}\n\t\t]\n\t}},\n\t{\"$unwind\":{\n\t\t\"path\": \"&SQ_IFETCH_LEVEL\"\n\t}},\n\t{\"$group\":{\n\t\t\"_id\": null,\n\t\t\"il1_lat\": {\n\t\t\t\"$avg\":{\n\t\t\t\t\"$cond\":[\n\t\t\t\t\t\t{\"$ne\":[\"&SQC_ICACHE_REQ\",0]},\n\t\t\t\t\t\t{\"$divide\":[\"&SQ_IFETCH_LEVEL.SQ_ACCUM_PREV_HIRES\",\"&SQC_ICACHE_REQ\"]},\n\t\t\t\t\t\tnull\n\t\t\t\t\t]\n\t\t\t}\n\t\t} \n\t}},\n\t{\"$set\": {\n \t\t\"array\": [\n \t\t{\n \t\t\t\"Metric\": \"IL1 Lat\",\n \t\t\t\"Alias\": \"il1_lat_\",\n \t\t\t\"Value\": { \"$round\": [\"&il1_lat\", 0] }\n \t\t}\n \t\t]\n\t}},\n \t{\"$unwind\": {\n \t\t\"path\": \"&array\"\n \t}},\n \t{\"$replaceRoot\": {\n \t\t\"newRoot\": \"&array\"\n \t}}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQC_DCACHE_INFLIGHT_LEVEL", + "target": "$Workload1.pmc_perf.aggregate([\n\t{\"$match\": {\n\t\t\"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \t\t\"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \t\t\"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n \t}},\n\t{\"$lookup\": {\n\t\t\"from\": \"SQ_IFETCH_LEVEL\",\n\t\t\"localField\": \"Index\",\n\t\t\"foreignField\": \"Index\",\n\t\t\"as\": \"SQ_IFETCH_LEVEL\",\n\t\t\"pipeline\": [\n\t\t\t{\"$match\": {\n\t\t\t\t\"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \t\t\t\t\"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \t\t\t\t\"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n \t\t\t}},\n\t\t\t{\"$project\":{\n\t\t\t\t\"_id\": 0,\n\t\t\t\t\"SQ_ACCUM_PREV_HIRES\": 1\n\t\t\t}}\n\t\t]\n\t}},\n\t{\"$unwind\":{\n\t\t\"path\": \"&SQ_IFETCH_LEVEL\"\n\t}},\n\t{\"$group\":{\n\t\t\"_id\": null,\n\t\t\"sl1_lat\": {\n\t\t\t\"$avg\":{\n\t\t\t\t\"$cond\":[\n\t\t\t\t\t\t{\"$ne\":[\"&SQC_DCACHE_REQ\",0]},\n\t\t\t\t\t\t{\"$divide\":[\"&SQ_IFETCH_LEVEL.SQ_ACCUM_PREV_HIRES\",\"&SQC_DCACHE_REQ\"]},\n\t\t\t\t\t\tnull\n\t\t\t\t\t]\n\t\t\t}\n\t\t} \n\t}},\n\t{\"$set\": {\n \t\t\"array\": [\n \t\t{\n \t\t\t\"Metric\": \"vL1D Lat\",\n \t\t\t\"Alias\": \"sl1_lat_\",\n \t\t\t\"Value\": { \"$round\": [\"&sl1_lat\", 0] }\n \t\t}\n \t\t]\n\t}},\n \t{\"$unwind\": {\n \t\t\"path\": \"&array\"\n \t}},\n \t{\"$replaceRoot\": {\n \t\t\"newRoot\": \"&array\"\n \t}}\n]);", + "type": "table" + } + ], + "title": "Memory Chart (Normalization: $normUnit\")", + "transformations": [ + { + "id": "convertFieldType", + "options": { + "conversions": [ + { + "destinationType": "string", + "targetField": "Value" + } + ], + "fields": {} + } + }, + { + "id": "merge", + "options": {} + } + ], + "type": "amd-custom-svg" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Memory Chart Analysis", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 241, + "panels": [ + { + "gridPos": { + "h": 28, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 253, + "pconfig": { + "fixScale": "", + "layout": { + "dragmode": "zoom", + "font": { + "family": "\"Open Sans\", Helvetica, Arial, sans-serif" + }, + "hovermode": "closest", + "legend": { + "orientation": "v" + }, + "showlegend": true, + "xaxis": { + "range": [ + -2, + 3.8 + ], + "rangemode": "between", + "showgrid": true, + "title": "Arithmetic Intensity (FLOP/Byte)", + "type": "log", + "zeroline": false + }, + "yaxis": { + "rangemode": "normal", + "showgrid": true, + "title": "Performance (GFLOP/sec)", + "type": "log", + "zeroline": false + }, + "zaxis": { + "rangemode": "normal", + "showgrid": true, + "type": "linear", + "zeroline": false + } + }, + "loadFromCDN": false, + "settings": { + "displayModeBar": false, + "type": "scatter" + }, + "showAnnotations": true, + "traces": [ + { + "mapping": { + "color": "n", + "text": "hbmBw_peak", + "x": "xrange", + "y": "roofline_hbm" + }, + "name": "HBM-VLAU", + "settings": { + "color_option": "ramp", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#33B5E5", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 15, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "circle" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "L2Bw_peak", + "x": "xrange", + "y": "roofline_L2" + }, + "name": "L2-VALU", + "settings": { + "color_option": "ramp", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#33B5E5", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 15, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "circle" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "L1Bw_peak", + "x": "xrange", + "y": "roofline_L1" + }, + "name": "vL1D-VALU", + "settings": { + "color_option": "ramp", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#33B5E5", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 15, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "circle" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "LDSBw_peak", + "x": "xrange", + "y": "roofline_LDS" + }, + "name": "LDS-VALU", + "settings": { + "color_option": "ramp", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#33B5E5", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 15, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "circle" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "hbmBw_peak", + "x": "cur_ai_hbm", + "y": "cur_perf" + }, + "name": "Cur - HBM", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#F2495C", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "square" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "L2Bw_peak", + "x": "cur_ai_L2", + "y": "cur_perf" + }, + "name": "Cur - L2", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#5794F2", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "diamond" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "L1Bw_peak", + "x": "cur_ai_L1", + "y": "cur_perf" + }, + "name": "Cur - vL1D", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "hbmBw_peak", + "x": "base_ai_hbm", + "y": "base_perf" + }, + "name": "Baseline - HBM", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#F2495C", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "square-open" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "L2Bw_peak", + "x": "base_ai_L2", + "y": "base_perf" + }, + "name": "Baseline - L2", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#5794F2", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "diamond-open" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "L1Bw_peak", + "x": "base_ai_L1", + "y": "base_perf" + }, + "name": "Baseline - vL1D", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "hbmBw_peak", + "x": "xrange", + "y": "roofline_hbm_MFMA" + }, + "name": "HBM-MFMA", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "L2Bw_peak", + "x": "xrange", + "y": "roofline_L2_MFMA" + }, + "name": "L2-MFMA", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "L1Bw_peak", + "x": "xrange", + "y": "roofline_L1_MFMA" + }, + "name": "vL1D-MFMA", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "LDSBw_peak", + "x": "xrange", + "y": "roofline_LDS_MFMA" + }, + "name": "LDS-MFMA", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + } + ] + }, + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "rawQuery": true, + "refId": "HBM-VALU", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [\"&FP32Flops\", \"&FP64Flops\"]\n },\n \"then\": \"&FP64Flops\",\n \"else\": \"&FP32Flops\"\n }\n }\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_hbm\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&HBMBw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&HBMBw\"] },\n \"else\": \"$high_flop\"\n }\n },\n \"hbmBw_peak\": { \"$concat\": [{\"$substr\":[{ \"$round\":[\"&HBMBw\", 1] },0, 32]}, \" GB/s\"] }\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "HBM-MFMA", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [\"&MFMAF32Flops\", \"&MFMAF64Flops\"]\n },\n \"then\": \"&MFMAF64Flops\",\n \"else\": \"&MFMAF32Flops\"\n }\n }\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_hbm_MFMA\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&HBMBw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&HBMBw\"] },\n \"else\": \"$high_flop\"\n }\n }\n\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "L2-VALU", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [\"&FP32Flops\", \"&FP64Flops\"]\n },\n \"then\": \"&FP64Flops\",\n \"else\": \"&FP32Flops\"\n }\n }\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_L2\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&L2Bw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&L2Bw\"] },\n \"else\": \"$high_flop\"\n }\n },\n\n \"L2Bw_peak\": { \"$concat\": [{\"$substr\":[{ \"$round\":[\"&L2Bw\", 1] },0, 32]}, \" GB/s\"] }\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "L1-VALU", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [\"&FP32Flops\", \"&FP64Flops\"]\n },\n \"then\": \"&FP64Flops\",\n \"else\": \"&FP32Flops\"\n }\n }\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_L1\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&L1Bw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&L1Bw\"] },\n \"else\": \"&high_flop\"\n }\n },\n\n \"L1Bw_peak\": { \"$concat\": [{\"$substr\":[{ \"$round\":[\"&L1Bw\", 1] },0, 32]}, \" GB/s\"] }\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "LDS", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [\"&FP32Flops\", \"&FP64Flops\"]\n },\n \"then\": \"&FP64Flops\",\n \"else\": \"&FP32Flops\"\n }\n }\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_LDS\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&LDSBw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&LDSBw\"] },\n \"else\": \"$high_flop\"\n }\n },\n\n \"LDSBw_peak\": { \"$concat\": [{\"$substr\":[{ \"$round\":[\"&LDSBw\", 1] },0, 32]}, \" GB/s\"] }\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "Cur Workload", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n { \"$group\": { \n \"_id\": \"&KernelName\", \n \"Calls\": { \"$sum\": 1} ,\n \"TotalDuration\": { \"$sum\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n \"AvgDuration\": { \"$avg\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n\n \"total_flops\": {\n \"$avg\":{\"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }\n ]}\n },\n\n \"valu_flops\": {\n \"$avg\": { \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] }\n ]}\n },\n \n \"mfma_flops_f16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] } },\n \"mfma_flops_bf16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] } },\n \"mfma_flops_f32\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] } },\n \"mfma_flops_f64\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] } },\n\n\n \"lds_data\": {\n \"$avg\": { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, \n 4, \n {\"$toInt\": \"$L2Banks\"}\n ]\n } \n },\n\n \"L1cache_data\": {\n \"$avg\": { \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64] } \n },\n\n \"L2cache_data\": {\n \"$avg\": {\n \"$multiply\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \n \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, 64]}\n },\n\n \"hbm_data\": {\n \"$avg\": {\n \"$add\": [ { \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] },\n { \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] }\n ]\n }\n }\n\n\n }},\n {\"$sort\": { \"TotalDuration\": -1 }},\n { \"$limit\": 10 },\n {\"$project\": {\n \"_id\": 0,\n \"Kernel\": \"&KernelName\",\n \"cur_ai_L1\": {\n \"$cond\": [\n { \"$ne\": [\"&L1cache_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&L1cache_data\"] },\n 0\n ]\n },\n \"cur_ai_L2\": {\n \"$cond\": [\n { \"$ne\": [\"&L2cache_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&L2cache_data\"] },\n 0\n ]\n },\n \"cur_ai_hbm\": {\n \"$cond\": [\n { \"$ne\": [\"&hbm_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&hbm_data\"] },\n 0\n ]\n },\n \"cur_perf\": { \n \"$cond\": [\n { \"$ne\": [\"&AvgDuration\", 0] },\n { \"$divide\": [\"&total_flops\", \"&AvgDuration\"] },\n 0\n ]\n }\n }}\n\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "Baseline Workload", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Roofline)\"}}\n }},\n { \"$group\": { \n \"_id\": \"&KernelName\", \n \"Calls\": { \"$sum\": 1} ,\n \"TotalDuration\": { \"$sum\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n \"AvgDuration\": { \"$avg\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n\n \"total_flops\": {\n \"$avg\":{\"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }\n ]}\n },\n\n \"valu_flops\": {\n \"$avg\": { \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] }\n ]}\n },\n \n \"mfma_flops_f16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] } },\n \"mfma_flops_bf16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] } },\n \"mfma_flops_f32\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] } },\n \"mfma_flops_f64\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] } },\n\n\n \"lds_data\": {\n \"$avg\": { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, \n 4, \n {\"$toInt\": \"$L2Banks\"}\n ]\n } \n },\n\n \"L1cache_data\": {\n \"$avg\": { \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64] } \n },\n\n \"L2cache_data\": {\n \"$avg\": {\n \"$multiply\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \n \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, 64]}\n },\n\n \"hbm_data\": {\n \"$avg\": {\n \"$add\": [ { \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] },\n { \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] }\n ]\n }\n }\n\n\n }},\n {\"$sort\": { \"TotalDuration\": -1 }},\n { \"$limit\": 10 },\n {\"$project\": {\n \"_id\": 0,\n \"Kernel\": \"&KernelName\",\n \"base_ai_L1\": {\n \"$cond\": [\n { \"$ne\": [\"&L1cache_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&L1cache_data\"] },\n 0\n ]\n },\n \"base_ai_L2\": {\n \"$cond\": [\n { \"$ne\": [\"&L2cache_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&L2cache_data\"] },\n 0\n ]\n },\n \"base_ai_hbm\": {\n \"$cond\": [\n { \"$ne\": [\"&hbm_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&hbm_data\"] },\n 0\n ]\n },\n \"base_perf\": { \n \"$cond\": [\n { \"$ne\": [\"&AvgDuration\", 0] },\n { \"$divide\": [\"&total_flops\", \"&AvgDuration\"] },\n 0\n ]\n }\n }}\n\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "L2-MFMA", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [\"&MFMAF32Flops\", \"&MFMAF64Flops\"]\n },\n \"then\": \"&MFMAF64Flops\",\n \"else\": \"&MFMAF32Flops\"\n }\n }\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_L2_MFMA\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&L2Bw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&L2Bw\"] },\n \"else\": \"$high_flop\"\n }\n }\n\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "L1-MFMA", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [\"&MFMAF32Flops\", \"&MFMAF64Flops\"]\n },\n \"then\": \"&MFMAF64Flops\",\n \"else\": \"&MFMAF32Flops\"\n }\n }\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_L1_MFMA\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&L1Bw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&L1Bw\"] },\n \"else\": \"$high_flop\"\n }\n }\n\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "jYrBWHfnz" + }, + "hide": false, + "rawQuery": true, + "refId": "LDS-MFMA", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [\"&MFMAF32Flops\", \"&MFMAF64Flops\"]\n },\n \"then\": \"&MFMAF64Flops\",\n \"else\": \"&MFMAF32Flops\"\n }\n }\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_LDS_MFMA\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&LDSBw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&LDSBw\"] },\n \"else\": \"$high_flop\"\n }\n }\n\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + } + ], + "title": "Empirical Roofline FP32/FP64 (MI200)", + "type": "natel-plotly-panel", + "version": 1 + }, + { + "gridPos": { + "h": 28, + "w": 24, + "x": 0, + "y": 33 + }, + "id": 312, + "pconfig": { + "fixScale": "", + "layout": { + "dragmode": "zoom", + "font": { + "family": "\"Open Sans\", Helvetica, Arial, sans-serif" + }, + "hovermode": "closest", + "legend": { + "orientation": "v" + }, + "showlegend": true, + "xaxis": { + "range": [ + -2, + 3.8 + ], + "rangemode": "between", + "showgrid": true, + "title": "Arithmetic Intensity (FLOP/Byte)", + "type": "log", + "zeroline": false + }, + "yaxis": { + "rangemode": "normal", + "showgrid": true, + "title": "Performance (GFLOP/sec)", + "type": "log", + "zeroline": false + }, + "zaxis": { + "rangemode": "normal", + "showgrid": true, + "type": "linear", + "zeroline": false + } + }, + "loadFromCDN": false, + "settings": { + "displayModeBar": false, + "type": "scatter" + }, + "showAnnotations": true, + "traces": [ + { + "mapping": { + "color": "n", + "text": "hbmBw_peak", + "x": "cur_ai_hbm", + "y": "cur_perf" + }, + "name": "Cur - HBM", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#F2495C", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "square" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "L2Bw_peak", + "x": "cur_ai_L2", + "y": "cur_perf" + }, + "name": "Cur - L2", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#5794F2", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "diamond" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "L1Bw_peak", + "x": "cur_ai_L1", + "y": "cur_perf" + }, + "name": "Cur - vL1D", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "hbmBw_peak", + "x": "base_ai_hbm", + "y": "base_perf" + }, + "name": "Baseline - HBM", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#F2495C", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "square-open" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "L2Bw_peak", + "x": "base_ai_L2", + "y": "base_perf" + }, + "name": "Baseline - L2", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#5794F2", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "diamond-open" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "L1Bw_peak", + "x": "base_ai_L1", + "y": "base_perf" + }, + "name": "Baseline - vL1D", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": false, + "markers": true + } + }, + { + "mapping": { + "color": "n", + "text": "hbmBw_peak", + "x": "xrange", + "y": "roofline_hbm_MFMA_fp16" + }, + "name": "HBM-MFMA-FP16", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "L2Bw_peak", + "x": "xrange", + "y": "roofline_L2_MFMA_fp16" + }, + "name": "L2-MFMA-FP16", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "L1Bw_peak", + "x": "xrange", + "y": "roofline_L1_MFMA_fp16" + }, + "name": "vL1D-MFMA-FP16", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "LDSBw_peak", + "x": "xrange", + "y": "roofline_LDS_MFMA_fp16" + }, + "name": "LDS-MFMA-FP16", + "settings": { + "color_option": "solid", + "line": { + "color": "#005f81", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "hbmBw_peak", + "x": "xrange", + "y": "roofline_hbm_MFMA_i8" + }, + "name": "HBM-MFMA-I8", + "settings": { + "color_option": "solid", + "line": { + "color": "#FA6400", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "L2Bw_peak", + "x": "xrange", + "y": "roofline_L2_MFMA_i8" + }, + "name": "L2-MFMA-I8", + "settings": { + "color_option": "solid", + "line": { + "color": "#FA6400", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "L1Bw_peak", + "x": "xrange", + "y": "roofline_L1_MFMA_i8" + }, + "name": "vL1D-MFMA-I8", + "settings": { + "color_option": "solid", + "line": { + "color": "#FA6400", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + }, + { + "mapping": { + "color": "n", + "text": "LDSBw_peak", + "x": "xrange", + "y": "roofline_LDS_MFMA_i8" + }, + "name": "LDS-MFMA-I8", + "settings": { + "color_option": "solid", + "line": { + "color": "#FA6400", + "dash": "solid", + "shape": "linear", + "width": 2 + }, + "marker": { + "color": "#B877D9", + "colorscale": "YlOrRd", + "line": { + "color": "#DDD", + "width": 0 + }, + "showscale": false, + "size": 12, + "sizemin": 3, + "sizemode": "diameter", + "sizeref": 0.2, + "symbol": "star-open" + } + }, + "show": { + "line": true, + "lines": true, + "markers": false + } + } + ] + }, + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "HBM-MFMA-FP16", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": \"&MFMAF16Flops\"\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_hbm_MFMA_fp16\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&HBMBw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&HBMBw\"] },\n \"else\": \"$high_flop\"\n }\n },\n \"hbmBw_peak\": { \"$concat\": [{\"$substr\":[{ \"$round\":[\"&HBMBw\", 1] },0, 32]}, \" GB/s\"] }\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "HBM-MFMA-I8", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": \"&MFMAI8Ops\"\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_hbm_MFMA_i8\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&HBMBw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&HBMBw\"] },\n \"else\": \"$high_flop\"\n }\n }\n\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "Cur Workload", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n { \"$group\": { \n \"_id\": \"&KernelName\", \n \"Calls\": { \"$sum\": 1} ,\n \"TotalDuration\": { \"$sum\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n \"AvgDuration\": { \"$avg\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n\n \"total_flops\": {\n \"$avg\":{\"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }\n ]}\n },\n\n \"valu_flops\": {\n \"$avg\": { \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] }\n ]}\n },\n \n \"mfma_flops_f16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] } },\n \"mfma_flops_bf16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] } },\n \"mfma_flops_f32\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] } },\n \"mfma_flops_f64\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] } },\n\n\n \"lds_data\": {\n \"$avg\": { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, \n 4, \n {\"$toInt\": \"$L2Banks\"}\n ]\n } \n },\n\n \"L1cache_data\": {\n \"$avg\": { \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64] } \n },\n\n \"L2cache_data\": {\n \"$avg\": {\n \"$multiply\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \n \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, 64]}\n },\n\n \"hbm_data\": {\n \"$avg\": {\n \"$add\": [ { \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] },\n { \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] }\n ]\n }\n }\n\n\n }},\n {\"$sort\": { \"TotalDuration\": -1 }},\n { \"$limit\": 10 },\n {\"$project\": {\n \"_id\": 0,\n \"Kernel\": \"&KernelName\",\n \"cur_ai_L1\": {\n \"$cond\": [\n { \"$ne\": [\"&L1cache_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&L1cache_data\"] },\n 0\n ]\n },\n \"cur_ai_L2\": {\n \"$cond\": [\n { \"$ne\": [\"&L2cache_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&L2cache_data\"] },\n 0\n ]\n },\n \"cur_ai_hbm\": {\n \"$cond\": [\n { \"$ne\": [\"&hbm_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&hbm_data\"] },\n 0\n ]\n },\n \"cur_perf\": { \n \"$cond\": [\n { \"$ne\": [\"&AvgDuration\", 0] },\n { \"$divide\": [\"&total_flops\", \"&AvgDuration\"] },\n 0\n ]\n }\n }}\n\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "Baseline Workload", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Roofline)\"}}\n }},\n { \"$group\": { \n \"_id\": \"&KernelName\", \n \"Calls\": { \"$sum\": 1} ,\n \"TotalDuration\": { \"$sum\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n \"AvgDuration\": { \"$avg\": {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]}},\n\n \"total_flops\": {\n \"$avg\":{\"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] },\n { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }\n ]}\n },\n\n \"valu_flops\": {\n \"$avg\": { \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }, \"&SQ_INSTS_VALU_TRANS_F16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }, \"&SQ_INSTS_VALU_TRANS_F32\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }, \"&SQ_INSTS_VALU_TRANS_F64\"] }] }\n ]}\n },\n \n \"mfma_flops_f16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] } },\n \"mfma_flops_bf16\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] } },\n \"mfma_flops_f32\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] } },\n \"mfma_flops_f64\": { \"$avg\": { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] } },\n\n\n \"lds_data\": {\n \"$avg\": { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, \n 4, \n {\"$toInt\": \"$L2Banks\"}\n ]\n } \n },\n\n \"L1cache_data\": {\n \"$avg\": { \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64] } \n },\n\n \"L2cache_data\": {\n \"$avg\": {\n \"$multiply\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \n \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, 64]}\n },\n\n \"hbm_data\": {\n \"$avg\": {\n \"$add\": [ { \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] },\n { \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]},\n { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] }\n ]\n }\n }\n\n\n }},\n {\"$sort\": { \"TotalDuration\": -1 }},\n { \"$limit\": 10 },\n {\"$project\": {\n \"_id\": 0,\n \"Kernel\": \"&KernelName\",\n \"base_ai_L1\": {\n \"$cond\": [\n { \"$ne\": [\"&L1cache_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&L1cache_data\"] },\n 0\n ]\n },\n \"base_ai_L2\": {\n \"$cond\": [\n { \"$ne\": [\"&L2cache_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&L2cache_data\"] },\n 0\n ]\n },\n \"base_ai_hbm\": {\n \"$cond\": [\n { \"$ne\": [\"&hbm_data\", 0] },\n {\"$divide\": [\"&total_flops\", \"&hbm_data\"] },\n 0\n ]\n },\n \"base_perf\": { \n \"$cond\": [\n { \"$ne\": [\"&AvgDuration\", 0] },\n { \"$divide\": [\"&total_flops\", \"&AvgDuration\"] },\n 0\n ]\n }\n }}\n\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "L2-MFMA-FP16", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": \"&MFMAF16Flops\"\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_L2_MFMA_fp16\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&L2Bw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&L2Bw\"] },\n \"else\": \"$high_flop\"\n }\n },\n \"L2Bw_peak\": { \"$concat\": [{\"$substr\":[{ \"$round\":[\"&L2Bw\", 1] },0, 32]}, \" GB/s\"] }\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "L2-MFMA-I8", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": \"&MFMAI8Ops\"\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_L2_MFMA_i8\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&L2Bw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&L2Bw\"] },\n \"else\": \"$high_flop\"\n }\n }\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "L1-MFMA-FP16", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": \"&MFMAF16Flops\"\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_L1_MFMA_fp16\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&L1Bw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&L1Bw\"] },\n \"else\": \"$high_flop\"\n }\n },\n \"L1Bw_peak\": { \"$concat\": [{\"$substr\":[{ \"$round\":[\"&L1Bw\", 1] },0, 32]}, \" GB/s\"] }\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "LJKvMZank" + }, + "hide": false, + "rawQuery": true, + "refId": "L1-MFMA-I8", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": \"&MFMAI8Ops\"\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_L1_MFMA_i8\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&L1Bw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&L1Bw\"] },\n \"else\": \"$high_flop\"\n }\n }\n\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "jYrBWHfnz" + }, + "hide": false, + "rawQuery": true, + "refId": "LDS-MFMA-FP16", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": \"&MFMAF16Flops\"\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_LDS_MFMA_fp16\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&LDSBw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&LDSBw\"] },\n \"else\": \"$high_flop\"\n }\n },\n \"LDSBw_peak\": { \"$concat\": [{\"$substr\":[{ \"$round\":[\"&LDSBw\", 1] },0, 32]}, \" GB/s\"] }\n\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "jYrBWHfnz" + }, + "hide": false, + "rawQuery": true, + "refId": "LDS-MFMA-I8", + "target": "${Workload1}.roofline.aggregate([\n {\"$match\": {\n \"device\": { \"$in\": [${gpuFilter:raw}] }\n }},\n { \"$addFields\": {\n \"xaxis\": {\"$range\": [0, 50000]}\n }},\n { \"$addFields\": {\n \"high_flop\": \"&MFMAI8Ops\"\n }},\n { \"$addFields\": {\n \"cte\": {\n \"$map\": {\n \"input\": \"$xaxis\",\n \"as\": \"n\",\n \"in\": {\n \"xrange\": {\"$multiply\": [0.1, \"$$n\"]},\n \"roofline_LDS_MFMA_i8\": {\n \"$cond\": {\n \"if\": {\n \"$lt\": [ {\"$multiply\": [0.1, \"$$n\", \"&LDSBw\"]}, \"$high_flop\" ]\n },\n \"then\": { \"$multiply\": [0.1, \"$$n\", \"&LDSBw\"] },\n \"else\": \"$high_flop\"\n }\n }\n\n } \n }}\n }},\n \n {\"$unwind\": \"$cte\"\n },\n {\"$replaceRoot\": {\n \"newRoot\": \"$cte\"\n }}\n]);", + "type": "table" + } + ], + "title": "Empirical Roofline FP16/INT8 (MI200)", + "type": "natel-plotly-panel", + "version": 1 + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Roofline Analysis", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 2, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 115 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 118 + } + ] + } + ] + }, + "gridPos": { + "h": 13, + "w": 13, + "x": 0, + "y": 6 + }, + "id": 6, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1 \n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"gpuBusy_avg\": {\"$avg\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_min\": {\"$min\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_max\": {\"$max\": \"&GRBM_GUI_ACTIVE\"},\n\n\n \"cpfBusy_avg\": {\"$avg\": \"&CPF_CPF_STAT_BUSY\"},\n \"cpfBusy_min\": {\"$min\": \"&CPF_CPF_STAT_BUSY\"},\n \"cpfBusy_max\": {\"$max\": \"&CPF_CPF_STAT_BUSY\"},\n\n \"cpfUtil_avg\": {\"$avg\": {\n \"$cond\":[\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }, 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_BUSY\"] }, { \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }]},\n null\n ]\n }},\n \"cpfUtil_min\": {\"$min\": {\n \"$cond\":[\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }, 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_BUSY\"] }, { \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }]},\n null\n ]\n }},\n \"cpfUtil_max\": {\"$max\": {\n \"$cond\":[\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }, 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_BUSY\"] }, { \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }]},\n null\n ]\n }},\n\n \"cpfStall_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_STAT_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_STALL\"] }, \"&CPF_CPF_STAT_BUSY\"] } ,\n null\n ]\n }},\n \"cpfStall_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_STAT_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_STALL\"] }, \"&CPF_CPF_STAT_BUSY\"] } ,\n null\n ]\n }},\n \"cpfStall_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_STAT_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_STALL\"] }, \"&CPF_CPF_STAT_BUSY\"] } ,\n null\n ]\n }},\n\n \"l2CacheBusy_avg\": {\"$avg\": \"&CPF_CPF_TCIU_BUSY\"},\n \"l2CacheBusy_min\": {\"$min\": \"&CPF_CPF_TCIU_BUSY\"},\n \"l2CacheBusy_max\": {\"$max\": \"&CPF_CPF_TCIU_BUSY\"},\n\n \"l2CacheUtil_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_BUSY\"] }, { \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }]},\n null\n ]\n }},\n \"l2CacheUtil_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_BUSY\"] }, { \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }]},\n null\n ]\n }},\n \"l2CacheUtil_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_BUSY\"] }, { \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }]},\n null\n ]\n }},\n \"l2CacheStall_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_TCIU_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_STALL\"] }, \"&CPF_CPF_TCIU_BUSY\"] },\n null\n ]\n }},\n \"l2CacheStall_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_TCIU_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_STALL\"] }, \"&CPF_CPF_TCIU_BUSY\"] },\n null\n ]\n }},\n \"l2CacheStall_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_TCIU_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_STALL\"] }, \"&CPF_CPF_TCIU_BUSY\"] },\n null\n ]\n }},\n\n \"utcL1Stall_avg\": {\"$avg\": \"&CPF_CMP_UTCL1_STALL_ON_TRANSLATION\"},\n \"utcL1Stall_min\": {\"$min\": \"&CPF_CMP_UTCL1_STALL_ON_TRANSLATION\"},\n \"utcL1Stall_max\": {\"$max\": \"&CPF_CMP_UTCL1_STALL_ON_TRANSLATION\"}\n\n\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"GPU Busy Cycles\",\n \"Avg\": \"&gpuBusy_avg\",\n \"Min\": \"&gpuBusy_min\",\n \"Max\": \"&gpuBusy_max\", \n \"Unit\": \"Cycles/Kernel\"\n },\n {\n \"Metric\": \"CPF Busy\",\n \"Avg\": \"&cpfBusy_avg\",\n \"Min\": \"&cpfBusy_min\",\n \"Max\": \"&cpfBusy_max\", \n \"Unit\": \"Cycles/Kernel\"\n },\n {\n \"Metric\": \"CPF Util\",\n \"Avg\": \"&cpfUtil_avg\",\n \"Min\": \"&cpfUtil_min\",\n \"Max\": \"&cpfUtil_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"CPF Stall\",\n \"Avg\": \"&cpfStall_avg\",\n \"Min\": \"&cpfStall_min\",\n \"Max\": \"&cpfStall_max\", \n \"Unit\": \"Cycles/Kernel\"\n },\n {\n \"Metric\": \"L2Cache Intf Busy\",\n \"Avg\": \"&l2CacheBusy_avg\",\n \"Min\": \"&l2CacheBusy_min\",\n \"Max\": \"&l2CacheBusy_max\", \n \"Unit\": \"Cycles/Kernel\"\n },\n {\n \"Metric\": \"L2Cache Intf Util\",\n \"Avg\": \"&l2CacheUtil_avg\",\n \"Min\": \"&l2CacheUtil_min\",\n \"Max\": \"&l2CacheUtil_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"L2Cache Intf Stall\",\n \"Avg\": \"&l2CacheStall_avg\",\n \"Min\": \"&l2CacheStall_min\",\n \"Max\": \"&l2CacheStall_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"UTCL1 Stall\",\n \"Avg\": \"&utcL1Stall_avg\",\n \"Min\": \"&utcL1Stall_min\",\n \"Max\": \"&utcL1Stall_max\", \n \"Unit\": \"Cycles/Kernel\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Command Processor)\"}}\n }},\n\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1 \n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"gpuBusy_avg\": {\"$avg\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_min\": {\"$min\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_max\": {\"$max\": \"&GRBM_GUI_ACTIVE\"},\n\n \"cpfBusy_avg\": {\"$avg\": \"&CPF_CPF_STAT_BUSY\"},\n \"cpfBusy_min\": {\"$min\": \"&CPF_CPF_STAT_BUSY\"},\n \"cpfBusy_max\": {\"$max\": \"&CPF_CPF_STAT_BUSY\"},\n\n \"cpfUtil_avg\": {\"$avg\": {\n \"$cond\":[\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }, 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_BUSY\"] }, { \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }]},\n null\n ]\n }},\n \"cpfUtil_min\": {\"$min\": {\n \"$cond\":[\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }, 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_BUSY\"] }, { \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }]},\n null\n ]\n }},\n \"cpfUtil_max\": {\"$max\": {\n \"$cond\":[\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }, 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_BUSY\"] }, { \"$add\": [\"&CPF_CPF_STAT_BUSY\", \"&CPF_CPF_STAT_IDLE\"] }]},\n null\n ]\n }},\n\n \"cpfStall_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_STAT_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_STALL\"] }, \"&CPF_CPF_STAT_BUSY\"] } ,\n null\n ]\n }},\n \"cpfStall_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_STAT_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_STALL\"] }, \"&CPF_CPF_STAT_BUSY\"] } ,\n null\n ]\n }},\n \"cpfStall_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_STAT_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_STAT_STALL\"] }, \"&CPF_CPF_STAT_BUSY\"] } ,\n null\n ]\n }},\n\n \"l2CacheBusy_avg\": {\"$avg\": \"&CPF_CPF_TCIU_BUSY\"},\n \"l2CacheBusy_min\": {\"$min\": \"&CPF_CPF_TCIU_BUSY\"},\n \"l2CacheBusy_max\": {\"$max\": \"&CPF_CPF_TCIU_BUSY\"},\n\n \"l2CacheUtil_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_BUSY\"] }, { \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }]},\n null\n ]\n }},\n \"l2CacheUtil_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_BUSY\"] }, { \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }]},\n null\n ]\n }},\n \"l2CacheUtil_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_BUSY\"] }, { \"$add\": [\"&CPF_CPF_TCIU_BUSY\", \"&CPF_CPF_TCIU_IDLE\"] }]},\n null\n ]\n }},\n \"l2CacheStall_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_TCIU_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_STALL\"] }, \"&CPF_CPF_TCIU_BUSY\"] },\n null\n ]\n }},\n \"l2CacheStall_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_TCIU_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_STALL\"] }, \"&CPF_CPF_TCIU_BUSY\"] },\n null\n ]\n }},\n \"l2CacheStall_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [\"&CPF_CPF_TCIU_BUSY\", 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&CPF_CPF_TCIU_STALL\"] }, \"&CPF_CPF_TCIU_BUSY\"] },\n null\n ]\n }},\n\n \"utcL1Stall_avg\": {\"$avg\": \"&CPF_CMP_UTCL1_STALL_ON_TRANSLATION\"},\n \"utcL1Stall_min\": {\"$min\": \"&CPF_CMP_UTCL1_STALL_ON_TRANSLATION\"},\n \"utcL1Stall_max\": {\"$max\": \"&CPF_CMP_UTCL1_STALL_ON_TRANSLATION\"}\n\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"GPU Busy Cycles\",\n \"Avg\": \"&gpuBusy_avg\",\n \"Min\": \"&gpuBusy_min\",\n \"Max\": \"&gpuBusy_max\", \n \"Unit\": \"Cycles/Kernel\"\n },\n {\n \"Metric\": \"CPF Busy\",\n \"Avg\": \"&cpfBusy_avg\",\n \"Min\": \"&cpfBusy_min\",\n \"Max\": \"&cpfBusy_max\", \n \"Unit\": \"Cycles/Kernel\"\n },\n {\n \"Metric\": \"CPF Util\",\n \"Avg\": \"&cpfUtil_avg\",\n \"Min\": \"&cpfUtil_min\",\n \"Max\": \"&cpfUtil_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"CPF Stall\",\n \"Avg\": \"&cpfStall_avg\",\n \"Min\": \"&cpfStall_min\",\n \"Max\": \"&cpfStall_max\", \n \"Unit\": \"Cycles/Kernel\"\n },\n {\n \"Metric\": \"L2Cache Intf Busy\",\n \"Avg\": \"&l2CacheBusy_avg\",\n \"Min\": \"&l2CacheBusy_min\",\n \"Max\": \"&l2CacheBusy_max\", \n \"Unit\": \"Cycles/Kernel\"\n },\n {\n \"Metric\": \"L2Cache Intf Util\",\n \"Avg\": \"&l2CacheUtil_avg\",\n \"Min\": \"&l2CacheUtil_min\",\n \"Max\": \"&l2CacheUtil_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"L2Cache Intf Stall\",\n \"Avg\": \"&l2CacheStall_avg\",\n \"Min\": \"&l2CacheStall_min\",\n \"Max\": \"&l2CacheStall_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"UTCL1 Stall\",\n \"Avg\": \"&utcL1Stall_avg\",\n \"Min\": \"&utcL1Stall_min\",\n \"Max\": \"&utcL1Stall_max\", \n \"Unit\": \"Cycles/Kernel\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Command Processor Fetcher", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Unit 2": true + }, + "indexByName": { + "Avg 1": 3, + "Avg 2": 4, + "Max 1": 7, + "Max 2": 8, + "Metric 1": 0, + "Metric 2": 1, + "Min 1": 5, + "Min 2": 6, + "Unit 1": 9, + "Unit 2": 2 + }, + "renameByName": { + "Avg 1": "Avg (Current)", + "Avg 2": "Avg (Baseline)", + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 83 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 171 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 148 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 180 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 118 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Baselin)" + }, + "properties": [ + { + "id": "custom.width", + "value": 139 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 138 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 147 + } + ] + } + ] + }, + "gridPos": { + "h": 13, + "w": 11, + "x": 13, + "y": 6 + }, + "id": 4, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \n \"gpuBusy_avg\": {\"$avg\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_min\": {\"$min\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_max\": {\"$max\": \"&GRBM_GUI_ACTIVE\"},\n\n\n \"cpcBusy_avg\": {\"$avg\": \"&CPC_CPC_STAT_BUSY\"},\n \"cpcBusy_min\": {\"$min\": \"&CPC_CPC_STAT_BUSY\"},\n \"cpcBusy_max\": {\"$max\": \"&CPC_CPC_STAT_BUSY\"},\n\n \"cpcUtil_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_BUSY\"] }, { \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }]} ,\n null\n ]\n }},\n \"cpcUtil_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_BUSY\"] }, { \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }]} ,\n null\n ]\n }},\n \"cpcUtil_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_BUSY\"] }, { \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }]} ,\n null\n ]\n }},\n\n \"cpcStall_avg\": {\"$avg\": \"&CPC_CPC_STAT_STALL\"},\n \"cpcStall_min\": {\"$min\": \"&CPC_CPC_STAT_STALL\"},\n \"cpcStall_max\": {\"$max\": \"&CPC_CPC_STAT_STALL\"},\n\n \"cpcStallCycles_avg\": {\"$avg\": \"&CPC_CPC_STAT_STALL\"},\n \"cpcStallCycles_min\": {\"$min\": \"&CPC_CPC_STAT_STALL\"},\n \"cpcStallCycles_max\": {\"$max\": \"&CPC_CPC_STAT_STALL\"},\n\n \"cpcStallRate_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_STALL\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n \"cpcStallRate_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_STALL\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n \"cpcStallRate_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_STALL\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n\n \"cpcPacketDecoding_avg\":{\"$avg\": \"&CPC_ME1_BUSY_FOR_PACKET_DECODE\"},\n \"cpcPacketDecoding_min\":{\"$min\": \"&CPC_ME1_BUSY_FOR_PACKET_DECODE\"},\n \"cpcPacketDecoding_max\":{\"$max\": \"&CPC_ME1_BUSY_FOR_PACKET_DECODE\"},\n\n \"spiBusy_avg\":{\"$avg\": \"&CPC_ME1_DC0_SPI_BUSY\"},\n \"spiBusy_min\":{\"$min\": \"&CPC_ME1_DC0_SPI_BUSY\"},\n \"spiBusy_max\":{\"$max\": \"&CPC_ME1_DC0_SPI_BUSY\"},\n\n \"spiUtil_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_ME1_DC0_SPI_BUSY\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n \"spiUtil_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_ME1_DC0_SPI_BUSY\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n \"spiUtil_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_ME1_DC0_SPI_BUSY\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n\n \"l2CacheBusy_avg\":{\"$avg\": \"&CPC_CPC_TCIU_BUSY\"},\n \"l2CacheBusy_min\":{\"$min\": \"&CPC_CPC_TCIU_BUSY\"},\n \"l2CacheBusy_max\":{\"$max\": \"&CPC_CPC_TCIU_BUSY\"},\n\n \"l2CacheUtil_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_TCIU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }]} ,\n null\n ]\n }},\n \"l2CacheUtil_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_TCIU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }]} ,\n null\n ]\n }},\n \"l2CacheUtil_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_TCIU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }]} ,\n null\n ]\n }},\n\n \"utcL1Stall_avg\":{\"$avg\": \"&CPC_UTCL1_STALL_ON_TRANSLATION\"},\n \"utcL1Stall_min\":{\"$min\": \"&CPC_UTCL1_STALL_ON_TRANSLATION\"},\n \"utcL1Stall_max\":{\"$max\": \"&CPC_UTCL1_STALL_ON_TRANSLATION\"},\n\n \"utcL2Busy_avg\":{\"$avg\": \"&CPC_CPC_UTCL2IU_BUSY\"},\n \"utcL2Busy_min\":{\"$min\": \"&CPC_CPC_UTCL2IU_BUSY\"},\n \"utcL2Busy_max\":{\"$max\": \"&CPC_CPC_UTCL2IU_BUSY\"},\n\n \"utcL2Util_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_UTCL2IU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }]} ,\n null\n ]\n }},\n \"utcL2Util_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_UTCL2IU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }]} ,\n null\n ]\n }},\n \"utcL2Util_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_UTCL2IU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }]} ,\n null\n ]\n }}\n\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"GPU Busy Cycles\",\n \"Avg\": \"&gpuBusy_avg\",\n \"Min\": \"&gpuBusy_min\",\n \"Max\": \"&gpuBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CPC Busy Cycles\",\n \"Avg\": \"&cpcBusy_avg\",\n \"Min\": \"&cpcBusy_min\",\n \"Max\": \"&cpcBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CPC Util\",\n \"Avg\": \"&cpcUtil_avg\",\n \"Min\": \"&cpcUtil_min\",\n \"Max\": \"&cpcUtil_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"CPC Stall Cycles\",\n \"Avg\": \"&cpcStallCycles_avg\",\n \"Min\": \"&cpcStallCycles_min\",\n \"Max\": \"&cpcStallCycles_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CPC Stall Rate\",\n \"Avg\": \"&cpcStallRate_avg\",\n \"Min\": \"&cpcStallRate_min\",\n \"Max\": \"&cpcStallRate_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"CPC Packet Decoding\",\n \"Avg\": \"&cpcPacketDecoding_avg\",\n \"Min\": \"&cpcPacketDecoding_min\",\n \"Max\": \"&cpcPacketDecoding_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"SPI Intf Busy Cycles\",\n \"Avg\": \"&spiBusy_avg\",\n \"Min\": \"&spiBusy_min\",\n \"Max\": \"&spiBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"SPI Intf Util\",\n \"Avg\": \"&spiUtil_avg\",\n \"Min\": \"&spiUtil_min\",\n \"Max\": \"&spiUtil_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"L2Cache Intf Util\",\n \"Avg\": \"&l2CacheUtil_avg\",\n \"Min\": \"&l2CacheUtil_min\",\n \"Max\": \"&l2CacheUtil_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"UTCL1 Stall Cycles\",\n \"Avg\": \"&utcL1Stall_avg\",\n \"Min\": \"&utcL1Stall_min\",\n \"Max\": \"&utcL1Stall_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"UTCL2 Intf Busy Cycles\",\n \"Avg\": \"&utcL2Busy_avg\",\n \"Min\": \"&utcL2Busy_min\",\n \"Max\": \"&utcL2Busy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"UTCL2 Intf Util\",\n \"Avg\": \"&utcL2Util_avg\",\n \"Min\": \"&utcL2Util_min\",\n \"Max\": \"&utcL2Util_max\", \n \"Unit\": \"pct\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Command Processor)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n \n \"gpuBusy_avg\": {\"$avg\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_min\": {\"$min\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_max\": {\"$max\": \"&GRBM_GUI_ACTIVE\"},\n\n \"cpcBusy_avg\": {\"$avg\": \"&CPC_CPC_STAT_BUSY\"},\n \"cpcBusy_min\": {\"$min\": \"&CPC_CPC_STAT_BUSY\"},\n \"cpcBusy_max\": {\"$max\": \"&CPC_CPC_STAT_BUSY\"},\n\n \"cpcUtil_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_BUSY\"] }, { \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }]} ,\n null\n ]\n }},\n \"cpcUtil_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_BUSY\"] }, { \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }]} ,\n null\n ]\n }},\n \"cpcUtil_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_BUSY\"] }, { \"$add\": [\"&CPC_CPC_STAT_BUSY\", \"&CPC_CPC_STAT_IDLE\"] }]} ,\n null\n ]\n }},\n\n \"cpcStall_avg\": {\"$avg\": \"&CPC_CPC_STAT_STALL\"},\n \"cpcStall_min\": {\"$min\": \"&CPC_CPC_STAT_STALL\"},\n \"cpcStall_max\": {\"$max\": \"&CPC_CPC_STAT_STALL\"},\n\n \"cpcStallCycles_avg\": {\"$avg\": \"&CPC_CPC_STAT_STALL\"},\n \"cpcStallCycles_min\": {\"$min\": \"&CPC_CPC_STAT_STALL\"},\n \"cpcStallCycles_max\": {\"$max\": \"&CPC_CPC_STAT_STALL\"},\n\n \"cpcStallRate_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_STALL\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n \"cpcStallRate_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_STALL\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n \"cpcStallRate_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_STAT_STALL\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n\n \"cpcPacketDecoding_avg\":{\"$avg\": \"&CPC_ME1_BUSY_FOR_PACKET_DECODE\"},\n \"cpcPacketDecoding_min\":{\"$min\": \"&CPC_ME1_BUSY_FOR_PACKET_DECODE\"},\n \"cpcPacketDecoding_max\":{\"$max\": \"&CPC_ME1_BUSY_FOR_PACKET_DECODE\"},\n\n \"spiBusy_avg\":{\"$avg\": \"&CPC_ME1_DC0_SPI_BUSY\"},\n \"spiBusy_min\":{\"$min\": \"&CPC_ME1_DC0_SPI_BUSY\"},\n \"spiBusy_max\":{\"$max\": \"&CPC_ME1_DC0_SPI_BUSY\"},\n\n \"spiUtil_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_ME1_DC0_SPI_BUSY\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n \"spiUtil_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_ME1_DC0_SPI_BUSY\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n \"spiUtil_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [\"&CPC_CPC_STAT_BUSY\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_ME1_DC0_SPI_BUSY\"] }, \"&CPC_CPC_STAT_BUSY\"]} ,\n null\n ]\n }},\n\n \"l2CacheBusy_avg\":{\"$avg\": \"&CPC_CPC_TCIU_BUSY\"},\n \"l2CacheBusy_min\":{\"$min\": \"&CPC_CPC_TCIU_BUSY\"},\n \"l2CacheBusy_max\":{\"$max\": \"&CPC_CPC_TCIU_BUSY\"},\n\n \"l2CacheUtil_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_TCIU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }]} ,\n null\n ]\n }},\n \"l2CacheUtil_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_TCIU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }]} ,\n null\n ]\n }},\n \"l2CacheUtil_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_TCIU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_TCIU_BUSY\", \"&CPC_CPC_TCIU_IDLE\"] }]} ,\n null\n ]\n }},\n\n \"utcL1Stall_avg\":{\"$avg\": \"&CPC_UTCL1_STALL_ON_TRANSLATION\"},\n \"utcL1Stall_min\":{\"$min\": \"&CPC_UTCL1_STALL_ON_TRANSLATION\"},\n \"utcL1Stall_max\":{\"$max\": \"&CPC_UTCL1_STALL_ON_TRANSLATION\"},\n\n \"utcL2Busy_avg\":{\"$avg\": \"&CPC_CPC_UTCL2IU_BUSY\"},\n \"utcL2Busy_min\":{\"$min\": \"&CPC_CPC_UTCL2IU_BUSY\"},\n \"utcL2Busy_max\":{\"$max\": \"&CPC_CPC_UTCL2IU_BUSY\"},\n\n \"utcL2Util_avg\": {\"$avg\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_UTCL2IU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }]} ,\n null\n ]\n }},\n \"utcL2Util_min\": {\"$min\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_UTCL2IU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }]} ,\n null\n ]\n }},\n \"utcL2Util_max\": {\"$max\":{\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }, 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&CPC_CPC_UTCL2IU_BUSY\"] }, { \"$add\": [\"&CPC_CPC_UTCL2IU_BUSY\", \"&CPC_CPC_UTCL2IU_IDLE\"] }]} ,\n null\n ]\n }}\n\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"GPU Busy Cycles\",\n \"Avg\": \"&gpuBusy_avg\",\n \"Min\": \"&gpuBusy_min\",\n \"Max\": \"&gpuBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CPC Busy Cycles\",\n \"Avg\": \"&cpcBusy_avg\",\n \"Min\": \"&cpcBusy_min\",\n \"Max\": \"&cpcBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CPC Util\",\n \"Avg\": \"&cpcUtil_avg\",\n \"Min\": \"&cpcUtil_min\",\n \"Max\": \"&cpcUtil_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"CPC Stall Cycles\",\n \"Avg\": \"&cpcStallCycles_avg\",\n \"Min\": \"&cpcStallCycles_min\",\n \"Max\": \"&cpcStallCycles_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CPC Stall Rate\",\n \"Avg\": \"&cpcStallRate_avg\",\n \"Min\": \"&cpcStallRate_min\",\n \"Max\": \"&cpcStallRate_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"CPC Packet Decoding\",\n \"Avg\": \"&cpcPacketDecoding_avg\",\n \"Min\": \"&cpcPacketDecoding_min\",\n \"Max\": \"&cpcPacketDecoding_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"SPI Intf Busy Cycles\",\n \"Avg\": \"&spiBusy_avg\",\n \"Min\": \"&spiBusy_min\",\n \"Max\": \"&spiBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"SPI Intf Util\",\n \"Avg\": \"&spiUtil_avg\",\n \"Min\": \"&spiUtil_min\",\n \"Max\": \"&spiUtil_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"L2Cache Intf Util\",\n \"Avg\": \"&l2CacheUtil_avg\",\n \"Min\": \"&l2CacheUtil_min\",\n \"Max\": \"&l2CacheUtil_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"UTCL1 Stall Cycles\",\n \"Avg\": \"&utcL1Stall_avg\",\n \"Min\": \"&utcL1Stall_min\",\n \"Max\": \"&utcL1Stall_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"UTCL2 Intf Busy Cycles\",\n \"Avg\": \"&utcL2Busy_avg\",\n \"Min\": \"&utcL2Busy_min\",\n \"Max\": \"&utcL2Busy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"UTCL2 Intf Util\",\n \"Avg\": \"&utcL2Util_avg\",\n \"Min\": \"&utcL2Util_min\",\n \"Max\": \"&utcL2Util_max\", \n \"Unit\": \"pct\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Command Processor Compute", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Unit 2": true + }, + "indexByName": { + "Avg 1": 3, + "Avg 2": 4, + "Max 1": 7, + "Max 2": 8, + "Metric 1": 0, + "Metric 2": 1, + "Min 1": 5, + "Min 2": 6, + "Unit 1": 9, + "Unit 2": 2 + }, + "renameByName": { + "Avg 1": "Avg (Current)", + "Avg 2": "Avg (Baseline)", + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Metric 1": "", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Command Processor (CPC/CPF)", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 6 + }, + "id": 102, + "panels": [ + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 101 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg 1" + }, + "properties": [ + { + "id": "custom.width", + "value": 121 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min 1" + }, + "properties": [ + { + "id": "custom.width", + "value": 96 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max 1" + }, + "properties": [ + { + "id": "custom.width", + "value": 145 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg 2" + }, + "properties": [ + { + "id": "custom.width", + "value": 97 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min 2" + }, + "properties": [ + { + "id": "custom.width", + "value": 128 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 130 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 123 + } + ] + } + ] + }, + "gridPos": { + "h": 15, + "w": 12, + "x": 0, + "y": 7 + }, + "id": 106, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n\n \"csBusy_avg\":{\"$avg\": \"&SPI_CSN_BUSY\"},\n \"csBusy_min\":{\"$min\": \"&SPI_CSN_BUSY\"},\n \"csBusy_max\":{\"$max\": \"&SPI_CSN_BUSY\"},\n\n \"gpuBusy_avg\":{\"$avg\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_min\":{\"$min\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_max\":{\"$max\": \"&GRBM_GUI_ACTIVE\"},\n\n \"spiBusy_avg\":{\"$avg\": \"&GRBM_SPI_BUSY\"},\n \"spiBusy_min\":{\"$min\": \"&GRBM_SPI_BUSY\"},\n \"spiBusy_max\":{\"$max\": \"&GRBM_SPI_BUSY\"},\n\n \"sqBusy_avg\":{\"$avg\": \"&SQ_BUSY_CYCLES\"},\n \"sqBusy_min\":{\"$min\": \"&SQ_BUSY_CYCLES\"},\n \"sqBusy_max\":{\"$max\": \"&SQ_BUSY_CYCLES\"},\n\n \"dispatchedWorkgroups_avg\":{\"$avg\": \"&SPI_CSN_NUM_THREADGROUPS\"},\n \"dispatchedWorkgroups_min\":{\"$min\": \"&SPI_CSN_NUM_THREADGROUPS\"},\n \"dispatchedWorkgroups_max\":{\"$max\": \"&SPI_CSN_NUM_THREADGROUPS\"},\n\n \"dispatchedWavefronts_avg\":{\"$avg\": \"&SPI_CSN_WAVE\"},\n \"dispatchedWavefronts_min\":{\"$min\": \"&SPI_CSN_WAVE\"},\n \"dispatchedWavefronts_max\":{\"$max\": \"&SPI_CSN_WAVE\"},\n\n\n \"waveAllocFail_avg\":{\"$avg\": \"&SPI_RA_REQ_NO_ALLOC\"},\n \"waveAllocFail_min\":{\"$min\": \"&SPI_RA_REQ_NO_ALLOC\"},\n \"waveAllocFail_max\":{\"$max\": \"&SPI_RA_REQ_NO_ALLOC\"},\n\n \"waveAllocFailCS_avg\":{\"$avg\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"},\n \"waveAllocFailCS_min\":{\"$min\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"},\n \"waveAllocFailCS_max\":{\"$max\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"}\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"GPU Busy\",\n \"Avg\": \"&gpuBusy_avg\",\n \"Min\": \"&gpuBusy_min\",\n \"Max\": \"&gpuBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CS Busy\",\n \"Avg\": \"&csBusy_avg\",\n \"Min\": \"&csBusy_min\",\n \"Max\": \"&csBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"SPI Busy\",\n \"Avg\": \"&spiBusy_avg\",\n \"Min\": \"&spiBusy_min\",\n \"Max\": \"&spiBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"SQ Busy\",\n \"Avg\": \"&sqBusy_avg\",\n \"Min\": \"&sqBusy_min\",\n \"Max\": \"&sqBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"Dispatched Workgroups\",\n \"Avg\": \"&dispatchedWorkgroups_avg\",\n \"Min\": \"&dispatchedWorkgroups_min\",\n \"Max\": \"&dispatchedWorkgroups_max\", \n \"Unit\": \"Workgroups\"\n },\n {\n \"Metric\": \"Dispatched Wavefronts\",\n \"Avg\": \"&dispatchedWavefronts_avg\",\n \"Min\": \"&dispatchedWavefronts_min\",\n \"Max\": \"&dispatchedWavefronts_max\", \n \"Unit\": \"Wavefronts\"\n },\n {\n \"Metric\": \"Wave Alloc Failed\",\n \"Avg\": \"&waveAllocFail_avg\",\n \"Min\": \"&waveAllocFail_min\",\n \"Max\": \"&waveAllocFail_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"Wave Alloc Failed - CS\",\n \"Avg\": \"&waveAllocFailCS_avg\",\n \"Min\": \"&waveAllocFailCS_min\",\n \"Max\": \"&waveAllocFailCS_max\", \n \"Unit\": \"Cycles\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Shader Processor Input)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n\n \"csBusy_avg\":{\"$avg\": \"&SPI_CSN_BUSY\"},\n \"csBusy_min\":{\"$min\": \"&SPI_CSN_BUSY\"},\n \"csBusy_max\":{\"$max\": \"&SPI_CSN_BUSY\"},\n\n \"gpuBusy_avg\":{\"$avg\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_min\":{\"$min\": \"&GRBM_GUI_ACTIVE\"},\n \"gpuBusy_max\":{\"$max\": \"&GRBM_GUI_ACTIVE\"},\n\n \"spiBusy_avg\":{\"$avg\": \"&GRBM_SPI_BUSY\"},\n \"spiBusy_min\":{\"$min\": \"&GRBM_SPI_BUSY\"},\n \"spiBusy_max\":{\"$max\": \"&GRBM_SPI_BUSY\"},\n\n \"sqBusy_avg\":{\"$avg\": \"&SQ_BUSY_CYCLES\"},\n \"sqBusy_min\":{\"$min\": \"&SQ_BUSY_CYCLES\"},\n \"sqBusy_max\":{\"$max\": \"&SQ_BUSY_CYCLES\"},\n\n \"dispatchedWorkgroups_avg\":{\"$avg\": \"&SPI_CSN_NUM_THREADGROUPS\"},\n \"dispatchedWorkgroups_min\":{\"$min\": \"&SPI_CSN_NUM_THREADGROUPS\"},\n \"dispatchedWorkgroups_max\":{\"$max\": \"&SPI_CSN_NUM_THREADGROUPS\"},\n\n \"dispatchedWavefronts_avg\":{\"$avg\": \"&SPI_CSN_WAVE\"},\n \"dispatchedWavefronts_min\":{\"$min\": \"&SPI_CSN_WAVE\"},\n \"dispatchedWavefronts_max\":{\"$max\": \"&SPI_CSN_WAVE\"},\n\n \"waveAllocFail_avg\":{\"$avg\": \"&SPI_RA_REQ_NO_ALLOC\"},\n \"waveAllocFail_min\":{\"$min\": \"&SPI_RA_REQ_NO_ALLOC\"},\n \"waveAllocFail_max\":{\"$max\": \"&SPI_RA_REQ_NO_ALLOC\"},\n\n \"waveAllocFailCS_avg\":{\"$avg\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"},\n \"waveAllocFailCS_min\":{\"$min\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"},\n \"waveAllocFailCS_max\":{\"$max\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"}\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"GPU Busy\",\n \"Avg\": \"&gpuBusy_avg\",\n \"Min\": \"&gpuBusy_min\",\n \"Max\": \"&gpuBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CS Busy\",\n \"Avg\": \"&csBusy_avg\",\n \"Min\": \"&csBusy_min\",\n \"Max\": \"&csBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"SPI Busy\",\n \"Avg\": \"&spiBusy_avg\",\n \"Min\": \"&spiBusy_min\",\n \"Max\": \"&spiBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"SQ Busy\",\n \"Avg\": \"&sqBusy_avg\",\n \"Min\": \"&sqBusy_min\",\n \"Max\": \"&sqBusy_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"Dispatched Workgroups\",\n \"Avg\": \"&dispatchedWorkgroups_avg\",\n \"Min\": \"&dispatchedWorkgroups_min\",\n \"Max\": \"&dispatchedWorkgroups_max\", \n \"Unit\": \"Workgroups\"\n },\n {\n \"Metric\": \"Dispatched Wavefronts\",\n \"Avg\": \"&dispatchedWavefronts_avg\",\n \"Min\": \"&dispatchedWavefronts_min\",\n \"Max\": \"&dispatchedWavefronts_max\", \n \"Unit\": \"Wavefronts\"\n },\n {\n \"Metric\": \"Wave Alloc Failed\",\n \"Avg\": \"&waveAllocFail_avg\",\n \"Min\": \"&waveAllocFail_min\",\n \"Max\": \"&waveAllocFail_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"Wave Alloc Failed - CS\",\n \"Avg\": \"&waveAllocFailCS_avg\",\n \"Min\": \"&waveAllocFailCS_min\",\n \"Max\": \"&waveAllocFailCS_max\", \n \"Unit\": \"Cycles\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "SPI Stats", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Unit 2": true + }, + "indexByName": { + "Avg 1": 3, + "Avg 2": 4, + "Max 1": 7, + "Max 2": 8, + "Metric 1": 0, + "Metric 2": 1, + "Min 1": 5, + "Min 2": 6, + "Unit 1": 9, + "Unit 2": 2 + }, + "renameByName": { + "Avg 1": "Avg (Current)", + "Avg 2": "Avg (Baseline)", + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)", + "Unit 1": "" + } + } + } + ], + "type": "table" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 117 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 121 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 285 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 102 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 122 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 242 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 121 + } + ] + } + ] + }, + "gridPos": { + "h": 15, + "w": 12, + "x": 12, + "y": 7 + }, + "id": 104, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n\n \"waveReqFailCS_avg\":{\"$avg\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"},\n \"waveReqFailCS_min\":{\"$min\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"},\n \"waveReqFailCS_max\":{\"$max\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"},\n\n \"csStall_avg\":{\"$avg\": \"&SPI_RA_RES_STALL_CSN\"},\n \"csStall_min\":{\"$min\": \"&SPI_RA_RES_STALL_CSN\"},\n \"csStall_max\":{\"$max\": \"&SPI_RA_RES_STALL_CSN\"},\n\n \"csStallRate_avg\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&SPI_RA_RES_STALL_CSN\"]}, \"&GRBM_SPI_BUSY\"]},\n null\n ]\n }},\n \"csStallRate_min\": {\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&SPI_RA_RES_STALL_CSN\"]}, \"&GRBM_SPI_BUSY\"]},\n null\n ]\n }},\n \"csStallRate_max\": {\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&SPI_RA_RES_STALL_CSN\"]}, \"&GRBM_SPI_BUSY\"]},\n null\n ]\n }},\n\n \"scratchStall_avg\":{\"$avg\": \"&SPI_RA_TMP_STALL_CSN\"},\n \"scratchStall_min\":{\"$min\": \"&SPI_RA_TMP_STALL_CSN\"},\n \"scratchStall_max\":{\"$max\": \"&SPI_RA_TMP_STALL_CSN\"},\n\n \"simdWaveslots_avg\":{\"$avg\": \"&SPI_RA_WAVE_SIMD_FULL_CSN\"},\n \"simdWaveslots_min\":{\"$min\": \"&SPI_RA_WAVE_SIMD_FULL_CSN\"},\n \"simdWaveslots_max\":{\"$max\": \"&SPI_RA_WAVE_SIMD_FULL_CSN\"},\n\n \"simdVGPRs_avg\":{\"$avg\": \"&SPI_RA_VGPR_SIMD_FULL_CSN\"},\n \"simdVGPRs_min\":{\"$min\": \"&SPI_RA_VGPR_SIMD_FULL_CSN\"},\n \"simdVGPRs_max\":{\"$max\": \"&SPI_RA_VGPR_SIMD_FULL_CSN\"},\n\n \"simdSGPRs_avg\":{\"$avg\": \"&SPI_RA_SGPR_SIMD_FULL_CSN\"},\n \"simdSGPRs_min\":{\"$min\": \"&SPI_RA_SGPR_SIMD_FULL_CSN\"},\n \"simdSGPRs_max\":{\"$max\": \"&SPI_RA_SGPR_SIMD_FULL_CSN\"},\n\n \"cuLDS_avg\":{\"$avg\": \"&SPI_RA_LDS_CU_FULL_CSN\"},\n \"cuLDS_min\":{\"$min\": \"&SPI_RA_LDS_CU_FULL_CSN\"},\n \"cuLDS_max\":{\"$max\": \"&SPI_RA_LDS_CU_FULL_CSN\"},\n\n \"cuBarries_avg\":{\"$avg\": \"&SPI_RA_BAR_CU_FULL_CSN\"},\n \"cuBarries_min\":{\"$min\": \"&SPI_RA_BAR_CU_FULL_CSN\"},\n \"cuBarries_max\":{\"$max\": \"&SPI_RA_BAR_CU_FULL_CSN\"},\n\n \"bulkyResource_avg\":{\"$avg\": \"&SPI_RA_BULKY_CU_FULL_CSN\"},\n \"bulkyResource_min\":{\"$min\": \"&SPI_RA_BULKY_CU_FULL_CSN\"},\n \"bulkyResource_max\":{\"$max\": \"&SPI_RA_BULKY_CU_FULL_CSN\"},\n\n \"threadgroupLimit_avg\":{\"$avg\": \"&SPI_RA_TGLIM_CU_FULL_CSN\"},\n \"threadgroupLimit_min\":{\"$min\": \"&SPI_RA_TGLIM_CU_FULL_CSN\"},\n \"threadgroupLimit_max\":{\"$max\": \"&SPI_RA_TGLIM_CU_FULL_CSN\"},\n\n \"waveLimit_avg\":{\"$avg\": \"&SPI_RA_WVLIM_STALL_CSN\"},\n \"waveLimit_min\":{\"$min\": \"&SPI_RA_WVLIM_STALL_CSN\"},\n \"waveLimit_max\":{\"$max\": \"&SPI_RA_WVLIM_STALL_CSN\"},\n\n \"vgprsWrites_avg\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n {\"$divide\": [{ \"$multiply\": [4, \"&SPI_VWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"]},\n null\n ]\n }},\n \"vgprsWrites_min\": {\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n {\"$divide\": [{ \"$multiply\": [4, \"&SPI_VWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"]},\n null\n ]\n }},\n \"vgprsWrites_max\": {\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n {\"$divide\": [{ \"$multiply\": [4, \"&SPI_VWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"]},\n null\n ]\n }},\n\n \"sgprsWrites_avg\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n { \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"] },\n null\n ]\n }},\n \"sgprsWrites_min\": {\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n { \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"] },\n null\n ]\n }},\n \"sgprsWrites_max\": {\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n { \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"] },\n null\n ]\n }},\n \n \n \"sgprsWritesUti_avg\":{\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&GRBM_SPI_BUSY\"] }, 8] },\n null\n ]\n }},\n \"sgprsWritesUti_min\":{\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&GRBM_SPI_BUSY\"] }, 8] },\n null\n ]\n }},\n \"sgprsWritesUti_max\":{\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&GRBM_SPI_BUSY\"] }, 8] },\n null\n ]\n }}\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Wave request Failed (CS)\",\n \"Avg\": \"&waveReqFailCS_avg\",\n \"Min\": \"&waveReqFailCS_min\",\n \"Max\": \"&waveReqFailCS_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CS Stall\",\n \"Avg\": \"&csStall_avg\",\n \"Min\": \"&csStall_min\",\n \"Max\": \"&csStall_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CS Stall Rate\",\n \"Avg\": \"&csStallRate_avg\",\n \"Min\": \"&csStallRate_min\",\n \"Max\": \"&csStallRate_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"Scratch Stall\",\n \"Avg\": \"&scratchStall_avg\",\n \"Min\": \"&scratchStall_min\",\n \"Max\": \"&scratchStall_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"Insufficient SIMD Waveslots\",\n \"Avg\": \"&simdWaveslots_avg\",\n \"Min\": \"&simdWaveslots_min\",\n \"Max\": \"&simdWaveslots_max\", \n \"Unit\": \"#SIMD\"\n },\n {\n \"Metric\": \"Insufficient SIMD VGPRs\",\n \"Avg\": \"&simdVGPRs_avg\",\n \"Min\": \"&simdVGPRs_min\",\n \"Max\": \"&simdVGPRs_max\", \n \"Unit\": \"#SIMD\"\n },\n {\n \"Metric\": \"Insufficient SIMD SGPRs\",\n \"Avg\": \"&simdSGPRs_avg\",\n \"Min\": \"&simdSGPRs_min\",\n \"Max\": \"&simdSGPRs_max\", \n \"Unit\": \"#SIMD\"\n },\n {\n \"Metric\": \"Insufficient CU LDS\",\n \"Avg\": \"&cuLDS_avg\",\n \"Min\": \"&cuLDS_min\",\n \"Max\": \"&cuLDS_max\", \n \"Unit\": \"#CU\"\n },\n {\n \"Metric\": \"Insufficient CU Barries\",\n \"Avg\": \"&cuBarries_avg\",\n \"Min\": \"&cuBarries_min\",\n \"Max\": \"&cuBarries_max\", \n \"Unit\": \"#CU\"\n },\n {\n \"Metric\": \"Insufficient Bulky Resource\",\n \"Avg\": \"&bulkyResource_avg\",\n \"Min\": \"&bulkyResource_min\",\n \"Max\": \"&bulkyResource_max\", \n \"Unit\": \"#CU\"\n },\n {\n \"Metric\": \"Reach CU Threadgroups Limit\",\n \"Avg\": \"&threadgroupLimit_avg\",\n \"Min\": \"&threadgroupLimit_min\",\n \"Max\": \"&threadgroupLimit_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"Reach CU Wave Limit\",\n \"Avg\": \"&waveLimit_avg\",\n \"Min\": \"&waveLimit_min\",\n \"Max\": \"&waveLimit_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"VGPR Writes\",\n \"Avg\": \"&vgprsWrites_avg\",\n \"Min\": \"&vgprsWrites_min\",\n \"Max\": \"&vgprsWrites_max\", \n \"Unit\": \"Cycles/wave\"\n },\n {\n \"Metric\": \"SGPR Writes\",\n \"Avg\": \"&sgprsWrites_avg\",\n \"Min\": \"&sgprsWrites_min\",\n \"Max\": \"&sgprsWrites_max\", \n \"Unit\": \"Cycles/wave\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Shader Processor Input)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n\n \"waveReqFailCS_avg\":{\"$avg\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"},\n \"waveReqFailCS_min\":{\"$min\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"},\n \"waveReqFailCS_max\":{\"$max\": \"&SPI_RA_REQ_NO_ALLOC_CSN\"},\n\n \"csStall_avg\":{\"$avg\": \"&SPI_RA_RES_STALL_CSN\"},\n \"csStall_min\":{\"$min\": \"&SPI_RA_RES_STALL_CSN\"},\n \"csStall_max\":{\"$max\": \"&SPI_RA_RES_STALL_CSN\"},\n\n \"csStallRate_avg\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&SPI_RA_RES_STALL_CSN\"]}, \"&GRBM_SPI_BUSY\"]},\n null\n ]\n }},\n \"csStallRate_min\": {\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&SPI_RA_RES_STALL_CSN\"]}, \"&GRBM_SPI_BUSY\"]},\n null\n ]\n }},\n \"csStallRate_max\": {\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$multiply\": [100, \"&SPI_RA_RES_STALL_CSN\"]}, \"&GRBM_SPI_BUSY\"]},\n null\n ]\n }},\n\n \"scratchStall_avg\":{\"$avg\": \"&SPI_RA_TMP_STALL_CSN\"},\n \"scratchStall_min\":{\"$min\": \"&SPI_RA_TMP_STALL_CSN\"},\n \"scratchStall_max\":{\"$max\": \"&SPI_RA_TMP_STALL_CSN\"},\n\n \"simdWaveslots_avg\":{\"$avg\": \"&SPI_RA_WAVE_SIMD_FULL_CSN\"},\n \"simdWaveslots_min\":{\"$min\": \"&SPI_RA_WAVE_SIMD_FULL_CSN\"},\n \"simdWaveslots_max\":{\"$max\": \"&SPI_RA_WAVE_SIMD_FULL_CSN\"},\n\n \"simdVGPRs_avg\":{\"$avg\": \"&SPI_RA_VGPR_SIMD_FULL_CSN\"},\n \"simdVGPRs_min\":{\"$min\": \"&SPI_RA_VGPR_SIMD_FULL_CSN\"},\n \"simdVGPRs_max\":{\"$max\": \"&SPI_RA_VGPR_SIMD_FULL_CSN\"},\n\n \"simdSGPRs_avg\":{\"$avg\": \"&SPI_RA_SGPR_SIMD_FULL_CSN\"},\n \"simdSGPRs_min\":{\"$min\": \"&SPI_RA_SGPR_SIMD_FULL_CSN\"},\n \"simdSGPRs_max\":{\"$max\": \"&SPI_RA_SGPR_SIMD_FULL_CSN\"},\n\n \"cuLDS_avg\":{\"$avg\": \"&SPI_RA_LDS_CU_FULL_CSN\"},\n \"cuLDS_min\":{\"$min\": \"&SPI_RA_LDS_CU_FULL_CSN\"},\n \"cuLDS_max\":{\"$max\": \"&SPI_RA_LDS_CU_FULL_CSN\"},\n\n \"cuBarries_avg\":{\"$avg\": \"&SPI_RA_BAR_CU_FULL_CSN\"},\n \"cuBarries_min\":{\"$min\": \"&SPI_RA_BAR_CU_FULL_CSN\"},\n \"cuBarries_max\":{\"$max\": \"&SPI_RA_BAR_CU_FULL_CSN\"},\n\n \"bulkyResource_avg\":{\"$avg\": \"&SPI_RA_BULKY_CU_FULL_CSN\"},\n \"bulkyResource_min\":{\"$min\": \"&SPI_RA_BULKY_CU_FULL_CSN\"},\n \"bulkyResource_max\":{\"$max\": \"&SPI_RA_BULKY_CU_FULL_CSN\"},\n\n \"threadgroupLimit_avg\":{\"$avg\": \"&SPI_RA_TGLIM_CU_FULL_CSN\"},\n \"threadgroupLimit_min\":{\"$min\": \"&SPI_RA_TGLIM_CU_FULL_CSN\"},\n \"threadgroupLimit_max\":{\"$max\": \"&SPI_RA_TGLIM_CU_FULL_CSN\"},\n\n \"waveLimit_avg\":{\"$avg\": \"&SPI_RA_WVLIM_STALL_CSN\"},\n \"waveLimit_min\":{\"$min\": \"&SPI_RA_WVLIM_STALL_CSN\"},\n \"waveLimit_max\":{\"$max\": \"&SPI_RA_WVLIM_STALL_CSN\"},\n\n \"vgprsWrites_avg\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n {\"$divide\": [{ \"$multiply\": [4, \"&SPI_VWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"]},\n null\n ]\n }},\n \"vgprsWrites_min\": {\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n {\"$divide\": [{ \"$multiply\": [4, \"&SPI_VWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"]},\n null\n ]\n }},\n \"vgprsWrites_max\": {\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n {\"$divide\": [{ \"$multiply\": [4, \"&SPI_VWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"]},\n null\n ]\n }},\n\n \"sgprsWrites_avg\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n { \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"] },\n null\n ]\n }},\n \"sgprsWrites_min\": {\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n { \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"] },\n null\n ]\n }},\n \"sgprsWrites_max\": {\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&SPI_CSN_WAVE\", 0]}, \n { \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&SPI_CSN_WAVE\"] },\n null\n ]\n }},\n \n \n \"sgprsWritesUti_avg\":{\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&GRBM_SPI_BUSY\"] }, 8] },\n null\n ]\n }},\n \"sgprsWritesUti_min\":{\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&GRBM_SPI_BUSY\"] }, 8] },\n null\n ]\n }},\n \"sgprsWritesUti_max\":{\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&GRBM_SPI_BUSY\", 0]}, \n {\"$divide\": [{ \"$divide\": [{ \"$multiply\": [1, \"&SPI_SWC_CSC_WR\"] }, \"&GRBM_SPI_BUSY\"] }, 8] },\n null\n ]\n }}\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Wave request Failed (CS)\",\n \"Avg\": \"&waveReqFailCS_avg\",\n \"Min\": \"&waveReqFailCS_min\",\n \"Max\": \"&waveReqFailCS_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CS Stall\",\n \"Avg\": \"&csStall_avg\",\n \"Min\": \"&csStall_min\",\n \"Max\": \"&csStall_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"CS Stall Rate\",\n \"Avg\": \"&csStallRate_avg\",\n \"Min\": \"&csStallRate_min\",\n \"Max\": \"&csStallRate_max\", \n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"Scratch Stall\",\n \"Avg\": \"&scratchStall_avg\",\n \"Min\": \"&scratchStall_min\",\n \"Max\": \"&scratchStall_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"Insufficient SIMD Waveslots\",\n \"Avg\": \"&simdWaveslots_avg\",\n \"Min\": \"&simdWaveslots_min\",\n \"Max\": \"&simdWaveslots_max\", \n \"Unit\": \"#SIMD\"\n },\n {\n \"Metric\": \"Insufficient SIMD VGPRs\",\n \"Avg\": \"&simdVGPRs_avg\",\n \"Min\": \"&simdVGPRs_min\",\n \"Max\": \"&simdVGPRs_max\", \n \"Unit\": \"#SIMD\"\n },\n {\n \"Metric\": \"Insufficient SIMD SGPRs\",\n \"Avg\": \"&simdSGPRs_avg\",\n \"Min\": \"&simdSGPRs_min\",\n \"Max\": \"&simdSGPRs_max\", \n \"Unit\": \"#SIMD\"\n },\n {\n \"Metric\": \"Insufficient CU LDS\",\n \"Avg\": \"&cuLDS_avg\",\n \"Min\": \"&cuLDS_min\",\n \"Max\": \"&cuLDS_max\", \n \"Unit\": \"#CU\"\n },\n {\n \"Metric\": \"Insufficient CU Barries\",\n \"Avg\": \"&cuBarries_avg\",\n \"Min\": \"&cuBarries_min\",\n \"Max\": \"&cuBarries_max\", \n \"Unit\": \"#CU\"\n },\n {\n \"Metric\": \"Insufficient Bulky Resource\",\n \"Avg\": \"&bulkyResource_avg\",\n \"Min\": \"&bulkyResource_min\",\n \"Max\": \"&bulkyResource_max\", \n \"Unit\": \"#CU\"\n },\n {\n \"Metric\": \"Reach CU Threadgroups Limit\",\n \"Avg\": \"&threadgroupLimit_avg\",\n \"Min\": \"&threadgroupLimit_min\",\n \"Max\": \"&threadgroupLimit_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"Reach CU Wave Limit\",\n \"Avg\": \"&waveLimit_avg\",\n \"Min\": \"&waveLimit_min\",\n \"Max\": \"&waveLimit_max\", \n \"Unit\": \"Cycles\"\n },\n {\n \"Metric\": \"VGPR Writes\",\n \"Avg\": \"&vgprsWrites_avg\",\n \"Min\": \"&vgprsWrites_min\",\n \"Max\": \"&vgprsWrites_max\", \n \"Unit\": \"Cycles/wave\"\n },\n {\n \"Metric\": \"SGPR Writes\",\n \"Avg\": \"&sgprsWrites_avg\",\n \"Min\": \"&sgprsWrites_min\",\n \"Max\": \"&sgprsWrites_max\", \n \"Unit\": \"Cycles/wave\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "SPI Resource Allocation", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Unit 2": true + }, + "indexByName": { + "Avg 1": 3, + "Avg 2": 4, + "Max 1": 7, + "Max 2": 8, + "Metric 1": 0, + "Metric 2": 1, + "Min 1": 5, + "Min 2": 6, + "Unit 1": 9, + "Unit 2": 2 + }, + "renameByName": { + "Avg 1": "Avg (Current)", + "Avg 2": "Avg (Baseline)", + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Shader Processor Input (SPI)", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 185, + "panels": [ + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 169 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 142 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 196 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 174 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max" + }, + "properties": [ + { + "id": "custom.width", + "value": 168 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min" + }, + "properties": [ + { + "id": "custom.width", + "value": 272 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "custom.width", + "value": 225 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 103 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 115 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 117 + } + ] + } + ] + }, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 10, + "interval": "12h", + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"gridSize_avg\":{\"$avg\": \"&grd\"},\n \"gridSize_min\":{\"$min\": \"&grd\"},\n \"gridSize_max\":{\"$max\": \"&grd\"},\n\n \"workSize_avg\":{\"$avg\": \"&wgr\"},\n \"workSize_min\":{\"$min\": \"&wgr\"},\n \"workSize_max\":{\"$max\": \"&wgr\"},\n\n \"totWavefront_avg\":{\"$avg\": \"&SPI_CSN_WAVE\"},\n \"totWavefront_min\":{\"$min\": \"&SPI_CSN_WAVE\"},\n \"totWavefront_max\":{\"$max\": \"&SPI_CSN_WAVE\"},\n\n \"savedWavefront_avg\":{\"$avg\": \"&SQ_WAVES_SAVED\"},\n \"savedWavefront_min\":{\"$min\": \"&SQ_WAVES_SAVED\"},\n \"savedWavefront_max\":{\"$max\": \"&SQ_WAVES_SAVED\"},\n\n \"restoredWavefront_avg\":{\"$avg\": \"&SQ_WAVES_RESTORED\"},\n \"restoredWavefront_min\":{\"$min\": \"&SQ_WAVES_RESTORED\"},\n \"restoredWavefront_max\":{\"$max\": \"&SQ_WAVES_RESTORED\"},\n\n \"vgprs_avg\":{\"$avg\": \"&vgpr\"},\n \"vgprs_min\":{\"$min\": \"&vgpr\"},\n \"vgprs_max\":{\"$max\": \"&vgpr\"},\n\n \"sgprs_avg\":{\"$avg\": \"&sgpr\"},\n \"sgprs_min\":{\"$min\": \"&sgpr\"},\n \"sgprs_max\":{\"$max\": \"&sgpr\"},\n\n \"ldsAlloc_avg\":{\"$avg\": \"&lds\"},\n \"ldsAlloc_min\":{\"$min\": \"&lds\"},\n \"ldsAlloc_max\":{\"$max\": \"&lds\"},\n\n \"scratchAlloc_avg\":{\"$avg\": \"&scr\"},\n \"scratchAlloc_min\":{\"$min\": \"&scr\"},\n \"scratchAlloc_max\":{\"$max\": \"&scr\"}\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Grid Size\",\n \"Avg\": \"&gridSize_avg\",\n \"Min\": \"&gridSize_min\",\n \"Max\": \"&gridSize_max\",\n \"Unit\": \"Work Items\"\n },\n {\n \"Metric\": \"Workgroup Size\",\n \"Avg\": \"&workSize_avg\",\n \"Min\": \"&workSize_min\",\n \"Max\": \"&workSize_max\",\n \"Unit\": \"Work Items\"\n },\n {\n \"Metric\": \"Total Wavefronts\",\n \"Avg\": \"&totWavefront_avg\",\n \"Min\": \"&totWavefront_min\",\n \"Max\": \"&totWavefront_max\",\n \"Unit\": \"Wavefronts\"\n },\n {\n \"Metric\": \"Saved Wavefronts\",\n \"Avg\": \"&savedWavefront_avg\",\n \"Min\": \"&savedWavefront_min\",\n \"Max\": \"&savedWavefront_max\",\n \"Unit\": \"Wavefronts\"\n },\n {\n \"Metric\": \"Restored Wavefronts\",\n \"Avg\": \"&restoredWavefront_avg\",\n \"Min\": \"&restoredWavefront_min\",\n \"Max\": \"&restoredWavefront_max\",\n \"Unit\": \"Wavefronts\"\n },\n {\n \"Metric\": \"VGPRs\",\n \"Avg\": \"&vgprs_avg\",\n \"Min\": \"&vgprs_min\",\n \"Max\": \"&vgprs_max\",\n \"Unit\": \"Registers\"\n },\n {\n \"Metric\": \"SGPRs\",\n \"Avg\": \"&sgprs_avg\",\n \"Min\": \"&sgprs_min\",\n \"Max\": \"&sgprs_max\",\n \"Unit\":\"Registers\"\n },\n {\n \"Metric\": \"LDS Allocation\",\n \"Avg\": \"&ldsAlloc_avg\",\n \"Min\": \"&ldsAlloc_min\",\n \"Max\": \"&ldsAlloc_max\",\n \"Unit\": \"Bytes\"\n },\n {\n \"Metric\": \"Scratch Allocation\",\n \"Avg\": \"&scratchAlloc_avg\",\n \"Min\": \"&scratchAlloc_min\",\n \"Max\": \"&scratchAlloc_max\",\n \"Unit\": \"Bytes\"\n }\n \n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Wavefront)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"gridSize_avg\":{\"$avg\": \"&grd\"},\n \"gridSize_min\":{\"$min\": \"&grd\"},\n \"gridSize_max\":{\"$max\": \"&grd\"},\n\n \"workSize_avg\":{\"$avg\": \"&wgr\"},\n \"workSize_min\":{\"$min\": \"&wgr\"},\n \"workSize_max\":{\"$max\": \"&wgr\"},\n\n\n \"totWavefront_avg\":{\"$avg\": \"&SPI_CSN_WAVE\"},\n \"totWavefront_min\":{\"$min\": \"&SPI_CSN_WAVE\"},\n \"totWavefront_max\":{\"$max\": \"&SPI_CSN_WAVE\"},\n\n \"savedWavefront_avg\":{\"$avg\": \"&SQ_WAVES_SAVED\"},\n \"savedWavefront_min\":{\"$min\": \"&SQ_WAVES_SAVED\"},\n \"savedWavefront_max\":{\"$max\": \"&SQ_WAVES_SAVED\"},\n\n \"restoredWavefront_avg\":{\"$avg\": \"&SQ_WAVES_RESTORED\"},\n \"restoredWavefront_min\":{\"$min\": \"&SQ_WAVES_RESTORED\"},\n \"restoredWavefront_max\":{\"$max\": \"&SQ_WAVES_RESTORED\"},\n\n\n \"vgprs_avg\":{\"$avg\": \"&vgpr\"},\n \"vgprs_min\":{\"$min\": \"&vgpr\"},\n \"vgprs_max\":{\"$max\": \"&vgpr\"},\n\n \"sgprs_avg\":{\"$avg\": \"&sgpr\"},\n \"sgprs_min\":{\"$min\": \"&sgpr\"},\n \"sgprs_max\":{\"$max\": \"&sgpr\"},\n\n \"ldsAlloc_avg\":{\"$avg\": \"&lds\"},\n \"ldsAlloc_min\":{\"$min\": \"&lds\"},\n \"ldsAlloc_max\":{\"$max\": \"&lds\"},\n\n \"scratchAlloc_avg\":{\"$avg\": \"&scr\"},\n \"scratchAlloc_min\":{\"$min\": \"&scr\"},\n \"scratchAlloc_max\":{\"$max\": \"&scr\"}\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Grid Size\",\n \"Avg\": \"&gridSize_avg\",\n \"Min\": \"&gridSize_min\",\n \"Max\": \"&gridSize_max\",\n \"Unit\": \"Work Items\"\n },\n {\n \"Metric\": \"Workgroup Size\",\n \"Avg\": \"&workSize_avg\",\n \"Min\": \"&workSize_min\",\n \"Max\": \"&workSize_max\",\n \"Unit\": \"Work Items\"\n },\n {\n \"Metric\": \"Total Wavefronts\",\n \"Avg\": \"&totWavefront_avg\",\n \"Min\": \"&totWavefront_min\",\n \"Max\": \"&totWavefront_max\",\n \"Unit\": \"Wavefronts\"\n },\n {\n \"Metric\": \"Saved Wavefronts\",\n \"Avg\": \"&savedWavefront_avg\",\n \"Min\": \"&savedWavefront_min\",\n \"Max\": \"&savedWavefront_max\",\n \"Unit\": \"Wavefronts\"\n },\n {\n \"Metric\": \"Restored Wavefronts\",\n \"Avg\": \"&restoredWavefront_avg\",\n \"Min\": \"&restoredWavefront_min\",\n \"Max\": \"&restoredWavefront_max\",\n \"Unit\": \"Wavefronts\"\n },\n {\n \"Metric\": \"VGPRs\",\n \"Avg\": \"&vgprs_avg\",\n \"Min\": \"&vgprs_min\",\n \"Max\": \"&vgprs_max\",\n \"Unit\": \"Registers\"\n },\n {\n \"Metric\": \"SGPRs\",\n \"Avg\": \"&sgprs_avg\",\n \"Min\": \"&sgprs_min\",\n \"Max\": \"&sgprs_max\",\n \"Unit\":\"Registers\"\n },\n {\n \"Metric\": \"LDS Allocation\",\n \"Avg\": \"&ldsAlloc_avg\",\n \"Min\": \"&ldsAlloc_min\",\n \"Max\": \"&ldsAlloc_max\",\n \"Unit\": \"Bytes\"\n },\n {\n \"Metric\": \"Scratch Allocation\",\n \"Avg\": \"&scratchAlloc_avg\",\n \"Min\": \"&scratchAlloc_min\",\n \"Max\": \"&scratchAlloc_max\",\n \"Unit\": \"Bytes\"\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Wavefront Launch Stats", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Unit 2": true, + "Units 2": true, + "metric 2": true + }, + "indexByName": { + "Avg 1": 1, + "Avg 2": 2, + "Max 1": 5, + "Max 2": 6, + "Metric 1": 0, + "Metric 2": 7, + "Min 1": 3, + "Min 2": 4, + "Unit 1": 9, + "Unit 2": 8 + }, + "renameByName": { + "Avg 1": "Avg (Current)", + "Avg 2": "Avg (Baseline)", + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 148 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 122 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 106 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "custom.width", + "value": 223 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 169 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 165 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 133 + } + ] + } + ] + }, + "gridPos": { + "h": 11, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 34, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"instrWavefront_avg\":{\"$avg\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_WAVES\" ] }},\n \"instrWavefront_min\":{\"$min\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_WAVES\" ] }},\n \"instrWavefront_max\":{\"$max\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_WAVES\" ] }},\n\n \"waveCycles_avg\":{\"$avg\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ]}},\n \"waveCycles_min\":{\"$min\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ]}},\n \"waveCycles_max\":{\"$max\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ]}},\n\n \"depWaitingCycles_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"depWaitingCycles_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"depWaitingCycles_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_ANY\"] }, \"&SQ_WAVES\" ]}},\n\n \"issueWaitCycles_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"issueWaitCycles_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"issueWaitCycles_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n\n \"activeCycles_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_ACTIVE_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"activeCycles_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_ACTIVE_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"activeCycles_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_ACTIVE_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n\n \"kernelTime_avg\":{\"$avg\": {\"$subtract\": [ \"&EndNs\", \"&BeginNs\" ]}},\n \"kernelTime_min\":{\"$min\": {\"$subtract\": [ \"&EndNs\", \"&BeginNs\" ]}},\n \"kernelTime_max\":{\"$max\": {\"$subtract\": [ \"&EndNs\", \"&BeginNs\" ]}},\n\n \"kernelCycle_avg\":{\"$avg\": \"&GRBM_GUI_ACTIVE\"},\n \"kernelCycle_min\":{\"$min\": \"&GRBM_GUI_ACTIVE\"},\n \"kernelCycle_max\":{\"$max\": \"&GRBM_GUI_ACTIVE\"}\n\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Kernel Time (Nanosec)\",\n \"Avg\": \"&kernelTime_avg\",\n \"Min\": \"&kernelTime_min\",\n \"Max\": \"&kernelTime_max\",\n \"Unit\":\"ns\"\n },\n {\n \"Metric\": \"Kernel Time (Cycles)\",\n \"Avg\": \"&kernelCycle_avg\",\n \"Min\": \"&kernelCycle_min\",\n \"Max\": \"&kernelCycle_max\",\n \"Unit\":\"Cycle\"\n },\n\n {\n \"Metric\": \"Instr/wavefront\",\n \"Avg\": \"&instrWavefront_avg\",\n \"Min\": \"&instrWavefront_min\",\n \"Max\": \"&instrWavefront_max\",\n \"Unit\": \"Instr/wavefront\"\n },\n {\n \"Metric\": \"Wave Cycles\",\n \"Avg\": \"&waveCycles_avg\",\n \"Min\": \"&waveCycles_min\",\n \"Max\": \"&waveCycles_max\",\n \"Unit\": \"Cycles/wave\"\n },\n {\n \"Metric\": \"Dependency Wait Cycles\",\n \"Avg\": \"&depWaitingCycles_avg\",\n \"Min\": \"&depWaitingCycles_min\",\n \"Max\": \"&depWaitingCycles_max\",\n \"Unit\": \"Cycles/wave\"\n },\n {\n \"Metric\": \"Issue Wait Cycles\",\n \"Avg\": \"&issueWaitCycles_avg\",\n \"Min\": \"&issueWaitCycles_min\",\n \"Max\": \"&issueWaitCycles_max\",\n \"Unit\": \"Cycles/wave\"\n },\n {\n \"Metric\": \"Active Cycles\",\n \"Avg\": \"&activeCycles_avg\",\n \"Min\": \"&activeCycles_min\",\n \"Max\": \"&activeCycles_max\",\n \"Unit\": \"Cycles/wave\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }},\n {\"$unionWith\": {\n \"coll\": \"SQ_LEVEL_WAVES\",\n \"pipeline\": [\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n\n {\"$group\": {\n \"_id\": null,\n \"occAvg\": {\"$avg\": { \"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&GRBM_GUI_ACTIVE\" ] } },\n \"occMin\": {\"$min\": { \"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&GRBM_GUI_ACTIVE\" ] } },\n \"occMax\": {\"$max\": { \"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&GRBM_GUI_ACTIVE\" ] } }\n }},\n {\"$project\": {\n \"_id\":0,\n \"Metric\": \"Wavefront Occupancy\",\n \"Avg\": \"&occAvg\",\n \"Min\":\"&occMin\",\n \"Max\":\"&occMax\",\n \"Unit\":\"Wavefronts\"\n }}\n ]\n }}\n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Wavefront)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"instrWavefront_avg\":{\"$avg\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_WAVES\" ] }},\n \"instrWavefront_min\":{\"$min\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_WAVES\" ] }},\n \"instrWavefront_max\":{\"$max\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_WAVES\" ] }},\n\n \"waveCycles_avg\":{\"$avg\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ]}},\n \"waveCycles_min\":{\"$min\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ]}},\n \"waveCycles_max\":{\"$max\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ]}},\n\n \"depWaitingCycles_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"depWaitingCycles_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"depWaitingCycles_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_ANY\"] }, \"&SQ_WAVES\" ]}},\n\n \"issueWaitCycles_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"issueWaitCycles_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"issueWaitCycles_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_WAIT_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n\n \"activeCycles_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_ACTIVE_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"activeCycles_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_ACTIVE_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n \"activeCycles_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [4, \"&SQ_ACTIVE_INST_ANY\"] }, \"&SQ_WAVES\" ]}},\n\n \"kernelTime_avg\":{\"$avg\": {\"$subtract\": [ \"&EndNs\", \"&BeginNs\" ]}},\n \"kernelTime_min\":{\"$min\": {\"$subtract\": [ \"&EndNs\", \"&BeginNs\" ]}},\n \"kernelTime_max\":{\"$max\": {\"$subtract\": [ \"&EndNs\", \"&BeginNs\" ]}},\n\n \"kernelCycle_avg\":{\"$avg\": \"&GRBM_GUI_ACTIVE\"},\n \"kernelCycle_min\":{\"$min\": \"&GRBM_GUI_ACTIVE\"},\n \"kernelCycle_max\":{\"$max\": \"&GRBM_GUI_ACTIVE\"}\n\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Kernel Time (Nanosec)\",\n \"Avg\": \"&kernelTime_avg\",\n \"Min\": \"&kernelTime_min\",\n \"Max\": \"&kernelTime_max\",\n \"Unit\":\"ns\"\n },\n {\n \"Metric\": \"Kernel Time (Cycles)\",\n \"Avg\": \"&kernelCycle_avg\",\n \"Min\": \"&kernelCycle_min\",\n \"Max\": \"&kernelCycle_max\",\n \"Unit\":\"Cycle\"\n },\n\n {\n \"Metric\": \"Instr/wavefront\",\n \"Avg\": \"&instrWavefront_avg\",\n \"Min\": \"&instrWavefront_min\",\n \"Max\": \"&instrWavefront_max\",\n \"Unit\": \"Instr/wavefront\"\n },\n {\n \"Metric\": \"Wave Cycles\",\n \"Avg\": \"&waveCycles_avg\",\n \"Min\": \"&waveCycles_min\",\n \"Max\": \"&waveCycles_max\",\n \"Unit\": \"Cycles/wave\"\n },\n {\n \"Metric\": \"Dependency Wait Cycles\",\n \"Avg\": \"&depWaitingCycles_avg\",\n \"Min\": \"&depWaitingCycles_min\",\n \"Max\": \"&depWaitingCycles_max\",\n \"Unit\": \"Cycles/wave\"\n },\n {\n \"Metric\": \"Issue Wait Cycles\",\n \"Avg\": \"&issueWaitCycles_avg\",\n \"Min\": \"&issueWaitCycles_min\",\n \"Max\": \"&issueWaitCycles_max\",\n \"Unit\": \"Cycles/wave\"\n },\n {\n \"Metric\": \"Active Cycles\",\n \"Avg\": \"&activeCycles_avg\",\n \"Min\": \"&activeCycles_min\",\n \"Max\": \"&activeCycles_max\",\n \"Unit\": \"Cycles/wave\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }},\n {\"$unionWith\": {\n \"coll\": \"SQ_LEVEL_WAVES\",\n \"pipeline\": [\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Wavefront)\"}}\n }},\n\n {\"$group\": {\n \"_id\": null,\n \"occAvg\": {\"$avg\": { \"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&GRBM_GUI_ACTIVE\" ] } },\n \"occMin\": {\"$min\": { \"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&GRBM_GUI_ACTIVE\" ] } },\n \"occMax\": {\"$max\": { \"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&GRBM_GUI_ACTIVE\" ] } }\n }},\n {\"$project\": {\n \"_id\":0,\n \"Metric\": \"Wavefront Occupancy\",\n \"Avg\": \"&occAvg\",\n \"Min\":\"&occMin\",\n \"Max\":\"&occMax\",\n \"Unit\":\"Wavefronts\"\n }}\n ]\n }}\n ]);", + "type": "table" + } + ], + "title": "Wavefront Runtime Stats", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Unit 2": true + }, + "indexByName": { + "Avg 1": 3, + "Avg 2": 4, + "Max 1": 7, + "Max 2": 8, + "Metric 1": 0, + "Metric 2": 1, + "Min 1": 5, + "Min 2": 6, + "Unit 1": 9, + "Unit 2": 2 + }, + "renameByName": { + "Avg": "", + "Avg 1": "Avg (Current)", + "Avg 2": "Avg (Baseline)", + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)", + "Unit 1": "", + "Unit 2": "" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Wavefront", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 209, + "panels": [ + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [] + }, + "gridPos": { + "h": 17, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 12, + "options": { + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": true + }, + "showUnfilled": true, + "text": { + "valueSize": 16 + } + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "$Workload1.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"valu\": {\n \"$avg\": { \"$divide\": [ { \"$subtract\": [\"&SQ_INSTS_VALU\", \"&SQ_INSTS_MFMA\"]}, \"&denom\" ] }\n },\n \"mfma\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_MFMA\", \"&denom\" ] }\n },\n \"vmem\": {\n \"$avg\": { \"$divide\": [ { \"$subtract\": [\"&SQ_INSTS_VMEM\", \"&SQ_INSTS_FLAT_LDS_ONLY\"]}, \"&denom\" ] }\n },\n \"lds\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_LDS\", \"&denom\" ] }\n },\n \"salu\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_SALU\", \"&denom\" ] }\n },\n \"smem\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_SMEM\", \"&denom\" ] }\n },\n \"branch\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_BRANCH\", \"&denom\" ] }\n },\n \"gds\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_GDS\", \"&denom\" ] }\n }\n }\n },\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"VALU - Vector\",\n \"count\": \"&valu\"\n },\n {\n \"metric\": \"VMEM\",\n \"count\": \"&vmem\"\n },\n {\n \"metric\": \"LDS\",\n \"count\": \"&lds\"\n },\n {\n \"metric\": \"VALU - MFMA\",\n \"count\": \"&mfma\"\n },\n {\n \"metric\": \"SALU\",\n \"count\": \"&salu\"\n },\n {\n \"metric\": \"SMEM\",\n \"count\": \"&smem\"\n },\n {\n \"metric\": \"Branch\",\n \"count\": \"&branch\"\n },\n {\n \"metric\": \"GDS\",\n \"count\": \"&gds\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "$Workload2.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Instruction Mix)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n \n {\"$group\": {\n \"_id\": null,\n \"valu\": {\n \"$avg\": { \"$divide\": [ { \"$subtract\": [\"&SQ_INSTS_VALU\", \"&SQ_INSTS_MFMA\"]}, \"&denom\" ] }\n },\n \"mfma\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_MFMA\", \"&denom\" ] }\n },\n \"vmem\": {\n \"$avg\": { \"$divide\": [ { \"$subtract\": [\"&SQ_INSTS_VMEM\", \"&SQ_INSTS_FLAT_LDS_ONLY\"]}, \"&denom\" ] }\n },\n \"lds\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_LDS\", \"&denom\" ] }\n },\n \"salu\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_SALU\", \"&denom\" ] }\n },\n \"smem\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_SMEM\", \"&denom\" ] }\n },\n \"branch\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_BRANCH\", \"&denom\" ] }\n },\n \"gds\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_GDS\", \"&denom\" ] }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"VALU - Vector (Baseline)\",\n \"count\": \"&valu\"\n },\n {\n \"metric\": \"VMEM (Baseline)\",\n \"count\": \"&vmem\"\n },\n {\n \"metric\": \"LDS (Baseline)\",\n \"count\": \"&lds\"\n },\n {\n \"metric\": \"VALU - MFMA (Baseline)\",\n \"count\": \"&mfma\"\n },\n {\n \"metric\": \"SALU (Baseline)\",\n \"count\": \"&salu\"\n },\n {\n \"metric\": \"SMEM (Baseline)\",\n \"count\": \"&smem\"\n },\n {\n \"metric\": \"Branch (Baseline)\",\n \"count\": \"&branch\"\n },\n {\n \"metric\": \"GDS (Baseline)\",\n \"count\": \"&gds\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + } + ], + "title": "Instruction Mix", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "sortBy", + "options": { + "fields": {}, + "sort": [ + { + "field": "metric" + } + ] + } + } + ], + "transparent": true, + "type": "bargauge" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 24, + "w": 12, + "x": 12, + "y": 9 + }, + "id": 24, + "options": { + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^count$/", + "limit": 100, + "values": true + }, + "showUnfilled": true, + "text": {} + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n\n {\"$group\": {\n \"_id\": null,\n \"count_int_i32\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_INT32\", \"&denom\" ] }\n },\n \"count_int_i64\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_INT64\", \"&denom\" ] }\n },\n \"count_f16_add\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_ADD_F16\", \"&denom\" ] }\n },\n \"count_f16_MUL\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MUL_F16\", \"&denom\" ] }\n },\n \"count_f16_fma\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_FMA_F16\", \"&denom\" ] }\n },\n \"count_f16_trans\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_TRANS_F16\", \"&denom\" ] }\n },\n \"count_f32_add\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_ADD_F32\", \"&denom\" ] }\n },\n \"count_f32_MUL\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MUL_F32\", \"&denom\" ] }\n },\n \"count_f32_fma\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_FMA_F32\", \"&denom\" ] }\n },\n \"count_f32_trans\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_TRANS_F32\", \"&denom\" ] }\n },\n \"count_f64_add\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_ADD_F64\", \"&denom\" ] }\n },\n \"count_f64_MUL\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MUL_F64\", \"&denom\" ] }\n },\n \"count_f64_fma\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_FMA_F64\", \"&denom\" ] }\n },\n \"count_f64_trans\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_TRANS_F64\", \"&denom\" ] }\n },\n \"conversion\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_CVT\", \"&denom\" ] }\n }\n }\n },\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"INT32\",\n \"count\": \"&count_int_i32\"\n },\n {\n \"metric\": \"INT64\",\n \"count\": \"&count_int_i64\"\n },\n {\n \"metric\": \"F16-ADD\",\n \"count\": \"&count_f16_add\"\n },\n {\n \"metric\": \"F16-MUL\",\n \"count\": \"&count_f16_MUL\"\n },\n {\n \"metric\": \"F16-FMA\",\n \"count\": \"&count_f16_fma\"\n },\n {\n \"metric\": \"F16-Trans\",\n \"count\": \"&count_f16_trans\"\n },\n {\n \"metric\": \"F32-ADD\",\n \"count\": \"&count_f32_add\"\n },\n {\n \"metric\": \"F32-MUL\",\n \"count\": \"&count_f32_MUL\"\n },\n {\n \"metric\": \"F32-FMA\",\n \"count\": \"&count_f32_fma\"\n },\n {\n \"metric\": \"F32-Trans\",\n \"count\": \"&count_f32_trans\"\n },\n {\n \"metric\": \"F64-ADD\",\n \"count\": \"&count_f64_add\"\n },\n {\n \"metric\": \"F64-MUL\",\n \"count\": \"&count_f64_MUL\"\n },\n {\n \"metric\": \"F64-FMA\",\n \"count\": \"&count_f64_fma\"\n },\n {\n \"metric\": \"F64-Trans\",\n \"count\": \"&count_f64_trans\"\n },\n {\n \"metric\": \"Conversion\",\n \"count\": \"&conversion\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Instruction Mix)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n\n {\"$group\": {\n \"_id\": null,\n \"count_int_i32\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_INT32\", \"&denom\" ] }\n },\n \"count_int_i64\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_INT64\", \"&denom\" ] }\n },\n \"count_f16_add\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_ADD_F16\", \"&denom\" ] }\n },\n \"count_f16_MUL\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MUL_F16\", \"&denom\" ] }\n },\n \"count_f16_fma\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_FMA_F16\", \"&denom\" ] }\n },\n \"count_f16_trans\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_TRANS_F16\", \"&denom\" ] }\n },\n \"count_f32_add\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_ADD_F32\", \"&denom\" ] }\n },\n \"count_f32_MUL\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MUL_F32\", \"&denom\" ] }\n },\n \"count_f32_fma\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_FMA_F32\", \"&denom\" ] }\n },\n \"count_f32_trans\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_TRANS_F32\", \"&denom\" ] }\n },\n \"count_f64_add\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_ADD_F64\", \"&denom\" ] }\n },\n \"count_f64_MUL\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MUL_F64\", \"&denom\" ] }\n },\n \"count_f64_fma\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_FMA_F64\", \"&denom\" ] }\n },\n \"count_f64_trans\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_TRANS_F64\", \"&denom\" ] }\n },\n \"conversion\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_CVT\", \"&denom\" ] }\n }\n }\n },\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"INT32 (Baseline)\",\n \"count\": \"&count_int_i32\"\n },\n {\n \"metric\": \"INT64 (Baseline)\",\n \"count\": \"&count_int_i64\"\n },\n {\n \"metric\": \"F16-ADD (Baseline)\",\n \"count\": \"&count_f16_add\"\n },\n {\n \"metric\": \"F16-MUL (Baseline)\",\n \"count\": \"&count_f16_MUL\"\n },\n {\n \"metric\": \"F16-FMA (Baseline)\",\n \"count\": \"&count_f16_fma\"\n },\n {\n \"metric\": \"F16-Trans (Baseline)\",\n \"count\": \"&count_f16_trans\"\n },\n {\n \"metric\": \"F32-ADD (Baseline)\",\n \"count\": \"&count_f32_add\"\n },\n {\n \"metric\": \"F32-MUL (Baseline)\",\n \"count\": \"&count_f32_MUL\"\n },\n {\n \"metric\": \"F32-FMA (Baseline)\",\n \"count\": \"&count_f32_fma\"\n },\n {\n \"metric\": \"F32-Trans (Baseline)\",\n \"count\": \"&count_f32_trans\"\n },\n {\n \"metric\": \"F64-ADD (Baseline)\",\n \"count\": \"&count_f64_add\"\n },\n {\n \"metric\": \"F64-MUL (Baseline)\",\n \"count\": \"&count_f64_MUL\"\n },\n {\n \"metric\": \"F64-FMA (Baseline)\",\n \"count\": \"&count_f64_fma\"\n },\n {\n \"metric\": \"F64-Trans (Baseline)\",\n \"count\": \"&count_f64_trans\"\n },\n {\n \"metric\": \"Conversion (Baseline)\",\n \"count\": \"&conversion\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + } + ], + "title": "VALU Arithmetic Instr Mix", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "sortBy", + "options": { + "fields": {}, + "sort": [ + { + "field": "metric" + } + ] + } + } + ], + "transparent": true, + "type": "bargauge" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 26 + }, + "id": 275, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n\n {\"$group\": {\n \"_id\": null,\n \"buffer_instr\": {\n \"$avg\": { \"$divide\": [ \"&TA_BUFFER_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"buffer_read\": {\n \"$avg\": { \"$divide\": [ \"&TA_BUFFER_READ_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"buffer_write\": {\n \"$avg\": { \"$divide\": [ \"&TA_BUFFER_WRITE_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"buffer_atomic\": {\n \"$avg\": { \"$divide\": [ \"&TA_BUFFER_ATOMIC_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \n \"flat_instr\": {\n \"$avg\": { \"$divide\": [ \"&TA_FLAT_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"flat_read\": {\n \"$avg\": { \"$divide\": [ \"&TA_FLAT_READ_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"flat_write\": {\n \"$avg\": { \"$divide\": [ \"&TA_FLAT_WRITE_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"flat_atomic\": {\n \"$avg\": { \"$divide\": [ \"&TA_FLAT_ATOMIC_WAVEFRONTS_sum\", \"&denom\" ] }\n }\n \n }},\n {\"$set\": {\n \"array\": [\n {\n \"type\": \"Buffer Instr\",\n \"count\": \"&buffer_instr\"\n },\n {\n \"type\": \"Buffer Read\",\n \"count\": \"&buffer_read\"\n },\n {\n \"type\": \"Buffer Write\",\n \"count\": \"&buffer_write\"\n },\n {\n \"type\": \"Buffer Atomic\",\n \"count\": \"&buffer_atomic\"\n },\n {\n \"type\": \"Flat Instr\",\n \"count\": \"&flat_instr\"\n },\n {\n \"type\": \"Flat Read\",\n \"count\": \"&flat_read\"\n },\n {\n \"type\": \"Flat Write\",\n \"count\": \"&flat_write\"\n },\n {\n \"type\": \"Flat Atomic\",\n \"count\": \"&flat_atomic\"\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Instruction Mix)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n\n {\"$group\": {\n \"_id\": null,\n \"buffer_instr\": {\n \"$avg\": { \"$divide\": [ \"&TA_BUFFER_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"buffer_read\": {\n \"$avg\": { \"$divide\": [ \"&TA_BUFFER_READ_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"buffer_write\": {\n \"$avg\": { \"$divide\": [ \"&TA_BUFFER_WRITE_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"buffer_atomic\": {\n \"$avg\": { \"$divide\": [ \"&TA_BUFFER_ATOMIC_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n\n \"flat_instr\": {\n \"$avg\": { \"$divide\": [ \"&TA_FLAT_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"flat_read\": {\n \"$avg\": { \"$divide\": [ \"&TA_FLAT_READ_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"flat_write\": {\n \"$avg\": { \"$divide\": [ \"&TA_FLAT_WRITE_WAVEFRONTS_sum\", \"&denom\" ] }\n },\n \"flat_atomic\": {\n \"$avg\": { \"$divide\": [ \"&TA_FLAT_ATOMIC_WAVEFRONTS_sum\", \"&denom\" ] }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"type\": \"Buffer Instr (Baseline)\",\n \"count\": \"&buffer_instr\"\n },\n {\n \"type\": \"Buffer Read (Baseline)\",\n \"count\": \"&buffer_read\"\n },\n {\n \"type\": \"Buffer Write (Baseline)\",\n \"count\": \"&buffer_write\"\n },\n {\n \"type\": \"Buffer Atomic (Baseline)\",\n \"count\": \"&buffer_atomic\"\n },\n {\n \"type\": \"Flat Instr (Baseline)\",\n \"count\": \"&flat_instr\"\n },\n {\n \"type\": \"Flat Read (Baseline)\",\n \"count\": \"&flat_read\"\n },\n {\n \"type\": \"Flat Write (Baseline)\",\n \"count\": \"&flat_write\"\n },\n {\n \"type\": \"Flat Atomic (Baseline)\",\n \"count\": \"&flat_atomic\"\n }\n\n ]\n }},\n\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + } + ], + "title": "VMEM Instr Mix", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "type 2": true + }, + "indexByName": {}, + "renameByName": { + "count": "Count", + "count 1": "Avg (Current)", + "count 2": "Avg (Baseline)", + "type": "VMEM Instr", + "type 1": "VMEM Instr" + } + } + } + ], + "transparent": true, + "type": "table" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 33 + }, + "id": 16, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"mmfa_i8\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MFMA_I8\", \"&denom\" ] }\n },\n \"mmfa_f16\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MFMA_F16\", \"&denom\" ] }\n },\n \"mmfa_bf16\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MFMA_BF16\", \"&denom\" ] }\n },\n \"mfma_f32\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MFMA_F32\", \"&denom\" ] }\n },\n \"mfma_f64\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MFMA_F64\", \"&denom\" ] }\n }\n }\n },\n {\"$set\": {\n \"array\": [\n {\n \"type\": \"MFMA-I8\",\n \"count\": \"&mmfa_i8\"\n },\n {\n \"type\": \"MFMA-F16\",\n \"count\": \"&mmfa_f16\"\n },\n {\n \"type\": \"MFMA-BF16\",\n \"count\": \"&mmfa_bf16\"\n },\n {\n \"type\": \"MFMA-F32\",\n \"count\": \"&mfma_f32\"\n },\n {\n \"type\": \"MFMA-F64\",\n \"count\": \"&mfma_f64\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Instruction Mix)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"mmfa_i8\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MFMA_I8\", \"&SQ_WAVES\" ] }\n },\n \"mmfa_f16\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MFMA_F16\", \"&SQ_WAVES\" ] }\n },\n \"mmfa_bf16\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MFMA_BF16\", \"&SQ_WAVES\" ] }\n },\n \"mfma_f32\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MFMA_F32\", \"&SQ_WAVES\" ] }\n },\n \"mfma_f64\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS_VALU_MFMA_F64\", \"&SQ_WAVES\" ] }\n }\n }\n },\n {\"$set\": {\n \"array\": [\n {\n \"type\": \"MFMA-I8 (Baseline)\",\n \"count\": \"&mmfa_i8\"\n },\n {\n \"type\": \"MFMA-F16 (Baseline)\",\n \"count\": \"&mmfa_f16\"\n },\n {\n \"type\": \"MFMA-BF16 (Baseline)\",\n \"count\": \"&mmfa_bf16\"\n },\n {\n \"type\": \"MFMA-F32 (Baseline)\",\n \"count\": \"&mfma_f32\"\n },\n {\n \"type\": \"MFMA-F64 (Baseline)\",\n \"count\": \"&mfma_f64\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + } + ], + "title": "MFMA Arithmetic Instr Mix", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "type 2": true + }, + "indexByName": {}, + "renameByName": { + "count": "Count", + "count 1": "Avg (Current)", + "count 2": "Avg (Baseline)", + "type": "MFMA Instr", + "type 1": "MFMA Instr" + } + } + } + ], + "transparent": true, + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Compute Unit - Instruction Mix", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 8, + "panels": [ + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 50 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 10 + }, + "id": 211, + "options": { + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "/.*/", + "values": true + }, + "showUnfilled": true, + "text": { + "titleSize": 14, + "valueSize": 14 + } + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n{\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"valu_flops_val\": {\n \"$avg\": { \"$divide\": [ { \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", \"&SQ_INSTS_VALU_TRANS_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }] }] }\n ]}\n ,{ \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }]\n }},\n\n \"mfma_flops_f16_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_bf16_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_f32_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_f64_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_i8_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } }\n\n }}, \n {\"$set\": {\n \"array\": [\n {\n \"valu_flops_pop\": {\"$divide\": [{ \"$multiply\": [100, \"&valu_flops_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 64, 2 ]}, 1000] }] },\n \"mfma_flops_bf16_pop\": { \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_bf16_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 512 ]}, 1000] }]},\n \"mfma_flops_f16_pop\": { \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f16_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 1024 ]}, 1000] }]},\n \"mfma_flops_f32_pop\": { \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f32_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 256 ]}, 1000] }]},\n \"mfma_flops_f64_pop\": { \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f64_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 256 ]}, 1000] }]},\n \"mfma_flops_i8_pop\": { \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_i8_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk, $numCU, 1024 ]}, 1000] }]}\n }\n ]\n }},\n\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n \n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Compute Pipeline)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"valu_flops_val\": {\n \"$avg\": { \"$divide\": [ { \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", \"&SQ_INSTS_VALU_TRANS_F16\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F16\"] }] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F32\"] }] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", { \"$multiply\": [2, \"&SQ_INSTS_VALU_FMA_F64\"] }] }] }\n ]}\n ,{ \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }]\n }},\n\n \"mfma_flops_f16_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F16\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_bf16_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_BF16\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_f32_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F32\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_f64_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_F64\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n \"mfma_flops_i8_val\": { \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\", 512] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] } },\n\n \"instr_val\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS\", { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }] }\n }\n\n }}, \n {\"$set\": {\n \"array\": [\n {\n \"valu_flops_pop\": {\"$divide\": [{ \"$multiply\": [100, \"&valu_flops_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 64, 2 ]}, 1000] }] },\n \"mfma_flops_bf16_pop\": { \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_bf16_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 512 ]}, 1000] }]},\n \"mfma_flops_f16_pop\": { \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f16_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 1024 ]}, 1000] }]},\n \"mfma_flops_f32_pop\": { \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f32_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 256 ]}, 1000] }]},\n \"mfma_flops_f64_pop\": { \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_f64_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 256 ]}, 1000] }]},\n \"mfma_flops_i8_pop\": { \"$divide\": [{ \"$multiply\": [100, \"&mfma_flops_i8_val\"] }, { \"$divide\": [{ \"$multiply\": [$sclk2, $numCU2, 1024 ]}, 1000] }]}\n }\n ]\n }},\n\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n \n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n\n]);", + "type": "table" + } + ], + "title": "Speed-of-Light: Compute Pipeline", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "mfma_flops_bf16_pop 1": 4, + "mfma_flops_bf16_pop 2": 5, + "mfma_flops_f16_pop 1": 6, + "mfma_flops_f16_pop 2": 7, + "mfma_flops_f32_pop 1": 8, + "mfma_flops_f32_pop 2": 9, + "mfma_flops_f64_pop 1": 10, + "mfma_flops_f64_pop 2": 11, + "mfma_flops_i8_pop 1": 12, + "mfma_flops_i8_pop 2": 13, + "valu_flops_pop 1": 0, + "valu_flops_pop 2": 1, + "valu_iops_pop 1": 2, + "valu_iops_pop 2": 3 + }, + "renameByName": { + "BW (Pct-of-Peak) 1": "BW Pct-of-Peak (Current)", + "BW (Pct-of-Peak) 2": "BW Pct-of-Peak (Baseline)", + "Bandwith (Pct-of-Peak)": "", + "Bandwith (Pct-of-Peak) 1": "BW Pct-of-Peak (Current)", + "Bandwith (Pct-of-Peak) 2": "BW Pct-of-Peak (Baseline) ", + "Bank Conflict Rate 1": "Bank Conflict Rate (Current)", + "Bank Conflict Rate 2": "Bank Conflict Rate (Baseline)", + "Cache Hit 1": "Cache Hit (Current)", + "Cache Hit 2": "Cache Hit (Baseline)", + "Latency (Cycles) 1": "Latency (Current) [Cycles]", + "Latency (Cycles) 2": "Latency (Baseline) [Cycles]", + "Stall 1": "Stall (Current)", + "Stall 2": "Stall (Baseline)", + "Util 1": "Util (Current)", + "Util 2": "Util (Baseline)", + "flops_pop": "FLOPs", + "flops_pop 1": "FLOPs (Current)", + "flops_pop 2": "FLOPs (Baseline)", + "iops_pop": "IOPs", + "iops_pop 1": "IOPs (Current)", + "iops_pop 2": "IOPs (Baseline)", + "mfma_flops_bf16_pop": "MFMA- BF16 (FLOPs)", + "mfma_flops_bf16_pop 1": "MFMA-BF16 (Cur)", + "mfma_flops_bf16_pop 2": "MFMA-BF16 (Baseline)", + "mfma_flops_f16_pop": "MFMA-F16 (FLOPs)", + "mfma_flops_f16_pop 1": "MFMA-F16 (Cur)", + "mfma_flops_f16_pop 2": "MFMA-F16 (Baseline)", + "mfma_flops_f32_pop": "MFMA-F32 (FLOPs)", + "mfma_flops_f32_pop 1": "MFMA-F32 (Cur)", + "mfma_flops_f32_pop 2": "MFMA-F32 (Baseline)", + "mfma_flops_f64_pop": "MFMA-F64 (FLOPs)", + "mfma_flops_f64_pop 1": "MFMA-F64 (Cur)", + "mfma_flops_f64_pop 2": "MFMA-F64 (Baseline)", + "mfma_flops_i8_pop": "MFMA-i8 (IOPs)", + "mfma_flops_i8_pop 1": "MFMA-I8 (Cur)", + "mfma_flops_i8_pop 2": "MFMA-I8 (Baseline)", + "valu_flops_pop": "VALU (FLOPs)", + "valu_flops_pop 1": "VALU FLOPs (Cur)", + "valu_flops_pop 2": "VALU FLOPs (Baseline)", + "valu_iops_pop": "VALU (IOPs)", + "valu_iops_pop 1": "VALU IOPs (Cur)", + "valu_iops_pop 2": "VALU IOPs (Baseline)" + } + } + } + ], + "transparent": true, + "type": "bargauge" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 11, + "w": 12, + "x": 12, + "y": 10 + }, + "id": 257, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "rawQuery": true, + "refId": "pmc_perf", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"avg_ipcAvg\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_BUSY_CU_CYCLES\" ] }\n },\n \"min_ipcAvg\": {\n \"$min\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_BUSY_CU_CYCLES\" ] } \n },\n \"max_ipcAvg\": {\n \"$max\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_BUSY_CU_CYCLES\" ] }\n },\n \n \"avg_ipcIssue\": {\n \"$avg\": { \"$divide\": [ { \"$add\": [ \"&SQ_INSTS_VALU\", \"&SQ_INSTS_VMEM\",\"&SQ_INSTS_SALU\", \"&SQ_INSTS_SMEM\", \"&SQ_INSTS_GDS\", \"&SQ_INSTS_BRANCH\", \"&SQ_INSTS_SENDMSG\", \"&SQ_INSTS_VSKIPPED\"] }, \"&SQ_ACTIVE_INST_ANY\"] }\n },\n \"min_ipcIssue\": {\n \"$min\": { \"$divide\": [ { \"$add\": [ \"&SQ_INSTS_VALU\", \"&SQ_INSTS_VMEM\",\"&SQ_INSTS_SALU\", \"&SQ_INSTS_SMEM\", \"&SQ_INSTS_GDS\", \"&SQ_INSTS_BRANCH\", \"&SQ_INSTS_SENDMSG\", \"&SQ_INSTS_VSKIPPED\"] }, \"&SQ_ACTIVE_INST_ANY\"] }\n },\n \"max_ipcIssue\": {\n \"$max\": { \"$divide\": [ { \"$add\": [ \"&SQ_INSTS_VALU\", \"&SQ_INSTS_VMEM\",\"&SQ_INSTS_SALU\", \"&SQ_INSTS_SMEM\", \"&SQ_INSTS_GDS\", \"&SQ_INSTS_BRANCH\", \"&SQ_INSTS_SENDMSG\", \"&SQ_INSTS_VSKIPPED\"] }, \"&SQ_ACTIVE_INST_ANY\"] }\n },\n\n \"avg_saluUtil\": {\n \"$avg\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_SCA\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU ] }\n },\n \"min_saluUtil\": {\n \"$min\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_SCA\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU ] }\n },\n \"max_saluUtil\": {\n \"$max\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_SCA\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU ] }\n },\n\n \"avg_valuUtil\": {\n \"$avg\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_VALU\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU ] }\n },\n \"min_valuUtil\": {\n \"$min\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_VALU\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU ] }\n },\n \"max_valuUtil\": {\n \"$max\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_VALU\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU ] }\n },\n\n \"avg_mfmaUtil\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_VALU_MFMA_BUSY_CYCLES\"] }, { \"$multiply\": [4, $numCU, \"&GRBM_GUI_ACTIVE\"] }] }\n },\n \"min_mfmaUtil\": {\n \"$min\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_VALU_MFMA_BUSY_CYCLES\"] }, { \"$multiply\": [4, $numCU, \"&GRBM_GUI_ACTIVE\"] }] }\n },\n \"max_mfmaUtil\": {\n \"$max\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_VALU_MFMA_BUSY_CYCLES\"] }, { \"$multiply\": [4, $numCU, \"&GRBM_GUI_ACTIVE\"] }] }\n },\n\n \"avg_mfmaInstrCycles\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_MFMA\", 0]},\n {\"$divide\": [ \"&SQ_VALU_MFMA_BUSY_CYCLES\", \"&SQ_INSTS_MFMA\" ]},\n null\n ]\n }\n },\n \"min_mfmaInstrCycles\": {\n \"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_MFMA\", 0]},\n {\"$divide\": [ \"&SQ_VALU_MFMA_BUSY_CYCLES\", \"&SQ_INSTS_MFMA\" ]},\n null\n ]\n }\n },\n \"max_mfmaInstrCycles\": {\n \"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_MFMA\", 0]},\n {\"$divide\": [ \"&SQ_VALU_MFMA_BUSY_CYCLES\", \"&SQ_INSTS_MFMA\" ]},\n null\n ]\n }\n },\n\n\n \"avg_unpredthreads_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\":[\"&SQ_ACTIVE_INST_VALU\" , 0]},\n { \"$divide\": [\"&SQ_THREAD_CYCLES_VALU\", \"&SQ_ACTIVE_INST_VALU\"] },\n null\n ]\n }\n },\n \"min_unpredthreads_val\": {\n \"$min\": {\n \"$cond\": [\n {\"$ne\":[\"&SQ_ACTIVE_INST_VALU\" , 0]},\n { \"$divide\": [\"&SQ_THREAD_CYCLES_VALU\", \"&SQ_ACTIVE_INST_VALU\"] },\n null\n ]\n }\n },\n \"max_unpredthreads_val\": {\n \"$max\": {\n \"$cond\": [\n {\"$ne\":[\"&SQ_ACTIVE_INST_VALU\" , 0]},\n { \"$divide\": [\"&SQ_THREAD_CYCLES_VALU\", \"&SQ_ACTIVE_INST_VALU\"] },\n null\n ]\n }\n },\n\n \"avg_instrFetchBand\": {\n \"$avg\": { \"$divide\": [ { \"$multiply\": [\"&SQ_IFETCH\", 32] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n },\n \"min_instrFetchBand\": {\n \"$min\": { \"$divide\": [ { \"$multiply\": [\"&SQ_IFETCH\", 32] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n },\n \"max_instrFetchBand\": {\n \"$max\": { \"$divide\": [ { \"$multiply\": [\"&SQ_IFETCH\", 32] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n }\n\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"IPC (Avg)\",\n \"Avg\": \"&avg_ipcAvg\",\n \"Min\": \"&min_ipcAvg\",\n \"Max\": \"&max_ipcAvg\",\n \"Unit\": \"Instr/cycle\"\n },\n {\n \"Metric\": \"IPC (Issue)\",\n \"Avg\": \"&avg_ipcIssue\",\n \"Min\": \"&min_ipcIssue\",\n \"Max\": \"&max_ipcIssue\",\n \"Unit\": \"Instr/cycle\"\n },\n {\n \"Metric\": \"SALU Util\",\n \"Avg\": \"&avg_saluUtil\",\n \"Min\": \"&min_saluUtil\",\n \"Max\": \"&max_saluUtil\",\n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"VALU Util\",\n \"Avg\": \"&avg_valuUtil\",\n \"Min\": \"&min_valuUtil\",\n \"Max\": \"&max_valuUtil\",\n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"VALU Active Threads\",\n \"Avg\": \"&avg_unpredthreads_val\",\n \"Min\": \"&min_unpredthreads_val\",\n \"Max\": \"&max_unpredthreads_val\",\n \"Unit\": \"Threads\"\n },\n {\n \"Metric\": \"MFMA Util\",\n \"Avg\": \"&avg_mfmaUtil\",\n \"Min\": \"&min_mfmaUtil\",\n \"Max\": \"&max_mfmaUtil\",\n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"MFMA Instr Cycles\",\n \"Avg\": \"&avg_mfmaInstrCycles\",\n \"Min\": \"&min_mfmaInstrCycles\",\n \"Max\": \"&max_mfmaInstrCycles\",\n \"Unit\": \"cycles/instr\"\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "pmc_perf2", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Compute Pipeline)\"}}\n }}, \n {\"$group\": {\n \"_id\": null,\n \"avg_ipcAvg\": {\n \"$avg\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_BUSY_CU_CYCLES\" ] }\n },\n \"min_ipcAvg\": {\n \"$min\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_BUSY_CU_CYCLES\" ] } \n },\n \"max_ipcAvg\": {\n \"$max\": { \"$divide\": [ \"&SQ_INSTS\", \"&SQ_BUSY_CU_CYCLES\" ] }\n },\n \n \"avg_ipcIssue\": {\n \"$avg\": { \"$divide\": [ { \"$add\": [ \"&SQ_INSTS_VALU\", \"&SQ_INSTS_VMEM\",\"&SQ_INSTS_SALU\", \"&SQ_INSTS_SMEM\", \"&SQ_INSTS_GDS\", \"&SQ_INSTS_BRANCH\", \"&SQ_INSTS_SENDMSG\", \"&SQ_INSTS_VSKIPPED\"] }, \"&SQ_ACTIVE_INST_ANY\"] }\n },\n \"min_ipcIssue\": {\n \"$min\": { \"$divide\": [ { \"$add\": [ \"&SQ_INSTS_VALU\", \"&SQ_INSTS_VMEM\",\"&SQ_INSTS_SALU\", \"&SQ_INSTS_SMEM\", \"&SQ_INSTS_GDS\", \"&SQ_INSTS_BRANCH\", \"&SQ_INSTS_SENDMSG\", \"&SQ_INSTS_VSKIPPED\"] }, \"&SQ_ACTIVE_INST_ANY\"] }\n },\n \"max_ipcIssue\": {\n \"$max\": { \"$divide\": [ { \"$add\": [ \"&SQ_INSTS_VALU\", \"&SQ_INSTS_VMEM\",\"&SQ_INSTS_SALU\", \"&SQ_INSTS_SMEM\", \"&SQ_INSTS_GDS\", \"&SQ_INSTS_BRANCH\", \"&SQ_INSTS_SENDMSG\", \"&SQ_INSTS_VSKIPPED\"] }, \"&SQ_ACTIVE_INST_ANY\"] }\n },\n\n \"avg_saluUtil\": {\n \"$avg\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_SCA\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU2 ] }\n },\n \"min_saluUtil\": {\n \"$min\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_SCA\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU2 ] }\n },\n \"max_saluUtil\": {\n \"$max\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_SCA\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU2 ] }\n },\n\n \"avg_valuUtil\": {\n \"$avg\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_VALU\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU2 ] }\n },\n \"min_valuUtil\": {\n \"$min\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_VALU\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU2 ] }\n },\n \"max_valuUtil\": {\n \"$max\": { \"$divide\": [{ \"$divide\": [ { \"$multiply\": [100, \"&SQ_ACTIVE_INST_VALU\"] }, \"&GRBM_GUI_ACTIVE\"] },$numCU2 ] }\n },\n\n\n \"avg_mfmaUtil\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_VALU_MFMA_BUSY_CYCLES\"] }, { \"$multiply\": [4, $numCU2, \"&GRBM_GUI_ACTIVE\"] }] }\n },\n \"min_mfmaUtil\": {\n \"$min\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_VALU_MFMA_BUSY_CYCLES\"] }, { \"$multiply\": [4, $numCU2, \"&GRBM_GUI_ACTIVE\"] }] }\n },\n \"max_mfmaUtil\": {\n \"$max\": { \"$divide\": [{ \"$multiply\": [100, \"&SQ_VALU_MFMA_BUSY_CYCLES\"] }, { \"$multiply\": [4, $numCU2, \"&GRBM_GUI_ACTIVE\"] }] }\n },\n\n \"avg_mfmaInstrCycles\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_MFMA\", 0]},\n {\"$divide\": [ \"&SQ_VALU_MFMA_BUSY_CYCLES\", \"&SQ_INSTS_MFMA\" ]},\n null\n ]\n }\n },\n \"min_mfmaInstrCycles\": {\n \"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_MFMA\", 0]},\n {\"$divide\": [ \"&SQ_VALU_MFMA_BUSY_CYCLES\", \"&SQ_INSTS_MFMA\" ]},\n null\n ]\n }\n },\n \"max_mfmaInstrCycles\": {\n \"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_MFMA\", 0]},\n {\"$divide\": [ \"&SQ_VALU_MFMA_BUSY_CYCLES\", \"&SQ_INSTS_MFMA\" ]},\n null\n ]\n }\n },\n\n \"avg_unpredthreads_val\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\":[\"&SQ_ACTIVE_INST_VALU\" , 0]},\n { \"$divide\": [\"&SQ_THREAD_CYCLES_VALU\", \"&SQ_ACTIVE_INST_VALU\"] },\n null\n ]\n }\n },\n \"min_unpredthreads_val\": {\n \"$min\": {\n \"$cond\": [\n {\"$ne\":[\"&SQ_ACTIVE_INST_VALU\" , 0]},\n { \"$divide\": [\"&SQ_THREAD_CYCLES_VALU\", \"&SQ_ACTIVE_INST_VALU\"] },\n null\n ]\n }\n },\n \"max_unpredthreads_val\": {\n \"$max\": {\n \"$cond\": [\n {\"$ne\":[\"&SQ_ACTIVE_INST_VALU\" , 0]},\n { \"$divide\": [\"&SQ_THREAD_CYCLES_VALU\", \"&SQ_ACTIVE_INST_VALU\"] },\n null\n ]\n }\n },\n\n \"avg_instrFetchBand\": {\n \"$avg\": { \"$divide\": [ { \"$multiply\": [\"&SQ_IFETCH\", 32] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n },\n \"min_instrFetchBand\": {\n \"$min\": { \"$divide\": [ { \"$multiply\": [\"&SQ_IFETCH\", 32] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n },\n \"max_instrFetchBand\": {\n \"$max\": { \"$divide\": [ { \"$multiply\": [\"&SQ_IFETCH\", 32] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"IPC (Avg)\",\n \"Avg 2\": \"&avg_ipcAvg\",\n \"Min 2\": \"&min_ipcAvg\",\n \"Max 2\": \"&max_ipcAvg\",\n \"Unit\": \"Instr/cycle\"\n },\n {\n \"Metric\": \"IPC (Issue)\",\n \"Avg 2\": \"&avg_ipcIssue\",\n \"Min 2\": \"&min_ipcIssue\",\n \"Max 2\": \"&max_ipcIssue\",\n \"Unit\": \"Instr/cycle\"\n },\n {\n \"Metric\": \"SALU Util\",\n \"Avg 2\": \"&avg_saluUtil\",\n \"Min 2\": \"&min_saluUtil\",\n \"Max 2\": \"&max_saluUtil\",\n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"VALU Util\",\n \"Avg 2\": \"&avg_valuUtil\",\n \"Min 2\": \"&min_valuUtil\",\n \"Max 2\": \"&max_valuUtil\",\n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"VALU Active Threads\",\n \"Avg 2\": \"&avg_unpredthreads_val\",\n \"Min 2\": \"&min_unpredthreads_val\",\n \"Max 2\": \"&max_unpredthreads_val\",\n \"Unit\": \"Threads\"\n },\n {\n \"Metric\": \"MFMA Util\",\n \"Avg 2\": \"&avg_mfmaUtil\",\n \"Min 2\": \"&min_mfmaUtil\",\n \"Max 2\": \"&max_mfmaUtil\",\n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"MFMA Instr Cycles\",\n \"Avg 2\": \"&avg_mfmaInstrCycles\",\n \"Min 2\": \"&min_mfmaInstrCycles\",\n \"Max 2\": \"&max_mfmaInstrCycles\",\n \"Unit\": \"cycles/instr\"\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Pipeline Stats", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Avg": 1, + "Avg 2": 2, + "Max": 5, + "Max 2": 6, + "Metric": 0, + "Min": 3, + "Min 2": 4, + "Unit": 7 + }, + "renameByName": { + "Avg 2": "Avg (Baseline)", + "Max 2": "Max (Baseline)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 111 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 117 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 135 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 112 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 83 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 118 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 21 + }, + "id": 96, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"avg_intOps\":{\"$avg\": {\n \"$divide\": [{ \"$add\": [{ \"$multiply\": [{ \"$add\": [\"&SQ_INSTS_VALU_INT32\", \"&SQ_INSTS_VALU_INT64\"] },64] }, { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\",512] }] },\"&denom\"]\n }},\n \"min_intOps\":{\"$min\": {\n \"$divide\": [{ \"$add\": [{ \"$multiply\": [{ \"$add\": [\"&SQ_INSTS_VALU_INT32\", \"&SQ_INSTS_VALU_INT64\"] },64] }, { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\",512] }] },\"&denom\"]\n }},\n \"max_intOps\":{\"$max\": {\n \"$divide\": [{ \"$add\": [{ \"$multiply\": [{ \"$add\": [\"&SQ_INSTS_VALU_INT32\", \"&SQ_INSTS_VALU_INT64\"] },64] }, { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\",512] }] },\"&denom\"]\n }},\n\n\n \"avg_flops\":{\"$avg\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", \"&SQ_INSTS_VALU_TRANS_F16\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F16\", 2]}] }] },\n { \"$add\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"] }, { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }},\n \"min_flops\":{\"$min\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", \"&SQ_INSTS_VALU_TRANS_F16\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F16\", 2]}] }] },\n { \"$add\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"] }, { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }},\n\n \"max_flops\":{\"$max\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", \"&SQ_INSTS_VALU_TRANS_F16\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F16\", 2]}] }] },\n { \"$add\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"] }, { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }},\n\n\n \"avg_int8Ops\":{\"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\", 512] }, \"&denom\"] }},\n \"min_int8Ops\":{\"$min\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\", 512] }, \"&denom\"] }},\n \"max_int8Ops\":{\"$max\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\", 512] }, \"&denom\"] }},\n\n \"avg_int32Ops\":{\"$avg\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT32\", 64] }, \"&denom\"] }},\n \"min_int32Ops\":{\"$min\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT32\", 64] }, \"&denom\"] }},\n \"max_int32Ops\":{\"$max\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT32\", 64] }, \"&denom\"] }},\n\n \"avg_int64Ops\":{\"$avg\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT64\", 64] }, \"&denom\"] }},\n \"min_int64Ops\":{\"$min\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT64\", 64] }, \"&denom\"] }},\n \"max_int64Ops\":{\"$max\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT64\", 64] }, \"&denom\"] }},\n\n \"avg_f16Ops\":{\"$avg\": {\n \"$divide\": [ \n {\"$add\": [{ \"$multiply\": [64, \"&SQ_INSTS_VALU_ADD_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_MUL_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_TRANS_F16\"]}, \n { \"$multiply\": [128, \"&SQ_INSTS_VALU_FMA_F16\"]}, \n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"]}\n ]},\n \"&denom\"]\n }},\n \"min_f16Ops\":{\"$min\": {\n \"$divide\": [ \n {\"$add\": [{ \"$multiply\": [64, \"&SQ_INSTS_VALU_ADD_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_MUL_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_TRANS_F16\"]}, \n { \"$multiply\": [128, \"&SQ_INSTS_VALU_FMA_F16\"]}, \n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"]}\n ]},\n \"&denom\"]\n }},\n \"max_f16Ops\":{\"$max\": {\n \"$divide\": [ \n {\"$add\": [{ \"$multiply\": [64, \"&SQ_INSTS_VALU_ADD_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_MUL_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_TRANS_F16\"]}, \n { \"$multiply\": [128, \"&SQ_INSTS_VALU_FMA_F16\"]}, \n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"]}\n ]},\n \"&denom\"]\n }},\n\n\n\n \"avg_bf16Ops\":{\"$avg\": { \"$divide\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }, \"&denom\"] }},\n \"min_bf16Ops\":{\"$min\": { \"$divide\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }, \"&denom\"] }},\n \"max_bf16Ops\":{\"$max\": { \"$divide\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }, \"&denom\"] }},\n\n \"avg_f32Ops\":{\"$avg\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] }\n ] }, \"&denom\"]\n }},\n \"min_f32Ops\":{\"$min\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] }\n ] }, \"&denom\"]\n }},\n \"max_f32Ops\":{\"$max\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] }\n ] }, \"&denom\"]\n }},\n\n \"avg_f64Ops\":{\"$avg\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }},\n \"min_f64Ops\":{\"$min\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }},\n \"max_f64Ops\":{\"$max\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }}\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"FLOPs (Total)\",\n \"Avg\": \"&avg_flops\",\n \"Min\": \"&min_flops\",\n \"Max\": \"&max_flops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n },\n {\n \"Metric\": \"INT8 OPs\",\n \"Avg\": \"&avg_int8Ops\",\n \"Min\": \"&min_int8Ops\",\n \"Max\": \"&max_int8Ops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n },\n {\n \"Metric\": \"F16 OPs\",\n \"Avg\": \"&avg_f16Ops\",\n \"Min\": \"&min_f16Ops\",\n \"Max\": \"&max_f16Ops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n },\n {\n \"Metric\": \"BF16 OPs\",\n \"Avg\": \"&avg_bf16Ops\",\n \"Min\": \"&min_bf16Ops\",\n \"Max\": \"&max_bf16Ops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n },\n\n {\n \"Metric\": \"F32 OPs\",\n \"Avg\": \"&avg_f32Ops\",\n \"Min\": \"&min_f32Ops\",\n \"Max\": \"&max_f32Ops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n },\n {\n \"Metric\": \"F64 OPs\",\n \"Avg\": \"&avg_f64Ops\",\n \"Min\": \"&min_f64Ops\",\n \"Max\": \"&max_f64Ops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Compute Pipeline)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"avg_intOps\":{\"$avg\": {\n \"$divide\": [{ \"$add\": [{ \"$multiply\": [{ \"$add\": [\"&SQ_INSTS_VALU_INT32\", \"&SQ_INSTS_VALU_INT64\"] },64] }, { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\",512] }] },\"&denom\"]\n }},\n \"min_intOps\":{\"$min\": {\n \"$divide\": [{ \"$add\": [{ \"$multiply\": [{ \"$add\": [\"&SQ_INSTS_VALU_INT32\", \"&SQ_INSTS_VALU_INT64\"] },64] }, { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\",512] }] },\"&denom\"]\n }},\n \"max_intOps\":{\"$max\": {\n \"$divide\": [{ \"$add\": [{ \"$multiply\": [{ \"$add\": [\"&SQ_INSTS_VALU_INT32\", \"&SQ_INSTS_VALU_INT64\"] },64] }, { \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\",512] }] },\"&denom\"]\n }},\n\n\n \"avg_flops\":{\"$avg\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", \"&SQ_INSTS_VALU_TRANS_F16\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F16\", 2]}] }] },\n { \"$add\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"] }, { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }},\n \"min_flops\":{\"$min\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", \"&SQ_INSTS_VALU_TRANS_F16\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F16\", 2]}] }] },\n { \"$add\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"] }, { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }},\n\n \"max_flops\":{\"$max\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F16\", \"&SQ_INSTS_VALU_MUL_F16\", \"&SQ_INSTS_VALU_TRANS_F16\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F16\", 2]}] }] },\n { \"$add\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"] }, { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] },\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }},\n\n\n \"avg_int8Ops\":{\"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\", 512] }, \"&denom\"] }},\n \"min_int8Ops\":{\"$min\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\", 512] }, \"&denom\"] }},\n \"max_int8Ops\":{\"$max\": { \"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_MFMA_MOPS_I8\", 512] }, \"&denom\"] }},\n\n \"avg_int32Ops\":{\"$avg\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT32\", 64] }, \"&denom\"] }},\n \"min_int32Ops\":{\"$min\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT32\", 64] }, \"&denom\"] }},\n \"max_int32Ops\":{\"$max\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT32\", 64] }, \"&denom\"] }},\n\n \"avg_int64Ops\":{\"$avg\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT64\", 64] }, \"&denom\"] }},\n \"min_int64Ops\":{\"$min\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT64\", 64] }, \"&denom\"] }},\n \"max_int64Ops\":{\"$max\": {\"$divide\": [{ \"$multiply\": [\"&SQ_INSTS_VALU_INT64\", 64] }, \"&denom\"] }},\n\n \"avg_f16Ops\":{\"$avg\": {\n \"$divide\": [ \n {\"$add\": [{ \"$multiply\": [64, \"&SQ_INSTS_VALU_ADD_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_MUL_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_TRANS_F16\"]}, \n { \"$multiply\": [128, \"&SQ_INSTS_VALU_FMA_F16\"]}, \n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"]}\n ]},\n \"&denom\"]\n }},\n \"min_f16Ops\":{\"$min\": {\n \"$divide\": [ \n {\"$add\": [{ \"$multiply\": [64, \"&SQ_INSTS_VALU_ADD_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_MUL_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_TRANS_F16\"]}, \n { \"$multiply\": [128, \"&SQ_INSTS_VALU_FMA_F16\"]}, \n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"]}\n ]},\n \"&denom\"]\n }},\n \"max_f16Ops\":{\"$max\": {\n \"$divide\": [ \n {\"$add\": [{ \"$multiply\": [64, \"&SQ_INSTS_VALU_ADD_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_MUL_F16\"]}, \n { \"$multiply\": [64, \"&SQ_INSTS_VALU_TRANS_F16\"]}, \n { \"$multiply\": [128, \"&SQ_INSTS_VALU_FMA_F16\"]}, \n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F16\"]}\n ]},\n \"&denom\"]\n }},\n\n\n\n \"avg_bf16Ops\":{\"$avg\": { \"$divide\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }, \"&denom\"] }},\n \"min_bf16Ops\":{\"$min\": { \"$divide\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }, \"&denom\"] }},\n \"max_bf16Ops\":{\"$max\": { \"$divide\": [{ \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_BF16\"] }, \"&denom\"] }},\n\n \"avg_f32Ops\":{\"$avg\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] }\n ] }, \"&denom\"]\n }},\n \"min_f32Ops\":{\"$min\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] }\n ] }, \"&denom\"]\n }},\n \"max_f32Ops\":{\"$max\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F32\", \"&SQ_INSTS_VALU_MUL_F32\", \"&SQ_INSTS_VALU_TRANS_F32\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F32\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F32\"] }\n ] }, \"&denom\"]\n }},\n\n \"avg_f64Ops\":{\"$avg\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }},\n \"min_f64Ops\":{\"$min\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }},\n \"max_f64Ops\":{\"$max\": {\n \"$divide\": [{ \"$add\": [\n { \"$multiply\": [64, { \"$add\": [\"&SQ_INSTS_VALU_ADD_F64\", \"&SQ_INSTS_VALU_MUL_F64\", \"&SQ_INSTS_VALU_TRANS_F64\", {\"$multiply\": [\"&SQ_INSTS_VALU_FMA_F64\", 2]}] }] },\n { \"$multiply\": [512, \"&SQ_INSTS_VALU_MFMA_MOPS_F64\"] }\n ] }, \"&denom\"]\n }}\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"FLOPs (Total)\",\n \"Avg\": \"&avg_flops\",\n \"Min\": \"&min_flops\",\n \"Max\": \"&max_flops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n },\n {\n \"Metric\": \"INT8 OPs\",\n \"Avg\": \"&avg_int8Ops\",\n \"Min\": \"&min_int8Ops\",\n \"Max\": \"&max_int8Ops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n },\n {\n \"Metric\": \"F16 OPs\",\n \"Avg\": \"&avg_f16Ops\",\n \"Min\": \"&min_f16Ops\",\n \"Max\": \"&max_f16Ops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n },\n {\n \"Metric\": \"BF16 OPs\",\n \"Avg\": \"&avg_bf16Ops\",\n \"Min\": \"&min_bf16Ops\",\n \"Max\": \"&max_bf16Ops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n },\n\n {\n \"Metric\": \"F32 OPs\",\n \"Avg\": \"&avg_f32Ops\",\n \"Min\": \"&min_f32Ops\",\n \"Max\": \"&max_f32Ops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n },\n {\n \"Metric\": \"F64 OPs\",\n \"Avg\": \"&avg_f64Ops\",\n \"Min\": \"&min_f64Ops\",\n \"Max\": \"&max_f64Ops\",\n \"Unit\": {\"$concat\": [\"OPs \", $normUnit] }\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Arithmetic Operations", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Unit 2": true + }, + "indexByName": { + "Avg 1": 1, + "Avg 2": 2, + "Max 1": 5, + "Max 2": 6, + "Metric 1": 0, + "Metric 2": 7, + "Min 1": 3, + "Min 2": 4, + "Unit 1": 9, + "Unit 2": 8 + }, + "renameByName": { + "Avg 1": "Avg (Current)", + "Avg 2": "Avg (Baseline)", + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 21 + }, + "id": 255, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "rawQuery": true, + "refId": "SQ_INST_LEVEL_VMEM", + "target": "${Workload1}.SQ_INST_LEVEL_VMEM.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"avg_vmemLat\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_VMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_VMEM\" ]},\n null\n ] \n }\n },\n \"min_vmemLat\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_VMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_VMEM\" ]},\n null\n ] \n }\n },\n \"max_vmemLat\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_VMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_VMEM\" ]},\n null\n ] \n }\n }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"Metric\": \"VMEM Latency\",\n \"Avg\": \"&avg_vmemLat\",\n \"Min\": \"&min_vmemLat\",\n \"Max\": \"&max_vmemLat\",\n \"Unit\": \"Cycles\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQ_INST_LEVEL_SMEM", + "target": "${Workload1}.SQ_INST_LEVEL_SMEM.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"avg_smemLat\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_SMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_SMEM\" ]},\n null\n ] \n }\n },\n \"min_smemLat\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_SMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_SMEM\" ]},\n null\n ] \n }\n },\n \"max_smemLat\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_SMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_SMEM\" ]},\n null\n ] \n }\n }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"Metric\": \"SMEM Latency\",\n \"Avg\":\"&avg_smemLat\",\n \"Min\":\"&min_smemLat\",\n \"Max\":\"&max_smemLat\",\n \"Unit\": \"Cycles\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQ_IFETCH_LEVEL", + "target": "${Workload1}.SQ_IFETCH_LEVEL.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }}, \n {\"$group\": {\n \"_id\": null,\n \"avg_instrFetchLat\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_IFETCH\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_IFETCH\" ]},\n null\n ] \n }\n },\n \"min_instrFetchLat\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_IFETCH\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_IFETCH\" ]},\n null\n ] \n }\n },\n \"max_instrFetchLat\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_IFETCH\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_IFETCH\" ]},\n null\n ] \n }\n }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"Metric\": \"Instr Fetch Latency\",\n \"Avg\":\"&avg_instrFetchLat\",\n \"Min\":\"&min_instrFetchLat\",\n \"Max\":\"&max_instrFetchLat\",\n \"Unit\": \"Cycles\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQ_INST_LEVEL_LDS", + "target": "${Workload1}.SQ_INST_LEVEL_LDS.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }}, \n {\"$group\": {\n \"_id\": null,\n \"avg_ldsLat\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n },\n \"min_ldsLat\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n },\n \"max_ldsLat\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"Metric\": \"LDS Latency\",\n \"Avg\":\"&avg_ldsLat\",\n \"Min\":\"&min_ldsLat\",\n \"Max\":\"&max_ldsLat\",\n \"Unit\": \"Cycles\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQ_INST_LEVEL_VMEM2", + "target": "${Workload2}.SQ_INST_LEVEL_VMEM.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Compute Pipeline)\"}}\n }}, \n {\"$group\": {\n \"_id\": null,\n \"avg_vmemLat\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_VMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_VMEM\" ]},\n null\n ] \n }\n },\n \"min_vmemLat\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_VMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_VMEM\" ]},\n null\n ] \n }\n },\n \"max_vmemLat\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_VMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_VMEM\" ]},\n null\n ] \n }\n }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"Metric\": \"VMEM Latency\",\n \"Avg 2\": \"&avg_vmemLat\",\n \"Min 2\": \"&min_vmemLat\",\n \"Max 2\": \"&max_vmemLat\",\n \"Unit\": \"Cycles\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQ_INST_LEVEL_SMEM2", + "target": "${Workload2}.SQ_INST_LEVEL_SMEM.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Compute Pipeline)\"}}\n }}, \n {\"$group\": {\n \"_id\": null,\n \"avg_smemLat\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_SMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_SMEM\" ]},\n null\n ] \n }\n },\n \"min_smemLat\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_SMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_SMEM\" ]},\n null\n ] \n }\n },\n \"max_smemLat\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_SMEM\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_SMEM\" ]},\n null\n ] \n }\n }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"Metric\": \"SMEM Latency\",\n \"Avg 2\":\"&avg_smemLat\",\n \"Min 2\":\"&min_smemLat\",\n \"Max 2\":\"&max_smemLat\",\n \"Unit\": \"Cycles\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQ_IFETCH_LEVEL2", + "target": "${Workload2}.SQ_IFETCH_LEVEL.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Compute Pipeline)\"}}\n }}, \n {\"$group\": {\n \"_id\": null,\n \"avg_instrFetchLat\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_IFETCH\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_IFETCH\" ]},\n null\n ] \n }\n },\n \"min_instrFetchLat\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_IFETCH\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_IFETCH\" ]},\n null\n ] \n }\n },\n \"max_instrFetchLat\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_IFETCH\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_IFETCH\" ]},\n null\n ] \n }\n }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"Metric\": \"Instr Fetch Latency\",\n \"Avg 2\":\"&avg_instrFetchLat\",\n \"Min 2\":\"&min_instrFetchLat\",\n \"Max 2\":\"&max_instrFetchLat\",\n \"Unit\": \"Cycles\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "SQ_INST_LEVEL_LDS2", + "target": "${Workload2}.SQ_INST_LEVEL_LDS.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Compute Pipeline)\"}}\n }}, \n {\"$group\": {\n \"_id\": null,\n \"avg_ldsLat\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n },\n \"min_ldsLat\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n },\n \"max_ldsLat\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"Metric\": \"LDS Latency\",\n \"Avg 2\":\"&avg_ldsLat\",\n \"Min 2\":\"&min_ldsLat\",\n \"Max 2\":\"&max_ldsLat\",\n \"Unit\": \"Cycles\"\n }}\n]);", + "type": "table" + } + ], + "title": "Memory Latencies", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Avg": 1, + "Avg 2": 2, + "Max": 5, + "Max 2": 6, + "Metric": 0, + "Min": 3, + "Min 2": 4, + "Unit": 7 + }, + "renameByName": { + "Avg": "Avg (Current)", + "Avg 2": "Avg (Baseline)", + "Max": "Max (Current)", + "Max 2": "Max (Baseline)", + "Min": "Min (Current)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Compute Unit - Compute Pipeline", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 98, + "panels": [ + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 50 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 11 + }, + "id": 205, + "options": { + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "/.*/", + "values": true + }, + "showUnfilled": true, + "text": { + "titleSize": 14, + "valueSize": 16 + } + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \n \"bconf_rate\": {\n \"$avg\": {\"$cond\": [ {\"$ne\": [{\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 0]},\n {\"$divide\": [\n {\"$multiply\": [\"&SQ_LDS_BANK_CONFLICT\", 3.125]},\n {\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}\n ]},\n null\n ]\n } \n },\n \n \"bw_pop\": {\n \"$avg\": {\"$divide\": [\n {\"$divide\":[ \n { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, \n 4, \n {\"$toInt\": \"$L2Banks\"}\n ]}, \n {\"$subtract\": [\"&EndNs\", \"&BeginNs\"]}\n ]},\n \n {\"$multiply\": [$sclk, $numCU, 0.00128]}\n ]}\n },\n\n \"lds_util\": {\n \"$avg\": {\"$divide\":[ \n { \"$multiply\": [ 100, \"&SQ_LDS_IDX_ACTIVE\" ]}, \n {\"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}\n ]}\n },\n\n \"lds_access_rate\": {\n \"$avg\": {\"$divide\":[ \n { \"$multiply\": [200, \"&SQ_ACTIVE_INST_LDS\" ]}, \n {\"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}\n ]}\n }\n \n }},\n \n {\"$set\": {\n \"array\": [\n {\n \"Utilization\": \"&lds_util\",\n \"Access Rate\": \"&lds_access_rate\",\n \"Bandwith (Pct-of-Peak)\": \"&bw_pop\",\n \"Bank Conflict Rate\": \"&bconf_rate\"\n }\n \n ]\n }},\n \n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n \n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n \n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Local Data Share)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n\n \"bconf_rate\": {\n \"$avg\": {\"$cond\": [ {\"$ne\": [{\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 0]},\n {\"$divide\": [\n {\"$multiply\": [\"&SQ_LDS_BANK_CONFLICT\", 3.125]},\n {\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}\n ]},\n null\n ]\n } \n },\n\n \"bw_pop\": {\n \"$avg\": {\"$divide\": [\n {\"$divide\":[ \n { \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, \n 4, \n {\"$toInt\": \"$L2Banks2\"}\n ]}, \n {\"$subtract\": [\"&EndNs\", \"&BeginNs\"]}\n ]},\n \n {\"$multiply\": [$sclk2, $numCU2, 0.00128]}\n ]}\n },\n \"lds_util\": {\n \"$avg\": {\"$divide\":[ \n { \"$multiply\": [ 100, \"&SQ_LDS_IDX_ACTIVE\" ]}, \n {\"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}\n ]}\n },\n\n \"lds_access_rate\": {\n \"$avg\": {\"$divide\":[ \n { \"$multiply\": [200, \"&SQ_ACTIVE_INST_LDS\" ]}, \n {\"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}\n ]}\n }\n\n\n }},\n\n {\"$set\": {\n \"array\": [\n {\n \"Utilization\": \"&lds_util\",\n \"Access Rate\": \"&lds_access_rate\",\n \"Bandwith (Pct-of-Peak)\": \"&bw_pop\",\n \"Bank Conflict Rate\": \"&bconf_rate\"\n }\n\n ]\n }},\n\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n \n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n\n]);", + "type": "table" + } + ], + "title": "Speed-of-Light: LDS", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Access Rate 1": 6, + "Access Rate 2": 7, + "Bandwith (Pct-of-Peak) 1": 0, + "Bandwith (Pct-of-Peak) 2": 1, + "Bank Conflict Rate 1": 2, + "Bank Conflict Rate 2": 3, + "Utilization 1": 4, + "Utilization 2": 5 + }, + "renameByName": { + "Access Rate 1": "Access Rate (Current)", + "Access Rate 2": "Access Rate (Baseline)", + "BW (Pct-of-Peak) 1": "BW Pct-of-Peak (Current)", + "BW (Pct-of-Peak) 2": "BW Pct-of-Peak (Baseline)", + "Bandwith (Pct-of-Peak)": "", + "Bandwith (Pct-of-Peak) 1": "BW Pct-of-Peak (Current)", + "Bandwith (Pct-of-Peak) 2": "BW Pct-of-Peak (Baseline) ", + "Bank Conflict Rate 1": "Bank Conflict Rate (Current)", + "Bank Conflict Rate 2": "Bank Conflict Rate (Baseline)", + "Cache Hit 1": "Cache Hit (Current)", + "Cache Hit 2": "Cache Hit (Baseline)", + "Latency (Cycles) 1": "Latency (Current) [Cycles]", + "Latency (Cycles) 2": "Latency (Baseline) [Cycles]", + "Stall 1": "Stall (Current)", + "Stall 2": "Stall (Baseline)", + "Util 1": "Util (Current)", + "Util 2": "Util (Baseline)", + "Utilization 1": "Util (Current)", + "Utilization 2": "Util (Baseline)" + } + } + } + ], + "transparent": true, + "type": "bargauge" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "min": -100000000000000000000, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 114 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 107 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 128 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 115 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 138 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 141 + } + ] + } + ] + }, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 11 + }, + "id": 100, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"avg_waveCycles\": {\n \"$avg\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ] }\n },\n \"min_waveCycles\": {\n \"$min\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ] }\n },\n \"max_waveCycles\": {\n \"$max\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ] }\n },\n \n \"avg_ldsInstrs\": {\n \"$avg\": { \"$divide\": [\"&SQ_INSTS_LDS\" , \"&denom\"] }\n },\n \"min_ldsInstrs\": {\n \"$min\": { \"$divide\": [\"&SQ_INSTS_LDS\" , \"&denom\"] }\n },\n \"max_ldsInstrs\": {\n \"$max\": { \"$divide\": [\"&SQ_INSTS_LDS\" , \"&denom\"] }\n },\n \n \"avg_indexAccesses\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_IDX_ACTIVE\" , \"&denom\"] }\n },\n \"min_indexAccesses\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_IDX_ACTIVE\" , \"&denom\"] }\n },\n \"max_indexAccesses\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_IDX_ACTIVE\" , \"&denom\"] }\n },\n \n \"avg_atomicCycles\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_ATOMIC_RETURN\" , \"&denom\" ] }\n },\n \"min_atomicCycles\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_ATOMIC_RETURN\" , \"&denom\" ] }\n },\n \"max_atomicCycles\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_ATOMIC_RETURN\" , \"&denom\" ] }\n },\n \n \"avg_bankConflicts\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_BANK_CONFLICT\" , \"&denom\" ] }\n },\n \"min_bankConflicts\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_BANK_CONFLICT\" , \"&denom\" ] }\n },\n \"max_bankConflicts\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_BANK_CONFLICT\" , \"&denom\" ] }\n },\n \n \"avg_addrConflicts\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_ADDR_CONFLICT\" , \"&denom\" ] }\n },\n \"min_addrConflicts\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_ADDR_CONFLICT\" , \"&denom\" ] }\n },\n \"max_addrConflicts\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_ADDR_CONFLICT\" , \"&denom\" ] }\n },\n \n \n \"avg_unalignedStall\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_UNALIGNED_STALL\" , \"&denom\" ] }\n },\n \"min_unalignedStall\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_UNALIGNED_STALL\" , \"&denom\" ] }\n },\n \"max_unalignedStall\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_UNALIGNED_STALL\" , \"&denom\" ] }\n },\n \n \"avg_memViolations\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_MEM_VIOLATIONS\" , \"&denom\" ] }\n },\n \"min_memViolations\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_MEM_VIOLATIONS\" , \"&denom\" ] }\n },\n \"max_memViolations\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_MEM_VIOLATIONS\" , \"&denom\" ] }\n },\n \n \"avg_bconf_per_op\": {\n \"$avg\": {\n \"$cond\": [ {\"$ne\": [{\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 0]},\n {\"$divide\": [\n \"&SQ_LDS_BANK_CONFLICT\",\n {\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}\n ]},\n null\n ]\n }\n },\n \"min_bconf_per_op\": {\n \"$min\": {\n \"$cond\": [ {\"$ne\": [{\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 0]},\n {\"$divide\": [\n \"&SQ_LDS_BANK_CONFLICT\",\n {\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}\n ]},\n null\n ]\n }\n },\n \"max_bconf_per_op\": {\n \"$max\": {\n \"$cond\": [ {\"$ne\": [{\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 0]},\n {\"$divide\": [\n \"&SQ_LDS_BANK_CONFLICT\",\n {\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}\n ]},\n null\n ]\n }\n },\n \n \"avg_bw\": {\n \"$avg\": {\n \"$divide\":\n [ { \"$multiply\": [{ \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]} , 4]}, {\"$toInt\": \"$L2Banks\"}]}, \n \"&denom\"\n ]\n }\n },\n \"min_bw\": {\n \"$min\": {\n \"$divide\":\n [ { \"$multiply\": [{ \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]} , 4]}, {\"$toInt\": \"$L2Banks\"}]}, \n \"&denom\"\n ]\n }\n },\n \"max_bw\": {\n \"$max\": {\n \"$divide\":\n [ { \"$multiply\": [{ \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]} , 4]}, {\"$toInt\": \"$L2Banks\"}]}, \n \"&denom\"\n ]\n }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"Wave Cycles\",\n \"avg\": \"&avg_waveCycles\",\n \"min\": \"&min_waveCycles\",\n \"max\": \"&max_waveCycles\",\n \"Unit\": \"Cycles/Wave\"\n },\n {\n \"metric\": \"LDS Instrs\",\n \"avg\": \"&avg_ldsInstrs\",\n \"min\": \"&min_ldsInstrs\",\n \"max\": \"&max_ldsInstrs\",\n \"Unit\":{\"$concat\": [\"Instr \", $normUnit]} \n },\n {\n \"metric\": \"Bandwidth\",\n \"avg\": \"&avg_bw\",\n \"min\": \"&min_bw\",\n \"max\": \"&max_bw\",\n \"Unit\": {\"$concat\": [\"Bytes \", $normUnit]}\n },\n {\n \"metric\": \"Bank Conficts/Access\",\n \"avg\": \"&avg_bconf_per_op\",\n \"min\": \"&min_bconf_per_op\",\n \"max\": \"&max_bconf_per_op\",\n \"Unit\": \"Conflicts/Access\"\n },\n {\n \"metric\": \"Index Accesses\",\n \"avg\": \"&avg_indexAccesses\",\n \"min\": \"&min_indexAccesses\",\n \"max\": \"&max_indexAccesses\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Atomic Cycles\",\n \"avg\": \"&avg_atomicCycles\",\n \"min\": \"&min_atomicCycles\",\n \"max\": \"&max_atomicCycles\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Bank Conflict\",\n \"avg\": \"&avg_bankConflicts\",\n \"min\": \"&min_bankConflicts\",\n \"max\": \"&max_bankConflicts\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Addr Conflict\",\n \"avg\": \"&avg_addrConflicts\",\n \"min\": \"&min_addrConflicts\",\n \"max\": \"&max_addrConflicts\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Unaligned Stall\",\n \"avg\": \"&avg_unalignedStall\",\n \"min\": \"&min_unalignedStall\",\n \"max\": \"&max_unalignedStall\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Mem Violations\",\n \"avg\": \"&avg_memViolations\",\n \"min\": \"&min_memViolations\",\n \"max\": \"&max_memViolations\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }},\n {\"$unionWith\": {\n \"coll\": \"SQ_INST_LEVEL_LDS\",\n \"pipeline\": [\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n \n {\"$group\": {\n \"_id\": null,\n \"avg_ldsLatency\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n },\n \"min_ldsLatency\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n },\n \"max_ldsLatency\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"metric\": \"LDS Latency\",\n \"avg\": \"&avg_ldsLatency\",\n \"min\": \"&min_ldsLatency\",\n \"max\": \"&max_ldsLatency\",\n \"Unit\": \"Cycles\"\n }}\n ]\n }}\n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}}, \n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Local Data Share)\"}}\n \n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"avg_waveCycles\": {\n \"$avg\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ] }\n },\n \"min_waveCycles\": {\n \"$min\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ] }\n },\n \"max_waveCycles\": {\n \"$max\": { \"$divide\": [ { \"$multiply\": [4, \"&SQ_WAVE_CYCLES\"] }, \"&SQ_WAVES\" ] }\n },\n \n \"avg_ldsInstrs\": {\n \"$avg\": { \"$divide\": [\"&SQ_INSTS_LDS\" , \"&denom\"] }\n },\n \"min_ldsInstrs\": {\n \"$min\": { \"$divide\": [\"&SQ_INSTS_LDS\" , \"&denom\"] }\n },\n \"max_ldsInstrs\": {\n \"$max\": { \"$divide\": [\"&SQ_INSTS_LDS\" , \"&denom\"] }\n },\n \n \"avg_indexAccesses\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_IDX_ACTIVE\" , \"&denom\"] }\n },\n \"min_indexAccesses\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_IDX_ACTIVE\" , \"&denom\"] }\n },\n \"max_indexAccesses\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_IDX_ACTIVE\" , \"&denom\"] }\n },\n \n \"avg_atomicCycles\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_ATOMIC_RETURN\" , \"&denom\" ] }\n },\n \"min_atomicCycles\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_ATOMIC_RETURN\" , \"&denom\" ] }\n },\n \"max_atomicCycles\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_ATOMIC_RETURN\" , \"&denom\" ] }\n },\n \n \"avg_bankConflicts\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_BANK_CONFLICT\" , \"&denom\" ] }\n },\n \"min_bankConflicts\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_BANK_CONFLICT\" , \"&denom\" ] }\n },\n \"max_bankConflicts\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_BANK_CONFLICT\" , \"&denom\" ] }\n },\n \n \"avg_addrConflicts\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_ADDR_CONFLICT\" , \"&denom\" ] }\n },\n \"min_addrConflicts\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_ADDR_CONFLICT\" , \"&denom\" ] }\n },\n \"max_addrConflicts\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_ADDR_CONFLICT\" , \"&denom\" ] }\n },\n \"avg_unalignedStall\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_UNALIGNED_STALL\" , \"&denom\" ] }\n },\n \"min_unalignedStall\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_UNALIGNED_STALL\" , \"&denom\" ] }\n },\n \"max_unalignedStall\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_UNALIGNED_STALL\" , \"&denom\" ] }\n },\n \n \"avg_memViolations\": {\n \"$avg\": { \"$divide\": [\"&SQ_LDS_MEM_VIOLATIONS\" , \"&denom\" ] }\n },\n \"min_memViolations\": {\n \"$min\": { \"$divide\": [\"&SQ_LDS_MEM_VIOLATIONS\" , \"&denom\" ] }\n },\n \"max_memViolations\": {\n \"$max\": { \"$divide\": [\"&SQ_LDS_MEM_VIOLATIONS\" , \"&denom\" ] }\n },\n \n \n \"avg_bconf_per_op\": {\n \"$avg\": {\n \"$cond\": [ {\"$ne\": [{\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 0]},\n {\"$divide\": [\n \"&SQ_LDS_BANK_CONFLICT\",\n {\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}\n ]},\n null\n ]\n }\n },\n \"min_bconf_per_op\": {\n \"$min\": {\n \"$cond\": [ {\"$ne\": [{\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 0]},\n {\"$divide\": [\n \"&SQ_LDS_BANK_CONFLICT\",\n {\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}\n ]},\n null\n ]\n }\n },\n \"max_bconf_per_op\": {\n \"$max\": {\n \"$cond\": [ {\"$ne\": [{\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}, 0]},\n {\"$divide\": [\n \"&SQ_LDS_BANK_CONFLICT\",\n {\"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]}\n ]},\n null\n ]\n }\n },\n \n \"avg_bw\": {\n \"$avg\": {\n \"$divide\":\n [ { \"$multiply\": [{ \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]} , 4]}, {\"$toInt\": \"$L2Banks\"}]}, \n \"&denom\"\n ]\n }\n },\n \"min_bw\": {\n \"$min\": {\n \"$divide\":\n [ { \"$multiply\": [{ \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]} , 4]}, {\"$toInt\": \"$L2Banks\"}]}, \n \"&denom\"\n ]\n }\n },\n \"max_bw\": {\n \"$max\": {\n \"$divide\":\n [ { \"$multiply\": [{ \"$multiply\": [ { \"$subtract\": [\"&SQ_LDS_IDX_ACTIVE\", \"&SQ_LDS_BANK_CONFLICT\"]} , 4]}, {\"$toInt\": \"$L2Banks\"}]}, \n \"&denom\"\n ]\n }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"Wave Cycles\",\n \"avg\": \"&avg_waveCycles\",\n \"min\": \"&min_waveCycles\",\n \"max\": \"&max_waveCycles\",\n \"Unit\": \"Cycles/Wave\"\n },\n {\n \"metric\": \"LDS Instrs\",\n \"avg\": \"&avg_ldsInstrs\",\n \"min\": \"&min_ldsInstrs\",\n \"max\": \"&max_ldsInstrs\",\n \"Unit\":{\"$concat\": [\"Instr \", $normUnit]} \n },\n {\n \"metric\": \"Bandwidth\",\n \"avg\": \"&avg_bw\",\n \"min\": \"&min_bw\",\n \"max\": \"&max_bw\",\n \"Unit\": {\"$concat\": [\"Bytes \", $normUnit]}\n },\n {\n \"metric\": \"Bank Conficts/Access\",\n \"avg\": \"&avg_bconf_per_op\",\n \"min\": \"&min_bconf_per_op\",\n \"max\": \"&max_bconf_per_op\",\n \"Unit\": \"Conflicts/Access\"\n },\n {\n \"metric\": \"Index Accesses\",\n \"avg\": \"&avg_indexAccesses\",\n \"min\": \"&min_indexAccesses\",\n \"max\": \"&max_indexAccesses\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Atomic Cycles\",\n \"avg\": \"&avg_atomicCycles\",\n \"min\": \"&min_atomicCycles\",\n \"max\": \"&max_atomicCycles\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Bank Conflict\",\n \"avg\": \"&avg_bankConflicts\",\n \"min\": \"&min_bankConflicts\",\n \"max\": \"&max_bankConflicts\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Addr Conflict\",\n \"avg\": \"&avg_addrConflicts\",\n \"min\": \"&min_addrConflicts\",\n \"max\": \"&max_addrConflicts\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Unaligned Stall\",\n \"avg\": \"&avg_unalignedStall\",\n \"min\": \"&min_unalignedStall\",\n \"max\": \"&max_unalignedStall\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Mem Violations\",\n \"avg\": \"&avg_memViolations\",\n \"min\": \"&min_memViolations\",\n \"max\": \"&max_memViolations\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }},\n {\"$unionWith\": {\n \"coll\": \"SQ_INST_LEVEL_LDS\",\n \"pipeline\": [\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Local Data Share)\"}}\n }},\n \n {\"$group\": {\n \"_id\": null,\n \"avg_ldsLatency\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n },\n \"min_ldsLatency\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n },\n \"max_ldsLatency\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [\"&SQ_INSTS_LDS\", 0]},\n {\"$divide\": [ \"&SQ_ACCUM_PREV_HIRES\", \"&SQ_INSTS_LDS\" ]},\n null\n ] \n }\n }\n }},\n {\"$project\": {\n \"_id\": 0,\n \"metric\": \"LDS Latency\",\n \"avg\": \"&avg_ldsLatency\",\n \"min\": \"&min_ldsLatency\",\n \"max\": \"&max_ldsLatency\",\n \"Unit\": \"Cycles\"\n }}\n ]\n }}\n ]);", + "type": "table" + } + ], + "title": "LDS Stats", + "transformations": [ + { + "id": "concatenate", + "options": { + "frameNameLabel": "frame", + "frameNameMode": "field" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Unit 2": true, + "metric 2": true + }, + "indexByName": { + "Unit 1": 9, + "Unit 2": 8, + "avg 1": 1, + "avg 2": 2, + "max 1": 5, + "max 2": 6, + "metric 1": 0, + "metric 2": 7, + "min 1": 3, + "min 2": 4 + }, + "renameByName": { + "avg 1": "Avg (Current)", + "avg 2": "Avg (Baseline)", + "max 1": "Max (Current)", + "max 2": "Max (Baseline)", + "min 1": "Min (Current)", + "min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Local Data Share (LDS)", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 11 + }, + "id": 44, + "panels": [ + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 50 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 12 + }, + "id": 48, + "options": { + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "/.*/", + "values": true + }, + "showUnfilled": true, + "text": {} + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"reqBW_pop\": {\n \"$avg\": {\n \"$divide\": [\n {\"$multiply\": [\"&SQC_ICACHE_REQ\", 100000]}, \n {\"$multiply\": [ {\"$multiply\": [$sclk, $numSQC]}, {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]} ]}\n ]\n }\n },\n\n \"cacheHit\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQC_ICACHE_HITS\", 100] }, { \"$add\": [ \"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_MISSES\", \"&SQC_ICACHE_MISSES_DUPLICATE\" ] } ] }\n }\n }\n },\n {\"$set\": {\n \"array\": [\n {\n \"Bandwidth\": \"&reqBW_pop\",\n \"Cache Hit\": \"&cacheHit\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Instruction Cache)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"reqBW_pop\": {\n \"$avg\": {\n \"$divide\": [\n {\"$multiply\": [\"&SQC_ICACHE_REQ\", 100000]}, \n {\"$multiply\": [ {\"$multiply\": [$sclk2, $numSQC2]}, {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]} ]}\n ]\n }\n },\n\n \"cacheHit\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [\"&SQC_ICACHE_HITS\", 100] }, { \"$add\": [ \"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_MISSES\", \"&SQC_ICACHE_MISSES_DUPLICATE\"] } ] }\n }\n }\n },\n {\"$set\": {\n \"array\": [\n {\n \"Bandwidth\": \"&reqBW_pop\",\n \"Cache Hit\": \"&cacheHit\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + } + ], + "title": "Speed-of-Light: Instruction Cache ", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "BW (Pct-of-Peak) 1": 4, + "BW (Pct-of-Peak) 2": 5, + "Cache Hit 1": 6, + "Cache Hit 2": 7, + "Stall 1": 2, + "Stall 2": 3, + "Util 1": 0, + "Util 2": 1 + }, + "renameByName": { + "BW (Pct-of-Peak) 1": "BW Pct-of-Peak (Current)", + "BW (Pct-of-Peak) 2": "BW Pct-of-Peak (Baseline)", + "BW Pct-of-Peak 1": "BW Pct-of-Peak (Current)", + "BW Pct-of-Peak 2": "BW Pct-of-Peak (Baseline)", + "Bandwidth 1": "Bandwidth (Current)", + "Bandwidth 2": "Bandwidth (Baseline)", + "Cache Hit 1": "Cache Hit (Current)", + "Cache Hit 2": "Cache Hit (Baseline)", + "Stall 1": "Stall (Current)", + "Stall 2": "Stall (Baseline)", + "Util 1": "Util (Current)", + "Util 2": "Util (Baseline)" + } + } + } + ], + "transparent": true, + "type": "bargauge" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 12 + }, + "id": 259, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "rawQuery": true, + "refId": "pmc_perf", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"avg_req\": {\n \"$avg\": { \"$divide\": [\"&SQC_ICACHE_REQ\", \"&denom\"] }\n },\n \"min_req\": {\n \"$min\": { \"$divide\": [\"&SQC_ICACHE_REQ\", \"&denom\"] }\n },\n \"max_req\": {\n \"$max\": { \"$divide\": [\"&SQC_ICACHE_REQ\", \"&denom\"] }\n },\n\n \"avg_hits\": {\n \"$avg\": { \"$divide\": [\"&SQC_ICACHE_HITS\", \"&denom\"] }\n },\n \"min_hits\": {\n \"$min\": { \"$divide\": [\"&SQC_ICACHE_HITS\", \"&denom\"] }\n },\n \"max_hits\": {\n \"$max\": { \"$divide\": [\"&SQC_ICACHE_HITS\", \"&denom\"] }\n },\n\n \"avg_misses\": {\n \"$avg\": { \"$divide\": [\"&SQC_ICACHE_MISSES\", \"&denom\"] }\n },\n \"min_misses\": {\n \"$min\": { \"$divide\": [\"&SQC_ICACHE_MISSES\", \"&denom\"] }\n },\n \"max_misses\": {\n \"$max\": { \"$divide\": [\"&SQC_ICACHE_MISSES\", \"&denom\"] }\n },\n\n \"avg_misses_dup\": {\n \"$avg\": { \"$divide\": [\"&SQC_ICACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n \"min_misses_dup\": {\n \"$min\": { \"$divide\": [\"&SQC_ICACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n \"max_misses_dup\": {\n \"$max\": { \"$divide\": [\"&SQC_ICACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n\n\n \"avg_cacheHit\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQC_ICACHE_HITS\"] }, { \"$add\": [\"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_MISSES\", \"&SQC_ICACHE_MISSES_DUPLICATE\"] }] }\n },\n \"min_cacheHit\": {\n \"$min\": { \"$divide\": [{ \"$multiply\": [100, \"&SQC_ICACHE_HITS\"] }, { \"$add\": [\"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_MISSES\", \"&SQC_ICACHE_MISSES_DUPLICATE\"] }] }\n },\n \"max_cacheHit\": {\n \"$max\": { \"$divide\": [{ \"$multiply\": [100, \"&SQC_ICACHE_HITS\"] }, { \"$add\": [\"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_MISSES\", \"&SQC_ICACHE_MISSES_DUPLICATE\"] }] }\n }\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Req\",\n \"Mean\": \"&avg_req\",\n \"Min\": \"&min_req\",\n \"Max\": \"&max_req\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Hits\",\n \"Mean\": \"&avg_hits\",\n \"Min\": \"&min_hits\",\n \"Max\": \"&max_hits\",\n \"Unit\": {\"$concat\": [\"Hits \", $normUnit]}\n },\n {\n \"Metric\": \"Misses - Non Duplicated\",\n \"Mean\": \"&avg_misses\",\n \"Min\": \"&min_misses\",\n \"Max\": \"&max_misses\",\n \"Unit\": {\"$concat\": [\"Misses \", $normUnit]}\n },\n {\n \"Metric\": \"Misses - Duplicated\",\n \"Mean\": \"&avg_misses_dup\",\n \"Min\": \"&min_misses_dup\",\n \"Max\": \"&max_misses_dup\",\n \"Unit\": {\"$concat\": [\"Misses \", $normUnit]}\n },\n \n {\n \"Metric\": \"Cache Hit\",\n \"Mean\": \"&avg_cacheHit\",\n \"Min\": \"&min_cacheHit\",\n \"Max\": \"&max_cacheHit\",\n \"Unit\": \"pct\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "pmc_perf2", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Instruction Cache)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"avg_req\": {\n \"$avg\": { \"$divide\": [\"&SQC_ICACHE_REQ\", \"&denom\"] }\n },\n \"min_req\": {\n \"$min\": { \"$divide\": [\"&SQC_ICACHE_REQ\", \"&denom\"] }\n },\n \"max_req\": {\n \"$max\": { \"$divide\": [\"&SQC_ICACHE_REQ\", \"&denom\"] }\n },\n\n \"avg_hits\": {\n \"$avg\": { \"$divide\": [\"&SQC_ICACHE_HITS\", \"&denom\"] }\n },\n \"min_hits\": {\n \"$min\": { \"$divide\": [\"&SQC_ICACHE_HITS\", \"&denom\"] }\n },\n \"max_hits\": {\n \"$max\": { \"$divide\": [\"&SQC_ICACHE_HITS\", \"&denom\"] }\n },\n\n \"avg_misses\": {\n \"$avg\": { \"$divide\": [\"&SQC_ICACHE_MISSES\", \"&denom\"] }\n },\n \"min_misses\": {\n \"$min\": { \"$divide\": [\"&SQC_ICACHE_MISSES\", \"&denom\"] }\n },\n \"max_misses\": {\n \"$max\": { \"$divide\": [\"&SQC_ICACHE_MISSES\", \"&denom\"] }\n },\n\n \"avg_misses_dup\": {\n \"$avg\": { \"$divide\": [\"&SQC_ICACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n \"min_misses_dup\": {\n \"$min\": { \"$divide\": [\"&SQC_ICACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n \"max_misses_dup\": {\n \"$max\": { \"$divide\": [\"&SQC_ICACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n\n\n \"avg_cacheHit\": {\n \"$avg\": { \"$divide\": [{ \"$multiply\": [100, \"&SQC_ICACHE_HITS\"] }, { \"$add\": [\"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_MISSES\", \"&SQC_ICACHE_MISSES_DUPLICATE\"] }] }\n },\n \"min_cacheHit\": {\n \"$min\": { \"$divide\": [{ \"$multiply\": [100, \"&SQC_ICACHE_HITS\"] }, { \"$add\": [\"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_MISSES\", \"&SQC_ICACHE_MISSES_DUPLICATE\"] }] }\n },\n \"max_cacheHit\": {\n \"$max\": { \"$divide\": [{ \"$multiply\": [100, \"&SQC_ICACHE_HITS\"] }, { \"$add\": [\"&SQC_ICACHE_HITS\", \"&SQC_ICACHE_MISSES\", \"&SQC_ICACHE_MISSES_DUPLICATE\"] }] }\n }\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Req\",\n \"Mean 2\": \"&avg_req\",\n \"Min 2\": \"&min_req\",\n \"Max 2\": \"&max_req\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Hits\",\n \"Mean 2\": \"&avg_hits\",\n \"Min 2\": \"&min_hits\",\n \"Max 2\": \"&max_hits\",\n \"Unit\": {\"$concat\": [\"Hits \", $normUnit]}\n },\n {\n \"Metric\": \"Misses - Non Duplicated\",\n \"Mean 2\": \"&avg_misses\",\n \"Min 2\" : \"&min_misses\",\n \"Max 2\": \"&max_misses\",\n \"Unit\": {\"$concat\": [\"Misses \", $normUnit]}\n },\n {\n \"Metric\": \"Misses - Duplicated\",\n \"Mean 2\": \"&avg_misses_dup\",\n \"Min 2\": \"&min_misses_dup\",\n \"Max 2\": \"&max_misses_dup\",\n \"Unit\": {\"$concat\": [\"Misses \", $normUnit]}\n },\n {\n \"Metric\": \"Cache Hit\",\n \"Mean 2\": \"&avg_cacheHit\",\n \"Min 2\": \"&min_cacheHit\",\n \"Max 2\": \"&max_cacheHit\",\n \"Unit\": \"pct\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Instruction Cache Accesses", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Max": 5, + "Max 2": 6, + "Mean": 1, + "Mean 2": 2, + "Metric": 0, + "Min": 3, + "Min 2": 4, + "Unit": 7 + }, + "renameByName": { + "L1I Metric": "", + "Max": "Max (Current)", + "Max 2": "Max (Baseline)", + "Mean": "Avg (Current)", + "Mean 2": "Avg (Baseline)", + "Min": "Min (Current)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Instruction Cache", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 203, + "panels": [ + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 100, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 50 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "L1K-TC BW - GB/s" + }, + "properties": [ + { + "id": "unit", + "value": "GBs" + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 13 + }, + "id": 54, + "options": { + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "text": { + "titleSize": 14, + "valueSize": 16 + } + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"reqBW_pop\": {\n \"$avg\": {\n \"$divide\": [\n {\"$multiply\": [\"&SQC_DCACHE_REQ\", 100000]}, \n {\"$multiply\": [ {\"$multiply\": [$sclk, $numSQC]}, {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]} ]}\n ]\n }\n },\n \"cacheHit\": {\n \"$avg\": { \n \"$cond\":[\n {\"$ne\": [{ \"$add\": [ \"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] } , 0 ]},\n {\"$divide\": [{ \"$multiply\": [\"&SQC_DCACHE_HITS\", 100] }, { \"$add\": [ \"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] } ]},\n null\n ]\n }\n }\n \n }},\n {\"$set\": {\n \"array\": [\n {\n \"Bandwidth\": \"&reqBW_pop\",\n \"Cache Hit\": \"&cacheHit\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "sY628IJnz" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Scalar L1D Cache)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"reqBW_pop\": {\n \"$avg\": {\n \"$divide\": [\n {\"$multiply\": [\"&SQC_DCACHE_REQ\", 100000]}, \n {\"$multiply\": [ {\"$multiply\": [$sclk2, $numSQC2]}, {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]} ]}\n ]\n }\n },\n \"cacheHit\": {\n \"$avg\": { \n \"$cond\":[\n {\"$ne\": [{ \"$add\": [ \"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] } , 0 ]},\n {\"$divide\": [{ \"$multiply\": [\"&SQC_DCACHE_HITS\", 100] }, { \"$add\": [ \"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] } ]},\n null\n ]\n }\n }\n \n }},\n {\"$set\": {\n \"array\": [\n {\n \"Bandwidth\": \"&reqBW_pop\",\n \"Cache Hit\": \"&cacheHit\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + } + ], + "title": "Speed-of-Light: Scalar L1D Cache", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "BW Pct-of-Peak 1": 0, + "BW Pct-of-Peak 2": 1, + "Cache Hit 1": 2, + "Cache Hit 2": 3, + "Stall 1": 6, + "Stall 2": 7, + "Util 1": 4, + "Util 2": 5 + }, + "renameByName": { + "BW Pct-of-Peak 1": "BW Pct-of-Peak (Current)", + "BW Pct-of-Peak 2": "BW Pct-of-Peak (Baseline)", + "Bandwidth 1": "Bandwidth (Current)", + "Bandwidth 2": "Bandwidth (Baseline)", + "Cache Hit 1": "Cache Hit (Current)", + "Cache Hit 2": "Cache Hit (Baseline)", + "Stall 1": "Stall (Current)", + "Stall 2": "Stall (Baseline)", + "Util 1": "Util (Current)", + "Util 2": "Util (Baseline)" + } + } + } + ], + "transparent": true, + "type": "bargauge" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [] + }, + "gridPos": { + "h": 14, + "w": 12, + "x": 12, + "y": 13 + }, + "id": 261, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "pmc_perf", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"req_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ\", \"&denom\"] }\n },\n \"req_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ\", \"&denom\"] }\n },\n \"req_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ\", \"&denom\"] }\n },\n\n \"hits_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_HITS\", \"&denom\"] }\n },\n \"hits_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_HITS\", \"&denom\"] }\n },\n \"hits_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_HITS\", \"&denom\"] }\n },\n\n \"misses_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_MISSES\", \"&denom\"] }\n },\n \"misses_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_MISSES\", \"&denom\"] }\n },\n \"misses_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_MISSES\", \"&denom\"] }\n },\n\n \"dup_misses_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n \"dup_misses_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n \"dup_misses_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n\n\n \"cacheHit_avg\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] } , 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&SQC_DCACHE_HITS\"] }, { \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] }] },\n \"\"\n ]\n }\n },\n \"cacheHit_min\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] } , 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&SQC_DCACHE_HITS\"] }, { \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] }] },\n \"\"\n ]\n }\n },\n \"cacheHit_max\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] } , 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&SQC_DCACHE_HITS\"] }, { \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] }] },\n \"\"\n ]\n }\n },\n\n \"readReq_avg\": {\n \"$avg\": { \"$divide\": [{ \"$add\": [\"&SQC_DCACHE_REQ_READ_1\", \"&SQC_DCACHE_REQ_READ_2\", \"&SQC_DCACHE_REQ_READ_4\", \"&SQC_DCACHE_REQ_READ_8\", \"&SQC_DCACHE_REQ_READ_16\"] }, \"&denom\"] }\n },\n \"readReq_min\": {\n \"$min\": { \"$divide\": [{ \"$add\": [\"&SQC_DCACHE_REQ_READ_1\", \"&SQC_DCACHE_REQ_READ_2\", \"&SQC_DCACHE_REQ_READ_4\", \"&SQC_DCACHE_REQ_READ_8\", \"&SQC_DCACHE_REQ_READ_16\"] }, \"&denom\"] }\n },\n \"readReq_max\": {\n \"$max\": { \"$divide\": [{ \"$add\": [\"&SQC_DCACHE_REQ_READ_1\", \"&SQC_DCACHE_REQ_READ_2\", \"&SQC_DCACHE_REQ_READ_4\", \"&SQC_DCACHE_REQ_READ_8\", \"&SQC_DCACHE_REQ_READ_16\"] }, \"&denom\"] }\n },\n\n\n \"atomicReq_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_ATOMIC\", \"&denom\"] }\n },\n \"atomicReq_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_ATOMIC\", \"&denom\"] }\n },\n \"atomicReq_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_ATOMIC\", \"&denom\"] }\n },\n\n \"read1d_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_1\", \"&denom\"] }\n },\n \"read1d_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_1\", \"&denom\"] }\n },\n \"read1d_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_1\", \"&denom\"] }\n },\n\n \"read2d_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_2\", \"&denom\"] }\n },\n \"read2d_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_2\", \"&denom\"] }\n },\n \"read2d_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_2\", \"&denom\"] }\n },\n\n \"read4d_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_4\", \"&denom\"] }\n },\n \"read4d_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_4\", \"&denom\"] }\n },\n \"read4d_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_4\", \"&denom\"] }\n },\n\n \"read8d_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_8\", \"&denom\"] }\n },\n \"read8d_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_8\", \"&denom\"] }\n },\n \"read8d_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_8\", \"&denom\"] }\n },\n\n \"read16d_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_16\", \"&denom\"] }\n },\n \"read16d_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_16\", \"&denom\"] }\n },\n \"read16d_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_16\", \"&denom\"] }\n }\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Req\",\n \"Mean\": \"&req_avg\",\n \"Min\": \"&req_min\",\n \"Max\": \"&req_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Hits\",\n \"Mean\": \"&hits_avg\",\n \"Min\": \"&hits_min\",\n \"Max\": \"&hits_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Misses - Non Duplicated\",\n \"Mean\": \"&misses_avg\",\n \"Min\": \"&misses_min\",\n \"Max\": \"&misses_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Misses- Duplicated\",\n \"Mean\": \"&dup_misses_avg\",\n \"Min\": \"&dup_misses_min\",\n \"Max\": \"&dup_misses_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Cache Hit\",\n \"Mean\": \"&cacheHit_avg\",\n \"Min\": \"&cacheHit_min\",\n \"Max\": \"&cacheHit_max\",\n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"Read Req (Total)\",\n \"Mean\": \"&readReq_avg\",\n \"Min\": \"&readReq_min\",\n \"Max\": \"&readReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Atomic Req\",\n \"Mean\": \"&atomicReq_avg\",\n \"Min\": \"&atomicReq_min\",\n \"Max\": \"&atomicReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Read Req (1 DWord)\",\n \"Mean\": \"&read1d_avg\",\n \"Min\": \"&read1d_min\",\n \"Max\": \"&read1d_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Read Req (2 DWord)\",\n \"Mean\": \"&read2d_avg\",\n \"Min\": \"&read2d_min\",\n \"Max\": \"&read2d_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Read Req (4 DWord)\",\n \"Mean\": \"&read4d_avg\",\n \"Min\": \"&read4d_min\",\n \"Max\": \"&read4d_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Read Req (8 DWord)\",\n \"Mean\": \"&read8d_avg\",\n \"Min\": \"&read8d_min\",\n \"Max\": \"&read8d_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Read Req (16 DWord)\",\n \"Mean\": \"&read16d_avg\",\n \"Min\": \"&read16d_min\",\n \"Max\": \"&read16d_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "bhNVuvBnk" + }, + "hide": false, + "rawQuery": true, + "refId": "pmc_perf2", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Scalar L1D Cache)\"}}\n }}, \n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"req_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ\", \"&denom\"] }\n },\n \"req_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ\", \"&denom\"] }\n },\n \"req_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ\", \"&denom\"] }\n },\n\n \"hits_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_HITS\", \"&denom\"] }\n },\n \"hits_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_HITS\", \"&denom\"] }\n },\n \"hits_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_HITS\", \"&denom\"] }\n },\n\n \"dup_misses_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n \"dup_misses_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n \"dup_misses_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_MISSES_DUPLICATE\", \"&denom\"] }\n },\n\n\n \"cacheHit_avg\": {\n \"$avg\": { \n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] } , 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&SQC_DCACHE_HITS\"] }, { \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] }] },\n \"\"\n ]\n }\n },\n \"cacheHit_min\": {\n \"$min\": { \n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] } , 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&SQC_DCACHE_HITS\"] }, { \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] }] },\n \"\"\n ]\n }\n },\n \"cacheHit_max\": {\n \"$max\": { \n \"$cond\": [\n {\"$ne\": [{ \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] } , 0]},\n { \"$divide\": [{ \"$multiply\": [100, \"&SQC_DCACHE_HITS\"] }, { \"$add\": [\"&SQC_DCACHE_HITS\", \"&SQC_DCACHE_MISSES\", \"&SQC_DCACHE_MISSES_DUPLICATE\"] }] },\n \"\"\n ]\n }\n },\n\n \"readReq_avg\": {\n \"$avg\": { \"$divide\": [{ \"$add\": [\"&SQC_DCACHE_REQ_READ_1\", \"&SQC_DCACHE_REQ_READ_2\", \"&SQC_DCACHE_REQ_READ_4\", \"&SQC_DCACHE_REQ_READ_8\", \"&SQC_DCACHE_REQ_READ_16\"] }, \"&denom\"] }\n },\n \"readReq_min\": {\n \"$min\": { \"$divide\": [{ \"$add\": [\"&SQC_DCACHE_REQ_READ_1\", \"&SQC_DCACHE_REQ_READ_2\", \"&SQC_DCACHE_REQ_READ_4\", \"&SQC_DCACHE_REQ_READ_8\", \"&SQC_DCACHE_REQ_READ_16\"] }, \"&denom\"] }\n },\n \"readReq_max\": {\n \"$max\": { \"$divide\": [{ \"$add\": [\"&SQC_DCACHE_REQ_READ_1\", \"&SQC_DCACHE_REQ_READ_2\", \"&SQC_DCACHE_REQ_READ_4\", \"&SQC_DCACHE_REQ_READ_8\", \"&SQC_DCACHE_REQ_READ_16\"] }, \"&denom\"] }\n },\n\n \"atomicReq_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_ATOMIC\", \"&denom\"] }\n },\n \"atomicReq_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_ATOMIC\", \"&denom\"] }\n },\n \"atomicReq_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_ATOMIC\", \"&denom\"] }\n },\n\n\n \"read1d_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_1\", \"&denom\"] }\n },\n \"read1d_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_1\", \"&denom\"] }\n },\n \"read1d_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_1\", \"&denom\"] }\n },\n\n \"read2d_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_2\", \"&denom\"] }\n },\n \"read2d_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_2\", \"&denom\"] }\n },\n \"read2d_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_2\", \"&denom\"] }\n },\n\n \"read4d_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_4\", \"&denom\"] }\n },\n \"read4d_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_4\", \"&denom\"] }\n },\n \"read4d_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_4\", \"&denom\"] }\n },\n\n \"read8d_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_8\", \"&denom\"] }\n },\n \"read8d_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_8\", \"&denom\"] }\n },\n \"read8d_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_8\", \"&denom\"] }\n },\n\n \"read16d_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_16\", \"&denom\"] }\n },\n \"read16d_min\": {\n \"$min\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_16\", \"&denom\"] }\n },\n \"read16d_max\": {\n \"$max\": { \"$divide\": [\"&SQC_DCACHE_REQ_READ_16\", \"&denom\"] }\n }\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Req\",\n \"Mean 2\": \"&req_avg\",\n \"Min 2\": \"&req_min\",\n \"Max 2\": \"&req_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Hits\",\n \"Mean 2\": \"&hits_avg\",\n \"Min 2\": \"&hits_min\",\n \"Max 2\": \"&hits_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Misses - Non Duplicated\",\n \"Mean 2\": \"&misses_avg\",\n \"Min 2\": \"&misses_min\",\n \"Max 2\": \"&misses_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Misses- Duplicated\",\n \"Mean 2\": \"&dup_misses_avg\",\n \"Min 2\": \"&dup_misses_min\",\n \"Max 2\": \"&dup_misses_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Cache Hit\",\n \"Mean 2\": \"&cacheHit_avg\",\n \"Min 2\": \"&cacheHit_min\",\n \"Max 2\": \"&cacheHit_max\",\n \"Unit\": \"pct\"\n },\n {\n \"Metric\": \"Read Req (Total)\",\n \"Mean 2\": \"&readReq_avg\",\n \"Min 2\": \"&readReq_min\",\n \"Max 2\": \"&readReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Write Req (Total)\",\n \"Mean 2\": \"&writeReq_avg\",\n \"Min 2\": \"&writeReq_min\",\n \"Max 2\": \"&writeReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Atomic Req\",\n \"Mean 2\": \"&atomicReq_avg\",\n \"Min 2\": \"&atomicReq_min\",\n \"Max 2\": \"&atomicReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Read Req (1 DWord)\",\n \"Mean 2\": \"&read1d_avg\",\n \"Min 2\": \"&read1d_min\",\n \"Max 2\": \"&read1d_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Read Req (2 DWord)\",\n \"Mean 2\": \"&read2d_avg\",\n \"Min 2\": \"&read2d_min\",\n \"Max 2\": \"&read2d_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Read Req (4 DWord)\",\n \"Mean 2\": \"&read4d_avg\",\n \"Min 2\": \"&read4d_min\",\n \"Max 2\": \"&read4d_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Read Req (8 DWord)\",\n \"Mean 2\": \"&read8d_avg\",\n \"Min 2\": \"&read8d_min\",\n \"Max 2\": \"&read8d_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Read Req (16 DWord)\",\n \"Mean 2\": \"&read16d_avg\",\n \"Min 2\": \"&read16d_min\",\n \"Max 2\": \"&read16d_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Scalar L1D Cache Accesses", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Max": 5, + "Max 2": 6, + "Mean": 1, + "Mean 2": 2, + "Metric": 0, + "Min": 3, + "Min 2": 4, + "Unit": 7 + }, + "renameByName": { + "Max": "Max (Current)", + "Max 2": "Max (Baseline)", + "Mean": "Avg (Current)", + "Mean 2": "Avg (Baseline)", + "Min": "Min (Current)", + "Min 2": "Min (Baseline)", + "Unit": "" + } + } + } + ], + "type": "table" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 135 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 105 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 112 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 134 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 20 + }, + "id": 52, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"readReq_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_DATA_READ_REQ\", \"&denom\"] }\n },\n \"readReq_min\": {\n \"$min\": { \"$divide\": [\"&SQC_TC_DATA_READ_REQ\", \"&denom\"] }\n },\n \"readReq_max\": {\n \"$max\": { \"$divide\": [\"&SQC_TC_DATA_READ_REQ\", \"&denom\"] }\n },\n\n \"writeReq_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_DATA_WRITE_REQ\", \"&denom\"] }\n },\n \"writeReq_min\": {\n \"$min\": { \"$divide\": [\"&SQC_TC_DATA_WRITE_REQ\", \"&denom\"] }\n },\n \"writeReq_max\": {\n \"$max\": { \"$divide\": [\"&SQC_TC_DATA_WRITE_REQ\", \"&denom\"] }\n },\n\n \"atomicReq_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_DATA_ATOMIC_REQ\", \"&denom\"] }\n },\n \"atomicReq_min\": {\n \"$min\": { \"$divide\": [\"&SQC_TC_DATA_ATOMIC_REQ\", \"&denom\"] }\n },\n \"atomicReq_max\": {\n \"$max\": { \"$divide\": [\"&SQC_TC_DATA_ATOMIC_REQ\", \"&denom\"] }\n },\n\n \"tc2l1k_stall_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_STALL\", \"&denom\" ] }\n },\n \"tc2l1k_stall_min\": {\n \"$min\": { \"$divide\": [\"&SQC_TC_STALL\", \"&denom\" ] }\n },\n \"tc2l1k_stall_max\": {\n \"$max\": { \"$divide\": [\"&SQC_TC_STALL\", \"&denom\" ] }\n }\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Read Req\",\n \"Mean\": \"&readReq_avg\",\n \"Min\": \"&readReq_min\",\n \"Max\": \"&readReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Write Req\",\n \"Mean\": \"&writeReq_avg\",\n \"Min\": \"&writeReq_min\",\n \"Max\": \"&writeReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Atomic Req\",\n \"Mean\": \"&atomicReq_avg\",\n \"Min\": \"&atomicReq_min\",\n \"Max\": \"&atomicReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Stall\",\n \"Mean\": \"&tc2l1k_stall_avg\",\n \"Min\": \"&tc2l1k_stall_min\",\n \"Max\": \"&tc2l1k_stall_max\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}}, \n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Scalar L1D Cache)\"}}\n }},\n {\"$addFields\": {\n \n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"readReq_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_DATA_READ_REQ\", \"&denom\"] }\n },\n \"readReq_min\": {\n \"$min\": { \"$divide\": [\"&SQC_TC_DATA_READ_REQ\", \"&denom\"] }\n },\n \"readReq_max\": {\n \"$max\": { \"$divide\": [\"&SQC_TC_DATA_READ_REQ\", \"&denom\"] }\n },\n\n \"writeReq_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_DATA_WRITE_REQ\", \"&denom\"] }\n },\n \"writeReq_min\": {\n \"$min\": { \"$divide\": [\"&SQC_TC_DATA_WRITE_REQ\", \"&denom\"] }\n },\n \"writeReq_max\": {\n \"$max\": { \"$divide\": [\"&SQC_TC_DATA_WRITE_REQ\", \"&denom\"] }\n },\n\n \"atomicReq_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_DATA_ATOMIC_REQ\", \"&denom\"] }\n },\n \"atomicReq_min\": {\n \"$min\": { \"$divide\": [\"&SQC_TC_DATA_ATOMIC_REQ\", \"&denom\"] }\n },\n \"atomicReq_max\": {\n \"$max\": { \"$divide\": [\"&SQC_TC_DATA_ATOMIC_REQ\", \"&denom\"] }\n },\n\n \"tc2l1k_stall_avg\": {\n \"$avg\": { \"$divide\": [\"&SQC_TC_STALL\", \"&denom\" ] }\n },\n \"tc2l1k_stall_min\": {\n \"$min\": { \"$divide\": [\"&SQC_TC_STALL\", \"&denom\" ] }\n },\n \"tc2l1k_stall_max\": {\n \"$max\": { \"$divide\": [\"&SQC_TC_STALL\", \"&denom\" ] }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Read Req\",\n \"Mean\": \"&readReq_avg\",\n \"Min\": \"&readReq_min\",\n \"Max\": \"&readReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Write Req\",\n \"Mean\": \"&writeReq_avg\",\n \"Min\": \"&writeReq_min\",\n \"Max\": \"&writeReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Atomic Req\",\n \"Mean\": \"&atomicReq_avg\",\n \"Min\": \"&atomicReq_min\",\n \"Max\": \"&atomicReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Stall\",\n \"Mean\": \"&tc2l1k_stall_avg\",\n \"Min\": \"&tc2l1k_stall_min\",\n \"Max\": \"&tc2l1k_stall_max\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n\n]);", + "type": "table" + } + ], + "title": "Scalar L1D Cache - L2 Interface", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Unit 2": true + }, + "indexByName": { + "Max 1": 7, + "Max 2": 8, + "Mean 1": 3, + "Mean 2": 4, + "Metric 1": 0, + "Metric 2": 1, + "Min 1": 5, + "Min 2": 6, + "Unit 1": 9, + "Unit 2": 2 + }, + "renameByName": { + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Mean 1": "Avg (Current)", + "Mean 2": "Avg (Baseline)", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Scalar L1 Data Cache", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 13 + }, + "id": 130, + "panels": [ + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 133 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 112 + } + ] + } + ] + }, + "gridPos": { + "h": 17, + "w": 12, + "x": 0, + "y": 14 + }, + "id": 132, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"taBusy_avg\":{\"$avg\": { \"$divide\": [ { \"$multiply\": [100, \"&TA_TA_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}] }},\n \"taBusy_min\":{\"$min\": { \"$divide\": [ { \"$multiply\": [100, \"&TA_TA_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}] }},\n \"taBusy_max\":{\"$max\": { \"$divide\": [ { \"$multiply\": [100, \"&TA_TA_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}] }},\n\n \"tc2ta_addrStall_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n \"tc2ta_addrStall_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n \"tc2ta_addrStall_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n\n \"tc2ta_dataStall_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_DATA_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n \"tc2ta_dataStall_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_DATA_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n \"tc2ta_dataStall_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_DATA_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n\n \"td2ta_addrStall_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TD_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n \"td2ta_addrStall_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TD_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n \"td2ta_addrStall_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TD_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n\n \"totalInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_TOTAL_WAVEFRONTS_sum\", \"&denom\"] }},\n \"totalInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_TOTAL_WAVEFRONTS_sum\", \"&denom\"] }},\n \"totalInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_TOTAL_WAVEFRONTS_sum\", \"&denom\"] }},\n\n \"flatInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_FLAT_WAVEFRONTS_sum\", \"&denom\"] }},\n \"flatInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_FLAT_WAVEFRONTS_sum\", \"&denom\"] }},\n \"flatInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_FLAT_WAVEFRONTS_sum\", \"&denom\"] }},\n\n \"flatReadInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_FLAT_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatReadInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_FLAT_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatReadInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_FLAT_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"flatWriteInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_FLAT_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatWriteInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_FLAT_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatWriteInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_FLAT_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"flatAtomicInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_FLAT_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatAtomicInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_FLAT_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatAtomicInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_FLAT_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"bufferInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_BUFFER_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_BUFFER_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_BUFFER_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"bufferReadInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_BUFFER_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferReadInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_BUFFER_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferReadInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_BUFFER_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"bufferWriteInstr_avg\":{\"$avg\": { \"$divide\": [ \"&TA_BUFFER_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferWriteInstr_min\":{\"$min\": { \"$divide\": [ \"&TA_BUFFER_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferWriteInstr_max\":{\"$max\": { \"$divide\": [ \"&TA_BUFFER_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"bufferAtomicInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_BUFFER_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferAtomicInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_BUFFER_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferAtomicInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_BUFFER_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"buffTotal_avg\":{\"$avg\": {\"$divide\": [ \"&TA_BUFFER_TOTAL_CYCLES_sum\", \"&denom\"] }},\n \"buffTotal_min\":{\"$min\": {\"$divide\": [ \"&TA_BUFFER_TOTAL_CYCLES_sum\", \"&denom\"] }},\n \"buffTotal_max\":{\"$max\": {\"$divide\": [ \"&TA_BUFFER_TOTAL_CYCLES_sum\", \"&denom\"] }},\n\n \"buffCoscaleRead_avg\":{\"$avg\": {\"$divide\": [ \"&TA_BUFFER_COALESCED_READ_CYCLES_sum\", \"&denom\"] }},\n \"buffCoscaleRead_min\":{\"$min\": {\"$divide\": [ \"&TA_BUFFER_COALESCED_READ_CYCLES_sum\", \"&denom\"] }},\n \"buffCoscaleRead_max\":{\"$max\": {\"$divide\": [ \"&TA_BUFFER_COALESCED_READ_CYCLES_sum\", \"&denom\"] }},\n\n \"buffCoscaleWrite_avg\":{\"$avg\": { \"$divide\": [ \"&TA_BUFFER_COALESCED_WRITE_CYCLES_sum\", \"&denom\"] }},\n \"buffCoscaleWrite_min\":{\"$min\": { \"$divide\": [ \"&TA_BUFFER_COALESCED_WRITE_CYCLES_sum\", \"&denom\"] }},\n \"buffCoscaleWrite_max\":{\"$max\": { \"$divide\": [ \"&TA_BUFFER_COALESCED_WRITE_CYCLES_sum\", \"&denom\"] }}\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"TA Busy\",\n \"avg\": \"&taBusy_avg\",\n \"min\": \"&taBusy_min\",\n \"max\": \"&taBusy_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"TC2TA Addr Stall\",\n \"avg\": \"&tc2ta_addrStall_avg\",\n \"min\": \"&tc2ta_addrStall_min\",\n \"max\": \"&tc2ta_addrStall_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"TC2TA Data Stall\",\n \"avg\": \"&tc2ta_dataStall_avg\",\n \"min\": \"&tc2ta_dataStall_min\",\n \"max\": \"&tc2ta_dataStall_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"TD2TA Addr Stall\",\n \"avg\": \"&td2ta_addrStall_avg\",\n \"min\": \"&td2ta_addrStall_min\",\n \"max\": \"&td2ta_addrStall_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"Total Instructions\",\n \"avg\": \"&totalInstr_avg\",\n \"min\": \"&totalInstr_min\",\n \"max\": \"&totalInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Flat Instr\",\n \"avg\": \"&flatInstr_avg\",\n \"min\": \"&flatInstr_min\",\n \"max\": \"&flatInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Flat Read Instr\",\n \"avg\": \"&flatReadInstr_avg\",\n \"min\": \"&flatReadInstr_min\",\n \"max\": \"&flatReadInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Flat Write Instr\",\n \"avg\": \"&flatWriteInstr_avg\",\n \"min\": \"&flatWriteInstr_min\",\n \"max\": \"&flatWriteInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Flat Atomic Instr\",\n \"avg\": \"&flatAtomicInstr_avg\",\n \"min\": \"&flatAtomicInstr_min\",\n \"max\": \"&flatAtomicInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Instr\",\n \"avg\": \"&bufferInstr_avg\",\n \"min\": \"&bufferInstr_min\",\n \"max\": \"&bufferInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Read Instr\",\n \"avg\": \"&bufferReadInstr_avg\",\n \"min\": \"&bufferReadInstr_min\",\n \"max\": \"&bufferReadInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Write Instr\",\n \"avg\": \"&bufferWriteInstr_avg\",\n \"min\": \"&bufferWriteInstr_min\",\n \"max\": \"&bufferWriteInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Atomic Instr\",\n \"avg\": \"&bufferAtomicInstr_avg\",\n \"min\": \"&bufferAtomicInstr_min\",\n \"max\": \"&bufferAtomicInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Total Cylces\",\n \"avg\": \"&buffTotal_avg\",\n \"min\": \"&buffTotal_min\",\n \"max\": \"&buffTotal_max\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Coalesced Read\",\n \"avg\": \"&buffCoscaleRead_avg\",\n \"min\": \"&buffCoscaleRead_min\",\n \"max\": \"&buffCoscaleRead_max\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Coalesced Write\",\n \"avg\": \"&buffCoscaleWrite_avg\",\n \"min\": \"&buffCoscaleWrite_min\",\n \"max\": \"&buffCoscaleWrite_max\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Texture Addr and Data)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"taBusy_avg\":{\"$avg\": { \"$divide\": [ { \"$multiply\": [100, \"&TA_TA_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}] }},\n \"taBusy_min\":{\"$min\": { \"$divide\": [ { \"$multiply\": [100, \"&TA_TA_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}] }},\n \"taBusy_max\":{\"$max\": { \"$divide\": [ { \"$multiply\": [100, \"&TA_TA_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}] }},\n\n \"tc2ta_addrStall_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n \"tc2ta_addrStall_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n \"tc2ta_addrStall_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n\n \"tc2ta_dataStall_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_DATA_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n \"tc2ta_dataStall_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_DATA_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n \"tc2ta_dataStall_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_DATA_STALLED_BY_TC_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n\n \"td2ta_addrStall_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TD_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n \"td2ta_addrStall_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TD_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n \"td2ta_addrStall_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [100, \"&TA_ADDR_STALLED_BY_TD_CYCLES_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n\n \"totalInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_TOTAL_WAVEFRONTS_sum\", \"&denom\"] }},\n \"totalInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_TOTAL_WAVEFRONTS_sum\", \"&denom\"] }},\n \"totalInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_TOTAL_WAVEFRONTS_sum\", \"&denom\"] }},\n\n \"flatInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_FLAT_WAVEFRONTS_sum\", \"&denom\"] }},\n \"flatInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_FLAT_WAVEFRONTS_sum\", \"&denom\"] }},\n \"flatInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_FLAT_WAVEFRONTS_sum\", \"&denom\"] }},\n\n \"flatReadInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_FLAT_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatReadInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_FLAT_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatReadInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_FLAT_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"flatWriteInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_FLAT_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatWriteInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_FLAT_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatWriteInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_FLAT_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"flatAtomicInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_FLAT_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatAtomicInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_FLAT_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n \"flatAtomicInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_FLAT_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"bufferInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_BUFFER_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_BUFFER_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_BUFFER_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"bufferReadInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_BUFFER_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferReadInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_BUFFER_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferReadInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_BUFFER_READ_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"bufferWriteInstr_avg\":{\"$avg\": { \"$divide\": [ \"&TA_BUFFER_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferWriteInstr_min\":{\"$min\": { \"$divide\": [ \"&TA_BUFFER_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferWriteInstr_max\":{\"$max\": { \"$divide\": [ \"&TA_BUFFER_WRITE_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"bufferAtomicInstr_avg\":{\"$avg\": {\"$divide\": [ \"&TA_BUFFER_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferAtomicInstr_min\":{\"$min\": {\"$divide\": [ \"&TA_BUFFER_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n \"bufferAtomicInstr_max\":{\"$max\": {\"$divide\": [ \"&TA_BUFFER_ATOMIC_WAVEFRONTS_sum\", \"&denom\"]}},\n\n \"buffTotal_avg\":{\"$avg\": {\"$divide\": [ \"&TA_BUFFER_TOTAL_CYCLES_sum\", \"&denom\"] }},\n \"buffTotal_min\":{\"$min\": {\"$divide\": [ \"&TA_BUFFER_TOTAL_CYCLES_sum\", \"&denom\"] }},\n \"buffTotal_max\":{\"$max\": {\"$divide\": [ \"&TA_BUFFER_TOTAL_CYCLES_sum\", \"&denom\"] }},\n\n \"buffCoscaleRead_avg\":{\"$avg\": {\"$divide\": [ \"&TA_BUFFER_COALESCED_READ_CYCLES_sum\", \"&denom\"] }},\n \"buffCoscaleRead_min\":{\"$min\": {\"$divide\": [ \"&TA_BUFFER_COALESCED_READ_CYCLES_sum\", \"&denom\"] }},\n \"buffCoscaleRead_max\":{\"$max\": {\"$divide\": [ \"&TA_BUFFER_COALESCED_READ_CYCLES_sum\", \"&denom\"] }},\n\n \"buffCoscaleWrite_avg\":{\"$avg\": { \"$divide\": [ \"&TA_BUFFER_COALESCED_WRITE_CYCLES_sum\", \"&denom\"] }},\n \"buffCoscaleWrite_min\":{\"$min\": { \"$divide\": [ \"&TA_BUFFER_COALESCED_WRITE_CYCLES_sum\", \"&denom\"] }},\n \"buffCoscaleWrite_max\":{\"$max\": { \"$divide\": [ \"&TA_BUFFER_COALESCED_WRITE_CYCLES_sum\", \"&denom\"] }}\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"TA Busy\",\n \"avg\": \"&taBusy_avg\",\n \"min\": \"&taBusy_min\",\n \"max\": \"&taBusy_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"TC2TA Addr Stall\",\n \"avg\": \"&tc2ta_addrStall_avg\",\n \"min\": \"&tc2ta_addrStall_min\",\n \"max\": \"&tc2ta_addrStall_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"TC2TA Data Stall\",\n \"avg\": \"&tc2ta_dataStall_avg\",\n \"min\": \"&tc2ta_dataStall_min\",\n \"max\": \"&tc2ta_dataStall_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"TD2TA Addr Stall\",\n \"avg\": \"&td2ta_addrStall_avg\",\n \"min\": \"&td2ta_addrStall_min\",\n \"max\": \"&td2ta_addrStall_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"Total Instructions\",\n \"avg\": \"&totalInstr_avg\",\n \"min\": \"&totalInstr_min\",\n \"max\": \"&totalInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Flat Instr\",\n \"avg\": \"&flatInstr_avg\",\n \"min\": \"&flatInstr_min\",\n \"max\": \"&flatInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Flat Read Instr\",\n \"avg\": \"&flatReadInstr_avg\",\n \"min\": \"&flatReadInstr_min\",\n \"max\": \"&flatReadInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Flat Write Instr\",\n \"avg\": \"&flatWriteInstr_avg\",\n \"min\": \"&flatWriteInstr_min\",\n \"max\": \"&flatWriteInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Flat Atomic Instr\",\n \"avg\": \"&flatAtomicInstr_avg\",\n \"min\": \"&flatAtomicInstr_min\",\n \"max\": \"&flatAtomicInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Instr\",\n \"avg\": \"&bufferInstr_avg\",\n \"min\": \"&bufferInstr_min\",\n \"max\": \"&bufferInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Read Instr\",\n \"avg\": \"&bufferReadInstr_avg\",\n \"min\": \"&bufferReadInstr_min\",\n \"max\": \"&bufferReadInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Write Instr\",\n \"avg\": \"&bufferWriteInstr_avg\",\n \"min\": \"&bufferWriteInstr_min\",\n \"max\": \"&bufferWriteInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Atomic Instr\",\n \"avg\": \"&bufferAtomicInstr_avg\",\n \"min\": \"&bufferAtomicInstr_min\",\n \"max\": \"&bufferAtomicInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Total Cylces\",\n \"avg\": \"&buffTotal_avg\",\n \"min\": \"&buffTotal_min\",\n \"max\": \"&buffTotal_max\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Coalesced Read\",\n \"avg\": \"&buffCoscaleRead_avg\",\n \"min\": \"&buffCoscaleRead_min\",\n \"max\": \"&buffCoscaleRead_max\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n },\n {\n \"metric\": \"Buffer Coalesced Write\",\n \"avg\": \"&buffCoscaleWrite_avg\",\n \"min\": \"&buffCoscaleWrite_min\",\n \"max\": \"&buffCoscaleWrite_max\",\n \"Unit\": {\"$concat\": [\"Cycles \", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "TA", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Unit 2": true, + "metric 2": true + }, + "indexByName": { + "Unit 1": 9, + "Unit 2": 2, + "avg 1": 3, + "avg 2": 4, + "max 1": 7, + "max 2": 8, + "metric 1": 0, + "metric 2": 1, + "min 1": 5, + "min 2": 6 + }, + "renameByName": { + "avg 1": "Avg (Current)", + "avg 2": "Avg (Baseline)", + "max 1": "Max (Current)", + "max 2": "Max (Baseline)", + "min 1": "Min (Current)", + "min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 124 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 120 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 135 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 130 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 108 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 136 + } + ] + } + ] + }, + "gridPos": { + "h": 17, + "w": 12, + "x": 12, + "y": 14 + }, + "id": 134, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"tdBusy_avg\":{\"$avg\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TD_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}] }},\n \"tdBusy_min\":{\"$min\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TD_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}] }},\n \"tdBusy_max\":{\"$max\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TD_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}] }},\n\n \"tc2tdStall_avg\":{\"$avg\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TC_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n \"tc2tdStall_min\":{\"$min\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TC_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n \"tc2tdStall_max\":{\"$max\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TC_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n\n \"spi2td_stall_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [100, \"&TD_SPI_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n \"spi2td_stall_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [100, \"&TD_SPI_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n \"spi2td_stall_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [100, \"&TD_SPI_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU]}]}},\n\n \"coscaleInstr_avg\":{\"$avg\": {\"$divide\": [\"&TD_COALESCABLE_WAVEFRONT_sum\", \"&denom\"] }},\n \"coscaleInstr_min\":{\"$min\": {\"$divide\": [\"&TD_COALESCABLE_WAVEFRONT_sum\", \"&denom\"] }},\n \"coscaleInstr_max\":{\"$max\": {\"$divide\": [\"&TD_COALESCABLE_WAVEFRONT_sum\", \"&denom\"] }},\n\n \"loadInstr_avg\":{\"$avg\": {\"$divide\": [{ \"$subtract\": [{ \"$subtract\": [\"&TD_LOAD_WAVEFRONT_sum\", \"&TD_STORE_WAVEFRONT_sum\"]}, \"&TD_ATOMIC_WAVEFRONT_sum\"] }, \"&denom\" ] }},\n \"loadInstr_min\":{\"$min\": {\"$divide\": [{ \"$subtract\": [{ \"$subtract\": [\"&TD_LOAD_WAVEFRONT_sum\", \"&TD_STORE_WAVEFRONT_sum\"]}, \"&TD_ATOMIC_WAVEFRONT_sum\"] }, \"&denom\" ] }},\n \"loadInstr_max\":{\"$max\": {\"$divide\": [{ \"$subtract\": [{ \"$subtract\": [\"&TD_LOAD_WAVEFRONT_sum\", \"&TD_STORE_WAVEFRONT_sum\"]}, \"&TD_ATOMIC_WAVEFRONT_sum\"] }, \"&denom\" ] }},\n\n \"storeInstr_avg\":{\"$avg\": {\"$divide\": [\"&TD_STORE_WAVEFRONT_sum\", \"&denom\" ] }},\n \"storeInstr_min\":{\"$min\": {\"$divide\": [\"&TD_STORE_WAVEFRONT_sum\", \"&denom\" ] }},\n \"storeInstr_max\":{\"$max\": {\"$divide\": [\"&TD_STORE_WAVEFRONT_sum\", \"&denom\" ] }},\n\n \"atomicInstr_avg\":{\"$avg\": {\"$divide\": [\"&TD_ATOMIC_WAVEFRONT_sum\", \"&denom\" ]}},\n \"atomicInstr_min\":{\"$min\": {\"$divide\": [\"&TD_ATOMIC_WAVEFRONT_sum\", \"&denom\" ]}},\n \"atomicInstr_max\":{\"$max\": {\"$divide\": [\"&TD_ATOMIC_WAVEFRONT_sum\", \"&denom\" ]}}\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"TD Busy\",\n \"avg\": \"&tdBusy_avg\",\n \"min\": \"&tdBusy_min\",\n \"max\": \"&tdBusy_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"TC2TD Stall\",\n \"avg\": \"&tc2tdStall_avg\",\n \"min\": \"&tc2tdStall_min\",\n \"max\": \"&tc2tdStall_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"SPI2TD Stall\",\n \"avg\": \"&spi2td_stall_avg\",\n \"min\": \"&spi2td_stall_min\",\n \"max\": \"&spi2td_stall_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"Coalescable Instr\",\n \"avg\": \"&coscaleInstr_avg\",\n \"min\": \"&coscaleInstr_min\",\n \"max\": \"&coscaleInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Load Instr\",\n \"avg\": \"&loadInstr_avg\",\n \"min\": \"&loadInstr_min\",\n \"max\": \"&loadInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Store Instr\",\n \"avg\": \"&storeInstr_avg\",\n \"min\": \"&storeInstr_min\",\n \"max\": \"&storeInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Atomic Instr\",\n \"avg\": \"&atomicInstr_avg\",\n \"min\": \"&atomicInstr_min\",\n \"max\": \"&atomicInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Texture Addr and Data)\"}}\n }},\n {\"$addFields\": {\n \n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"tdBusy_avg\":{\"$avg\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TD_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}] }},\n \"tdBusy_min\":{\"$min\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TD_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}] }},\n \"tdBusy_max\":{\"$max\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TD_BUSY_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}] }},\n\n \"tc2tdStall_avg\":{\"$avg\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TC_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n \"tc2tdStall_min\":{\"$min\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TC_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n \"tc2tdStall_max\":{\"$max\": { \"$divide\": [ { \"$multiply\": [100, \"&TD_TC_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n\n \"spi2td_stall_avg\":{\"$avg\": {\"$divide\": [ { \"$multiply\": [100, \"&TD_SPI_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n \"spi2td_stall_min\":{\"$min\": {\"$divide\": [ { \"$multiply\": [100, \"&TD_SPI_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n \"spi2td_stall_max\":{\"$max\": {\"$divide\": [ { \"$multiply\": [100, \"&TD_SPI_STALL_sum\"] }, { \"$multiply\": [\"&GRBM_GUI_ACTIVE\", $numCU2]}]}},\n\n \"coscaleInstr_avg\":{\"$avg\": {\"$divide\": [\"&TD_COALESCABLE_WAVEFRONT_sum\", \"&denom\"] }},\n \"coscaleInstr_min\":{\"$min\": {\"$divide\": [\"&TD_COALESCABLE_WAVEFRONT_sum\", \"&denom\"] }},\n \"coscaleInstr_max\":{\"$max\": {\"$divide\": [\"&TD_COALESCABLE_WAVEFRONT_sum\", \"&denom\"] }},\n\n \"loadInstr_avg\":{\"$avg\": {\"$divide\": [{ \"$subtract\": [{ \"$subtract\": [\"&TD_LOAD_WAVEFRONT_sum\", \"&TD_STORE_WAVEFRONT_sum\"]}, \"&TD_ATOMIC_WAVEFRONT_sum\"] }, \"&denom\" ] }},\n \"loadInstr_min\":{\"$min\": {\"$divide\": [{ \"$subtract\": [{ \"$subtract\": [\"&TD_LOAD_WAVEFRONT_sum\", \"&TD_STORE_WAVEFRONT_sum\"]}, \"&TD_ATOMIC_WAVEFRONT_sum\"] }, \"&denom\" ] }},\n \"loadInstr_max\":{\"$max\": {\"$divide\": [{ \"$subtract\": [{ \"$subtract\": [\"&TD_LOAD_WAVEFRONT_sum\", \"&TD_STORE_WAVEFRONT_sum\"]}, \"&TD_ATOMIC_WAVEFRONT_sum\"] }, \"&denom\" ] }},\n\n \"storeInstr_avg\":{\"$avg\": {\"$divide\": [\"&TD_STORE_WAVEFRONT_sum\", \"&denom\" ] }},\n \"storeInstr_min\":{\"$min\": {\"$divide\": [\"&TD_STORE_WAVEFRONT_sum\", \"&denom\" ] }},\n \"storeInstr_max\":{\"$max\": {\"$divide\": [\"&TD_STORE_WAVEFRONT_sum\", \"&denom\" ] }},\n\n \"atomicInstr_avg\":{\"$avg\": {\"$divide\": [\"&TD_ATOMIC_WAVEFRONT_sum\", \"&denom\" ]}},\n \"atomicInstr_min\":{\"$min\": {\"$divide\": [\"&TD_ATOMIC_WAVEFRONT_sum\", \"&denom\" ]}},\n \"atomicInstr_max\":{\"$max\": {\"$divide\": [\"&TD_ATOMIC_WAVEFRONT_sum\", \"&denom\" ]}}\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"TD Busy\",\n \"avg\": \"&tdBusy_avg\",\n \"min\": \"&tdBusy_min\",\n \"max\": \"&tdBusy_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"TC2TD Stall\",\n \"avg\": \"&tc2tdStall_avg\",\n \"min\": \"&tc2tdStall_min\",\n \"max\": \"&tc2tdStall_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"SPI2TD Stall\",\n \"avg\": \"&spi2td_stall_avg\",\n \"min\": \"&spi2td_stall_min\",\n \"max\": \"&spi2td_stall_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"Coalescable Instr\",\n \"avg\": \"&coscaleInstr_avg\",\n \"min\": \"&coscaleInstr_min\",\n \"max\": \"&coscaleInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Load Instr\",\n \"avg\": \"&loadInstr_avg\",\n \"min\": \"&loadInstr_min\",\n \"max\": \"&loadInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Store Instr\",\n \"avg\": \"&storeInstr_avg\",\n \"min\": \"&storeInstr_min\",\n \"max\": \"&storeInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n },\n {\n \"metric\": \"Atomic Instr\",\n \"avg\": \"&atomicInstr_avg\",\n \"min\": \"&atomicInstr_min\",\n \"max\": \"&atomicInstr_max\",\n \"Unit\": {\"$concat\": [\"Instr \", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n ]);", + "type": "table" + } + ], + "title": "TD", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Unit 2": true, + "metric 2": true + }, + "indexByName": { + "Unit 1": 9, + "Unit 2": 2, + "avg 1": 3, + "avg 2": 4, + "max 1": 7, + "max 2": 8, + "metric 1": 0, + "metric 2": 1, + "min 1": 5, + "min 2": 6 + }, + "renameByName": { + "avg 1": "Avg (Current)", + "avg 2": "Avg (Baseline)", + "max 1": "Max (Current)", + "max 2": "Max (Baseline)", + "min 1": "Min (Current)", + "min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Texture Addresser and Texture Data (TA/TD)", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 112, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 50 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 13, + "w": 12, + "x": 0, + "y": 15 + }, + "id": 165, + "options": { + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "text": {} + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"bufferCoalescing_pct\": {\n \"$avg\": {\n \"$cond\": [ {\"$ne\": [\"&TCP_TOTAL_ACCESSES_sum\", 0] },\n { \"$divide\": [{\"$multiply\": [\"&TA_TOTAL_WAVEFRONTS_sum\", 64, 100]}, {\"$multiply\": [\"&TCP_TOTAL_ACCESSES_sum\", 4]}] },\n null\n ]\n }\n },\n \"cacheUtil_pct\": {\n \"$avg\": {\n \"$cond\": [ {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0] },\n { \"$divide\": [{\"$multiply\": [\"&TCP_GATE_EN2_sum\", 100]}, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }\n },\n \n \"cacheBW_pct\": {\n \"$avg\": { \"$divide\": [ {\"$multiply\":[64, \"&TCP_TOTAL_CACHE_ACCESSES_sum\"]}, \n {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]} \n ] \n }\n },\n \"cacheHit_pct\": {\n \"$avg\": {\n \"$cond\": [ {\"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0] },\n { \"$subtract\": [100, \n { \"$divide\": [ \n { \"$multiply\": [100, \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }\n ] \n }, \n \"&TCP_TOTAL_CACHE_ACCESSES_sum\"\n ]\n }] \n },\n null\n ]\n }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Buffer Coalescing\": \"&bufferCoalescing_pct\",\n \"Cache Util\": \"&cacheUtil_pct\",\n \"Cache BW\": { \"$divide\": [{ \"$multiply\": [100, \"&cacheBW_pct\"] }, { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk, 1000] }, 64] }, $numCU]}] },\n \"Cache Hit\": \"&cacheHit_pct\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Vector L1D Cache)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"bufferCoalescing_pct\": {\n \"$avg\": {\n \"$cond\": [ {\"$ne\": [\"&TCP_TOTAL_ACCESSES_sum\", 0] },\n { \"$divide\": [{\"$multiply\": [\"&TA_TOTAL_WAVEFRONTS_sum\", 64, 100]}, {\"$multiply\": [\"&TCP_TOTAL_ACCESSES_sum\", 4]}] },\n null\n ]\n }\n },\n \"cacheUtil_pct\": {\n \"$avg\": {\n \"$cond\": [ {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0] },\n { \"$divide\": [{\"$multiply\": [\"&TCP_GATE_EN2_sum\", 100]}, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }\n },\n \"cacheBW_pct\": {\n \"$avg\": { \"$divide\": [ {\"$multiply\":[64, \"&TCP_TOTAL_CACHE_ACCESSES_sum\"]}, \n {\"$subtract\":[\"&EndNs\", \"&BeginNs\"]} \n ] \n }\n },\n \"cacheHit_pct\": {\n \"$avg\": {\n \"$cond\": [ {\"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0] },\n { \"$subtract\": [100, \n { \"$divide\": [ \n { \"$multiply\": [100, \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }\n ] \n }, \n \"&TCP_TOTAL_CACHE_ACCESSES_sum\"\n ]\n }] \n },\n null\n ]\n }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Buffer Coalescing\": \"&bufferCoalescing_pct\",\n \"Cache Util\": \"&cacheUtil_pct\",\n \"Cache BW\": { \"$divide\": [{ \"$multiply\": [100, \"&cacheBW_pct\"] }, { \"$multiply\": [ { \"$multiply\": [{ \"$divide\": [$sclk2, 1000] }, 64] }, $numCU2]}] },\n \"Cache Hit\": \"&cacheHit_pct\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Speed-of-Light: Vector L1D Cache", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "128B Read Combining 1": 6, + "128B Read Combining 2": 7, + "Buffer Coalescing 1": 0, + "Buffer Coalescing 2": 1, + "Cache BW 1": 2, + "Cache BW 2": 3, + "Cache Hit 1": 4, + "Cache Hit 2": 5 + }, + "renameByName": { + "128B Read Combining 1": "128B Read Combining (Current)", + "128B Read Combining 2": "128B Read Combining(Baseline)", + "Buffer Coalescing 1": "Buf Coalescing (Current)", + "Buffer Coalescing 2": "Buf Coalescing (Baseline)", + "Cache BW 1": "Cache BW (Current)", + "Cache BW 2": "Cache BW (Baseline)", + "Cache Hit 1": "Cache Hit (Current)", + "Cache Hit 2": "Cache Hit (Baseline)", + "Cache Util 1": "Cache Util (Current)", + "Cache Util 2": "Cache Util (Baseline)" + } + } + } + ], + "transparent": true, + "type": "bargauge" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "color-background" + }, + "decimals": 1, + "mappings": [], + "max": 100, + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "transparent" + }, + { + "color": "#EAB839", + "value": 50 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 52 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 199 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 121 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 144 + } + ] + } + ] + }, + "gridPos": { + "h": 13, + "w": 12, + "x": 12, + "y": 15 + }, + "id": 116, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n\n \"l2Pending_avg\": {\"$avg\": {\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_PENDING_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"l2Pending_min\": {\"$min\": {\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_PENDING_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"l2Pending_max\": {\"$max\": {\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_PENDING_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n\n\n \"tcr2tcp_Stall_avg\":{\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_TCR_TCP_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"tcr2tcp_Stall_min\":{\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_TCR_TCP_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"tcr2tcp_Stall_max\":{\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_TCR_TCP_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \n \"readTagRam_Stall_avg\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_READ_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"]},\n null\n ]\n }},\n \"readTagRam_Stall_min\": {\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_READ_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"]},\n null\n ]\n }},\n \"readTagRam_Stall_max\": {\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_READ_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"]},\n null\n ]\n }},\n \n \"writeTagRam_Stall_avg\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"writeTagRam_Stall_min\": {\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"writeTagRam_Stall_max\": {\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \n \n \"atomicTagRam_Stall_avg\":{\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }}, \n \"atomicTagRam_Stall_min\":{\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }}, \n \"atomicTagRam_Stall_max\":{\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }} \n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Stalled on L2 Data\",\n \"Mean\": \"&l2Pending_avg\",\n \"Min\": \"&l2Pending_min\",\n \"Max\": \"&l2Pending_max\",\n \"unit\":\"pct\"\n },\n {\n \"Metric\": \"Stalled on L2 Req\",\n \"Mean\": \"&tcr2tcp_Stall_avg\",\n \"Min\":\"&tcr2tcp_Stall_min\",\n \"Max\":\"&tcr2tcp_Stall_max\",\n \"unit\":\"pct\"\n },\n {\n \"Metric\": \"Tag RAM Stall (Read)\",\n \"Mean\": \"&readTagRam_Stall_avg\",\n \"Min\": \"&readTagRam_Stall_min\",\n \"Max\": \"&readTagRam_Stall_max\",\n \"unit\":\"pct\"\n },\n {\n \"Metric\": \"Tag RAM Stall (Write)\",\n \"Mean\": \"&writeTagRam_Stall_avg\",\n \"Min\": \"&writeTagRam_Stall_min\",\n \"Max\": \"&writeTagRam_Stall_max\",\n \"unit\":\"pct\"\n },\n {\n \"Metric\": \"Tag RAM Stall (Atomic)\",\n \"Mean\": \"&atomicTagRam_Stall_avg\",\n \"Min\": \"&atomicTagRam_Stall_min\",\n \"Max\": \"&atomicTagRam_Stall_max\",\n \"unit\":\"pct\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Vector L1D Cache)\"}}\n }},\n {\"$group\": {\n \"_id\": null,\n\n \"l2Pending_avg\": {\"$avg\": {\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_PENDING_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"l2Pending_min\": {\"$min\": {\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_PENDING_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"l2Pending_max\": {\"$max\": {\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_PENDING_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n\n \"tcr2tcp_Stall_avg\":{\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_TCR_TCP_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"tcr2tcp_Stall_min\":{\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_TCR_TCP_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"tcr2tcp_Stall_max\":{\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_TCR_TCP_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \n \"readTagRam_Stall_avg\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_READ_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"]},\n null\n ]\n }},\n \"readTagRam_Stall_min\": {\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_READ_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"]},\n null\n ]\n }},\n \"readTagRam_Stall_max\": {\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_READ_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"]},\n null\n ]\n }},\n \n \"writeTagRam_Stall_avg\": {\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"writeTagRam_Stall_min\": {\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \"writeTagRam_Stall_max\": {\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }},\n \n \n \"atomicTagRam_Stall_avg\":{\"$avg\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }}, \n \"atomicTagRam_Stall_min\":{\"$min\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }}, \n \"atomicTagRam_Stall_max\":{\"$max\":{\n \"$cond\":[\n {\"$ne\": [\"&TCP_GATE_EN1_sum\", 0]}, \n {\"$divide\": [ { \"$multiply\": [100, \"&TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum\"] }, \"&TCP_GATE_EN1_sum\"] },\n null\n ]\n }} \n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Stalled on L2 Data\",\n \"Mean\": \"&l2Pending_avg\",\n \"Min\": \"&l2Pending_min\",\n \"Max\": \"&l2Pending_max\",\n \"unit\":\"pct\"\n },\n {\n \"Metric\": \"Stalled on L2 Req\",\n \"Mean\": \"&tcr2tcp_Stall_avg\",\n \"Min\":\"&tcr2tcp_Stall_min\",\n \"Max\":\"&tcr2tcp_Stall_max\",\n \"unit\":\"pct\"\n },\n\n {\n \"Metric\": \"Tag RAM Stall (Read)\",\n \"Mean\": \"&readTagRam_Stall_avg\",\n \"Min\": \"&readTagRam_Stall_min\",\n \"Max\": \"&readTagRam_Stall_max\",\n \"unit\":\"pct\"\n },\n {\n \"Metric\": \"Tag RAM Stall (Write)\",\n \"Mean\": \"&writeTagRam_Stall_avg\",\n \"Min\": \"&writeTagRam_Stall_min\",\n \"Max\": \"&writeTagRam_Stall_max\",\n \"unit\":\"pct\"\n },\n {\n \"Metric\": \"Tag RAM Stall (Atomic)\",\n \"Mean\": \"&atomicTagRam_Stall_avg\",\n \"Min\": \"&atomicTagRam_Stall_min\",\n \"Max\": \"&atomicTagRam_Stall_max\",\n \"unit\":\"pct\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Vector L1D Cache Stalls", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Units 2": true, + "unit 2": true + }, + "indexByName": { + "Max 1": 6, + "Max 2": 7, + "Mean 1": 2, + "Mean 2": 3, + "Metric 1": 0, + "Metric 2": 1, + "Min 1": 4, + "Min 2": 5, + "unit 1": 9, + "unit 2": 8 + }, + "renameByName": { + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Mean 1": "Avg (Current)", + "Mean 2": "Avg (Baseline)", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)", + "unit 1": "Unit" + } + } + } + ], + "type": "table" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 116 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 78 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 139 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 50 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "max" + }, + "properties": [ + { + "id": "custom.width", + "value": 148 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 127 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 111 + } + ] + } + ] + }, + "gridPos": { + "h": 18, + "w": 12, + "x": 0, + "y": 28 + }, + "id": 128, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n\n \"totalReq_avg\":{\"$avg\": { \"$divide\": [ \"&TCP_TOTAL_ACCESSES_sum\", \"&denom\" ] }},\n \"totalReq_min\":{\"$min\": { \"$divide\": [ \"&TCP_TOTAL_ACCESSES_sum\", \"&denom\" ] }},\n \"totalReq_max\":{\"$max\": { \"$divide\": [ \"&TCP_TOTAL_ACCESSES_sum\", \"&denom\" ] }},\n\n \"readReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TOTAL_READ_sum\", \"&denom\" ] }},\n \"readReq_min\":{\"$min\": {\"$divide\": [ \"&TCP_TOTAL_READ_sum\", \"&denom\" ] }},\n \"readReq_max\":{\"$max\": {\"$divide\": [ \"&TCP_TOTAL_READ_sum\", \"&denom\" ] }},\n\n \"writeReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TOTAL_WRITE_sum\", \"&denom\" ]}},\n \"writeReq_min\":{\"$min\": {\"$divide\": [ \"&TCP_TOTAL_WRITE_sum\", \"&denom\" ]}},\n \"writeReq_max\":{\"$max\": {\"$divide\": [ \"&TCP_TOTAL_WRITE_sum\", \"&denom\" ]}},\n\n \"atomicReq_avg\":{\"$avg\": {\"$divide\": [ { \"$add\": [\"&TCP_TOTAL_ATOMIC_WITH_RET_sum\", \"&TCP_TOTAL_ATOMIC_WITHOUT_RET_sum\"] }, \"&denom\"]}},\n \"atomicReq_min\":{\"$min\": {\"$divide\": [ { \"$add\": [\"&TCP_TOTAL_ATOMIC_WITH_RET_sum\", \"&TCP_TOTAL_ATOMIC_WITHOUT_RET_sum\"] }, \"&denom\"]}},\n \"atomicReq_max\":{\"$max\": {\"$divide\": [ { \"$add\": [\"&TCP_TOTAL_ATOMIC_WITH_RET_sum\", \"&TCP_TOTAL_ATOMIC_WITHOUT_RET_sum\"] }, \"&denom\"]}},\n\n \"cacheBW_avg\":{\"$avg\": { \"$divide\": [{ \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64 ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }},\n \"cacheBW_min\":{\"$min\": { \"$divide\": [{ \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64 ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }},\n \"cacheBW_max\":{\"$max\": { \"$divide\": [{ \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64 ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }},\n \n \"cacheAccess_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \"&denom\"]}},\n \"cacheAccess_min\":{\"$min\": {\"$divide\": [ \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \"&denom\"]}},\n \"cacheAccess_max\":{\"$max\": {\"$divide\": [ \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \"&denom\"]}},\n\n \"cacheHits_avg\":{\"$avg\": {\"$divide\": [ \n { \"$subtract\": [\n \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}\n ]}, \n \"&denom\"\n ]}\n },\n \"cacheHits_min\":{\"$min\": {\"$divide\": [ \n { \"$subtract\": [\n \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}\n ]}, \n \"&denom\"\n ]}\n },\n \"cacheHits_max\":{\"$max\": {\"$divide\": [ \n { \"$subtract\": [\n \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}\n ]}, \n \"&denom\"\n ]}\n },\n \n \"cacheHitRate_avg\":{\"$avg\": {\n \"$cond\": [{\"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0]}, \n {\"$subtract\": [100, \n { \"$divide\": [ \n { \"$multiply\": [100, \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }\n ] \n }, \n \"&TCP_TOTAL_CACHE_ACCESSES_sum\"\n ]}\n ]},\n null\n ]\n }},\n \"cacheHitRate_min\":{\"$min\": {\n \"$cond\": [{\"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0]}, \n {\"$subtract\": [100, \n { \"$divide\": [ \n { \"$multiply\": [100, \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }\n ] \n }, \n \"&TCP_TOTAL_CACHE_ACCESSES_sum\"\n ]}\n ]},\n null\n ]\n }},\n \"cacheHitRate_max\":{\"$max\": {\n \"$cond\": [{\"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0]}, \n {\"$subtract\": [100, \n { \"$divide\": [ \n { \"$multiply\": [100, \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }\n ] \n }, \n \"&TCP_TOTAL_CACHE_ACCESSES_sum\"\n ]}\n ]},\n null\n ]\n }},\n \n \"l2_l1_read_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TCC_READ_REQ_sum\", \"&denom\"]}},\n \"l2_l1_read_min\":{\"$min\": {\"$divide\": [ \"&TCP_TCC_READ_REQ_sum\", \"&denom\"]}},\n \"l2_l1_read_max\":{\"$max\": {\"$divide\": [ \"&TCP_TCC_READ_REQ_sum\", \"&denom\"]}},\n\n \"l2_l1_write_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_sum\", \"&denom\"] }},\n \"l2_l1_write_min\":{\"$min\": {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_sum\", \"&denom\"] }},\n \"l2_l1_write_max\":{\"$max\": {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_sum\", \"&denom\"] }},\n\n\n \"l2_l1_atomic_avg\":{\"$avg\": {\"$divide\": [ { \"$add\": [\"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, \"&denom\"] }},\n \"l2_l1_atomic_min\":{\"$min\": {\"$divide\": [ { \"$add\": [\"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, \"&denom\"] }},\n \"l2_l1_atomic_max\":{\"$max\": {\"$divide\": [ { \"$add\": [\"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, \"&denom\"] }},\n\n \"l2_l1_bw_avg\":{\"$avg\": {\"$divide\": [{\"$multiply\": [64, {\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] } ]}, \"&denom\" ]}},\n \"l2_l1_bw_min\":{\"$min\": {\"$divide\": [{\"$multiply\": [64, {\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] } ]}, \"&denom\" ]}},\n \"l2_l1_bw_max\":{\"$max\": {\"$divide\": [{\"$multiply\": [64, {\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] } ]}, \"&denom\" ]}},\n\n \"invalidate_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TOTAL_WRITEBACK_INVALIDATES_sum\", \"&denom\"] }},\n \"invalidate_min\":{\"$min\": {\"$divide\": [ \"&TCP_TOTAL_WRITEBACK_INVALIDATES_sum\", \"&denom\"] }},\n \"invalidate_max\":{\"$max\": {\"$divide\": [ \"&TCP_TOTAL_WRITEBACK_INVALIDATES_sum\", \"&denom\"] }},\n\n\n \"l1Latency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_TA_TCP_STATE_READ_sum\", 0]},\n {\"$divide\": [ \"&TCP_TCP_LATENCY_sum\", \"&TCP_TA_TCP_STATE_READ_sum\" ]},\n null\n ] \n }},\n \"l1Latency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_TA_TCP_STATE_READ_sum\", 0]},\n {\"$divide\": [ \"&TCP_TCP_LATENCY_sum\", \"&TCP_TA_TCP_STATE_READ_sum\" ]},\n null\n ] \n }},\n \"l1Latency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_TA_TCP_STATE_READ_sum\", 0]},\n {\"$divide\": [ \"&TCP_TCP_LATENCY_sum\", \"&TCP_TA_TCP_STATE_READ_sum\" ]},\n null\n ] \n }},\n\n\n \"l2ReadLatency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_READ_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"] }]},\n null\n ] \n }},\n \"l2ReadLatency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_READ_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"] }]},\n null\n ] \n }},\n \"l2ReadLatency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_READ_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"] }]},\n null\n ] \n }},\n\n \"l2WriteLatency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }]},\n null\n ]\n }},\n \"l2WriteLatency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }]},\n null\n ]\n }},\n \"l2WriteLatency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }]},\n null\n ]\n }}\n\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"Total Req\",\n \"avg\": \"&totalReq_avg\",\n \"min\": \"&totalReq_min\",\n \"max\": \"&totalReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Read Req\",\n \"avg\": \"&readReq_avg\",\n \"min\": \"&readReq_min\",\n \"max\": \"&readReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Write Req\",\n \"avg\": \"&writeReq_avg\",\n \"min\": \"&writeReq_min\",\n \"max\": \"&writeReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Atomic Req\",\n \"avg\": \"&l2_l1_atomic_avg\",\n \"min\": \"&l2_l1_atomic_min\",\n \"max\": \"&l2_l1_atomic_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Cache BW\",\n \"avg\": \"&cacheBW_avg\",\n \"min\": \"&cacheBW_min\",\n \"max\": \"&cacheBW_max\",\n \"Unit\": \"GB/s\"\n },\n {\n \"metric\": \"Cache Accesses\",\n \"avg\": \"&cacheAccess_avg\",\n \"min\": \"&cacheAccess_min\",\n \"max\": \"&cacheAccess_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Cache Hits\",\n \"avg\": \"&cacheHits_avg\",\n \"min\": \"&cacheHits_min\",\n \"max\": \"&cacheHits_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Cache Hit Rate\",\n \"avg\": \"&cacheHitRate_avg\",\n \"min\": \"&cacheHitRate_min\",\n \"max\": \"&cacheHitRate_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"Invalidate\",\n \"avg\": \"&invalidate_avg\",\n \"min\": \"&invalidate_min\",\n \"max\": \"&invalidate_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n },\n {\n \"metric\": \"L1-L2 BW\",\n \"avg\": \"&l2_l1_bw_avg\",\n \"min\": \"&l2_l1_bw_avg\",\n \"max\": \"&l2_l1_bw_avg\",\n \"Unit\": {\"$concat\": [\"Bytes \", $normUnit]}\n },\n {\n \"metric\": \"L1-L2 Read\",\n \"avg\": \"&l2_l1_read_avg\",\n \"min\": \"&l2_l1_read_min\",\n \"max\": \"&l2_l1_read_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"L1-L2 Write\",\n \"avg\": \"&l2_l1_write_avg\",\n \"min\": \"&l2_l1_write_min\",\n \"max\": \"&l2_l1_write_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"L1-L2 Atomic\",\n \"avg\": \"&l2_l1_atomic_avg\",\n \"min\": \"&l2_l1_atomic_min\",\n \"max\": \"&l2_l1_atomic_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"L1 Access Latency\",\n \"avg\": \"&l1Latency_avg\",\n \"min\": \"&l1Latency_min\",\n \"max\": \"&l1Latency_max\",\n \"Unit\": \"Cycles\"\n },\n {\n \"metric\": \"L1-L2 Read Latency\",\n \"avg\": \"&l2ReadLatency_avg\",\n \"min\": \"&l2ReadLatency_min\",\n \"max\": \"&l2ReadLatency_max\",\n \"Unit\": \"Cycles\"\n },\n {\n \"metric\": \"L1-L2 Write Latency\",\n \"avg\": \"&l2WriteLatency_avg\",\n \"min\": \"&l2WriteLatency_min\",\n \"max\": \"&l2WriteLatency_max\",\n \"Unit\": \"Cycles\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Vector L1D Cache)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n\n \"totalReq_avg\":{\"$avg\": { \"$divide\": [ \"&TCP_TOTAL_ACCESSES_sum\", \"&denom\" ] }},\n \"totalReq_min\":{\"$min\": { \"$divide\": [ \"&TCP_TOTAL_ACCESSES_sum\", \"&denom\" ] }},\n \"totalReq_max\":{\"$max\": { \"$divide\": [ \"&TCP_TOTAL_ACCESSES_sum\", \"&denom\" ] }},\n\n \"readReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TOTAL_READ_sum\", \"&denom\" ] }},\n \"readReq_min\":{\"$min\": {\"$divide\": [ \"&TCP_TOTAL_READ_sum\", \"&denom\" ] }},\n \"readReq_max\":{\"$max\": {\"$divide\": [ \"&TCP_TOTAL_READ_sum\", \"&denom\" ] }},\n\n \"writeReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TOTAL_WRITE_sum\", \"&denom\" ]}},\n \"writeReq_min\":{\"$min\": {\"$divide\": [ \"&TCP_TOTAL_WRITE_sum\", \"&denom\" ]}},\n \"writeReq_max\":{\"$max\": {\"$divide\": [ \"&TCP_TOTAL_WRITE_sum\", \"&denom\" ]}},\n\n \"atomicReq_avg\":{\"$avg\": {\"$divide\": [ { \"$add\": [\"&TCP_TOTAL_ATOMIC_WITH_RET_sum\", \"&TCP_TOTAL_ATOMIC_WITHOUT_RET_sum\"] }, \"&denom\"]}},\n \"atomicReq_min\":{\"$min\": {\"$divide\": [ { \"$add\": [\"&TCP_TOTAL_ATOMIC_WITH_RET_sum\", \"&TCP_TOTAL_ATOMIC_WITHOUT_RET_sum\"] }, \"&denom\"]}},\n \"atomicReq_max\":{\"$max\": {\"$divide\": [ { \"$add\": [\"&TCP_TOTAL_ATOMIC_WITH_RET_sum\", \"&TCP_TOTAL_ATOMIC_WITHOUT_RET_sum\"] }, \"&denom\"]}},\n\n \"cacheBW_avg\":{\"$avg\": { \"$divide\": [{ \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64 ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }},\n \"cacheBW_min\":{\"$min\": { \"$divide\": [{ \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64 ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }},\n \"cacheBW_max\":{\"$max\": { \"$divide\": [{ \"$multiply\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 64 ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }},\n \n \"cacheAccess_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \"&denom\"]}},\n \"cacheAccess_min\":{\"$min\": {\"$divide\": [ \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \"&denom\"]}},\n \"cacheAccess_max\":{\"$max\": {\"$divide\": [ \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \"&denom\"]}},\n\n \"cacheHits_avg\":{\"$avg\": {\"$divide\": [ \n { \"$subtract\": [\n \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}\n ]}, \n \"&denom\"\n ]}\n },\n \"cacheHits_min\":{\"$min\": {\"$divide\": [ \n { \"$subtract\": [\n \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}\n ]}, \n \"&denom\"\n ]}\n },\n \"cacheHits_max\":{\"$max\": {\"$divide\": [ \n { \"$subtract\": [\n \"&TCP_TOTAL_CACHE_ACCESSES_sum\", \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}\n ]}, \n \"&denom\"\n ]}\n },\n \n \"cacheHitRate_avg\":{\"$avg\": {\n \"$cond\": [{\"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0]}, \n {\"$subtract\": [100, \n { \"$divide\": [ \n { \"$multiply\": [100, \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }\n ] \n }, \n \"&TCP_TOTAL_CACHE_ACCESSES_sum\"\n ]}\n ]},\n null\n ]\n }},\n \"cacheHitRate_min\":{\"$min\": {\n \"$cond\": [{\"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0]}, \n {\"$subtract\": [100, \n { \"$divide\": [ \n { \"$multiply\": [100, \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }\n ] \n }, \n \"&TCP_TOTAL_CACHE_ACCESSES_sum\"\n ]}\n ]},\n null\n ]\n }},\n \"cacheHitRate_max\":{\"$max\": {\n \"$cond\": [{\"$ne\": [\"&TCP_TOTAL_CACHE_ACCESSES_sum\", 0]}, \n {\"$subtract\": [100, \n { \"$divide\": [ \n { \"$multiply\": [100, \n { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }\n ] \n }, \n \"&TCP_TOTAL_CACHE_ACCESSES_sum\"\n ]}\n ]},\n null\n ]\n }},\n\n \"l2_l1_read_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TCC_READ_REQ_sum\", \"&denom\"]}},\n \"l2_l1_read_min\":{\"$min\": {\"$divide\": [ \"&TCP_TCC_READ_REQ_sum\", \"&denom\"]}},\n \"l2_l1_read_max\":{\"$max\": {\"$divide\": [ \"&TCP_TCC_READ_REQ_sum\", \"&denom\"]}},\n\n \"l2_l1_write_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_sum\", \"&denom\"] }},\n \"l2_l1_write_min\":{\"$min\": {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_sum\", \"&denom\"] }},\n \"l2_l1_write_max\":{\"$max\": {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_sum\", \"&denom\"] }},\n\n\n \"l2_l1_atomic_avg\":{\"$avg\": {\"$divide\": [ { \"$add\": [\"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, \"&denom\"] }},\n \"l2_l1_atomic_min\":{\"$min\": {\"$divide\": [ { \"$add\": [\"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, \"&denom\"] }},\n \"l2_l1_atomic_max\":{\"$max\": {\"$divide\": [ { \"$add\": [\"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }, \"&denom\"] }},\n\n \"l2_l1_bw_avg\":{\"$avg\": {\"$divide\": [{\"$multiply\": [64, {\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] } ]}, \"&denom\" ]}},\n \"l2_l1_bw_min\":{\"$min\": {\"$divide\": [{\"$multiply\": [64, {\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] } ]}, \"&denom\" ]}},\n \"l2_l1_bw_max\":{\"$max\": {\"$divide\": [{\"$multiply\": [64, {\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] } ]}, \"&denom\" ]}},\n\n \"invalidate_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TOTAL_WRITEBACK_INVALIDATES_sum\", \"&denom\"] }},\n \"invalidate_min\":{\"$min\": {\"$divide\": [ \"&TCP_TOTAL_WRITEBACK_INVALIDATES_sum\", \"&denom\"] }},\n \"invalidate_max\":{\"$max\": {\"$divide\": [ \"&TCP_TOTAL_WRITEBACK_INVALIDATES_sum\", \"&denom\"] }},\n\n\n \"l1Latency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_TA_TCP_STATE_READ_sum\", 0]},\n {\"$divide\": [ \"&TCP_TCP_LATENCY_sum\", \"&TCP_TA_TCP_STATE_READ_sum\" ]},\n null\n ] \n }},\n \"l1Latency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_TA_TCP_STATE_READ_sum\", 0]},\n {\"$divide\": [ \"&TCP_TCP_LATENCY_sum\", \"&TCP_TA_TCP_STATE_READ_sum\" ]},\n null\n ] \n }},\n \"l1Latency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_TA_TCP_STATE_READ_sum\", 0]},\n {\"$divide\": [ \"&TCP_TCP_LATENCY_sum\", \"&TCP_TA_TCP_STATE_READ_sum\" ]},\n null\n ] \n }},\n\n\n \"l2ReadLatency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_READ_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"] }]},\n null\n ] \n }},\n \"l2ReadLatency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_READ_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"] }]},\n null\n ] \n }},\n \"l2ReadLatency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_READ_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_READ_REQ_sum\", \"&TCP_TCC_ATOMIC_WITH_RET_REQ_sum\"] }]},\n null\n ] \n }},\n\n \"l2WriteLatency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }]},\n null\n ]\n }},\n \"l2WriteLatency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }]},\n null\n ]\n }},\n \"l2WriteLatency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [{\"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"]}, 0]},\n {\"$divide\": [ \"&TCP_TCC_WRITE_REQ_LATENCY_sum\", { \"$add\": [\"&TCP_TCC_WRITE_REQ_sum\", \"&TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum\"] }]},\n null\n ]\n }}\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"Total Req\",\n \"avg\": \"&totalReq_avg\",\n \"min\": \"&totalReq_min\",\n \"max\": \"&totalReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Read Req\",\n \"avg\": \"&readReq_avg\",\n \"min\": \"&readReq_min\",\n \"max\": \"&readReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Write Req\",\n \"avg\": \"&writeReq_avg\",\n \"min\": \"&writeReq_min\",\n \"max\": \"&writeReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Atomic Req\",\n \"avg\": \"&atomicReq_avg\",\n \"min\": \"&atomicReq_min\",\n \"max\": \"&atomicReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Cache BW\",\n \"avg\": \"&cacheBW_avg\",\n \"min\": \"&cacheBW_min\",\n \"max\": \"&cacheBW_max\",\n \"Unit\": \"GB/s\"\n },\n {\n \"metric\": \"Cache Accesses\",\n \"avg\": \"&cacheAccess_avg\",\n \"min\": \"&cacheAccess_min\",\n \"max\": \"&cacheAccess_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Cache Hits\",\n \"avg\": \"&cacheHits_avg\",\n \"min\": \"&cacheHits_min\",\n \"max\": \"&cacheHits_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Cache Hit Rate\",\n \"avg\": \"&cacheHitRate_avg\",\n \"min\": \"&cacheHitRate_min\",\n \"max\": \"&cacheHitRate_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"Invalidate\",\n \"avg\": \"&invalidate_avg\",\n \"min\": \"&invalidate_min\",\n \"max\": \"&invalidate_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n },\n {\n \"metric\": \"L1-L2 BW\",\n \"avg\": \"&l2_l1_bw_avg\",\n \"min\": \"&l2_l1_bw_avg\",\n \"max\": \"&l2_l1_bw_avg\",\n \"Unit\": {\"$concat\": [\"Bytes \", $normUnit]}\n },\n {\n \"metric\": \"L1-L2 Read\",\n \"avg\": \"&l2_l1_read_avg\",\n \"min\": \"&l2_l1_read_min\",\n \"max\": \"&l2_l1_read_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"L1-L2 Write\",\n \"avg\": \"&l2_l1_write_avg\",\n \"min\": \"&l2_l1_write_min\",\n \"max\": \"&l2_l1_write_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"L1-L2 Atomic\",\n \"avg\": \"&l2_l1_atomic_avg\",\n \"min\": \"&l2_l1_atomic_min\",\n \"max\": \"&l2_l1_atomic_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"L1 Access Latency\",\n \"avg\": \"&l1Latency_avg\",\n \"min\": \"&l1Latency_min\",\n \"max\": \"&l1Latency_max\",\n \"Unit\": \"Cycles\"\n },\n {\n \"metric\": \"L1-L2 Read Latency\",\n \"avg\": \"&l2ReadLatency_avg\",\n \"min\": \"&l2ReadLatency_min\",\n \"max\": \"&l2ReadLatency_max\",\n \"Unit\": \"Cycles\"\n },\n {\n \"metric\": \"L1-L2 Write Latency\",\n \"avg\": \"&l2WriteLatency_avg\",\n \"min\": \"&l2WriteLatency_min\",\n \"max\": \"&l2WriteLatency_max\",\n \"Unit\": \"Cycles\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Vector L1D Cache Accesses", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Unit 2": true, + "metric 2": true + }, + "indexByName": { + "Unit 1": 9, + "Unit 2": 8, + "avg 1": 1, + "avg 2": 2, + "max 1": 5, + "max 2": 6, + "metric 1": 0, + "metric 2": 7, + "min 1": 3, + "min 2": 4 + }, + "renameByName": { + "avg 1": "Avg (Current)", + "avg 2": "Avg (Baseline)", + "max 1": "Max (Current)", + "max 2": "Max (Baseline)", + "min 1": "Min (Current)", + "min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + }, + { + "Aggregate": "last", + "BarPadding": 30, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupColName": "Coherency", + "GroupCols": 2, + "GroupGap": 5, + "GroupLabelColor": "#FF9830", + "GroupLabelFontSize": "100%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 0, + "Horizontal": true, + "LabelColName": "Xfer", + "LabelColor": "#ffffff", + "LabelFontSize": "100%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 0, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#FADE2A", + "ValueDecimals": 0, + "ValueFontSize": "100%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:172", + "Col": 2, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "Mean", + "Selected": true + } + ], + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 28 + }, + "id": 120, + "pluginVersion": "8.2.1", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "tlh8EwUnk" + }, + "rawQuery": true, + "refId": "A", + "target": "$Workload1.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n\n {\"$group\": {\n \"_id\": null,\n\n \"readNC_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_NC_READ_REQ_sum\", \"&denom\"] }\n },\n \"readNC_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_NC_READ_REQ_sum\", \"&denom\"] }\n },\n \"readNC_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_NC_READ_REQ_sum\", \"&denom\"] }\n },\n \"readUC_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_UC_READ_REQ_sum\", \"&denom\"] }\n },\n \"readUC_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_UC_READ_REQ_sum\", \"&denom\"] }\n },\n \"readUC_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_UC_READ_REQ_sum\", \"&denom\"] }\n },\n \"readCC_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_CC_READ_REQ_sum\", \"&denom\"] }\n },\n \"readCC_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_CC_READ_REQ_sum\", \"&denom\"] }\n },\n \"readCC_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_CC_READ_REQ_sum\", \"&denom\"] }\n },\n \"readRW_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_RW_READ_REQ_sum\", \"&denom\"] }\n },\n \"readRW_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_RW_READ_REQ_sum\", \"&denom\"] }\n },\n \"readRW_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_RW_READ_REQ_sum\", \"&denom\"] }\n },\n \n \"writeNC_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_NC_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeNC_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_NC_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeNC_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_NC_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeUC_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_UC_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeUC_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_UC_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeUC_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_UC_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeCC_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_CC_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeCC_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_CC_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeCC_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_CC_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeRW_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_RW_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeRW_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_RW_WRITE_REQ_sum\", \"&denom\"] }\n },\n \"writeRW_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_RW_WRITE_REQ_sum\", \"&denom\"] }\n },\n \n \"atomicNC_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_NC_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicNC_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_NC_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicNC_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_NC_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicUC_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_UC_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicUC_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_UC_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicUC_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_UC_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicCC_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_CC_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicCC_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_CC_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicCC_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_CC_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicRW_avg\": {\n \"$avg\": { \"$divide\": [\"&TCP_TCC_RW_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicRW_min\": {\n \"$min\": { \"$divide\": [\"&TCP_TCC_RW_ATOMIC_REQ_sum\", \"&denom\"] }\n },\n \"atomicRW_max\": {\n \"$max\": { \"$divide\": [\"&TCP_TCC_RW_ATOMIC_REQ_sum\", \"&denom\"] }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Xfer\": \"Read\",\n \"Coherency\": \"NC\",\n \"Avg\": \"&readNC_avg\",\n \"Min\": \"&readNC_min\",\n \"Max\": \"&readNC_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Xfer\": \"Read\",\n \"Coherency\": \"UC\",\n \"Avg\": \"&readUC_avg\",\n \"Min\": \"&readUC_min\",\n \"Max\": \"&readUC_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Xfer\": \"Read\",\n \"Coherency\": \"CC\",\n \"Avg\": \"&readCC_avg\",\n \"Min\": \"&readCC_min\",\n \"Max\": \"&readCC_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Xfer\": \"Read\",\n \"Coherency\": \"RW\",\n \"Avg\": \"&readRW_avg\",\n \"Min\": \"&readRW_min\",\n \"Max\": \"&readRW_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Xfer\": \"Write\",\n \"Coherency\": \"RW\",\n \"Avg\": \"&writeRW_avg\",\n \"Min\": \"&writeRW_min\",\n \"Max\": \"&writeRW_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Xfer\": \"Write\",\n \"Coherency\": \"NC\",\n \"Avg\": \"&writeNC_avg\",\n \"Min\": \"&writeNC_min\",\n \"Max\": \"&writeNC_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Xfer\": \"Write\",\n \"Coherency\": \"UC\",\n \"Avg\": \"&writeUC_avg\",\n \"Min\": \"&writeUC_min\",\n \"Max\": \"&writeUC_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Xfer\": \"Write\",\n \"Coherency\": \"CC\",\n \"Avg\": \"&writeCC_avg\",\n \"Min\": \"&writeCC_min\",\n \"Max\": \"&writeCC_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n\n {\n \"Xfer\": \"Atomic\",\n \"Coherency\": \"NC\",\n \"Avg\": \"&atomicNC_avg\",\n \"Min\": \"&atomicNC_min\",\n \"Max\": \"&atomicNC_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Xfer\": \"Atomic\",\n \"Coherency\": \"UC\",\n \"Avg\": \"&atomicUC_avg\",\n \"Min\": \"&atomicUC_min\",\n \"Max\": \"&atomicUC_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Xfer\": \"Atomic\",\n \"Coherency\": \"CC\",\n \"Avg\": \"&atomicCC_avg\",\n \"Min\": \"&atomicCC_min\",\n \"Max\": \"&atomicCC_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Xfer\": \"Atomic\",\n \"Coherency\": \"RW\",\n \"Avg\": \"&atomicRW_avg\",\n \"Min\": \"&atomicRW_min\",\n \"Max\": \"&atomicRW_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Vector L1D - L2 Transactions Req $normUnit", + "transparent": true, + "type": "michaeldmoore-multistat-panel" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Units" + }, + "properties": [ + { + "id": "custom.width", + "value": 75 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 36 + }, + "id": 124, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"req_avg\":{\"$avg\": { \"$divide\": [\"&TCP_UTCL1_REQUEST_sum\" ,\"&denom\"] }},\n \"req_min\":{\"$min\": { \"$divide\": [\"&TCP_UTCL1_REQUEST_sum\" ,\"&denom\"] }},\n \"req_max\":{\"$max\": { \"$divide\": [\"&TCP_UTCL1_REQUEST_sum\" ,\"&denom\"] }},\n\n\n \"hitRatio_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_UTCL1_REQUEST_sum\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&TCP_UTCL1_TRANSLATION_HIT_sum\"] },\"&TCP_UTCL1_REQUEST_sum\"]},\n null\n ]\n }},\n \"hitRatio_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_UTCL1_REQUEST_sum\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&TCP_UTCL1_TRANSLATION_HIT_sum\"] },\"&TCP_UTCL1_REQUEST_sum\"]},\n null\n ]\n }},\n \"hitRatio_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_UTCL1_REQUEST_sum\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&TCP_UTCL1_TRANSLATION_HIT_sum\"] },\"&TCP_UTCL1_REQUEST_sum\"]},\n null\n ]\n }},\n\n \"hits_avg\":{\"$avg\": { \"$divide\": [\"&TCP_UTCL1_TRANSLATION_HIT_sum\" ,\"&denom\"] }},\n \"hits_min\":{\"$min\": { \"$divide\": [\"&TCP_UTCL1_TRANSLATION_HIT_sum\" ,\"&denom\"] }},\n \"hits_max\":{\"$max\": { \"$divide\": [\"&TCP_UTCL1_TRANSLATION_HIT_sum\" ,\"&denom\"] }},\n\n \"missesTrans_avg\":{\"$avg\": {\"$divide\": [\"&TCP_UTCL1_TRANSLATION_MISS_sum\" ,\"&denom\"] }},\n \"missesTrans_min\":{\"$min\": {\"$divide\": [\"&TCP_UTCL1_TRANSLATION_MISS_sum\" ,\"&denom\"] }},\n \"missesTrans_max\":{\"$max\": {\"$divide\": [\"&TCP_UTCL1_TRANSLATION_MISS_sum\" ,\"&denom\"] }},\n\n \"missesPermis_avg\":{\"$avg\": {\"$divide\": [\"&TCP_UTCL1_PERMISSION_MISS_sum\" ,\"&denom\"] }},\n \"missesPermis_min\":{\"$min\": {\"$divide\": [\"&TCP_UTCL1_PERMISSION_MISS_sum\" ,\"&denom\"] }},\n \"missesPermis_max\":{\"$max\": {\"$divide\": [\"&TCP_UTCL1_PERMISSION_MISS_sum\" ,\"&denom\"] }}\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Req\",\n \"Mean\": \"&req_avg\",\n \"Min\":\"&req_min\",\n \"Max\":\"&req_max\",\n \"Units\":{\"$concat\": [\"\", $normUnit] }\n },\n {\n \"Metric\": \"Hit Ratio\",\n \"Mean\": \"&hitRatio_avg\",\n \"Min\":\"&hitRatio_min\",\n \"Max\":\"&hitRatio_max\",\n \"Units\":\"pct\"\n },\n {\n \"Metric\": \"Hits\",\n \"Mean\": \"&hits_avg\",\n \"Min\":\"&hits_min\",\n \"Max\":\"&hits_max\",\n \"Units\":{ \"$concat\": [\"\", $normUnit] }\n },\n {\n \"Metric\": \"Misses (Translation)\",\n \"Mean\": \"&missesTrans_avg\",\n \"Min\":\"&missesTrans_min\",\n \"Max\":\"&missesTrans_max\",\n \"Units\":{\"$concat\": [\"\", $normUnit] }\n },\n {\n \"Metric\": \"Misses (Permission)\",\n \"Mean\": \"&missesPermis_avg\",\n \"Min\":\"&missesPermis_min\",\n \"Max\":\"&missesPermis_max\",\n \"Units\":{\"$concat\": [\"\", $normUnit] }\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(Vector L1D Cache)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"req_avg\":{\"$avg\": { \"$divide\": [\"&TCP_UTCL1_REQUEST_sum\" ,\"&denom\"] }},\n \"req_min\":{\"$min\": { \"$divide\": [\"&TCP_UTCL1_REQUEST_sum\" ,\"&denom\"] }},\n \"req_max\":{\"$max\": { \"$divide\": [\"&TCP_UTCL1_REQUEST_sum\" ,\"&denom\"] }},\n\n\n \"hitRatio_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_UTCL1_REQUEST_sum\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&TCP_UTCL1_TRANSLATION_HIT_sum\"] },\"&TCP_UTCL1_REQUEST_sum\"]},\n null\n ]\n }},\n \"hitRatio_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_UTCL1_REQUEST_sum\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&TCP_UTCL1_TRANSLATION_HIT_sum\"] },\"&TCP_UTCL1_REQUEST_sum\"]},\n null\n ]\n }},\n \"hitRatio_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCP_UTCL1_REQUEST_sum\", 0]},\n {\"$divide\": [{ \"$multiply\": [100, \"&TCP_UTCL1_TRANSLATION_HIT_sum\"] },\"&TCP_UTCL1_REQUEST_sum\"]},\n null\n ]\n }},\n\n \"hits_avg\":{\"$avg\": { \"$divide\": [\"&TCP_UTCL1_TRANSLATION_HIT_sum\" ,\"&denom\"] }},\n \"hits_min\":{\"$min\": { \"$divide\": [\"&TCP_UTCL1_TRANSLATION_HIT_sum\" ,\"&denom\"] }},\n \"hits_max\":{\"$max\": { \"$divide\": [\"&TCP_UTCL1_TRANSLATION_HIT_sum\" ,\"&denom\"] }},\n\n \"missesTrans_avg\":{\"$avg\": {\"$divide\": [\"&TCP_UTCL1_TRANSLATION_MISS_sum\" ,\"&denom\"] }},\n \"missesTrans_min\":{\"$min\": {\"$divide\": [\"&TCP_UTCL1_TRANSLATION_MISS_sum\" ,\"&denom\"] }},\n \"missesTrans_max\":{\"$max\": {\"$divide\": [\"&TCP_UTCL1_TRANSLATION_MISS_sum\" ,\"&denom\"] }},\n\n \"missesPermis_avg\":{\"$avg\": {\"$divide\": [\"&TCP_UTCL1_PERMISSION_MISS_sum\" ,\"&denom\"] }},\n \"missesPermis_min\":{\"$min\": {\"$divide\": [\"&TCP_UTCL1_PERMISSION_MISS_sum\" ,\"&denom\"] }},\n \"missesPermis_max\":{\"$max\": {\"$divide\": [\"&TCP_UTCL1_PERMISSION_MISS_sum\" ,\"&denom\"] }}\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Req\",\n \"Mean\": \"&req_avg\",\n \"Min\":\"&req_min\",\n \"Max\":\"&req_max\",\n \"Units\":{\"$concat\": [\"\", $normUnit] }\n },\n {\n \"Metric\": \"Hit Ratio\",\n \"Mean\": \"&hitRatio_avg\",\n \"Min\":\"&hitRatio_min\",\n \"Max\":\"&hitRatio_max\",\n \"Units\":\"pct\"\n },\n {\n \"Metric\": \"Hits\",\n \"Mean\": \"&hits_avg\",\n \"Min\":\"&hits_min\",\n \"Max\":\"&hits_max\",\n \"Units\":{ \"$concat\": [\"\", $normUnit] }\n },\n {\n \"Metric\": \"Misses (Translation)\",\n \"Mean\": \"&missesTrans_avg\",\n \"Min\":\"&missesTrans_min\",\n \"Max\":\"&missesTrans_max\",\n \"Units\":{\"$concat\": [\"\", $normUnit] }\n },\n {\n \"Metric\": \"Misses (Permission)\",\n \"Mean\": \"&missesPermis_avg\",\n \"Min\":\"&missesPermis_min\",\n \"Max\":\"&missesPermis_max\",\n \"Units\":{\"$concat\": [\"\", $normUnit] }\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Vector L1D Addr Translation", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Units 2": true + }, + "indexByName": { + "Max 1": 7, + "Max 2": 8, + "Mean 1": 3, + "Mean 2": 4, + "Metric 1": 0, + "Metric 2": 1, + "Min 1": 5, + "Min 2": 6, + "Units 1": 9, + "Units 2": 2 + }, + "renameByName": { + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Mean 1": "Avg (Current)", + "Mean 2": "Avg (Baseline)", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "Vector L1 Data Cache", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 56, + "panels": [ + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 50 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "L2-EA Rd BW - GB/s" + }, + "properties": [ + { + "id": "unit", + "value": "GBs" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "L2-EA Rd BW " + }, + "properties": [ + { + "id": "unit", + "value": "GBs" + }, + { + "id": "max", + "value": 1638 + }, + { + "id": "color" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "L2 Util" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "thresholds", + "value": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 50 + }, + { + "color": "red", + "value": 90 + } + ] + } + }, + { + "id": "max", + "value": 100 + }, + { + "id": "min", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Cache Hit" + }, + "properties": [ + { + "id": "max", + "value": 100 + }, + { + "id": "unit", + "value": "percent" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 50 + }, + { + "color": "red", + "value": 90 + } + ] + } + }, + { + "id": "min", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "L2-EA Wr BW" + }, + "properties": [ + { + "id": "unit", + "value": "GBs" + }, + { + "id": "max", + "value": 1638 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "L2-EA Rd BW" + }, + "properties": [ + { + "id": "unit", + "value": "GBs" + }, + { + "id": "max", + "value": 1638 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 64, + "options": { + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": true + }, + "showUnfilled": true, + "text": { + "titleSize": 14, + "valueSize": 16 + } + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n\n{\"$group\": {\n \"_id\": null,\n \"L2Util\": {\n \"$avg\": { \n \n \"$divide\": [\n {\"$multiply\": [\"&TCC_BUSY_sum\", 100]},\n {\"$multiply\": [{\"$toInt\":\"$L2Banks\"}, \"&GRBM_GUI_ACTIVE\"] }\n ] \n } \n },\n\n \"cacheHit\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] }, 0]},\n { \"$divide\": [ { \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] } ] },\n 0\n ] \n }},\n\n \"l2eaRdBW\": {\n \"$avg\": { \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] } ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n },\n \n \"l2eaWrBW\": {\n \"$avg\": { \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] } ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n }\n }\n },\n {\"$set\": {\n \"array\": [\n {\n \"L2 Util\": \"&L2Util\",\n \"Cache Hit\": \"&cacheHit\",\n \"L2-EA Rd BW\": \"&l2eaRdBW\",\n \"L2-EA Wr BW\": \"&l2eaWrBW\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(L2 Cache)\"}}\n }},\n\n{\"$group\": {\n \"_id\": null,\n \"L2Util\": {\n \"$avg\": { \n \"$divide\": [\n {\"$multiply\": [\"&TCC_BUSY_sum\", 100]},\n {\"$multiply\": [{\"$toInt\":\"$L2Banks2\"}, \"&GRBM_GUI_ACTIVE\"] }\n ] \n } \n },\n\n \"cacheHit\": {\n \"$avg\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] }, 0]},\n { \"$divide\": [ { \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] } ] },\n 0\n ] \n }},\n\n \"l2eaRdBW\": {\n \"$avg\": { \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] } ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n },\n \n \"l2eaWrBW\": {\n \"$avg\": { \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] } ] }, { \"$subtract\": [\"&EndNs\", \"&BeginNs\"] } ] }\n }\n }\n },\n {\"$set\": {\n \"array\": [\n {\n \"L2 Util\": \"&L2Util\",\n \"Cache Hit\": \"&cacheHit\",\n \"L2-EA Rd BW\": \"&l2eaRdBW\",\n \"L2-EA Wr BW\": \"&l2eaWrBW\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "Speed-of-Light: L2 Cache", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Cache Hit 1": 2, + "Cache Hit 2": 3, + "L2 Util 1": 0, + "L2 Util 2": 1, + "L2-EA Rd BW 1": 4, + "L2-EA Rd BW 2": 5, + "L2-EA Wr BW 1": 6, + "L2-EA Wr BW 2": 7 + }, + "renameByName": { + "Cache Hit 1": "L2 Cache Hit (Current)", + "Cache Hit 2": "L2 Cache Hit (Baseline)", + "L2 Util 1": "L2 Util (Current)", + "L2 Util 2": "L2 Util (Baseline)", + "L2-EA Rd BW - GB/s 1": "L2-EA RD BW (Current)", + "L2-EA Rd BW - GB/s 2": "L2-EA RD BW (baseline)", + "L2-EA Rd BW 1": "L2-EA Rd BW (Current)", + "L2-EA Rd BW 2": "L2-EA Rd BW (Baseline)", + "L2-EA Wr BW - GB/s 1": "L2-EA WR BW (Current)", + "L2-EA Wr BW - GB/s 2": "L2-EA WR BW (Baseline)", + "L2-EA Wr BW 1": "L2-EA Wr BW (Current)", + "L2-EA Wr BW 2": "L2-EA Wr BW (Baseline)" + } + } + } + ], + "transparent": true, + "type": "bargauge" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 106 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 114 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 148 + } + ] + } + ] + }, + "gridPos": { + "h": 16, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 62, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n\n {\"$group\": {\n \"_id\": \"null\",\n \"readStall_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_RDREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n \"readStall_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_RDREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n \"readStall_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_RDREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n\n \"writeStall_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_WRREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n \"writeStall_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_WRREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n \"writeStall_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_WRREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n\n \n \"readBW_avg\":{\"$avg\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] } ] }, \"&denom\" ]\n }},\n \"readBW_min\":{\"$min\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] } ] }, \"&denom\" ]\n }},\n \"readBW_max\":{\"$max\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] } ] }, \"&denom\" ]\n }},\n\n \"writeBW_avg\":{\"$avg\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] } ] }, \"&denom\" ]\n }},\n \"writeBW_min\":{\"$min\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] } ] }, \"&denom\" ]\n }},\n \"writeBW_max\":{\"$max\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] } ] }, \"&denom\" ]\n }},\n\n \"read32_avg\":{\"$avg\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_32B_sum\", \"&denom\" ]\n }},\n \"read32_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_32B_sum\", \"&denom\" ]\n }},\n \"read32_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_32B_sum\", \"&denom\" ]\n }},\n\n \"read32Uncached_avg\":{\"$avg\": {\n \"$divide\": [ \"&TCC_EA_RD_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n \"read32Uncached_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_RD_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n \"read32Uncached_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_RD_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n\n \"read64_avg\":{\"$avg\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, \"&denom\" ]\n }},\n \"read64_min\":{\"$min\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, \"&denom\" ]\n }},\n \"read64_max\":{\"$max\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, \"&denom\" ]\n }},\n\n \"hbmRead_avg\":{\"$avg\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_DRAM_sum\", \"&denom\" ]\n }},\n \"hbmRead_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_DRAM_sum\", \"&denom\" ]\n }},\n \"hbmRead_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_DRAM_sum\", \"&denom\" ]\n }},\n\n \"write32_avg\":{\"$avg\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, \"&denom\" ]\n }},\n \"write32_min\":{\"$min\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, \"&denom\" ]\n }},\n \"write32_max\":{\"$max\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, \"&denom\" ]\n }},\n\n \"write32Uncached_avg\": {\"$avg\":{\n \"$divide\": [ \"&TCC_EA_WR_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n \"write32Uncached_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_WR_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n \"write32Uncached_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_WR_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n\n \"write64_avg\":{\"$avg\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_64B_sum\", \"&denom\" ]\n }},\n \"write64_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_64B_sum\", \"&denom\" ]\n }},\n \"write64_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_64B_sum\", \"&denom\" ]\n }},\n\n \"hbmWrite_avg\":{\"$avg\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_DRAM_sum\", \"&denom\" ]\n }},\n \"hbmWrite_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_DRAM_sum\", \"&denom\" ]\n }},\n \"hbmWrite_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_DRAM_sum\", \"&denom\" ]\n }},\n\n \"readLatency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_RDREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_RDREQ_LEVEL_sum\", \"&TCC_EA_RDREQ_sum\" ] },\n null\n ]\n }},\n \"readLatency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_RDREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_RDREQ_LEVEL_sum\", \"&TCC_EA_RDREQ_sum\" ] },\n null\n ]\n }},\n \"readLatency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_RDREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_RDREQ_LEVEL_sum\", \"&TCC_EA_RDREQ_sum\" ] },\n null\n ]\n }},\n\n \"writeLatency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_WRREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_WRREQ_LEVEL_sum\", \"&TCC_EA_WRREQ_sum\" ] },\n null\n ]\n }},\n \"writeLatency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_WRREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_WRREQ_LEVEL_sum\", \"&TCC_EA_WRREQ_sum\" ] },\n null\n ]\n }},\n \"writeLatency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_WRREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_WRREQ_LEVEL_sum\", \"&TCC_EA_WRREQ_sum\" ] },\n null\n ]\n }},\n\n \"atomicOpLatency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_ATOMIC_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_ATOMIC_LEVEL_sum\", \"&TCC_EA_ATOMIC_sum\" ] },\n null\n ]\n }},\n \"atomicOpLatency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_ATOMIC_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_ATOMIC_LEVEL_sum\", \"&TCC_EA_ATOMIC_sum\" ] },\n null\n ]\n }},\n \"atomicOpLatency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_ATOMIC_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_ATOMIC_LEVEL_sum\", \"&TCC_EA_ATOMIC_sum\" ] },\n null\n ]\n }}\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Read BW\",\n \"Avg\": \"&readBW_avg\",\n \"Min\":\"&readBW_min\",\n \"Max\":\"&readBW_max\",\n \"Unit\":{\"$concat\": [\"Bytes \", $normUnit] }\n },\n {\n \"Metric\": \"Write BW\",\n \"Avg\": \"&writeBW_avg\",\n \"Min\":\"&writeBW_min\",\n \"Max\":\"&writeBW_max\",\n \"Unit\":{\"$concat\": [\"Bytes \", $normUnit] }\n },\n {\n \"Metric\": \"Read (32B)\",\n \"Avg\": \"&read32_avg\",\n \"Min\":\"&read32_min\",\n \"Max\":\"&read32_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Read (Uncached 32B)\",\n \"Avg\": \"&read32Uncached_avg\",\n \"Min\":\"&read32Uncached_min\",\n \"Max\":\"&read32Uncached_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Read (64B)\",\n \"Avg\": \"&read64_avg\",\n \"Min\":\"&read64_min\",\n \"Max\":\"&read64_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"HBM Read\",\n \"Avg\": \"&hbmRead_avg\",\n \"Min\":\"&hbmRead_min\",\n \"Max\":\"&hbmRead_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Write (32B)\",\n \"Avg\": \"&write32_avg\",\n \"Min\":\"&write32_min\",\n \"Max\":\"&write32_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Write (Uncached 32B)\",\n \"Avg\": \"&write32Uncached_avg\",\n \"Min\":\"&write32Uncached_min\",\n \"Max\":\"&write32Uncached_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Write (64B)\",\n \"Avg\": \"&write64_avg\",\n \"Min\":\"&write64_min\",\n \"Max\":\"&write64_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"HBM Write\",\n \"Avg\": \"&hbmWrite_avg\",\n \"Min\":\"&hbmWrite_min\",\n \"Max\":\"&hbmWrite_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Read Latency\",\n \"Avg\": \"&readLatency_avg\",\n \"Min\":\"&readLatency_min\",\n \"Max\":\"&readLatency_max\",\n \"Unit\":\"Cycles\"\n },\n {\n \"Metric\": \"Write Latency\",\n \"Avg\": \"&writeLatency_avg\",\n \"Min\":\"&writeLatency_min\",\n \"Max\":\"&writeLatency_max\",\n \"Unit\":\"Cycles\"\n },\n {\n \"Metric\": \"Atomic Latency\",\n \"Avg\": \"&atomicOpLatency_avg\",\n \"Min\":\"&atomicOpLatency_min\",\n \"Max\":\"&atomicOpLatency_max\",\n \"Unit\":\"Cycles\"\n },\n {\n \"Metric\": \"Read Stall\",\n \"Avg\": \"&readStall_avg\",\n \"Min\":\"&readStall_min\",\n \"Max\":\"&readStall_max\",\n \"Unit\":\"pct\"\n },\n {\n \"Metric\": \"Write Stall\",\n \"Avg\": \"&writeStall_avg\",\n \"Min\":\"&writeStall_min\",\n \"Max\":\"&writeStall_max\",\n \"Unit\":\"pct\"\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(L2 Cache)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": \"null\",\n \"readStall_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_RDREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n \"readStall_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_RDREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n \"readStall_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_RDREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n\n \"writeStall_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_WRREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n \"writeStall_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_WRREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n \"writeStall_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_BUSY_sum\", 0]},\n { \"$divide\": [ \n {\"$multiply\": [100, {\"$add\":[\"&TCC_EA_WRREQ_IO_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_GMI_CREDIT_STALL_sum\", \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum\"]}]},\n \"&TCC_BUSY_sum\" \n ]},\n null\n ]\n }},\n\n \"readBW_avg\":{\"$avg\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] } ] }, \"&denom\" ]\n }},\n \"readBW_min\":{\"$min\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] } ] }, \"&denom\" ]\n }},\n \"readBW_max\":{\"$max\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_RDREQ_32B_sum\", 32]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, 64] } ] }, \"&denom\" ]\n }},\n\n \"writeBW_avg\":{\"$avg\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] } ] }, \"&denom\" ]\n }},\n \"writeBW_min\":{\"$min\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] } ] }, \"&denom\" ]\n }},\n \"writeBW_max\":{\"$max\": {\n \"$divide\": [ { \"$add\" : [{ \"$multiply\": [\"&TCC_EA_WRREQ_64B_sum\", 64]}, { \"$multiply\": [{ \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, 32] } ] }, \"&denom\" ]\n }},\n\n \"read32_avg\":{\"$avg\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_32B_sum\", \"&denom\" ]\n }},\n \"read32_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_32B_sum\", \"&denom\" ]\n }},\n \"read32_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_32B_sum\", \"&denom\" ]\n }},\n\n \"read32Uncached_avg\":{\"$avg\": {\n \"$divide\": [ \"&TCC_EA_RD_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n \"read32Uncached_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_RD_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n \"read32Uncached_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_RD_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n\n \"read64_avg\":{\"$avg\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, \"&denom\" ]\n }},\n \"read64_min\":{\"$min\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, \"&denom\" ]\n }},\n \"read64_max\":{\"$max\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_RDREQ_sum\", \"&TCC_EA_RDREQ_32B_sum\"] }, \"&denom\" ]\n }},\n\n \"hbmRead_avg\":{\"$avg\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_DRAM_sum\", \"&denom\" ]\n }},\n \"hbmRead_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_DRAM_sum\", \"&denom\" ]\n }},\n \"hbmRead_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_RDREQ_DRAM_sum\", \"&denom\" ]\n }},\n\n \"write32_avg\":{\"$avg\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, \"&denom\" ]\n }},\n \"write32_min\":{\"$min\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, \"&denom\" ]\n }},\n \"write32_max\":{\"$max\": {\n \"$divide\": [ { \"$subtract\": [\"&TCC_EA_WRREQ_sum\", \"&TCC_EA_WRREQ_64B_sum\"] }, \"&denom\" ]\n }},\n\n \"write32Uncached_avg\": {\"$avg\":{\n \"$divide\": [ \"&TCC_EA_WR_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n \"write32Uncached_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_WR_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n \"write32Uncached_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_WR_UNCACHED_32B_sum\", \"&denom\" ]\n }},\n\n \"write64_avg\":{\"$avg\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_64B_sum\", \"&denom\" ]\n }},\n \"write64_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_64B_sum\", \"&denom\" ]\n }},\n \"write64_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_64B_sum\", \"&denom\" ]\n }},\n\n \"hbmWrite_avg\":{\"$avg\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_DRAM_sum\", \"&denom\" ]\n }},\n \"hbmWrite_min\":{\"$min\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_DRAM_sum\", \"&denom\" ]\n }},\n \"hbmWrite_max\":{\"$max\": {\n \"$divide\": [ \"&TCC_EA_WRREQ_DRAM_sum\", \"&denom\" ]\n }},\n\n \"readLatency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_RDREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_RDREQ_LEVEL_sum\", \"&TCC_EA_RDREQ_sum\" ] },\n null\n ]\n }},\n \"readLatency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_RDREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_RDREQ_LEVEL_sum\", \"&TCC_EA_RDREQ_sum\" ] },\n null\n ]\n }},\n \"readLatency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_RDREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_RDREQ_LEVEL_sum\", \"&TCC_EA_RDREQ_sum\" ] },\n null\n ]\n }},\n\n \"writeLatency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_WRREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_WRREQ_LEVEL_sum\", \"&TCC_EA_WRREQ_sum\" ] },\n null\n ]\n }},\n \"writeLatency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_WRREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_WRREQ_LEVEL_sum\", \"&TCC_EA_WRREQ_sum\" ] },\n null\n ]\n }},\n \"writeLatency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_WRREQ_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_WRREQ_LEVEL_sum\", \"&TCC_EA_WRREQ_sum\" ] },\n null\n ]\n }},\n\n \"atomicOpLatency_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_ATOMIC_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_ATOMIC_LEVEL_sum\", \"&TCC_EA_ATOMIC_sum\" ] },\n null\n ]\n }},\n \"atomicOpLatency_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_ATOMIC_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_ATOMIC_LEVEL_sum\", \"&TCC_EA_ATOMIC_sum\" ] },\n null\n ]\n }},\n \"atomicOpLatency_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [\"&TCC_EA_ATOMIC_sum\", 0]},\n { \"$divide\": [ \"&TCC_EA_ATOMIC_LEVEL_sum\", \"&TCC_EA_ATOMIC_sum\" ] },\n null\n ]\n }}\n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Read BW\",\n \"Avg\": \"&readBW_avg\",\n \"Min\":\"&readBW_min\",\n \"Max\":\"&readBW_max\",\n \"Unit\":{\"$concat\": [\"Bytes \", $normUnit] }\n },\n {\n \"Metric\": \"Write BW\",\n \"Avg\": \"&writeBW_avg\",\n \"Min\":\"&writeBW_min\",\n \"Max\":\"&writeBW_max\",\n \"Unit\":{\"$concat\": [\"Bytes \", $normUnit] }\n },\n {\n \"Metric\": \"Read (32B)\",\n \"Avg\": \"&read32_avg\",\n \"Min\":\"&read32_min\",\n \"Max\":\"&read32_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Read (Uncached 32B)\",\n \"Avg\": \"&read32Uncached_avg\",\n \"Min\":\"&read32Uncached_min\",\n \"Max\":\"&read32Uncached_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Read (64B)\",\n \"Avg\": \"&read64_avg\",\n \"Min\":\"&read64_min\",\n \"Max\":\"&read64_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"HBM Read\",\n \"Avg\": \"&hbmRead_avg\",\n \"Min\":\"&hbmRead_min\",\n \"Max\":\"&hbmRead_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Write (32B)\",\n \"Avg\": \"&write32_avg\",\n \"Min\":\"&write32_min\",\n \"Max\":\"&write32_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Write (Uncached 32B)\",\n \"Avg\": \"&write32Uncached_avg\",\n \"Min\":\"&write32Uncached_min\",\n \"Max\":\"&write32Uncached_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Write (64B)\",\n \"Avg\": \"&write64_avg\",\n \"Min\":\"&write64_min\",\n \"Max\":\"&write64_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n\n {\n \"Metric\": \"HBM Write\",\n \"Avg\": \"&hbmWrite_avg\",\n \"Min\":\"&hbmWrite_min\",\n \"Max\":\"&hbmWrite_max\",\n \"Unit\":{\"$concat\": [\"Req \", $normUnit] }\n },\n {\n \"Metric\": \"Read Latency\",\n \"Avg\": \"&readLatency_avg\",\n \"Min\":\"&readLatency_min\",\n \"Max\":\"&readLatency_max\",\n \"Unit\":\"Cycles\"\n },\n {\n \"Metric\": \"Write Latency\",\n \"Avg\": \"&writeLatency_avg\",\n \"Min\":\"&writeLatency_min\",\n \"Max\":\"&writeLatency_max\",\n \"Unit\":\"Cycles\"\n },\n {\n \"Metric\": \"Atomic Latency\",\n \"Avg\": \"&atomicOpLatency_avg\",\n \"Min\":\"&atomicOpLatency_min\",\n \"Max\":\"&atomicOpLatency_max\",\n \"Unit\":\"Cycles\"\n },\n {\n \"Metric\": \"Read Stall\",\n \"Avg\": \"&readStall_avg\",\n \"Min\":\"&readStall_min\",\n \"Max\":\"&readStall_max\",\n \"Unit\":\"pct\"\n },\n {\n \"Metric\": \"Write Stall\",\n \"Avg\": \"&writeStall_avg\",\n \"Min\":\"&writeStall_min\",\n \"Max\":\"&writeStall_max\",\n \"Unit\":\"pct\"\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "L2 - Fabric Transactions", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric 2": true, + "Unit 2": true + }, + "indexByName": { + "Avg 1": 3, + "Avg 2": 4, + "Max 1": 7, + "Max 2": 8, + "Metric 1": 0, + "Metric 2": 1, + "Min 1": 5, + "Min 2": 6, + "Unit 1": 9, + "Unit 2": 2 + }, + "renameByName": { + "Avg 1": "Avg (Current)", + "Avg 2": "Avg (Baseline)", + "Max 1": "Max (Current)", + "Max 2": "Max (Baseline)", + "Min 1": "Min (Current)", + "Min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + }, + { + "datasource": {}, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "locale" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 178 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Unit" + }, + "properties": [ + { + "id": "custom.width", + "value": 128 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 121 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Current)" + }, + "properties": [ + { + "id": "custom.width", + "value": 126 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min (Baseline)" + }, + "properties": [ + { + "id": "custom.width", + "value": 128 + } + ] + } + ] + }, + "gridPos": { + "h": 20, + "w": 12, + "x": 0, + "y": 23 + }, + "id": 58, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.4", + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"req_avg\":{\"$avg\": { \"$divide\": [ \"&TCC_REQ_sum\", \"&denom\"] }},\n \"req_min\":{\"$min\": { \"$divide\": [ \"&TCC_REQ_sum\", \"&denom\"] }},\n \"req_max\":{\"$max\": { \"$divide\": [ \"&TCC_REQ_sum\", \"&denom\"] }},\n\n \"streamingReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_STREAMING_REQ_sum\", \"&denom\" ] }},\n \"streamingReq_min\":{\"$min\": {\"$divide\": [ \"&TCC_STREAMING_REQ_sum\", \"&denom\" ] }},\n \"streamingReq_max\":{\"$max\": {\"$divide\": [ \"&TCC_STREAMING_REQ_sum\", \"&denom\" ] }},\n\n \"readReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_READ_sum\", \"&denom\" ] }},\n \"readReq_min\":{\"$min\": {\"$divide\": [ \"&TCC_READ_sum\", \"&denom\" ] }},\n \"readReq_max\":{\"$max\": {\"$divide\": [ \"&TCC_READ_sum\", \"&denom\" ] }},\n\n \"writeReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_WRITE_sum\", \"&denom\" ]}},\n \"writeReq_min\":{\"$min\": {\"$divide\": [ \"&TCC_WRITE_sum\", \"&denom\" ]}},\n \"writeReq_max\":{\"$max\": {\"$divide\": [ \"&TCC_WRITE_sum\", \"&denom\" ]}},\n\n \"atomicReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_ATOMIC_sum\", \"&denom\" ]}},\n \"atomicReq_min\":{\"$min\": {\"$divide\": [ \"&TCC_ATOMIC_sum\", \"&denom\" ]}},\n \"atomicReq_max\":{\"$max\": {\"$divide\": [ \"&TCC_ATOMIC_sum\", \"&denom\" ]}},\n\n \"probeReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_PROBE_sum\", \"&denom\" ]}},\n \"probeReq_min\":{\"$min\": {\"$divide\": [ \"&TCC_PROBE_sum\", \"&denom\" ]}},\n \"probeReq_max\":{\"$max\": {\"$divide\": [ \"&TCC_PROBE_sum\", \"&denom\" ]}},\n\n \"hits_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_HIT_sum\", \"&denom\"] }},\n \"hits_min\":{\"$min\": {\"$divide\": [ \"&TCC_HIT_sum\", \"&denom\"] }},\n \"hits_max\":{\"$max\": {\"$divide\": [ \"&TCC_HIT_sum\", \"&denom\"] }},\n\n \"misses_avg\":{\"$avg\": { \"$divide\": [ \"&TCC_MISS_sum\", \"&denom\"] }},\n \"misses_min\":{\"$min\": { \"$divide\": [ \"&TCC_MISS_sum\", \"&denom\"] }},\n \"misses_max\":{\"$max\": { \"$divide\": [ \"&TCC_MISS_sum\", \"&denom\"] }},\n\n \"cacheHit_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] }, 0]},\n { \"$divide\": [ { \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] } ] },\n null\n ] \n }},\n \"cacheHit_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] }, 0]},\n { \"$divide\": [ { \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] } ] },\n null\n ] \n }},\n \"cacheHit_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] }, 0]},\n { \"$divide\": [ { \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] } ] },\n null\n ] \n }},\n\n\n \"writeback_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_WRITEBACK_sum\", \"&denom\"] }},\n \"writeback_min\":{\"$min\": {\"$divide\": [ \"&TCC_WRITEBACK_sum\", \"&denom\"] }},\n \"writeback_max\":{\"$max\": {\"$divide\": [ \"&TCC_WRITEBACK_sum\", \"&denom\"] }},\n\n \"nc_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_NC_REQ_sum\", \"&denom\" ] }},\n \"nc_min\":{\"$min\": {\"$divide\": [ \"&TCC_NC_REQ_sum\", \"&denom\" ] }},\n \"nc_max\":{\"$max\": {\"$divide\": [ \"&TCC_NC_REQ_sum\", \"&denom\" ] }},\n\n \"uc_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_UC_REQ_sum\", \"&denom\" ] }},\n \"uc_min\":{\"$min\": {\"$divide\": [ \"&TCC_UC_REQ_sum\", \"&denom\" ] }},\n \"uc_max\":{\"$max\": {\"$divide\": [ \"&TCC_UC_REQ_sum\", \"&denom\" ] }},\n\n \"cc_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_CC_REQ_sum\", \"&denom\" ] }},\n \"cc_min\":{\"$min\": {\"$divide\": [ \"&TCC_CC_REQ_sum\", \"&denom\" ] }},\n \"cc_max\":{\"$max\": {\"$divide\": [ \"&TCC_CC_REQ_sum\", \"&denom\" ] }},\n\n \"rw_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_RW_REQ_sum\", \"&denom\" ] }},\n \"rw_min\":{\"$min\": {\"$divide\": [ \"&TCC_RW_REQ_sum\", \"&denom\" ] }},\n \"rw_max\":{\"$max\": {\"$divide\": [ \"&TCC_RW_REQ_sum\", \"&denom\" ] }},\n\n \"writebackNorm_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_NORMAL_WRITEBACK_sum\", \"&denom\" ]}},\n \"writebackNorm_min\":{\"$min\": {\"$divide\": [ \"&TCC_NORMAL_WRITEBACK_sum\", \"&denom\" ]}},\n \"writebackNorm_max\":{\"$max\": {\"$divide\": [ \"&TCC_NORMAL_WRITEBACK_sum\", \"&denom\" ]}},\n\n \"writebackTC_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_ALL_TC_OP_WB_WRITEBACK_sum\", \"&denom\" ] }},\n \"writebackTC_min\":{\"$min\": {\"$divide\": [ \"&TCC_ALL_TC_OP_WB_WRITEBACK_sum\", \"&denom\" ] }},\n \"writebackTC_max\":{\"$max\": {\"$divide\": [ \"&TCC_ALL_TC_OP_WB_WRITEBACK_sum\", \"&denom\" ] }},\n\n \"evictNorm_avg\":{\"$avg\": { \"$divide\": [ \"&TCC_NORMAL_EVICT_sum\", \"&denom\" ] }},\n \"evictNorm_min\":{\"$min\": { \"$divide\": [ \"&TCC_NORMAL_EVICT_sum\", \"&denom\" ] }},\n \"evictNorm_max\":{\"$max\": { \"$divide\": [ \"&TCC_NORMAL_EVICT_sum\", \"&denom\" ] }},\n\n \"evictTC_avg\":{\"$avg\": { \"$divide\": [ \"&TCC_ALL_TC_OP_INV_EVICT_sum\", \"&denom\" ] }},\n \"evictTC_min\":{\"$min\": { \"$divide\": [ \"&TCC_ALL_TC_OP_INV_EVICT_sum\", \"&denom\" ] }},\n \"evictTC_max\":{\"$max\": { \"$divide\": [ \"&TCC_ALL_TC_OP_INV_EVICT_sum\", \"&denom\" ] }},\n\n\n \"readReq128_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TCR_REQ_XFER128B_COMBINING_sum\", \"&denom\" ] }},\n \"readReq128_min\":{\"$min\": {\"$divide\": [ \"&TCP_TCR_REQ_XFER128B_COMBINING_sum\", \"&denom\" ] }},\n \"readReq128_max\":{\"$max\": {\"$divide\": [ \"&TCP_TCR_REQ_XFER128B_COMBINING_sum\", \"&denom\" ] }}\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"Req\",\n \"avg\": \"&req_avg\",\n \"min\": \"&req_min\",\n \"max\": \"&req_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Streaming Req\",\n \"avg\": \"&streamingReq_avg\",\n \"min\": \"&streamingReq_min\",\n \"max\": \"&streamingReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Read Req\",\n \"avg\": \"&readReq_avg\",\n \"min\": \"&readReq_min\",\n \"max\": \"&readReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n \n {\n \"metric\": \"Write Req\",\n \"avg\": \"&writeReq_avg\",\n \"min\": \"&writeReq_min\",\n \"max\": \"&writeReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Atomic Req\",\n \"avg\": \"&atomicReq_avg\",\n \"min\": \"&atomicReq_min\",\n \"max\": \"&atomicReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Probe Req\",\n \"avg\": \"&probeReq_avg\",\n \"min\": \"&probeReq_min\",\n \"max\": \"&probeReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Hits\",\n \"avg\": \"&hits_avg\",\n \"min\": \"&hits_min\",\n \"max\": \"&hits_max\",\n \"Unit\": {\"$concat\": [\"Hits \", $normUnit]}\n }, \n {\n \"metric\": \"Misses\",\n \"avg\": \"&misses_avg\",\n \"min\": \"&misses_min\",\n \"max\": \"&misses_max\",\n \"Unit\": {\"$concat\": [\"Misses \", $normUnit]}\n },\n {\n \"metric\": \"Cache Hit\",\n \"avg\": \"&cacheHit_avg\",\n \"min\": \"&cacheHit_min\",\n \"max\": \"&cacheHit_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"Writeback\",\n \"avg\": \"&writeback_avg\",\n \"min\": \"&writeback_min\",\n \"max\": \"&writeback_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n },\n {\n \"metric\": \"NC Req\",\n \"avg\": \"&nc_avg\",\n \"min\": \"&nc_min\",\n \"max\": \"&nc_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"UC Req\",\n \"avg\": \"&uc_avg\",\n \"min\": \"&uc_min\",\n \"max\": \"&uc_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"CC Req\",\n \"avg\": \"&cc_avg\",\n \"min\": \"&cc_min\",\n \"max\": \"&cc_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"RW Req\",\n \"avg\": \"&rw_avg\",\n \"min\": \"&rw_min\",\n \"max\": \"&rw_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Writeback (Normal)\",\n \"avg\": \"&writebackNorm_avg\",\n \"min\": \"&writebackNorm_min\",\n \"max\": \"&writebackNorm_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n },\n {\n \"metric\": \"Writeback (TC Req)\",\n \"avg\": \"&writebackTC_avg\",\n \"min\": \"&writebackTC_min\",\n \"max\": \"&writebackTC_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n },\n {\n \"metric\": \"Evict (Normal)\",\n \"avg\": \"&evictNorm_avg\",\n \"min\": \"&evictNorm_min\",\n \"max\": \"&evictNorm_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n },\n {\n \"metric\": \"Evict (TC Req)\",\n \"avg\": \"&evictTC_avg\",\n \"min\": \"&evictTC_min\",\n \"max\": \"&evictTC_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n }\n\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n\n]);", + "type": "table" + }, + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "hide": false, + "rawQuery": true, + "refId": "B", + "target": "${Workload2}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}},\n \"$expr\":{\"$regexMatch\": {\"input\":\"${select}\",\"regex\":\"(L2 Cache)\"}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n {\"$group\": {\n \"_id\": null,\n \"req_avg\":{\"$avg\": { \"$divide\": [ \"&TCC_REQ_sum\", \"&denom\"] }},\n \"req_min\":{\"$min\": { \"$divide\": [ \"&TCC_REQ_sum\", \"&denom\"] }},\n \"req_max\":{\"$max\": { \"$divide\": [ \"&TCC_REQ_sum\", \"&denom\"] }},\n\n \"streamingReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_STREAMING_REQ_sum\", \"&denom\" ] }},\n \"streamingReq_min\":{\"$min\": {\"$divide\": [ \"&TCC_STREAMING_REQ_sum\", \"&denom\" ] }},\n \"streamingReq_max\":{\"$max\": {\"$divide\": [ \"&TCC_STREAMING_REQ_sum\", \"&denom\" ] }},\n\n \"readReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_READ_sum\", \"&denom\" ] }},\n \"readReq_min\":{\"$min\": {\"$divide\": [ \"&TCC_READ_sum\", \"&denom\" ] }},\n \"readReq_max\":{\"$max\": {\"$divide\": [ \"&TCC_READ_sum\", \"&denom\" ] }},\n\n \"writeReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_WRITE_sum\", \"&denom\" ]}},\n \"writeReq_min\":{\"$min\": {\"$divide\": [ \"&TCC_WRITE_sum\", \"&denom\" ]}},\n \"writeReq_max\":{\"$max\": {\"$divide\": [ \"&TCC_WRITE_sum\", \"&denom\" ]}},\n\n \"atomicReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_ATOMIC_sum\", \"&denom\" ]}},\n \"atomicReq_min\":{\"$min\": {\"$divide\": [ \"&TCC_ATOMIC_sum\", \"&denom\" ]}},\n \"atomicReq_max\":{\"$max\": {\"$divide\": [ \"&TCC_ATOMIC_sum\", \"&denom\" ]}},\n\n \"probeReq_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_PROBE_sum\", \"&denom\" ]}},\n \"probeReq_min\":{\"$min\": {\"$divide\": [ \"&TCC_PROBE_sum\", \"&denom\" ]}},\n \"probeReq_max\":{\"$max\": {\"$divide\": [ \"&TCC_PROBE_sum\", \"&denom\" ]}},\n\n \"hits_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_HIT_sum\", \"&denom\"] }},\n \"hits_min\":{\"$min\": {\"$divide\": [ \"&TCC_HIT_sum\", \"&denom\"] }},\n \"hits_max\":{\"$max\": {\"$divide\": [ \"&TCC_HIT_sum\", \"&denom\"] }},\n\n \"misses_avg\":{\"$avg\": { \"$divide\": [ \"&TCC_MISS_sum\", \"&denom\"] }},\n \"misses_min\":{\"$min\": { \"$divide\": [ \"&TCC_MISS_sum\", \"&denom\"] }},\n \"misses_max\":{\"$max\": { \"$divide\": [ \"&TCC_MISS_sum\", \"&denom\"] }},\n\n \"cacheHit_avg\":{\"$avg\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] }, 0]},\n { \"$divide\": [ { \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] } ] },\n null\n ] \n }},\n \"cacheHit_min\":{\"$min\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] }, 0]},\n { \"$divide\": [ { \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] } ] },\n null\n ] \n }},\n \"cacheHit_max\":{\"$max\": {\n \"$cond\": [\n {\"$ne\": [{ \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] }, 0]},\n { \"$divide\": [ { \"$multiply\": [100, \"&TCC_HIT_sum\"] }, { \"$add\": [ \"&TCC_HIT_sum\", \"&TCC_MISS_sum\" ] } ] },\n null\n ] \n }},\n\n\n \"writeback_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_WRITEBACK_sum\", \"&denom\"] }},\n \"writeback_min\":{\"$min\": {\"$divide\": [ \"&TCC_WRITEBACK_sum\", \"&denom\"] }},\n \"writeback_max\":{\"$max\": {\"$divide\": [ \"&TCC_WRITEBACK_sum\", \"&denom\"] }},\n\n \"nc_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_NC_REQ_sum\", \"&denom\" ] }},\n \"nc_min\":{\"$min\": {\"$divide\": [ \"&TCC_NC_REQ_sum\", \"&denom\" ] }},\n \"nc_max\":{\"$max\": {\"$divide\": [ \"&TCC_NC_REQ_sum\", \"&denom\" ] }},\n\n \"uc_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_UC_REQ_sum\", \"&denom\" ] }},\n \"uc_min\":{\"$min\": {\"$divide\": [ \"&TCC_UC_REQ_sum\", \"&denom\" ] }},\n \"uc_max\":{\"$max\": {\"$divide\": [ \"&TCC_UC_REQ_sum\", \"&denom\" ] }},\n\n \"cc_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_CC_REQ_sum\", \"&denom\" ] }},\n \"cc_min\":{\"$min\": {\"$divide\": [ \"&TCC_CC_REQ_sum\", \"&denom\" ] }},\n \"cc_max\":{\"$max\": {\"$divide\": [ \"&TCC_CC_REQ_sum\", \"&denom\" ] }},\n\n \"rw_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_RW_REQ_sum\", \"&denom\" ] }},\n \"rw_min\":{\"$min\": {\"$divide\": [ \"&TCC_RW_REQ_sum\", \"&denom\" ] }},\n \"rw_max\":{\"$max\": {\"$divide\": [ \"&TCC_RW_REQ_sum\", \"&denom\" ] }},\n\n \"writebackNorm_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_NORMAL_WRITEBACK_sum\", \"&denom\" ]}},\n \"writebackNorm_min\":{\"$min\": {\"$divide\": [ \"&TCC_NORMAL_WRITEBACK_sum\", \"&denom\" ]}},\n \"writebackNorm_max\":{\"$max\": {\"$divide\": [ \"&TCC_NORMAL_WRITEBACK_sum\", \"&denom\" ]}},\n\n \"writebackTC_avg\":{\"$avg\": {\"$divide\": [ \"&TCC_ALL_TC_OP_WB_WRITEBACK_sum\", \"&denom\" ] }},\n \"writebackTC_min\":{\"$min\": {\"$divide\": [ \"&TCC_ALL_TC_OP_WB_WRITEBACK_sum\", \"&denom\" ] }},\n \"writebackTC_max\":{\"$max\": {\"$divide\": [ \"&TCC_ALL_TC_OP_WB_WRITEBACK_sum\", \"&denom\" ] }},\n\n \"evictNorm_avg\":{\"$avg\": { \"$divide\": [ \"&TCC_NORMAL_EVICT_sum\", \"&denom\" ] }},\n \"evictNorm_min\":{\"$min\": { \"$divide\": [ \"&TCC_NORMAL_EVICT_sum\", \"&denom\" ] }},\n \"evictNorm_max\":{\"$max\": { \"$divide\": [ \"&TCC_NORMAL_EVICT_sum\", \"&denom\" ] }},\n\n \"evictTC_avg\":{\"$avg\": { \"$divide\": [ \"&TCC_ALL_TC_OP_INV_EVICT_sum\", \"&denom\" ] }},\n \"evictTC_min\":{\"$min\": { \"$divide\": [ \"&TCC_ALL_TC_OP_INV_EVICT_sum\", \"&denom\" ] }},\n \"evictTC_max\":{\"$max\": { \"$divide\": [ \"&TCC_ALL_TC_OP_INV_EVICT_sum\", \"&denom\" ] }},\n\n \"readReq128_avg\":{\"$avg\": {\"$divide\": [ \"&TCP_TCR_REQ_XFER128B_COMBINING_sum\", \"&denom\" ] }},\n \"readReq128_min\":{\"$min\": {\"$divide\": [ \"&TCP_TCR_REQ_XFER128B_COMBINING_sum\", \"&denom\" ] }},\n \"readReq128_max\":{\"$max\": {\"$divide\": [ \"&TCP_TCR_REQ_XFER128B_COMBINING_sum\", \"&denom\" ] }}\n\n }},\n {\"$set\": {\n \"array\": [\n {\n \"metric\": \"Req\",\n \"avg\": \"&req_avg\",\n \"min\": \"&req_min\",\n \"max\": \"&req_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Streaming Req\",\n \"avg\": \"&streamingReq_avg\",\n \"min\": \"&streamingReq_min\",\n \"max\": \"&streamingReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Read Req\",\n \"avg\": \"&readReq_avg\",\n \"min\": \"&readReq_min\",\n \"max\": \"&readReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n \n {\n \"metric\": \"Write Req\",\n \"avg\": \"&writeReq_avg\",\n \"min\": \"&writeReq_min\",\n \"max\": \"&writeReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Atomic Req\",\n \"avg\": \"&atomicReq_avg\",\n \"min\": \"&atomicReq_min\",\n \"max\": \"&atomicReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Probe Req\",\n \"avg\": \"&probeReq_avg\",\n \"min\": \"&probeReq_min\",\n \"max\": \"&probeReq_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Hits\",\n \"avg\": \"&hits_avg\",\n \"min\": \"&hits_min\",\n \"max\": \"&hits_max\",\n \"Unit\": {\"$concat\": [\"Hits \", $normUnit]}\n }, \n {\n \"metric\": \"Misses\",\n \"avg\": \"&misses_avg\",\n \"min\": \"&misses_min\",\n \"max\": \"&misses_max\",\n \"Unit\": {\"$concat\": [\"Misses \", $normUnit]}\n },\n {\n \"metric\": \"Cache Hit\",\n \"avg\": \"&cacheHit_avg\",\n \"min\": \"&cacheHit_min\",\n \"max\": \"&cacheHit_max\",\n \"Unit\": \"pct\"\n },\n {\n \"metric\": \"Writeback\",\n \"avg\": \"&writeback_avg\",\n \"min\": \"&writeback_min\",\n \"max\": \"&writeback_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n },\n {\n \"metric\": \"NC Req\",\n \"avg\": \"&nc_avg\",\n \"min\": \"&nc_min\",\n \"max\": \"&nc_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"UC Req\",\n \"avg\": \"&uc_avg\",\n \"min\": \"&uc_min\",\n \"max\": \"&uc_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"CC Req\",\n \"avg\": \"&cc_avg\",\n \"min\": \"&cc_min\",\n \"max\": \"&cc_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"RW Req\",\n \"avg\": \"&rw_avg\",\n \"min\": \"&rw_min\",\n \"max\": \"&rw_max\",\n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"metric\": \"Writeback (Normal)\",\n \"avg\": \"&writebackNorm_avg\",\n \"min\": \"&writebackNorm_min\",\n \"max\": \"&writebackNorm_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n },\n {\n \"metric\": \"Writeback (TC Req)\",\n \"avg\": \"&writebackTC_avg\",\n \"min\": \"&writebackTC_min\",\n \"max\": \"&writebackTC_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n },\n {\n \"metric\": \"Evict (Normal)\",\n \"avg\": \"&evictNorm_avg\",\n \"min\": \"&evictNorm_min\",\n \"max\": \"&evictNorm_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n },\n {\n \"metric\": \"Evict (TC Req)\",\n \"avg\": \"&evictTC_avg\",\n \"min\": \"&evictTC_min\",\n \"max\": \"&evictTC_max\",\n \"Unit\": {\"$concat\": [\"\", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n\n]);", + "type": "table" + } + ], + "title": "L2 Cache Accesses", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Unit 2": true, + "metric 2": true + }, + "indexByName": { + "Unit 1": 9, + "Unit 2": 2, + "avg 1": 3, + "avg 2": 4, + "max 1": 7, + "max 2": 8, + "metric 1": 0, + "metric 2": 1, + "min 1": 5, + "min 2": 6 + }, + "renameByName": { + "avg 1": "Avg (Current)", + "avg 2": "Avg (Baseline)", + "max 1": "Max (Current)", + "max 2": "Max (Baseline)", + "min 1": "Min (Current)", + "min 2": "Min (Baseline)" + } + } + } + ], + "type": "table" + }, + { + "Aggregate": "last", + "BarPadding": 30, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupColName": "Transaction", + "GroupCols": 1, + "GroupGap": 5, + "GroupLabelColor": "#FADE2A", + "GroupLabelFontSize": "120%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 0, + "Horizontal": true, + "LabelColName": "Metric", + "LabelColor": "#ffffff", + "LabelFontSize": "80%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 0, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#FF9830", + "ValueDecimals": 0, + "ValueFontSize": "100%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:81", + "Col": 3, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Selected": true + } + ], + "datasource": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 32 + }, + "id": 60, + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "$Workload1.pmc_perf.aggregate([\n{\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n\n {\"$group\": {\n \"_id\": null,\n \"ioStall_READ_avg\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_RDREQ_IO_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"ioStall_READ_min\": {\n \"$min\": { \"$divide\": [\"&TCC_EA_RDREQ_IO_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"ioStall_READ_max\": {\n \"$max\": { \"$divide\": [\"&TCC_EA_RDREQ_IO_CREDIT_STALL_sum\", \"&denom\"] }\n },\n\n \"gmiStall_READ_avg\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_RDREQ_GMI_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"gmiStall_READ_min\": {\n \"$min\": { \"$divide\": [\"&TCC_EA_RDREQ_GMI_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"gmiStall_READ_max\": {\n \"$max\": { \"$divide\": [\"&TCC_EA_RDREQ_GMI_CREDIT_STALL_sum\", \"&denom\"] }\n },\n\n \"hbmStall_READ_avg\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"hbmStall_READ_min\": {\n \"$min\": { \"$divide\": [\"&TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"hbmStall_READ_max\": {\n \"$max\": { \"$divide\": [\"&TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum\", \"&denom\"] }\n },\n\n \"ioStall_WRITE_avg\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_WRREQ_IO_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"ioStall_WRITE_min\": {\n \"$min\": { \"$divide\": [\"&TCC_EA_WRREQ_IO_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"ioStall_WRITE_max\": {\n \"$max\": { \"$divide\": [\"&TCC_EA_WRREQ_IO_CREDIT_STALL_sum\", \"&denom\"] }\n },\n\n \"gmiStall_WRITE_avg\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_WRREQ_GMI_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"gmiStall_WRITE_min\": {\n \"$min\": { \"$divide\": [\"&TCC_EA_WRREQ_GMI_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"gmiStall_WRITE_max\": {\n \"$max\": { \"$divide\": [\"&TCC_EA_WRREQ_GMI_CREDIT_STALL_sum\", \"&denom\"] }\n },\n\n \"hbmStall_WRITE_avg\": {\n \"$avg\": { \"$divide\": [\"&TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"hbmStall_WRITE_min\": {\n \"$min\": { \"$divide\": [\"&TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum\", \"&denom\"] }\n },\n \"hbmStall_WRITE_max\": {\n \"$max\": { \"$divide\": [\"&TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum\", \"&denom\"] }\n },\n\n \"creditStarvation_avg\": {\n \"$avg\": { \"$divide\": [\"&TCC_TOO_MANY_EA_WRREQS_STALL_sum\", \"&denom\"] }\n },\n \"creditStarvation_min\": {\n \"$min\": { \"$divide\": [\"&TCC_TOO_MANY_EA_WRREQS_STALL_sum\", \"&denom\"] }\n },\n \"creditStarvation_max\": {\n \"$max\": { \"$divide\": [\"&TCC_TOO_MANY_EA_WRREQS_STALL_sum\", \"&denom\"] }\n } \n }},\n {\"$set\": {\n \"array\": [\n {\n \"Metric\": \"Remote Socket Stall\",\n \"Transaction\": \"Read\",\n \"Target\": \"I/O\",\n \"Avg\": \"&ioStall_READ_avg\",\n \"Min\": \"&ioStall_READ_min\",\n \"Max\": \"&ioStall_READ_max\", \n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Peer GCD Stall\",\n \"Transaction\": \"Read\",\n \"Target\": \"GMI\",\n \"Avg\": \"&gmiStall_READ_avg\",\n \"Min\": \"&gmiStall_READ_min\",\n \"Max\": \"&gmiStall_READ_max\", \n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"HBM Stall\",\n \"Transaction\": \"Read\",\n \"Target\": \"HBM\",\n \"Avg\": \"&hbmStall_READ_avg\",\n \"Min\": \"&hbmStall_READ_min\",\n \"Max\": \"&hbmStall_READ_max\", \n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Remote Socket Stall\",\n \"Transaction\": \"Write\",\n \"Target\": \"I/O\",\n \"Avg\": \"&ioStall_WRITE_avg\",\n \"Min\": \"&ioStall_WRITE_min\",\n \"Max\": \"&ioStall_WRITE_max\", \n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Peer GCD Stall\",\n \"Transaction\": \"Write\",\n \"Target\": \"GMI\",\n \"Avg\": \"&gmiStall_WRITE_avg\",\n \"Min\": \"&gmiStall_WRITE_min\",\n \"Max\": \"&gmiStall_WRITE_max\", \n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"HBM Stall\",\n \"Transaction\": \"Write\",\n \"Target\": \"HBM\",\n \"Avg\": \"&hbmStall_WRITE_avg\",\n \"Min\": \"&hbmStall_WRITE_min\",\n \"Max\": \"&hbmStall_WRITE_max\", \n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n },\n {\n \"Metric\": \"Credit Starvation\",\n \"Transaction\": \"Write\",\n \"Target\": \"Fabric\",\n \"Avg\": \"&creditStarvation_avg\",\n \"Min\": \"&creditStarvation_min\",\n \"Max\": \"&creditStarvation_max\", \n \"Unit\": {\"$concat\": [\"Req \", $normUnit]}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "type": "table" + } + ], + "title": "L2 - Fabric Interface Stalls (Cycles $normUnit)", + "transparent": true, + "type": "michaeldmoore-multistat-panel" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "L2 Cache", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 66, + "panels": [ + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLimitValue": 100, + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineValue": 105, + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": true, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "light", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:850", + "Col": 1, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "Hit Rate", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "description": "", + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 17 + }, + "id": 87, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 Cache Hit Rate (Percent) (Channel 0 - 15) ", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLimitValue": 100, + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineValue": 105, + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": true, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "light", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:850", + "Col": 1, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "Hit Rate", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "description": "", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 17 + }, + "id": 92, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "Cache Hit Rate % (Channel 16 - 31) ", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 80, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": false, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:565", + "Col": 3, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "Read Req", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 25 + }, + "id": 81, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L1 - L2 Read Requests(Channel 0-15) : $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": false, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:656", + "Col": 3, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "Read Req", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 25 + }, + "id": 82, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L1 - L 2 Read Requests (Channel 16-31): $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 80, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": false, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:697", + "Col": 4, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "Write Req", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 33 + }, + "id": 83, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L1 - L2 Write Requests (Channel 0-15): $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 0, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": false, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:750", + "Col": 4, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "Write Req", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "id": 84, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L1 - L2 Write Requests (Channel 16-31): $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLimitValue": 100, + "HighLmitLineWidth": 1, + "HighSideMargin": 0, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "100%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 80, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineValue": 105, + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": true, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:791", + "Col": 5, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "AtomicReq", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "id": 85, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L1 - L2 Atomic Requests (Channel 0-15): $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLimitValue": 100, + "HighLmitLineWidth": 1, + "HighSideMargin": 0, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "100%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 80, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineValue": 105, + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": true, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": false, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:791", + "Col": 5, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "AtomicReq", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "id": 91, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L1 - L2 Atomic Requests (Channel 16-31): $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": false, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 6, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Read Req", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 49 + }, + "id": 189, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Read Requests (Channel 0 - 15) : $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": false, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:341", + "Col": 6, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Read Req", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 49 + }, + "id": 195, + "maxDataPoints": 10, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Read Requests (Channel 16-31): $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": false, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 7, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Req", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 57 + }, + "id": 191, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Write Requests (Channel 0 - 15) : $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": false, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:341", + "Col": 7, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Req", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 57 + }, + "id": 197, + "maxDataPoints": 10, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Write Requests (Channel 16-31): $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 8, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA AtomicReq", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 65 + }, + "id": 193, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Atomic Request (Channel 0 - 15): $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": false, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 2, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:341", + "Col": 8, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA AtomicReq", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 65 + }, + "id": 199, + "maxDataPoints": 10, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Atomic Requests (Channel 16-31): $normUnit", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupColName": "", + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 9, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Read Lat - cycles", + "Selected": true + } + ], + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 73 + }, + "hideTimeOverride": false, + "id": 68, + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n\n {\"$group\": {\n \"_id\": null,\n \"b0_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[0]\", \"&TCC_MISS[0]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[0]\"]}, \n { \"$add\": [\"&TCC_HIT[0]\", \"&TCC_MISS[0]\"] }\n ] \n },\n null \n ] \n }\n },\n \"b0_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[0]\"}, \"&denom\"] } \n },\n \"b0_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[0]\"}, \"&denom\"] } \n },\n \"b0_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[0]\"}, \"&denom\"] } \n },\n \"b0_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[0]\"}, \"&denom\"] } \n },\n \"b0_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[0]\"}, \"&denom\"] }\n },\n \"b0_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[0]\"}, \"&denom\"] } \n },\n \"b0_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[0]\"}, \"&denom\"] } \n },\n\n \"b0_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[0]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[0]\", \"&TCC_EA_RDREQ[0]\"]}, null] } },\n \"b0_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[0]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[0]\", \"&TCC_EA_WRREQ[0]\"]}, null] } },\n \"b0_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[0]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[0]\", \"&TCC_EA_ATOMIC[0]\"]}, null]}},\n\n \"b0_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[0]\"}, \"&denom\"] }},\n \"b0_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[0]\"}, \"&denom\"] }},\n \"b0_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[0]\"}, \"&denom\"] }},\n \"b0_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[0]\"}, \"&denom\"] }},\n \"b0_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[0]\"}, \"&denom\"] }},\n \"b0_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[0]\"}, \"&denom\"] }},\n \"b0_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[0]\"}, \"&denom\"] }},\n\n \n \"b1_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[1]\", \"&TCC_MISS[1]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[1]\"]}, \n { \"$add\": [\"&TCC_HIT[1]\", \"&TCC_MISS[1]\"] }\n ] \n },\n null \n ] \n }\n },\n \"b1_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[1]\"}, \"&denom\"] } \n },\n \"b1_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[1]\"}, \"&denom\"] } \n },\n \"b1_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[1]\"}, \"&denom\"] } \n },\n \"b1_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[1]\"}, \"&denom\"] } \n },\n \"b1_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[1]\"}, \"&denom\"] }\n },\n \"b1_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[1]\"}, \"&denom\"] } \n },\n \"b1_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[1]\"}, \"&denom\"] } \n },\n \"b1_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[1]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[1]\", \"&TCC_EA_RDREQ[1]\"]}, null] } },\n \"b1_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[1]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[1]\", \"&TCC_EA_WRREQ[1]\"]}, null] } },\n \"b1_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[1]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[1]\", \"&TCC_EA_ATOMIC[1]\"]}, null]}},\n\n \"b1_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[1]\"}, \"&denom\"] }},\n \"b1_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[1]\"}, \"&denom\"] }},\n \"b1_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[1]\"}, \"&denom\"] }},\n \"b1_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[1]\"}, \"&denom\"] }},\n \"b1_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[1]\"}, \"&denom\"] }},\n \"b1_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[1]\"}, \"&denom\"] }},\n \"b1_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[1]\"}, \"&denom\"] }},\n\n\n \"b2_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[2]\", \"&TCC_MISS[2]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[2]\"]}, \n { \"$add\": [\"&TCC_HIT[2]\", \"&TCC_MISS[2]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b2_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[2]\"}, \"&denom\"] }\n },\n \"b2_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[2]\"}, \"&denom\"] } \n },\n \"b2_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[2]\"}, \"&denom\"] }\n },\n \"b2_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[2]\"}, \"&denom\"] }\n },\n \"b2_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[2]\"}, \"&denom\"] }\n },\n \"b2_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[2]\"}, \"&denom\"] }\n },\n \"b2_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[2]\"}, \"&denom\"] }\n },\n \"b2_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[2]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[2]\", \"&TCC_EA_RDREQ[2]\"]}, null] } },\n \"b2_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[2]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[2]\", \"&TCC_EA_WRREQ[2]\"]}, null] } },\n \"b2_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[2]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[2]\", \"&TCC_EA_ATOMIC[2]\"]}, null]}},\n\n \"b2_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[2]\"}, \"&denom\"] }},\n \"b2_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[2]\"}, \"&denom\"] }},\n \"b2_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[2]\"}, \"&denom\"] }},\n \"b2_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[2]\"}, \"&denom\"] }},\n \"b2_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[2]\"}, \"&denom\"] }},\n \"b2_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[2]\"}, \"&denom\"] }},\n \"b2_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[2]\"}, \"&denom\"] }},\n\n\n \n \"b3_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[3]\", \"&TCC_MISS[3]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[3]\"]}, \n { \"$add\": [\"&TCC_HIT[3]\", \"&TCC_MISS[3]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b3_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[3]\"}, \"&denom\"] } \n },\n \"b3_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[3]\"}, \"&denom\"] } \n },\n \"b3_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[3]\"}, \"&denom\"] }\n },\n \"b3_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[3]\"}, \"&denom\"] }\n },\n \"b3_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[3]\"}, \"&denom\"] }\n },\n \"b3_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[3]\"}, \"&denom\"] }\n },\n \"b3_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[3]\"}, \"&denom\"] } \n },\n \"b3_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[3]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[3]\", \"&TCC_EA_RDREQ[3]\"]}, null] } },\n \"b3_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[3]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[3]\", \"&TCC_EA_WRREQ[3]\"]}, null] } },\n \"b3_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[3]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[3]\", \"&TCC_EA_ATOMIC[3]\"]}, null]}},\n\n \"b3_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[3]\"}, \"&denom\"] }},\n \"b3_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[3]\"}, \"&denom\"] }},\n \"b3_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[3]\"}, \"&denom\"] }},\n \"b3_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[3]\"}, \"&denom\"] }},\n \"b3_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[3]\"}, \"&denom\"] }},\n \"b3_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[3]\"}, \"&denom\"] }},\n \"b3_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[3]\"}, \"&denom\"] }},\n\n\n \n \"b4_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[4]\", \"&TCC_MISS[4]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[4]\"]}, \n { \"$add\": [\"&TCC_HIT[4]\", \"&TCC_MISS[4]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b4_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[4]\"}, \"&denom\"] } \n },\n \"b4_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[4]\"}, \"&denom\"] } \n },\n \"b4_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[4]\"}, \"&denom\"] }\n },\n \"b4_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[4]\"}, \"&denom\"] } \n },\n \"b4_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[4]\"}, \"&denom\"] } \n },\n \"b4_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[4]\"}, \"&denom\"] } \n },\n \"b4_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[4]\"}, \"&denom\"] } \n },\n \"b4_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[4]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[4]\", \"&TCC_EA_RDREQ[4]\"]}, null] } },\n \"b4_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[4]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[4]\", \"&TCC_EA_WRREQ[4]\"]}, null] } },\n \"b4_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[4]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[4]\", \"&TCC_EA_ATOMIC[4]\"]}, null]}},\n\n \"b4_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[4]\"}, \"&denom\"] }},\n \"b4_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[4]\"}, \"&denom\"] }},\n \"b4_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[4]\"}, \"&denom\"] }},\n \"b4_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[4]\"}, \"&denom\"] }},\n \"b4_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[4]\"}, \"&denom\"] }},\n \"b4_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[4]\"}, \"&denom\"] }},\n \"b4_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[4]\"}, \"&denom\"] }},\n\n\n \n \"b5_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[5]\", \"&TCC_MISS[5]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[5]\"]}, \n { \"$add\": [\"&TCC_HIT[5]\", \"&TCC_MISS[5]\"] }\n ] \n },\n null \n ] \n }\n },\n \"b5_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[5]\"}, \"&denom\"] } \n },\n \"b5_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[5]\"}, \"&denom\"] } \n },\n \"b5_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[5]\"}, \"&denom\"] } \n },\n \"b5_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[5]\"}, \"&denom\"] } \n },\n \"b5_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[5]\"}, \"&denom\"] } \n },\n \"b5_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[5]\"}, \"&denom\"] } \n },\n \"b5_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[5]\"}, \"&denom\"] } \n },\n \"b5_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[5]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[5]\", \"&TCC_EA_RDREQ[5]\"]}, null] } },\n \"b5_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[5]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[5]\", \"&TCC_EA_WRREQ[5]\"]}, null] } },\n \"b5_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[5]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[5]\", \"&TCC_EA_ATOMIC[5]\"]}, null]}},\n\n \"b5_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[5]\"}, \"&denom\"] }},\n \"b5_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[5]\"}, \"&denom\"] }},\n \"b5_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[5]\"}, \"&denom\"] }},\n \"b5_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[5]\"}, \"&denom\"] }},\n \"b5_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[5]\"}, \"&denom\"] }},\n \"b5_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[5]\"}, \"&denom\"] }},\n \"b5_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[5]\"}, \"&denom\"] }},\n\n\n \n \"b6_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[6]\", \"&TCC_MISS[6]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[6]\"]}, \n { \"$add\": [\"&TCC_HIT[6]\", \"&TCC_MISS[6]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b6_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[6]\"}, \"&denom\"] } \n },\n \"b6_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[6]\"}, \"&denom\"] } \n },\n \"b6_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[6]\"}, \"&denom\"] } \n },\n \"b6_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[6]\"}, \"&denom\"] } \n },\n \"b6_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[6]\"}, \"&denom\"] } \n },\n \"b6_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[6]\"}, \"&denom\"] }\n },\n \"b6_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[6]\"}, \"&denom\"] } \n },\n \"b6_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[6]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[6]\", \"&TCC_EA_RDREQ[6]\"]}, null] } },\n \"b6_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[6]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[6]\", \"&TCC_EA_WRREQ[6]\"]}, null] } },\n \"b6_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[6]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[6]\", \"&TCC_EA_ATOMIC[6]\"]}, null]}},\n\n \"b6_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[6]\"}, \"&denom\"] }},\n \"b6_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[6]\"}, \"&denom\"] }},\n \"b6_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[6]\"}, \"&denom\"] }},\n \"b6_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[6]\"}, \"&denom\"] }},\n \"b6_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[6]\"}, \"&denom\"] }},\n \"b6_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[6]\"}, \"&denom\"] }},\n \"b6_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[6]\"}, \"&denom\"] }},\n\n\n \n \"b7_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[7]\", \"&TCC_MISS[7]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[7]\"]}, \n { \"$add\": [\"&TCC_HIT[7]\", \"&TCC_MISS[7]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b7_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[7]\"}, \"&denom\"] } \n },\n \"b7_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[7]\"}, \"&denom\"] } \n },\n \"b7_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[7]\"}, \"&denom\"] } \n },\n \"b7_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[7]\"}, \"&denom\"] } \n },\n \"b7_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[7]\"}, \"&denom\"] } \n },\n \"b7_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[7]\"}, \"&denom\"] }\n },\n \"b7_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[7]\"}, \"&denom\"] } \n },\n \"b7_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[7]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[7]\", \"&TCC_EA_RDREQ[7]\"]}, null] } },\n \"b7_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[7]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[7]\", \"&TCC_EA_WRREQ[7]\"]}, null] } },\n \"b7_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[7]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[7]\", \"&TCC_EA_ATOMIC[7]\"]}, null]}},\n\n \"b7_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[7]\"}, \"&denom\"] }},\n \"b7_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[7]\"}, \"&denom\"] }},\n \"b7_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[7]\"}, \"&denom\"] }},\n \"b7_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[7]\"}, \"&denom\"] }},\n \"b7_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[7]\"}, \"&denom\"] }},\n \"b7_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[7]\"}, \"&denom\"] }},\n \"b7_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[7]\"}, \"&denom\"] }},\n\n\n \n \"b8_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[8]\", \"&TCC_MISS[8]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[8]\"]}, \n { \"$add\": [\"&TCC_HIT[8]\", \"&TCC_MISS[8]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b8_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[8]\"}, \"&denom\"] } \n },\n \"b8_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[8]\"}, \"&denom\"] } \n },\n \"b8_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[8]\"}, \"&denom\"] } \n },\n \"b8_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[8]\"}, \"&denom\"] } \n },\n \"b8_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[8]\"}, \"&denom\"] } \n },\n \"b8_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[8]\"}, \"&denom\"] } \n },\n \"b8_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[8]\"}, \"&denom\"] } \n },\n \"b8_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[8]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[8]\", \"&TCC_EA_RDREQ[8]\"]}, null] } },\n \"b8_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[8]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[8]\", \"&TCC_EA_WRREQ[8]\"]}, null] } },\n \"b8_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[8]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[8]\", \"&TCC_EA_ATOMIC[8]\"]}, null]}},\n\n \"b8_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[8]\"}, \"&denom\"] }},\n \"b8_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[8]\"}, \"&denom\"] }},\n \"b8_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[8]\"}, \"&denom\"] }},\n \"b8_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[8]\"}, \"&denom\"] }},\n \"b8_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[8]\"}, \"&denom\"] }},\n \"b8_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[8]\"}, \"&denom\"] }},\n \"b8_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[8]\"}, \"&denom\"] }},\n\n\n \n \"b9_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[9]\", \"&TCC_MISS[9]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[9]\"]}, \n { \"$add\": [\"&TCC_HIT[9]\", \"&TCC_MISS[9]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b9_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[9]\"}, \"&denom\"] } \n },\n \"b9_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[9]\"}, \"&denom\"] } \n },\n \"b9_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[9]\"}, \"&denom\"] } \n },\n \"b9_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[9]\"}, \"&denom\"] } \n },\n \"b9_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[9]\"}, \"&denom\"] } \n },\n \"b9_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[9]\"}, \"&denom\"] } \n },\n \"b9_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[9]\"}, \"&denom\"] } \n },\n \"b9_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[9]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[9]\", \"&TCC_EA_RDREQ[9]\"]}, null] } },\n \"b9_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[9]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[9]\", \"&TCC_EA_WRREQ[9]\"]}, null] } },\n \"b9_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[9]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[9]\", \"&TCC_EA_ATOMIC[9]\"]}, null]}},\n\n \"b9_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[9]\"}, \"&denom\"] }},\n \"b9_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[9]\"}, \"&denom\"] }},\n \"b9_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[9]\"}, \"&denom\"] }},\n \"b9_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[9]\"}, \"&denom\"] }},\n \"b9_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[9]\"}, \"&denom\"] }},\n \"b9_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[9]\"}, \"&denom\"] }},\n \"b9_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[9]\"}, \"&denom\"] }},\n\n\n \n \"b10_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[10]\", \"&TCC_MISS[10]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[10]\"]}, \n { \"$add\": [\"&TCC_HIT[10]\", \"&TCC_MISS[10]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b10_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[10]\"}, \"&denom\"] } \n },\n \"b10_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[10]\"}, \"&denom\"] } \n },\n \"b10_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[10]\"}, \"&denom\"] } \n },\n \"b10_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[10]\"}, \"&denom\"] } \n },\n \"b10_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[10]\"}, \"&denom\"] } \n },\n \"b10_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[10]\"}, \"&denom\"] } \n },\n \"b10_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[10]\"}, \"&denom\"] } \n },\n \"b10_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[10]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[10]\", \"&TCC_EA_RDREQ[10]\"]}, null] } },\n \"b10_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[10]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[10]\", \"&TCC_EA_WRREQ[10]\"]}, null] } },\n \"b10_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[10]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[10]\", \"&TCC_EA_ATOMIC[10]\"]}, null]}},\n\n \"b10_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[10]\"}, \"&denom\"] }},\n \"b10_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[10]\"}, \"&denom\"] }},\n \"b10_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[10]\"}, \"&denom\"] }},\n \"b10_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[10]\"}, \"&denom\"] }},\n \"b10_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[10]\"}, \"&denom\"] }},\n \"b10_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[10]\"}, \"&denom\"] }},\n \"b10_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[10]\"}, \"&denom\"] }},\n\n\n \n \"b11_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[11]\", \"&TCC_MISS[11]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[11]\"]}, \n { \"$add\": [\"&TCC_HIT[11]\", \"&TCC_MISS[11]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b11_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[11]\"}, \"&denom\"] } \n },\n \"b11_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[11]\"}, \"&denom\"] } \n },\n \"b11_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[11]\"}, \"&denom\"] } \n },\n \"b11_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[11]\"}, \"&denom\"] } \n },\n \"b11_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[11]\"}, \"&denom\"] } \n },\n \"b11_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[11]\"}, \"&denom\"] } \n },\n \"b11_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[11]\"}, \"&denom\"] } \n },\n \"b11_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[11]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[11]\", \"&TCC_EA_RDREQ[11]\"]}, null] } },\n \"b11_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[11]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[11]\", \"&TCC_EA_WRREQ[11]\"]}, null] } },\n \"b11_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[11]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[11]\", \"&TCC_EA_ATOMIC[11]\"]}, null]}},\n\n \"b11_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[11]\"}, \"&denom\"] }},\n \"b11_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[11]\"}, \"&denom\"] }},\n \"b11_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[11]\"}, \"&denom\"] }},\n \"b11_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[11]\"}, \"&denom\"] }},\n \"b11_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[11]\"}, \"&denom\"] }},\n \"b11_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[11]\"}, \"&denom\"] }},\n \"b11_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[11]\"}, \"&denom\"] }},\n\n\n \n \"b12_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[12]\", \"&TCC_MISS[12]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[12]\"]}, \n { \"$add\": [\"&TCC_HIT[12]\", \"&TCC_MISS[12]\"] }\n ] \n },\n null \n ] \n }\n },\n \"b12_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[12]\"}, \"&denom\"] } \n },\n \"b12_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[12]\"}, \"&denom\"] } \n },\n \"b12_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[12]\"}, \"&denom\"] } \n },\n \"b12_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[12]\"}, \"&denom\"] } \n },\n \"b12_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[12]\"}, \"&denom\"] } \n },\n \"b12_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[12]\"}, \"&denom\"] } \n },\n \"b12_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[12]\"}, \"&denom\"] } \n },\n \"b12_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[12]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[12]\", \"&TCC_EA_RDREQ[12]\"]}, null] } },\n \"b12_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[12]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[12]\", \"&TCC_EA_WRREQ[12]\"]}, null] } },\n \"b12_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[12]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[12]\", \"&TCC_EA_ATOMIC[12]\"]}, null]}},\n\n \"b12_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[12]\"}, \"&denom\"] }},\n \"b12_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[12]\"}, \"&denom\"] }},\n \"b12_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[12]\"}, \"&denom\"] }},\n \"b12_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[12]\"}, \"&denom\"] }},\n \"b12_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[12]\"}, \"&denom\"] }},\n \"b12_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[12]\"}, \"&denom\"] }},\n \"b12_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[12]\"}, \"&denom\"] }},\n\n\n \n \"b13_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[13]\", \"&TCC_MISS[13]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[13]\"]}, \n { \"$add\": [\"&TCC_HIT[13]\", \"&TCC_MISS[13]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b13_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[13]\"}, \"&denom\"] } \n },\n \"b13_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[13]\"}, \"&denom\"] } \n },\n \"b13_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[13]\"}, \"&denom\"] } \n },\n \"b13_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[13]\"}, \"&denom\"] } \n },\n \"b13_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[13]\"}, \"&denom\"] } \n },\n \"b13_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[13]\"}, \"&denom\"] }\n },\n \"b13_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[13]\"}, \"&denom\"] } \n },\n \"b13_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[13]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[13]\", \"&TCC_EA_RDREQ[13]\"]}, null] } },\n \"b13_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[13]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[13]\", \"&TCC_EA_WRREQ[13]\"]}, null] } },\n \"b13_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[13]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[13]\", \"&TCC_EA_ATOMIC[13]\"]}, null]}},\n\n \"b13_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[13]\"}, \"&denom\"] }},\n \"b13_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[13]\"}, \"&denom\"] }},\n \"b13_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[13]\"}, \"&denom\"] }},\n \"b13_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[13]\"}, \"&denom\"] }},\n \"b13_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[13]\"}, \"&denom\"] }},\n \"b13_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[13]\"}, \"&denom\"] }},\n \"b13_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[13]\"}, \"&denom\"] }},\n\n\n \n \"b14_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[14]\", \"&TCC_MISS[14]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[14]\"]}, \n { \"$add\": [\"&TCC_HIT[14]\", \"&TCC_MISS[14]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b14_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[14]\"}, \"&denom\"] } \n },\n \"b14_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[14]\"}, \"&denom\"] } \n },\n \"b14_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[14]\"}, \"&denom\"] } \n },\n \"b14_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[14]\"}, \"&denom\"] } \n },\n \"b14_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[14]\"}, \"&denom\"] } \n },\n \"b14_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[14]\"}, \"&denom\"] } \n },\n \"b14_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[14]\"}, \"&denom\"] } \n },\n \"b14_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[14]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[14]\", \"&TCC_EA_RDREQ[14]\"]}, null] } },\n \"b14_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[14]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[14]\", \"&TCC_EA_WRREQ[14]\"]}, null] } },\n \"b14_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[14]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[14]\", \"&TCC_EA_ATOMIC[14]\"]}, null]}},\n\n \"b14_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[14]\"}, \"&denom\"] }},\n \"b14_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[14]\"}, \"&denom\"] }},\n \"b14_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[14]\"}, \"&denom\"] }},\n \"b14_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[14]\"}, \"&denom\"] }},\n \"b14_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[14]\"}, \"&denom\"] }},\n \"b14_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[14]\"}, \"&denom\"] }},\n \"b14_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[14]\"}, \"&denom\"] }},\n\n\n \n \"b15_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[15]\", \"&TCC_MISS[15]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[15]\"]}, \n { \"$add\": [\"&TCC_HIT[15]\", \"&TCC_MISS[15]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b15_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[15]\"}, \"&denom\"] } \n },\n \"b15_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[15]\"}, \"&denom\"] } \n },\n \"b15_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[15]\"}, \"&denom\"] } \n },\n \"b15_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[15]\"}, \"&denom\"] } \n },\n \"b15_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[15]\"}, \"&denom\"] } \n },\n \"b15_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[15]\"}, \"&denom\"] } \n },\n \"b15_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[15]\"}, \"&denom\"] }\n },\n \"b15_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[15]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[15]\", \"&TCC_EA_RDREQ[15]\"]}, null] } },\n \"b15_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[15]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[15]\", \"&TCC_EA_WRREQ[15]\"]}, null] } },\n \"b15_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[15]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[15]\", \"&TCC_EA_ATOMIC[15]\"]}, null]}},\n\n \"b15_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[15]\"}, \"&denom\"] }},\n \"b15_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[15]\"}, \"&denom\"] }},\n \"b15_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[15]\"}, \"&denom\"] }},\n \"b15_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[15]\"}, \"&denom\"] }},\n \"b15_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[15]\"}, \"&denom\"] }},\n \"b15_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[15]\"}, \"&denom\"] }},\n \"b15_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[15]\"}, \"&denom\"] }}\n \n }},\n {\"$set\": {\n \"array\": [\n {\n \"Channel\": \"0\",\n \"Hit Rate\": \"&b0_hitRate\",\n \"Req\": \"&b0_req\",\n \"Read Req\": \"&b0_readReq\",\n \"Write Req\": \"&b0_writeReq\",\n \"AtomicReq\": \"&b0_atomicReq\",\n \"EA Read Req\": \"&b0_eaReadReq\",\n \"EA Write Req\": \"&b0_eaWriteReq\",\n \"EA AtomicReq\": \"&b0_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b0_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b0_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b0_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b0_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b0_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b0_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b0_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b0_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b0_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b0_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n },\n {\n \"Channel\": \"1\",\n \"Hit Rate\": \"&b1_hitRate\",\n \"Req\": \"&b1_req\",\n \"Read Req\": \"&b1_readReq\",\n \"Write Req\": \"&b1_writeReq\",\n \"AtomicReq\": \"&b1_atomicReq\",\n \"EA Read Req\": \"&b1_eaReadReq\",\n \"EA Write Req\": \"&b1_eaWriteReq\",\n \"EA AtomicReq\": \"&b1_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b1_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b1_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b1_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b1_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b1_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b1_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b1_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b1_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b1_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b1_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n },\n {\n \"Channel\": \"2\",\n \"Hit Rate\": \"&b2_hitRate\",\n \"Req\": \"&b2_req\",\n \"Read Req\": \"&b2_readReq\",\n \"Write Req\": \"&b2_writeReq\",\n \"AtomicReq\": \"&b2_atomicReq\",\n \"EA Read Req\": \"&b2_eaReadReq\",\n \"EA Write Req\": \"&b2_eaWriteReq\",\n \"EA AtomicReq\": \"&b2_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b2_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b2_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b2_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b2_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b2_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b2_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b2_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b2_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b2_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b2_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"3\",\n \"Hit Rate\": \"&b3_hitRate\",\n \"Req\": \"&b3_req\",\n \"Read Req\": \"&b3_readReq\",\n \"Write Req\": \"&b3_writeReq\",\n \"AtomicReq\": \"&b3_atomicReq\",\n \"EA Read Req\": \"&b3_eaReadReq\",\n \"EA Write Req\": \"&b3_eaWriteReq\",\n \"EA AtomicReq\": \"&b3_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b3_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b3_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b3_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b3_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b3_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b3_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b3_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b3_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b3_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b3_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"4\",\n \"Hit Rate\": \"&b4_hitRate\",\n \"Req\": \"&b4_req\",\n \"Read Req\": \"&b4_readReq\",\n \"Write Req\": \"&b4_writeReq\",\n \"AtomicReq\": \"&b4_atomicReq\",\n \"EA Read Req\": \"&b4_eaReadReq\",\n \"EA Write Req\": \"&b4_eaWriteReq\",\n \"EA AtomicReq\": \"&b4_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b4_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b4_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b4_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b4_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b4_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b4_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b4_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b4_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b4_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b4_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"5\",\n \"Hit Rate\": \"&b5_hitRate\",\n \"Req\": \"&b5_req\",\n \"Read Req\": \"&b5_readReq\",\n \"Write Req\": \"&b5_writeReq\",\n \"AtomicReq\": \"&b5_atomicReq\",\n \"EA Read Req\": \"&b5_eaReadReq\",\n \"EA Write Req\": \"&b5_eaWriteReq\",\n \"EA AtomicReq\": \"&b5_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b5_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b5_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b5_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b5_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b5_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b5_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b5_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b5_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b5_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b5_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"6\",\n \"Hit Rate\": \"&b6_hitRate\",\n \"Req\": \"&b6_req\",\n \"Read Req\": \"&b6_readReq\",\n \"Write Req\": \"&b6_writeReq\",\n \"AtomicReq\": \"&b6_atomicReq\",\n \"EA Read Req\": \"&b6_eaReadReq\",\n \"EA Write Req\": \"&b6_eaWriteReq\",\n \"EA AtomicReq\": \"&b6_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b6_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b6_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b6_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b6_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b6_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b6_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b6_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b6_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b6_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b6_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"7\",\n \"Hit Rate\": \"&b7_hitRate\",\n \"Req\": \"&b7_req\",\n \"Read Req\": \"&b7_readReq\",\n \"Write Req\": \"&b7_writeReq\",\n \"AtomicReq\": \"&b7_atomicReq\",\n \"EA Read Req\": \"&b7_eaReadReq\",\n \"EA Write Req\": \"&b7_eaWriteReq\",\n \"EA AtomicReq\": \"&b7_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b7_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b7_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b7_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b7_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b7_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b7_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b7_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b7_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b7_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b7_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"8\",\n \"Hit Rate\": \"&b8_hitRate\",\n \"Req\": \"&b8_req\",\n \"Read Req\": \"&b8_readReq\",\n \"Write Req\": \"&b8_writeReq\",\n \"AtomicReq\": \"&b8_atomicReq\",\n \"EA Read Req\": \"&b8_eaReadReq\",\n \"EA Write Req\": \"&b8_eaWriteReq\",\n \"EA AtomicReq\": \"&b8_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b8_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b8_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b8_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b8_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b8_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b8_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b8_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b8_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b8_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b8_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"9\",\n \"Hit Rate\": \"&b9_hitRate\",\n \"Req\": \"&b9_req\",\n \"Read Req\": \"&b9_readReq\",\n \"Write Req\": \"&b9_writeReq\",\n \"AtomicReq\": \"&b9_atomicReq\",\n \"EA Read Req\": \"&b9_eaReadReq\",\n \"EA Write Req\": \"&b9_eaWriteReq\",\n \"EA AtomicReq\": \"&b9_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b9_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b9_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b9_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b9_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b9_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b9_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b9_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b9_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b9_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b9_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"10\",\n \"Hit Rate\": \"&b10_hitRate\",\n \"Req\": \"&b10_req\",\n \"Read Req\": \"&b10_readReq\",\n \"Write Req\": \"&b10_writeReq\",\n \"AtomicReq\": \"&b10_atomicReq\",\n \"EA Read Req\": \"&b10_eaReadReq\",\n \"EA Write Req\": \"&b10_eaWriteReq\",\n \"EA AtomicReq\": \"&b10_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b10_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b10_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b10_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b10_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b10_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b10_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b10_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b10_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b10_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b10_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"11\",\n \"Hit Rate\": \"&b11_hitRate\",\n \"Req\": \"&b11_req\",\n \"Read Req\": \"&b11_readReq\",\n \"Write Req\": \"&b11_writeReq\",\n \"AtomicReq\": \"&b11_atomicReq\",\n \"EA Read Req\": \"&b11_eaReadReq\",\n \"EA Write Req\": \"&b11_eaWriteReq\",\n \"EA AtomicReq\": \"&b11_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b11_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b11_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b11_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b11_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b11_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b11_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b11_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b11_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b11_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b11_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"12\",\n \"Hit Rate\": \"&b12_hitRate\",\n \"Req\": \"&b12_req\",\n \"Read Req\": \"&b12_readReq\",\n \"Write Req\": \"&b12_writeReq\",\n \"AtomicReq\": \"&b12_atomicReq\",\n \"EA Read Req\": \"&b12_eaReadReq\",\n \"EA Write Req\": \"&b12_eaWriteReq\",\n \"EA AtomicReq\": \"&b12_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b12_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b12_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b12_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b12_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b12_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b12_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b12_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b12_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b12_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b12_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"13\",\n \"Hit Rate\": \"&b13_hitRate\",\n \"Req\": \"&b13_req\",\n \"Read Req\": \"&b13_readReq\",\n \"Write Req\": \"&b13_writeReq\",\n \"AtomicReq\": \"&b13_atomicReq\",\n \"EA Read Req\": \"&b13_eaReadReq\",\n \"EA Write Req\": \"&b13_eaWriteReq\",\n \"EA AtomicReq\": \"&b13_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b13_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b13_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b13_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b13_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b13_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b13_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b13_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b13_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b13_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b13_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n\n },\n {\n \"Channel\": \"14\",\n \"Hit Rate\": \"&b14_hitRate\",\n \"Req\": \"&b14_req\",\n \"Read Req\": \"&b14_readReq\",\n \"Write Req\": \"&b14_writeReq\",\n \"AtomicReq\": \"&b14_atomicReq\",\n \"EA Read Req\": \"&b14_eaReadReq\",\n \"EA Write Req\": \"&b14_eaWriteReq\",\n \"EA AtomicReq\": \"&b14_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b14_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b14_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b14_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b14_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b14_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b14_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b14_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b14_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b14_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b14_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n\n },\n {\n \"Channel\": \"15\",\n \"Hit Rate\": \"&b15_hitRate\",\n \"Req\": \"&b15_req\",\n \"Read Req\": \"&b15_readReq\",\n \"Write Req\": \"&b15_writeReq\",\n \"AtomicReq\": \"&b15_atomicReq\",\n \"EA Read Req\": \"&b15_eaReadReq\",\n \"EA Write Req\": \"&b15_eaWriteReq\",\n \"EA AtomicReq\": \"&b15_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b15_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b15_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b15_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b15_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b15_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b15_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b15_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b15_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b15_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b15_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"$array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"$array\"\n }}\n]);", + "type": "table" + } + ], + "title": "L2 - EA Read Latency (Channel 0 - 15) (Cycles)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:341", + "Col": 9, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Read Lat - cycles", + "Selected": true + } + ], + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 73 + }, + "id": 70, + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "Zzw1yR27k" + }, + "rawQuery": true, + "refId": "A", + "target": "${Workload1}.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n\n {\"$addFields\": {\n \"denom\": {\n \"$switch\" : {\n \"branches\": [\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Wave\"]} ,\n \"then\": \"&SQ_WAVES\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Cycle\"]} ,\n \"then\": \"&GRBM_GUI_ACTIVE\"\n },\n {\n \"case\": { \"$eq\": [ $normUnit, \"per Sec\"]} ,\n \"then\": {\"$divide\":[{\"$subtract\": [\"&EndNs\", \"&BeginNs\" ]}, 1000000000]}\n }\n ],\n \"default\": 1\n } \n } \n }},\n\n {\"$group\": {\n \"_id\": null,\n \"b16_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[16]\", \"&TCC_MISS[16]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[16]\"]}, \n { \"$add\": [\"&TCC_HIT[16]\", \"&TCC_MISS[16]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b16_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[16]\"}, \"&denom\"] } \n },\n \"b16_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[16]\"}, \"&denom\"] } \n },\n \"b16_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[16]\"}, \"&denom\"] } \n },\n \"b16_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[16]\"}, \"&denom\"] } \n },\n \"b16_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[16]\"}, \"&denom\"] }\n },\n \"b16_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[16]\"}, \"&denom\"] } \n },\n \"b16_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[16]\"}, \"&denom\"] } \n },\n\n \"b16_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[16]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[16]\", \"&TCC_EA_RDREQ[16]\"]}, null] } },\n \"b16_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[16]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[16]\", \"&TCC_EA_WRREQ[16]\"]}, null] } },\n \"b16_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[16]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[16]\", \"&TCC_EA_ATOMIC[16]\"]}, null]}},\n \"b16_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[16]\"}, \"&denom\"] }},\n \"b16_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[16]\"}, \"&denom\"] }},\n \"b16_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[16]\"}, \"&denom\"] }},\n \"b16_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[16]\"}, \"&denom\"] }},\n \"b16_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[16]\"}, \"&denom\"] }},\n \"b16_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[16]\"}, \"&denom\"] }},\n \"b16_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[16]\"}, \"&denom\"] }},\n\n \n \"b17_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[17]\", \"&TCC_MISS[17]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[17]\"]}, \n { \"$add\": [\"&TCC_HIT[17]\", \"&TCC_MISS[17]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b17_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[17]\"}, \"&denom\"] } \n },\n \"b17_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[17]\"}, \"&denom\"] } \n },\n \"b17_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[17]\"}, \"&denom\"] } \n },\n \"b17_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[17]\"}, \"&denom\"] } \n },\n \"b17_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[17]\"}, \"&denom\"] }\n },\n \"b17_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[17]\"}, \"&denom\"] } \n },\n \"b17_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[17]\"}, \"&denom\"] } \n },\n \"b17_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[17]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[17]\", \"&TCC_EA_RDREQ[17]\"]}, null] } },\n \"b17_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[17]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[17]\", \"&TCC_EA_WRREQ[17]\"]}, null] } },\n \"b17_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[17]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[17]\", \"&TCC_EA_ATOMIC[17]\"]}, null]}},\n \"b17_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[17]\"}, \"&denom\"] }},\n \"b17_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[17]\"}, \"&denom\"] }},\n \"b17_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[17]\"}, \"&denom\"] }},\n \"b17_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[17]\"}, \"&denom\"] }},\n \"b17_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[17]\"}, \"&denom\"] }},\n \"b17_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[17]\"}, \"&denom\"] }},\n \"b17_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[17]\"}, \"&denom\"] }},\n\n \n \"b18_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[18]\", \"&TCC_MISS[18]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[18]\"]}, \n { \"$add\": [\"&TCC_HIT[18]\", \"&TCC_MISS[18]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b18_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[18]\"}, \"&denom\"] }\n },\n \"b18_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[18]\"}, \"&denom\"] } \n },\n \"b18_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[18]\"}, \"&denom\"] }\n },\n \"b18_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[18]\"}, \"&denom\"] }\n },\n \"b18_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[18]\"}, \"&denom\"] }\n },\n \"b18_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[18]\"}, \"&denom\"] }\n },\n \"b18_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[18]\"}, \"&denom\"] }\n },\n \"b18_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[18]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[18]\", \"&TCC_EA_RDREQ[18]\"]}, null] } },\n \"b18_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[18]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[18]\", \"&TCC_EA_WRREQ[18]\"]}, null] } },\n \"b18_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[18]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[18]\", \"&TCC_EA_ATOMIC[18]\"]}, null]}},\n \"b18_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[18]\"}, \"&denom\"] }},\n \"b18_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[18]\"}, \"&denom\"] }},\n \"b18_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[18]\"}, \"&denom\"] }},\n \"b18_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[18]\"}, \"&denom\"] }},\n \"b18_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[18]\"}, \"&denom\"] }},\n \"b18_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[18]\"}, \"&denom\"] }},\n \"b18_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[18]\"}, \"&denom\"] }},\n\n \n \"b19_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[19]\", \"&TCC_MISS[19]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[19]\"]}, \n { \"$add\": [\"&TCC_HIT[19]\", \"&TCC_MISS[19]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b19_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[19]\"}, \"&denom\"] } \n },\n \"b19_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[19]\"}, \"&denom\"] } \n },\n \"b19_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[19]\"}, \"&denom\"] }\n },\n \"b19_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[19]\"}, \"&denom\"] }\n },\n \"b19_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[19]\"}, \"&denom\"] }\n },\n \"b19_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[19]\"}, \"&denom\"] }\n },\n \"b19_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[19]\"}, \"&denom\"] } \n },\n \"b19_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[19]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[19]\", \"&TCC_EA_RDREQ[19]\"]}, null] } },\n \"b19_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[19]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[19]\", \"&TCC_EA_WRREQ[19]\"]}, null] } },\n \"b19_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[19]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[19]\", \"&TCC_EA_ATOMIC[19]\"]}, null]}},\n \"b19_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[19]\"}, \"&denom\"] }},\n \"b19_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[19]\"}, \"&denom\"] }},\n \"b19_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[19]\"}, \"&denom\"] }},\n \"b19_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[19]\"}, \"&denom\"] }},\n \"b19_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[19]\"}, \"&denom\"] }},\n \"b19_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[19]\"}, \"&denom\"] }},\n \"b19_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[19]\"}, \"&denom\"] }},\n\n \n \"b20_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[20]\", \"&TCC_MISS[20]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[20]\"]}, \n { \"$add\": [\"&TCC_HIT[20]\", \"&TCC_MISS[20]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b20_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[20]\"}, \"&denom\"] } \n },\n \"b20_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[20]\"}, \"&denom\"] } \n },\n \"b20_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[20]\"}, \"&denom\"] }\n },\n \"b20_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[20]\"}, \"&denom\"] } \n },\n \"b20_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[20]\"}, \"&denom\"] } \n },\n \"b20_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[20]\"}, \"&denom\"] } \n },\n \"b20_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[20]\"}, \"&denom\"] } \n },\n \"b20_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[20]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[20]\", \"&TCC_EA_RDREQ[20]\"]}, null] } },\n \"b20_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[20]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[20]\", \"&TCC_EA_WRREQ[20]\"]}, null] } },\n \"b20_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[20]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[20]\", \"&TCC_EA_ATOMIC[20]\"]}, null]}},\n \"b20_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[20]\"}, \"&denom\"] }},\n \"b20_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[20]\"}, \"&denom\"] }},\n \"b20_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[20]\"}, \"&denom\"] }},\n \"b20_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[20]\"}, \"&denom\"] }},\n \"b20_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[20]\"}, \"&denom\"] }},\n \"b20_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[20]\"}, \"&denom\"] }},\n \"b20_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[20]\"}, \"&denom\"] }},\n\n \n\n \"b21_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[21]\", \"&TCC_MISS[21]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[21]\"]}, \n { \"$add\": [\"&TCC_HIT[21]\", \"&TCC_MISS[21]\"] }\n ] \n },\n null \n ] \n }\n },\n \"b21_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[21]\"}, \"&denom\"] } \n },\n \"b21_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[21]\"}, \"&denom\"] } \n },\n \"b21_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[21]\"}, \"&denom\"] } \n },\n \"b21_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[21]\"}, \"&denom\"] } \n },\n \"b21_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[21]\"}, \"&denom\"] } \n },\n \"b21_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[21]\"}, \"&denom\"] } \n },\n \"b21_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[21]\"}, \"&denom\"] } \n },\n \"b21_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[21]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[21]\", \"&TCC_EA_RDREQ[21]\"]}, null] } },\n \"b21_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[21]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[21]\", \"&TCC_EA_WRREQ[21]\"]}, null] } },\n \"b21_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[21]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[21]\", \"&TCC_EA_ATOMIC[21]\"]}, null]}},\n \"b21_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[21]\"}, \"&denom\"] }},\n \"b21_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[21]\"}, \"&denom\"] }},\n \"b21_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[21]\"}, \"&denom\"] }},\n \"b21_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[21]\"}, \"&denom\"] }},\n \"b21_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[21]\"}, \"&denom\"] }},\n \"b21_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[21]\"}, \"&denom\"] }},\n \"b21_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[21]\"}, \"&denom\"] }},\n\n \n\n \"b22_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[22]\", \"&TCC_MISS[22]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[22]\"]}, \n { \"$add\": [\"&TCC_HIT[22]\", \"&TCC_MISS[22]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b22_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[22]\"}, \"&denom\"] } \n },\n \"b22_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[22]\"}, \"&denom\"] } \n },\n \"b22_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[22]\"}, \"&denom\"] } \n },\n \"b22_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[22]\"}, \"&denom\"] } \n },\n \"b22_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[22]\"}, \"&denom\"] } \n },\n \"b22_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[22]\"}, \"&denom\"] }\n },\n \"b22_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[22]\"}, \"&denom\"] } \n },\n \"b22_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[22]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[22]\", \"&TCC_EA_RDREQ[22]\"]}, null] } },\n \"b22_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[22]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[22]\", \"&TCC_EA_WRREQ[22]\"]}, null] } },\n \"b22_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[22]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[22]\", \"&TCC_EA_ATOMIC[22]\"]}, null]}},\n \"b22_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[22]\"}, \"&denom\"] }},\n \"b22_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[22]\"}, \"&denom\"] }},\n \"b22_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[22]\"}, \"&denom\"] }},\n \"b22_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[22]\"}, \"&denom\"] }},\n \"b22_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[22]\"}, \"&denom\"] }},\n \"b22_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[22]\"}, \"&denom\"] }},\n \"b22_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[22]\"}, \"&denom\"] }},\n\n \n\n \"b23_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[23]\", \"&TCC_MISS[23]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[23]\"]}, \n { \"$add\": [\"&TCC_HIT[23]\", \"&TCC_MISS[23]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b23_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[23]\"}, \"&denom\"] } \n },\n \"b23_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[23]\"}, \"&denom\"] } \n },\n \"b23_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[23]\"}, \"&denom\"] } \n },\n \"b23_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[23]\"}, \"&denom\"] } \n },\n \"b23_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[23]\"}, \"&denom\"] } \n },\n \"b23_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[23]\"}, \"&denom\"] }\n },\n \"b23_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[23]\"}, \"&denom\"] } \n },\n \"b23_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[23]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[23]\", \"&TCC_EA_RDREQ[23]\"]}, null] } },\n \"b23_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[23]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[23]\", \"&TCC_EA_WRREQ[23]\"]}, null] } },\n \"b23_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[23]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[23]\", \"&TCC_EA_ATOMIC[23]\"]}, null]}},\n \"b23_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[23]\"}, \"&denom\"] }},\n \"b23_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[23]\"}, \"&denom\"] }},\n \"b23_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[23]\"}, \"&denom\"] }},\n \"b23_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[23]\"}, \"&denom\"] }},\n \"b23_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[23]\"}, \"&denom\"] }},\n \"b23_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[23]\"}, \"&denom\"] }},\n \"b23_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[23]\"}, \"&denom\"] }},\n\n \n \"b24_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[24]\", \"&TCC_MISS[24]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[24]\"]}, \n { \"$add\": [\"&TCC_HIT[24]\", \"&TCC_MISS[24]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b24_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[24]\"}, \"&denom\"] } \n },\n \"b24_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[24]\"}, \"&denom\"] } \n },\n \"b24_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[24]\"}, \"&denom\"] } \n },\n \"b24_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[24]\"}, \"&denom\"] } \n },\n \"b24_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[24]\"}, \"&denom\"] } \n },\n \"b24_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[24]\"}, \"&denom\"] } \n },\n \"b24_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[24]\"}, \"&denom\"] } \n },\n \"b24_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[24]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[24]\", \"&TCC_EA_RDREQ[24]\"]}, null] } },\n \"b24_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[24]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[24]\", \"&TCC_EA_WRREQ[24]\"]}, null] } },\n \"b24_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[24]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[24]\", \"&TCC_EA_ATOMIC[24]\"]}, null]}},\n \"b24_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[24]\"}, \"&denom\"] }},\n \"b24_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[24]\"}, \"&denom\"] }},\n \"b24_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[24]\"}, \"&denom\"] }},\n \"b24_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[24]\"}, \"&denom\"] }},\n \"b24_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[24]\"}, \"&denom\"] }},\n \"b24_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[24]\"}, \"&denom\"] }},\n \"b24_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[24]\"}, \"&denom\"] }},\n\n \n \"b25_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[25]\", \"&TCC_MISS[25]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[25]\"]}, \n { \"$add\": [\"&TCC_HIT[25]\", \"&TCC_MISS[25]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b25_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[25]\"}, \"&denom\"] } \n },\n \"b25_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[25]\"}, \"&denom\"] } \n },\n \"b25_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[25]\"}, \"&denom\"] } \n },\n \"b25_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[25]\"}, \"&denom\"] } \n },\n \"b25_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[25]\"}, \"&denom\"] } \n },\n \"b25_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[25]\"}, \"&denom\"] } \n },\n \"b25_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[25]\"}, \"&denom\"] } \n },\n \"b25_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[25]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[25]\", \"&TCC_EA_RDREQ[25]\"]}, null] } },\n \"b25_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[25]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[25]\", \"&TCC_EA_WRREQ[25]\"]}, null] } },\n \"b25_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[25]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[25]\", \"&TCC_EA_ATOMIC[25]\"]}, null]}},\n \"b25_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[25]\"}, \"&denom\"] }},\n \"b25_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[25]\"}, \"&denom\"] }},\n \"b25_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[25]\"}, \"&denom\"] }},\n \"b25_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[25]\"}, \"&denom\"] }},\n \"b25_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[25]\"}, \"&denom\"] }},\n \"b25_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[25]\"}, \"&denom\"] }},\n \"b25_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[25]\"}, \"&denom\"] }},\n\n \n \"b26_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[26]\", \"&TCC_MISS[26]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[26]\"]}, \n { \"$add\": [\"&TCC_HIT[26]\", \"&TCC_MISS[26]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b26_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[26]\"}, \"&denom\"] } \n },\n \"b26_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[26]\"}, \"&denom\"] } \n },\n \"b26_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[26]\"}, \"&denom\"] } \n },\n \"b26_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[26]\"}, \"&denom\"] } \n },\n \"b26_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[26]\"}, \"&denom\"] } \n },\n \"b26_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[26]\"}, \"&denom\"] } \n },\n \"b26_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[26]\"}, \"&denom\"] } \n },\n \"b26_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[26]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[26]\", \"&TCC_EA_RDREQ[26]\"]}, null] } },\n \"b26_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[26]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[26]\", \"&TCC_EA_WRREQ[26]\"]}, null] } },\n \"b26_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[26]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[26]\", \"&TCC_EA_ATOMIC[26]\"]}, null]}},\n \"b26_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[26]\"}, \"&denom\"] }},\n \"b26_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[26]\"}, \"&denom\"] }},\n \"b26_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[26]\"}, \"&denom\"] }},\n \"b26_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[26]\"}, \"&denom\"] }},\n \"b26_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[26]\"}, \"&denom\"] }},\n \"b26_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[26]\"}, \"&denom\"] }},\n \"b26_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[26]\"}, \"&denom\"] }},\n\n \n \"b27_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[27]\", \"&TCC_MISS[27]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[27]\"]}, \n { \"$add\": [\"&TCC_HIT[27]\", \"&TCC_MISS[27]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b27_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[27]\"}, \"&denom\"] } \n },\n \"b27_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[27]\"}, \"&denom\"] } \n },\n \"b27_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[27]\"}, \"&denom\"] } \n },\n \"b27_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[27]\"}, \"&denom\"] } \n },\n \"b27_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[27]\"}, \"&denom\"] } \n },\n \"b27_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[27]\"}, \"&denom\"] } \n },\n \"b27_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[27]\"}, \"&denom\"] } \n },\n \"b27_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[27]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[27]\", \"&TCC_EA_RDREQ[27]\"]}, null] } },\n \"b27_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[27]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[27]\", \"&TCC_EA_WRREQ[27]\"]}, null] } },\n \"b27_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[27]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[27]\", \"&TCC_EA_ATOMIC[27]\"]}, null]}},\n \"b27_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[27]\"}, \"&denom\"] }},\n \"b27_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[27]\"}, \"&denom\"] }},\n \"b27_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[27]\"}, \"&denom\"] }},\n \"b27_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[27]\"}, \"&denom\"] }},\n \"b27_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[27]\"}, \"&denom\"] }},\n \"b27_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[27]\"}, \"&denom\"] }},\n \"b27_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[27]\"}, \"&denom\"] }},\n\n \n \"b28_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[28]\", \"&TCC_MISS[28]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[28]\"]}, \n { \"$add\": [\"&TCC_HIT[28]\", \"&TCC_MISS[28]\"] }\n ] \n },\n null \n ] \n }\n },\n \"b28_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[28]\"}, \"&denom\"] } \n },\n \"b28_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[28]\"}, \"&denom\"] } \n },\n \"b28_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[28]\"}, \"&denom\"] } \n },\n \"b28_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[28]\"}, \"&denom\"] } \n },\n \"b28_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[28]\"}, \"&denom\"] } \n },\n \"b28_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[28]\"}, \"&denom\"] } \n },\n \"b28_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[28]\"}, \"&denom\"] } \n },\n \"b28_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[28]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[28]\", \"&TCC_EA_RDREQ[28]\"]}, null] } },\n \"b28_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[28]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[28]\", \"&TCC_EA_WRREQ[28]\"]}, null] } },\n \"b28_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[28]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[28]\", \"&TCC_EA_ATOMIC[28]\"]}, null]}},\n \"b28_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[28]\"}, \"&denom\"] }},\n \"b28_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[28]\"}, \"&denom\"] }},\n \"b28_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[28]\"}, \"&denom\"] }},\n \"b28_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[28]\"}, \"&denom\"] }},\n \"b28_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[28]\"}, \"&denom\"] }},\n \"b28_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[28]\"}, \"&denom\"] }},\n \"b28_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[28]\"}, \"&denom\"] }},\n\n \n \"b29_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[29]\", \"&TCC_MISS[29]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[29]\"]}, \n { \"$add\": [\"&TCC_HIT[29]\", \"&TCC_MISS[29]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b29_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[29]\"}, \"&denom\"] } \n },\n \"b29_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[29]\"}, \"&denom\"] } \n },\n \"b29_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[29]\"}, \"&denom\"] } \n },\n \"b29_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[29]\"}, \"&denom\"] } \n },\n \"b29_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[29]\"}, \"&denom\"] } \n },\n \"b29_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[29]\"}, \"&denom\"] }\n },\n \"b29_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[29]\"}, \"&denom\"] } \n },\n \"b29_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[29]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[29]\", \"&TCC_EA_RDREQ[29]\"]}, null] } },\n \"b29_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[29]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[29]\", \"&TCC_EA_WRREQ[29]\"]}, null] } },\n \"b29_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[29]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[29]\", \"&TCC_EA_ATOMIC[29]\"]}, null]}},\n \"b29_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[29]\"}, \"&denom\"] }},\n \"b29_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[29]\"}, \"&denom\"] }},\n \"b29_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[29]\"}, \"&denom\"] }},\n \"b29_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[29]\"}, \"&denom\"] }},\n \"b29_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[29]\"}, \"&denom\"] }},\n \"b29_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[29]\"}, \"&denom\"] }},\n \"b29_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[29]\"}, \"&denom\"] }},\n\n \n \"b30_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[30]\", \"&TCC_MISS[30]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[30]\"]}, \n { \"$add\": [\"&TCC_HIT[30]\", \"&TCC_MISS[30]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b30_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[30]\"}, \"&denom\"] } \n },\n \"b30_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[30]\"}, \"&denom\"] } \n },\n \"b30_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[30]\"}, \"&denom\"] } \n },\n \"b30_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[30]\"}, \"&denom\"] } \n },\n \"b30_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[30]\"}, \"&denom\"] } \n },\n \"b30_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[30]\"}, \"&denom\"] } \n },\n \"b30_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[30]\"}, \"&denom\"] } \n },\n \"b30_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[30]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[30]\", \"&TCC_EA_RDREQ[30]\"]}, null] } },\n \"b30_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[30]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[30]\", \"&TCC_EA_WRREQ[30]\"]}, null] } },\n \"b30_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[30]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[30]\", \"&TCC_EA_ATOMIC[30]\"]}, null]}},\n \"b30_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[30]\"}, \"&denom\"] }},\n \"b30_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[30]\"}, \"&denom\"] }},\n \"b30_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[30]\"}, \"&denom\"] }},\n \"b30_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[30]\"}, \"&denom\"] }},\n \"b30_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[30]\"}, \"&denom\"] }},\n \"b30_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[30]\"}, \"&denom\"] }},\n \"b30_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[30]\"}, \"&denom\"] }},\n\n \n \"b31_hitRate\": {\n \"$avg\":{ \n \"$cond\": [ \n {\"$ne\": [{ \"$add\": [\"&TCC_HIT[31]\", \"&TCC_MISS[31]\"] }, 0]}, \n {\"$divide\": [\n { \"$multiply\": [100, \"&TCC_HIT[31]\"]}, \n { \"$add\": [\"&TCC_HIT[31]\", \"&TCC_MISS[31]\"] }\n ] \n },\n null\n ] \n }\n },\n \"b31_req\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_REQ[31]\"}, \"&denom\"] } \n },\n \"b31_readReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_READ[31]\"}, \"&denom\"] } \n },\n \"b31_writeReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_WRITE[31]\"}, \"&denom\"] } \n },\n \"b31_atomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_ATOMIC[31]\"}, \"&denom\"] } \n },\n \"b31_eaReadReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ[31]\"}, \"&denom\"] } \n },\n \"b31_eaWriteReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ[31]\"}, \"&denom\"] } \n },\n \"b31_eaAtomicReq\": {\n \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_ATOMIC[31]\"}, \"&denom\"] }\n },\n \"b31_eaReadLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_RDREQ[31]\", 0]}, {\"$divide\": [\"&TCC_EA_RDREQ_LEVEL[31]\", \"&TCC_EA_RDREQ[31]\"]}, null] } },\n \"b31_eaWriteLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_WRREQ[31]\", 0]}, {\"$divide\": [\"&TCC_EA_WRREQ_LEVEL[31]\", \"&TCC_EA_WRREQ[31]\"]}, null] } },\n \"b31_eaAtomicLat\": { \"$avg\": {\"$cond\": [{\"$ne\": [\"&TCC_EA_ATOMIC[31]\", 0]}, {\"$divide\": [\"&TCC_EA_ATOMIC_LEVEL[31]\", \"&TCC_EA_ATOMIC[31]\"]}, null]}},\n \"b31_ea_read_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_IO_CREDIT_STALL[31]\"}, \"&denom\"] }},\n \"b31_ea_read_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_GMI_CREDIT_STALL[31]\"}, \"&denom\"] }},\n \"b31_ea_read_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_RDREQ_DRAM_CREDIT_STALL[31]\"}, \"&denom\"] }},\n \"b31_ea_write_stall_io_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_IO_CREDIT_STALL[31]\"}, \"&denom\"] }},\n \"b31_ea_write_stall_gmi_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_GMI_CREDIT_STALL[31]\"}, \"&denom\"] }},\n \"b31_ea_write_stall_dram_credit\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_EA_WRREQ_DRAM_CREDIT_STALL[31]\"}, \"&denom\"] }},\n \"b31_ea_write_stall_too_many\": { \"$avg\":{ \"$divide\":[{\"$toInt\": \"&TCC_TOO_MANY_EA_WRREQS_STALL[31]\"}, \"&denom\"] }}\n\n \n }},\n {\"$set\": {\n \"array\": [\n {\n \"Channel\": \"16\",\n \"Hit Rate\": \"&b16_hitRate\",\n \"Req\": \"&b16_req\",\n \"Read Req\": \"&b16_readReq\",\n \"Write Req\": \"&b16_writeReq\",\n \"AtomicReq\": \"&b16_atomicReq\",\n \"EA Read Req\": \"&b16_eaReadReq\",\n \"EA Write Req\": \"&b16_eaWriteReq\",\n \"EA AtomicReq\": \"&b16_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b16_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b16_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b16_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b16_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b16_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b16_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b16_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b16_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b16_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b16_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"17\",\n \"Hit Rate\": \"&b17_hitRate\",\n \"Req\": \"&b17_req\",\n \"Read Req\": \"&b17_readReq\",\n \"Write Req\": \"&b17_writeReq\",\n \"AtomicReq\": \"&b17_atomicReq\",\n \"EA Read Req\": \"&b17_eaReadReq\",\n \"EA Write Req\": \"&b17_eaWriteReq\",\n \"EA AtomicReq\": \"&b17_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b17_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b17_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b17_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b17_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b17_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b17_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b17_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b17_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b17_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b17_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"18\",\n \"Hit Rate\": \"&b18_hitRate\",\n \"Req\": \"&b18_req\",\n \"Read Req\": \"&b18_readReq\",\n \"Write Req\": \"&b18_writeReq\",\n \"AtomicReq\": \"&b18_atomicReq\",\n \"EA Read Req\": \"&b18_eaReadReq\",\n \"EA Write Req\": \"&b18_eaWriteReq\",\n \"EA AtomicReq\": \"&b18_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b18_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b18_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b18_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b18_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b18_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b18_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b18_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b18_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b18_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b18_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"19\",\n \"Hit Rate\": \"&b19_hitRate\",\n \"Req\": \"&b19_req\",\n \"Read Req\": \"&b19_readReq\",\n \"Write Req\": \"&b19_writeReq\",\n \"AtomicReq\": \"&b19_atomicReq\",\n \"EA Read Req\": \"&b19_eaReadReq\",\n \"EA Write Req\": \"&b19_eaWriteReq\",\n \"EA AtomicReq\": \"&b19_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b19_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b19_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b19_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b19_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b19_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b19_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b19_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b19_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b19_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b19_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"20\",\n \"Hit Rate\": \"&b20_hitRate\",\n \"Req\": \"&b20_req\",\n \"Read Req\": \"&b20_readReq\",\n \"Write Req\": \"&b20_writeReq\",\n \"AtomicReq\": \"&b20_atomicReq\",\n \"EA Read Req\": \"&b20_eaReadReq\",\n \"EA Write Req\": \"&b20_eaWriteReq\",\n \"EA AtomicReq\": \"&b20_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b20_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b20_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b20_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b20_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b20_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b20_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b20_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b20_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b20_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b20_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"21\",\n \"Hit Rate\": \"&b21_hitRate\",\n \"Req\": \"&b21_req\",\n \"Read Req\": \"&b21_readReq\",\n \"Write Req\": \"&b21_writeReq\",\n \"AtomicReq\": \"&b21_atomicReq\",\n \"EA Read Req\": \"&b21_eaReadReq\",\n \"EA Write Req\": \"&b21_eaWriteReq\",\n \"EA AtomicReq\": \"&b21_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b21_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b21_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b21_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b21_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b21_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b21_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b21_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b21_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b21_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b21_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"22\",\n \"Hit Rate\": \"&b22_hitRate\",\n \"Req\": \"&b22_req\",\n \"Read Req\": \"&b22_readReq\",\n \"Write Req\": \"&b22_writeReq\",\n \"AtomicReq\": \"&b22_atomicReq\",\n \"EA Read Req\": \"&b22_eaReadReq\",\n \"EA Write Req\": \"&b22_eaWriteReq\",\n \"EA AtomicReq\": \"&b22_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b22_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b22_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b22_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b22_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b22_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b22_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b22_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b22_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b22_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b22_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"23\",\n \"Hit Rate\": \"&b23_hitRate\",\n \"Req\": \"&b23_req\",\n \"Read Req\": \"&b23_readReq\",\n \"Write Req\": \"&b23_writeReq\",\n \"AtomicReq\": \"&b23_atomicReq\",\n \"EA Read Req\": \"&b23_eaReadReq\",\n \"EA Write Req\": \"&b23_eaWriteReq\",\n \"EA AtomicReq\": \"&b23_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b23_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b23_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b23_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b23_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b23_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b23_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b23_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b23_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b23_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b23_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n\n },\n {\n \"Channel\": \"24\",\n \"Hit Rate\": \"&b24_hitRate\",\n \"Req\": \"&b24_req\",\n \"Read Req\": \"&b24_readReq\",\n \"Write Req\": \"&b24_writeReq\",\n \"AtomicReq\": \"&b24_atomicReq\",\n \"EA Read Req\": \"&b24_eaReadReq\",\n \"EA Write Req\": \"&b24_eaWriteReq\",\n \"EA AtomicReq\": \"&b24_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b24_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b24_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b24_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b24_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b24_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b24_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b24_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b24_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b24_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b24_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"25\",\n \"Hit Rate\": \"&b25_hitRate\",\n \"Req\": \"&b25_req\",\n \"Read Req\": \"&b25_readReq\",\n \"Write Req\": \"&b25_writeReq\",\n \"AtomicReq\": \"&b25_atomicReq\",\n \"EA Read Req\": \"&b25_eaReadReq\",\n \"EA Write Req\": \"&b25_eaWriteReq\",\n \"EA AtomicReq\": \"&b25_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b25_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b25_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b25_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b25_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b25_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b25_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b25_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b25_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b25_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b25_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"26\",\n \"Hit Rate\": \"&b26_hitRate\",\n \"Req\": \"&b26_req\",\n \"Read Req\": \"&b26_readReq\",\n \"Write Req\": \"&b26_writeReq\",\n \"AtomicReq\": \"&b26_atomicReq\",\n \"EA Read Req\": \"&b26_eaReadReq\",\n \"EA Write Req\": \"&b26_eaWriteReq\",\n \"EA AtomicReq\": \"&b26_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b26_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b26_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b26_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b26_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b26_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b26_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b26_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b26_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b26_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b26_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n\n },\n {\n \"Channel\": \"27\",\n \"Hit Rate\": \"&b27_hitRate\",\n \"Req\": \"&b27_req\",\n \"Read Req\": \"&b27_readReq\",\n \"Write Req\": \"&b27_writeReq\",\n \"AtomicReq\": \"&b27_atomicReq\",\n \"EA Read Req\": \"&b27_eaReadReq\",\n \"EA Write Req\": \"&b27_eaWriteReq\",\n \"EA AtomicReq\": \"&b27_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b27_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b27_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b27_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b27_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b27_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b27_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b27_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b27_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b27_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b27_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"28\",\n \"Hit Rate\": \"&b28_hitRate\",\n \"Req\": \"&b28_req\",\n \"Read Req\": \"&b28_readReq\",\n \"Write Req\": \"&b28_writeReq\",\n \"AtomicReq\": \"&b28_atomicReq\",\n \"EA Read Req\": \"&b28_eaReadReq\",\n \"EA Write Req\": \"&b28_eaWriteReq\",\n \"EA AtomicReq\": \"&b28_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b28_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b28_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b28_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b28_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b28_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b28_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b28_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b28_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b28_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b28_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"29\",\n \"Hit Rate\": \"&b29_hitRate\",\n \"Req\": \"&b29_req\",\n \"Read Req\": \"&b29_readReq\",\n \"Write Req\": \"&b29_writeReq\",\n \"AtomicReq\": \"&b29_atomicReq\",\n \"EA Read Req\": \"&b29_eaReadReq\",\n \"EA Write Req\": \"&b29_eaWriteReq\",\n \"EA AtomicReq\": \"&b29_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b29_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b29_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b29_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b29_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b29_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b29_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b29_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b29_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b29_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b29_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"30\",\n \"Hit Rate\": \"&b30_hitRate\",\n \"Req\": \"&b30_req\",\n \"Read Req\": \"&b30_readReq\",\n \"Write Req\": \"&b30_writeReq\",\n \"AtomicReq\": \"&b30_atomicReq\",\n \"EA Read Req\": \"&b30_eaReadReq\",\n \"EA Write Req\": \"&b30_eaWriteReq\",\n \"EA AtomicReq\": \"&b30_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b30_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b30_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b30_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b30_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b30_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b30_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b30_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b30_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b30_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b30_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n },\n {\n \"Channel\": \"31\",\n \"Hit Rate\": \"&b31_hitRate\",\n \"Req\": \"&b31_req\",\n \"Read Req\": \"&b31_readReq\",\n \"Write Req\": \"&b31_writeReq\",\n \"AtomicReq\": \"&b31_atomicReq\",\n \"EA Read Req\": \"&b31_eaReadReq\",\n \"EA Write Req\": \"&b31_eaWriteReq\",\n \"EA AtomicReq\": \"&b31_eaAtomicReq\",\n \"EA Read Lat - cycles\": \"&b31_eaReadLat\",\n \"EA Write Lat - cycles\": \"&b31_eaWriteLat\",\n \"EA Atomic Lat - cycles\": \"&b31_eaAtomicLat\",\n \"EA Read Stall - IO\": \"&b31_ea_read_stall_io_credit\",\n \"EA Read Stall - GMI\": \"&b31_ea_read_stall_gmi_credit\",\n \"EA Read Stall - DRAM\": \"&b31_ea_read_stall_dram_credit\",\n \"EA Write Stall - IO\": \"&b31_ea_write_stall_io_credit\",\n \"EA Write Stall - GMI\": \"&b31_ea_write_stall_gmi_credit\",\n \"EA Write Stall - DRAM\": \"&b31_ea_write_stall_dram_credit\",\n \"EA Write Stall - Starve\": \"&b31_ea_write_stall_too_many\",\n \"Units\": \"&denom\"\n\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"$array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"$array\"\n }}\n]);", + "type": "table" + } + ], + "title": "L2 - EA Read Latency (Channel 16-31) (Cycles)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 10, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Lat - cycles", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 81 + }, + "id": 93, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Write Latency (Channel 0 - 15) (Cycles)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 10, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Lat - cycles", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 81 + }, + "id": 94, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Write Latency (Channel 16 - 31) (Cycles)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 11, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Atomic Lat - cycles", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 89 + }, + "id": 187, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Atomic Latency (Channel 0 - 15) (Cycles)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 11, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Atomic Lat - cycles", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 89 + }, + "id": 201, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Atomic Latency (Channel 16 - 31) (Cycles)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 12, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Read Stall - IO", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 97 + }, + "id": 220, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Read Stall - I/O (Channel 0 - 15) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 12, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Read Stall - IO", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 97 + }, + "id": 227, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Read Stall - I/O (Channel 16 - 31) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 13, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Read Stall - GMI", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 105 + }, + "id": 221, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Read Stall - GMI (Channel 0 - 15) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 13, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Read Stall - GMI", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 105 + }, + "id": 228, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Read Stall - GMI (Channel 16 - 31) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 14, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Read Stall - DRAM", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 113 + }, + "id": 222, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Read Stall - HBM (Channel 0 - 15) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 14, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Read Stall - DRAM", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 113 + }, + "id": 229, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Read Stall - HBM (Channel 16 - 31) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 15, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Stall - IO", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 121 + }, + "id": 223, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Write Stall - I/O (Channel 0 - 15) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 15, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Stall - IO", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 121 + }, + "id": 230, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Write Stall - I/O (Channel 16 - 31) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 16, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Stall - GMI", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 129 + }, + "id": 225, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Write Stall - GMI (Channel 0 - 15) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 16, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Stall - GMI", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 129 + }, + "id": 231, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Write Stall - GMI (Channel 16 - 31) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 17, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Stall - DRAM", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 137 + }, + "id": 224, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Write Stall - HBM (Channel 0 - 15) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 17, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Stall - DRAM", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 137 + }, + "id": 232, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Write Stall - HBM (Channel 16 - 31) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 18, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Stall - Starve", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 145 + }, + "id": 226, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 68, + "refId": "A" + } + ], + "title": "L2 - EA Write Starve (Channel 0 - 15) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + }, + { + "Aggregate": "last", + "BarPadding": 10, + "BaseLineColor": "#ff0000", + "BaseLineWidth": 1, + "CurveType": "Monotone", + "DateFormat": "YYYY-MM-DD HH:mm:ss", + "DateTimeColName": "date", + "DotColor": "white", + "DotSize": 10, + "EvenRowColor": "rgba(61, 61, 64, 0.78)", + "FlashHighLimitBar": false, + "FlashLowLimitBar": false, + "GroupCols": 0, + "GroupGap": 5, + "GroupLabelColor": "#ffffff", + "GroupLabelFontSize": "200%", + "GroupNameFilter": "", + "GroupRenamingRules": [], + "GroupSortString": "", + "HighAxisColor": "#ffffff", + "HighAxisWidth": 1, + "HighBarColor": "rgb(120, 128, 0)", + "HighLimitBarColor": "#ff0000", + "HighLimitBarFlashColor": "#ffa500", + "HighLimitBarFlashTimeout": 1000, + "HighLimitLineColor": "#ff0000", + "HighLmitLineWidth": 1, + "HighSideMargin": 22, + "Horizontal": false, + "LabelColName": "Channel", + "LabelColor": "#ffffff", + "LabelFontSize": "70%", + "LabelNameFilter": "", + "LabelRenamingRules": [], + "LableAngle": 0, + "Legend": false, + "LineColor": "blue", + "LineWidth": 5, + "Links": [], + "LowAxisColor": "#ffffff", + "LowAxisWidth": 1, + "LowBarColor": "teal", + "LowLimitBarColor": "#ff0000", + "LowLimitBarFlashColor": "#ffa500", + "LowLimitBarFlashTimeout": 200, + "LowLimitLineColor": "#ff0000", + "LowLmitLineWidth": 1, + "LowSideMargin": 50, + "MaxLineColor": "rgb(74, 232, 12)", + "MaxLineWidth": 1, + "MinLineColor": "#ff0000", + "MinLineWidth": 1, + "MultiBarPadding": 10, + "OddRowColor": "rgba(33, 33, 34, 0.92)", + "OutOfRangeLabelColor": "#ffffff", + "OutlineColor": "rgba(245, 255, 0, 0.1)", + "RecolorHighLimitBar": false, + "RecolorLowLimitBar": false, + "RecolorRules": [], + "ScaleFactor": 1, + "ShowBars": true, + "ShowBaseLine": false, + "ShowDate": false, + "ShowGroupLabels": true, + "ShowHighLimitLine": false, + "ShowLabels": true, + "ShowLeftAxis": true, + "ShowLines": false, + "ShowLowLimitLine": false, + "ShowMaxLine": false, + "ShowMinLine": false, + "ShowRightAxis": true, + "ShowValues": true, + "SortColName": "value", + "SortDirection": "ascending", + "TZOffsetHours": 0, + "ToolTipFontSize": "100%", + "ToolTipType": "", + "TooltipDateFormat": "YYYY-MM-DD HH:mm:ss", + "VGroupGap": 5, + "ValueColName": "", + "ValueColor": "#ffffff", + "ValueDecimals": 0, + "ValueFontSize": "70%", + "ValuePosition": "top", + "Values": [ + { + "$$hashKey": "object:277", + "Col": 18, + "HighBarColor": "rgb(120, 128, 0)", + "LowBarColor": "teal", + "Name": "EA Write Stall - Starve", + "Selected": true + } + ], + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 145 + }, + "id": 233, + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Dashboard --" + }, + "panelId": 70, + "refId": "A" + } + ], + "title": "L2 - EA Write Starve (Channel 16 - 31) (Cycles $normUnit)", + "type": "michaeldmoore-multistat-panel" + } + ], + "targets": [ + { + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "refId": "A" + } + ], + "title": "L2 Cache (per Channel)", + "type": "row" + } + ], + "refresh": "", + "schemaVersion": 34, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": true, + "text": "\"per Wave\"", + "value": "\"per Wave\"" + }, + "hide": 0, + "includeAll": false, + "label": "Normalization", + "multi": false, + "name": "normUnit", + "options": [ + { + "selected": true, + "text": "\"per Wave\"", + "value": "\"per Wave\"" + }, + { + "selected": false, + "text": "\"per Cycle\"", + "value": "\"per Cycle\"" + }, + { + "selected": false, + "text": "\"per Sec\"", + "value": "\"per Sec\"" + }, + { + "selected": false, + "text": "\"per Kernel\"", + "value": "\"per Kernel\"" + } + ], + "query": "\"per Wave\",\n\"per Cycle\",\n\"per Sec\",\n\"per Kernel\"", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "32", + "value": "32" + }, + "definition": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&L2Banks\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "L2 Channels", + "multi": false, + "name": "L2Banks", + "options": [], + "query": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&L2Banks\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "8", + "value": "8" + }, + "definition": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numSE\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "#SEs", + "multi": false, + "name": "numSE", + "options": [], + "query": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numSE\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "104", + "value": "104" + }, + "definition": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numCU\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "#CUs", + "multi": false, + "name": "numCU", + "options": [], + "query": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numCU\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "32", + "value": "32" + }, + "definition": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&maxWavesPerCU\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Max Waves/CU", + "multi": false, + "name": "maxWavesPerCU", + "options": [], + "query": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&maxWavesPerCU\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "1700", + "value": "1700" + }, + "definition": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&sclk\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "SCLK (MHz)", + "multi": false, + "name": "sclk", + "options": [], + "query": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&sclk\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "56", + "value": "56" + }, + "definition": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numSQC\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "#SQC", + "multi": false, + "name": "numSQC", + "options": [], + "query": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numSQC\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "1638.4", + "value": "1638.4" + }, + "definition": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&hbmBW\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "HBM BW (GB/s)", + "multi": false, + "name": "hbmBW", + "options": [], + "query": "$Workload1.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&hbmBW\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": true, + "text": "omniperf_asw_mix_mi200", + "value": "omniperf_asw_mix_mi200" + }, + "definition": "workload_names.names.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);", + "hide": 0, + "includeAll": false, + "label": "Workload", + "multi": false, + "name": "Workload1", + "options": [], + "query": "workload_names.names.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "433323", + "value": "433323" + }, + "definition": "$Workload1.pmc_perf.aggregate([\n{\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n\n {\"$group\": {\n \"_id\": null,\n \"myAvg\": {\n \"$avg\": { \"$multiply\": [{ \"$divide\": [{ \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }, 1000] }, $sclk] }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"_id\": { \"$round\": [\"&myAvg\", 0] }\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Kernel Cycles", + "multi": false, + "name": "kernelBusyCycles", + "options": [], + "query": "$Workload1.pmc_perf.aggregate([\n{\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n\n {\"$group\": {\n \"_id\": null,\n \"myAvg\": {\n \"$avg\": { \"$multiply\": [{ \"$divide\": [{ \"$subtract\": [\"&EndNs\", \"&BeginNs\"] }, 1000] }, $sclk] }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"_id\": { \"$round\": [\"&myAvg\", 0] }\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "103", + "value": "103" + }, + "definition": "$Workload1.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"theAvg\": {\n \"$avg\": {\n \"$cond\":[\n {\"$ne\": [\"&GRBM_GUI_ACTIVE\", 0]},\n {\"$divide\": [{ \"$multiply\": [4, \"&SQ_BUSY_CU_CYCLES\"] }, \"&GRBM_GUI_ACTIVE\"]},\n \"\"\n ]\n }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"_id\": {\"$toInt\": { \"$min\": [{ \"$add\": [{ \"$multiply\": [{ \"$divide\": [{ \"$round\": [\"$theAvg\", 0] }, $maxWavesPerCU] },8] }, { \"$min\": [{ \"$mod\": [{ \"$round\": [\"$theAvg\", 0] }, $maxWavesPerCU] }, 8] }] }, $numCU] }}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"$array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"$array\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Active CUs", + "multi": false, + "name": "numActiveCUs", + "options": [], + "query": "$Workload1.pmc_perf.aggregate([\n {\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": null,\n \"theAvg\": {\n \"$avg\": {\n \"$cond\":[\n {\"$ne\": [\"&GRBM_GUI_ACTIVE\", 0]},\n {\"$divide\": [{ \"$multiply\": [4, \"&SQ_BUSY_CU_CYCLES\"] }, \"&GRBM_GUI_ACTIVE\"]},\n \"\"\n ]\n }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"_id\": {\"$toInt\": { \"$min\": [{ \"$add\": [{ \"$multiply\": [{ \"$divide\": [{ \"$round\": [\"$theAvg\", 0] }, $maxWavesPerCU] },8] }, { \"$min\": [{ \"$mod\": [{ \"$round\": [\"$theAvg\", 0] }, $maxWavesPerCU] }, 8] }] }, $numCU] }}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"$array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"$array\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "$Workload1.pmc_perf.aggregate([\n {\"$match\": {\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": \"&Index\"\n }},\n {\"$sort\": {\n \"_id\": 1\n }}\n]);", + "description": "Defaults to all DispatchIDs", + "hide": 2, + "includeAll": true, + "label": "Filtered Dispatch ID", + "multi": false, + "name": "DispatchIDFilter", + "options": [], + "query": "$Workload1.pmc_perf.aggregate([\n {\"$match\": {\n \"gpu-id\": { \"$in\": [${gpuFilter:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter:json}}\n }},\n {\"$group\": {\n \"_id\": \"&Index\"\n }},\n {\"$sort\": {\n \"_id\": 1\n }}\n]);", + "refresh": 1, + "regex": "${DispatchID:text}", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": true, + "text": "", + "value": "" + }, + "description": "Desired DispatchID filters as regex ex. (1|18)", + "hide": 0, + "label": "Dispatch Filter", + "name": "DispatchID", + "options": [ + { + "selected": true, + "text": "", + "value": "" + } + ], + "query": "", + "skipUrlSync": false, + "type": "textbox" + }, + { + "current": { + "selected": false, + "text": "0", + "value": "0" + }, + "definition": "$Workload1.pmc_perf.aggregate([\n {\"$group\": {\n \"_id\": \"&gpu-id\"\n }}\n]);", + "hide": 0, + "includeAll": false, + "label": "GCD", + "multi": false, + "name": "gpuFilter", + "options": [], + "query": "$Workload1.pmc_perf.aggregate([\n {\"$group\": {\n \"_id\": \"&gpu-id\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 3, + "type": "query" + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "$Workload1.pmc_perf.aggregate([\n {\"$group\": {\n \"_id\": \"&KernelName\"\n }}\n]);", + "hide": 0, + "includeAll": true, + "label": "Kernels", + "multi": true, + "name": "KernelNameFilter", + "options": [], + "query": "$Workload1.pmc_perf.aggregate([\n {\"$group\": {\n \"_id\": \"&KernelName\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "miperf_asw_vcopy_mi200", + "value": "miperf_asw_vcopy_mi200" + }, + "definition": "workload_names.names.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);", + "hide": 0, + "includeAll": false, + "label": "Baseline Workload", + "multi": false, + "name": "Workload2", + "options": [], + "query": "workload_names.names.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "84", + "value": "84" + }, + "definition": "$Workload2.pmc_perf.aggregate([\n{\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}}\n }},\n\n {\"$group\": {\n \"_id\": null,\n \"theAvg\": {\n \"$avg\": {\n \"$cond\":[\n {\"$ne\": [\"&GRBM_GUI_ACTIVE\", 0]},\n {\"$divide\": [{ \"$multiply\": [4, \"&SQ_BUSY_CU_CYCLES\"] }, \"&GRBM_GUI_ACTIVE\"]},\n \"\"\n ]\n }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"_id\": {\"$toInt\": { \"$min\": [{ \"$add\": [{ \"$multiply\": [{ \"$divide\": [{ \"$round\": [\"$theAvg\", 0] }, $maxWavesPerCU2] },8] }, { \"$min\": [{ \"$mod\": [{ \"$round\": [\"$theAvg\", 0] }, $maxWavesPerCU2] }, 8] }] }, $numCU2] }}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Baseline ActiveCUs", + "multi": false, + "name": "numActiveCUs2", + "options": [], + "query": "$Workload2.pmc_perf.aggregate([\n{\"$match\": {\n \"Index\": { \"$in\": [${DispatchIDFilter2:raw}] },\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}}\n }},\n\n {\"$group\": {\n \"_id\": null,\n \"theAvg\": {\n \"$avg\": {\n \"$cond\":[\n {\"$ne\": [\"&GRBM_GUI_ACTIVE\", 0]},\n {\"$divide\": [{ \"$multiply\": [4, \"&SQ_BUSY_CU_CYCLES\"] }, \"&GRBM_GUI_ACTIVE\"]},\n \"\"\n ]\n }\n }\n }},\n {\"$set\": {\n \"array\": [\n {\n \"_id\": {\"$toInt\": { \"$min\": [{ \"$add\": [{ \"$multiply\": [{ \"$divide\": [{ \"$round\": [\"$theAvg\", 0] }, $maxWavesPerCU2] },8] }, { \"$min\": [{ \"$mod\": [{ \"$round\": [\"$theAvg\", 0] }, $maxWavesPerCU2] }, 8] }] }, $numCU2] }}\n }\n ]\n }},\n {\"$unwind\": {\n \"path\": \"&array\"\n }},\n {\"$replaceRoot\": {\n \"newRoot\": \"&array\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "$Workload2.pmc_perf.aggregate([\n {\"$match\": {\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}}\n }},\n {\"$group\": {\n \"_id\": \"&Index\"\n }},\n {\"$sort\": {\n \"_id\": 1\n }}\n]);", + "description": "Defaults to all DispatchIDs", + "hide": 2, + "includeAll": true, + "label": "Baseline Dispatch IDs", + "multi": false, + "name": "DispatchIDFilter2", + "options": [], + "query": "$Workload2.pmc_perf.aggregate([\n {\"$match\": {\n \"gpu-id\": { \"$in\": [${gpuFilter2:raw}] },\n \"KernelName\": { \"$in\": ${KernelNameFilter2:json}}\n }},\n {\"$group\": {\n \"_id\": \"&Index\"\n }},\n {\"$sort\": {\n \"_id\": 1\n }}\n]);", + "refresh": 1, + "regex": "${DispatchID2:text}", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": true, + "text": "", + "value": "" + }, + "description": "Desired DispatchID filters as regex ex. (1|18)", + "hide": 0, + "label": "Baseline Dispatch Filter", + "name": "DispatchID2", + "options": [ + { + "selected": true, + "text": "", + "value": "" + } + ], + "query": "", + "skipUrlSync": false, + "type": "textbox" + }, + { + "current": { + "selected": false, + "text": "0", + "value": "0" + }, + "definition": "$Workload2.pmc_perf.aggregate([\n {\"$group\": {\n \"_id\": \"&gpu-id\"\n }}\n]);", + "hide": 0, + "includeAll": false, + "label": "Baseline GCD", + "multi": false, + "name": "gpuFilter2", + "options": [], + "query": "$Workload2.pmc_perf.aggregate([\n {\"$group\": {\n \"_id\": \"&gpu-id\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": { + "type": "amd-miperf-data-plugin", + "uid": "oVK0I__nk" + }, + "definition": "$Workload2.pmc_perf.aggregate([\n {\"$group\": {\n \"_id\": \"&KernelName\"\n }}\n]);", + "hide": 0, + "includeAll": true, + "label": "Baseline Kernels", + "multi": true, + "name": "KernelNameFilter2", + "options": [], + "query": "$Workload2.pmc_perf.aggregate([\n {\"$group\": {\n \"_id\": \"&KernelName\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": true, + "text": [ + "System Info" + ], + "value": [ + "System Info" + ] + }, + "hide": 0, + "includeAll": false, + "label": "Comparison Panels", + "multi": true, + "name": "select", + "options": [ + { + "selected": true, + "text": "System Info", + "value": "System Info" + }, + { + "selected": false, + "text": "System Speed-of-Light", + "value": "System Speed-of-Light" + }, + { + "selected": false, + "text": "Roofline", + "value": "Roofline" + }, + { + "selected": false, + "text": "Command Processor", + "value": "Command Processor" + }, + { + "selected": false, + "text": "Shader Processor Input", + "value": "Shader Processor Input" + }, + { + "selected": false, + "text": "Wavefront", + "value": "Wavefront" + }, + { + "selected": false, + "text": "Compute Pipeline", + "value": "Compute Pipeline" + }, + { + "selected": false, + "text": "Instruction Mix", + "value": "Instruction Mix" + }, + { + "selected": false, + "text": "Local Data Share", + "value": "Local Data Share" + }, + { + "selected": false, + "text": "Instruction Cache", + "value": "Instruction Cache" + }, + { + "selected": false, + "text": "Scalar L1D Cache", + "value": "Scalar L1D Cache" + }, + { + "selected": false, + "text": "Texture Addr and Data", + "value": "Texture Addr and Data" + }, + { + "selected": false, + "text": "Vector L1D Cache", + "value": "Vector L1D Cache" + }, + { + "selected": false, + "text": "L2 Cache", + "value": "L2 Cache" + } + ], + "query": "System Info, \nSystem Speed-of-Light, \nRoofline,\nCommand Processor, \nShader Processor Input, \nWavefront,\nCompute Pipeline, \nInstruction Mix,\nLocal Data Share, \nInstruction Cache, \nScalar L1D Cache, \nTexture Addr and Data, \nVector L1D Cache,\nL2 Cache", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "32", + "value": "32" + }, + "definition": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&L2Banks\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Baseline L2 Channels", + "multi": false, + "name": "L2Banks2", + "options": [], + "query": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&L2Banks\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "8", + "value": "8" + }, + "definition": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numSE\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Baseline #SEs", + "multi": false, + "name": "numSE2", + "options": [], + "query": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numSE\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "110", + "value": "110" + }, + "definition": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numCU\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Baseline #CUs", + "multi": false, + "name": "numCU2", + "options": [], + "query": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numCU\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "32", + "value": "32" + }, + "definition": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&maxWavesPerCU\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Baseline Max Waves/CU", + "multi": false, + "name": "maxWavesPerCU2", + "options": [], + "query": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&maxWavesPerCU\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "1700", + "value": "1700" + }, + "definition": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&sclk\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Baseline SCLK (MHz)", + "multi": false, + "name": "sclk2", + "options": [], + "query": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&sclk\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "56", + "value": "56" + }, + "definition": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numSQC\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Baseline #SQC", + "multi": false, + "name": "numSQC2", + "options": [], + "query": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&numSQC\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "1638.4", + "value": "1638.4" + }, + "definition": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&hbmBW\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "Baseline HBM BW (GB/s)", + "multi": false, + "name": "hbmBW2", + "options": [], + "query": "$Workload2.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&hbmBW\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "mi200", + "value": "mi200" + }, + "definition": "${Workload1}.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);", + "hide": 2, + "includeAll": false, + "label": "SOC", + "multi": false, + "name": "soc", + "options": [], + "query": "${Workload1}.sysinfo.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": true, + "text": "5", + "value": "5" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "TopN", + "options": [ + { + "selected": false, + "text": "1", + "value": "1" + }, + { + "selected": true, + "text": "5", + "value": "5" + }, + { + "selected": false, + "text": "10", + "value": "10" + }, + { + "selected": false, + "text": "15", + "value": "15" + }, + { + "selected": false, + "text": "20", + "value": "20" + }, + { + "selected": false, + "text": "50", + "value": "50" + }, + { + "selected": false, + "text": "100", + "value": "100" + } + ], + "query": "1,5,10,15,20,50,100", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + } + ] + }, + "time": { + "from": "2021-11-04T14:21:39.749Z", + "to": "2021-11-08T14:21:39.749Z" + }, + "timepicker": {}, + "timezone": "", + "title": "Omniperf_v1.0.7_pub", + "uid": "MIPerf_v1_0_06302022112", + "version": 2, + "weekStart": "" +} \ No newline at end of file diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index 52b3e3914a..6a2923f6f3 100755 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -1,7 +1,9 @@ #!/bin/bash -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -10,17 +12,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el pushd /var/lib/grafana/plugins/omniperfData_plugin npm run server & diff --git a/requirements.txt b/requirements.txt index 69beb6c77b..ced0520724 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,3 +10,4 @@ tabulate tqdm dash-svg dash-bootstrap-components +kaleido diff --git a/src/common.py b/src/common.py index d33c7c55f2..70cdcd8239 100644 --- a/src/common.py +++ b/src/common.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,17 +10,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import os import sys @@ -31,7 +33,7 @@ OMNIPERF_HOME = Path(__file__).resolve().parent # OMNIPERF INFO PROG = "omniperf" -SOC_LIST = ["mi50", "mi100", "mi200"] +SOC_LIST = ["mi50", "mi100", "mi200", "vega10"] DISTRO_MAP = {"platform:el8": "rhel8", "15.3": "sle15sp3", "20.04": "ubuntu20_04"} diff --git a/src/docs/analysis.md b/src/docs/analysis.md index f355ba7c67..ba471ff273 100644 --- a/src/docs/analysis.md +++ b/src/docs/analysis.md @@ -171,7 +171,7 @@ $ omniperf analyze -p workloads/vcopy/mi200/ --list-metrics gfx90a ├─────────┼─────────────────────────────┤ ... ``` - 2. Choose your own customized subset of metrics with `-b` (a.k.a. `--filter-metrics`), or build your own config following [config_template](https://github.com/AMDResearch/omniperf/blob/main/src/omniperf_analyze/configs/panel_config_template.yaml). Below we'll inspect block 2 (a.k.a. System Speed-of-Light). + 2. Choose your own customized subset of metrics with `-b` (a.k.a. `--metric`), or build your own config following [config_template](https://github.com/AMDResearch/omniperf/blob/main/src/omniperf_analyze/configs/panel_config_template.yaml). Below we'll inspect block 2 (a.k.a. System Speed-of-Light). ```shell $ omniperf analyze -p workloads/vcopy/mi200/ -b 2 -------- @@ -317,10 +317,12 @@ allowing users to view results from within a web browser. Note that the standalone GUI analyzer publishes a web interface on port 8050 by default. On production HPC systems where profiling jobs run -under the auspices of a resource manager, additional ssh tunneling +under the auspices of a resource manager, additional SSH tunneling between the desired web browser host (e.g. login node or remote workstation) and compute host may be required. Alternatively, users may find it more convenient to download profiled workloads to perform analysis on their local system. + +See [FAQ](https://amdresearch.github.io/omniperf/faq.html) for more details on SSH tunneling. ``` #### Usage diff --git a/src/docs/conf.py b/src/docs/conf.py index 2b5d2e62d0..48d4c5596f 100644 --- a/src/docs/conf.py +++ b/src/docs/conf.py @@ -141,6 +141,7 @@ for pref in preferences: from recommonmark.transform import AutoStructify + # app setup hook def setup(app): app.add_config_value( diff --git a/src/docs/faq.md b/src/docs/faq.md index 3ec5fa97c0..6a996cc277 100644 --- a/src/docs/faq.md +++ b/src/docs/faq.md @@ -30,3 +30,26 @@ Workaround: $ export LC_ALL=C.UTF-8 $ export LANG=C.UTF-8 ``` + +**3. How can I SSH Tunnel in MobaXterm?** + +1. Open MobaXterm +2. In the top ribbon, select `Tunneling` +![Tunnel Button](images/tunnel_demo1.png) +This pop up will appear +![Pop up](images/tunnel_demo2.png) +3. Press `New SSH tunnel` +![Pop up](images/tunnel_demo3.png) +4. Configure tunnel accordingly + + Local clients + - Forwarded Port: [PORT] + + Remote Server + - Remote Server: localhost + - Remote Port: [PORT] + + SSH Server + - SSH server: Name of the server one is connecting to + - SSH login: Username to login to the server + - SSH port: 22 \ No newline at end of file diff --git a/src/docs/getting_started.md b/src/docs/getting_started.md index 6e1bf1de08..c75bda9abe 100644 --- a/src/docs/getting_started.md +++ b/src/docs/getting_started.md @@ -82,7 +82,8 @@ Modes change the fundamental behavior of the Omniperf command line tool. Dependi Operation | Mode | Required Arguments :--|:--|:-- Profile a workload | profile | `--name`, `-- ` -Standalone roofline analysis | profile | `--name`, `--only-roof`, `-- ` +Standalone roofline analysis | profile | `--name`, `--roof-only`, `-- ` Import a workload to database | database | `--import`, `--host`, `--username`, `--workload`, `--team` Remove a workload from database | database | `--remove`, `--host`, `--username`, `--workload`, `--team` -Interact with profiling results from CLI | analyze | `--path`, `--gui` \ No newline at end of file +Launch standalone GUI from CLI | analyze | `--path`, `--gui` +Interact with profiling results from CLI | analyze | `--path` \ No newline at end of file diff --git a/src/docs/images/tunnel_demo1.png b/src/docs/images/tunnel_demo1.png new file mode 100644 index 0000000000..bda64883c4 Binary files /dev/null and b/src/docs/images/tunnel_demo1.png differ diff --git a/src/docs/images/tunnel_demo2.png b/src/docs/images/tunnel_demo2.png new file mode 100644 index 0000000000..8b2d258521 Binary files /dev/null and b/src/docs/images/tunnel_demo2.png differ diff --git a/src/docs/images/tunnel_demo3.png b/src/docs/images/tunnel_demo3.png new file mode 100644 index 0000000000..76cd7ed9a9 Binary files /dev/null and b/src/docs/images/tunnel_demo3.png differ diff --git a/src/docs/installation.md b/src/docs/installation.md index 65be7aa300..ee2489710c 100644 --- a/src/docs/installation.md +++ b/src/docs/installation.md @@ -24,7 +24,7 @@ Omniperf requires the following basic software dependencies prior to usage: * Python (>=3.7) * CMake (>= 3.19) -* ROCm (>= 5.1) +* ROCm (>= 5.2.0) In addition, Omniperf leverages a number of Python packages that are documented in the top-level `requirements.txt` file. These must be diff --git a/src/omniperf b/src/omniperf index f32b7abbb5..0c957b29ed 100755 --- a/src/omniperf +++ b/src/omniperf @@ -1,7 +1,9 @@ #!/usr/bin/env python3 -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -10,17 +12,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import sys import os @@ -37,7 +39,7 @@ from utils import specs from utils.perfagg import perfmon_filter, pmc_filter from utils import remove_workload from utils import csv_converter # Import workload -from utils import plot_roofline # standalone roofline +from omniperf_analyze.omniperf_analyze import roofline_only # Standalone roofline from omniperf_analyze.omniperf_analyze import analyze # CLI analysis from common import ( @@ -53,10 +55,8 @@ from common import getVersion # Helper Functions ################################################ def run_subprocess(cmd): - subprocess.run( - cmd, - check=True - ) + subprocess.run(cmd, check=True) + def resolve_rocprof(): # ROCPROF INFO @@ -89,6 +89,8 @@ def get_soc(): target = "mi100" elif mspec.GPU == "gfx90a": target = "mi200" + elif mspec.GPU == "gfx900": + target = "vega10" else: print("\nInvalid SoC") sys.exit(0) @@ -123,7 +125,9 @@ def replace_timestamps(workload_dir): df_pmc_perf["EndNs"] = df_stamps["EndNs"] df_pmc_perf.to_csv(workload_dir + "/pmc_perf.csv", index=False) else: - warnings.warn("WARNING: Incomplete profiling data detected. Unable to update timestamps.") + warnings.warn( + "WARNING: Incomplete profiling data detected. Unable to update timestamps." + ) def gen_sysinfo(workload_name, workload_dir, ip_blocks, app_cmd, skip_roof): @@ -148,7 +152,7 @@ def gen_sysinfo(workload_name, workload_dir, ip_blocks, app_cmd, skip_roof): timestamp = now.strftime("%c") + " (" + local_tzname + ")" # host info param = [workload_name] - param += [app_cmd] + param += ['"' + app_cmd + '"'] param += [ mspec.hostname, mspec.cpu, @@ -212,6 +216,48 @@ def mongo_import(args, profileAndImport): ################################################ # Roofline Helpers ################################################ +def roof_setup(args, my_parser): + if args.path == os.getcwd() + "/workloads": + args.path += "/" + args.name + "/" + str(get_soc()) + + # We need to make a directory for a new roofline + if not os.path.isdir(args.path): + os.makedirs(args.path) + # does roof data exist? + print("Checking for roofline.csv in ", args.path) + roof_path = args.path + "/roofline.csv" + roofline_exists = os.path.isfile(roof_path) + if not roofline_exists: + if get_soc() != "mi200": + throw_parse_error( + my_parser, "Invalid SoC.\nRoofline only availible on MI200." + ) + mibench(args) + + # does sysinfo exist? + print("Checking for sysinfo.csv in ", args.path) + sysinfo_path = args.path + "/sysinfo.csv" + sysinfo_exists = os.path.isfile(sysinfo_path) + if not sysinfo_exists: + print("sysinfo not found") + gen_sysinfo(args.name, args.path, [], args.remaining, False) + + # does app data exist? + print("Checking for pmc_perf.csv in ", args.path) + app_path = args.path + "/pmc_perf.csv" + app_exists = os.path.isfile(app_path) + if not app_exists: + if get_soc() != "mi200": + throw_parse_error( + my_parser, "Invalid SoC.\nRoofline only availible on MI200." + ) + if not args.remaining: + throw_parse_error( + my_parser, + "Cannot find existing application data.\nAttempting to generate application data from -- .\n-- option is required to generate application data.", + ) + else: + characterize_app(args.path, args.remaining, args.verbose) def detect_roofline(): @@ -297,89 +343,7 @@ def characterize_app(path, cmd, verbose): # Workload profiling for fname in glob.glob(workload_dir + "/perfmon/*.txt"): print(fname) - run_prof(fname, workload_dir, perfmon_dir, app_cmd, verbose) - - -################################################ -# Profiling Helpers -################################################ - - -def run_prof(fname, workload_dir, perfmon_dir, cmd, verbose): - global rocprof_cmd - - fbase = os.path.splitext(os.path.basename(fname))[0] - - if verbose: - print("pmc file:", os.path.basename(fname)) - - # profile the app - run_subprocess( - [ - rocprof_cmd, - "-i", - fname, - "--timestamp", - "on", - "-o", - workload_dir + "/" + fbase + ".csv", - '"' + cmd + '"', - ] - ) - - -def omniperf_profile(args, VER): - # Verify valid target - if args.target not in SOC_LIST: - parse.print_help(sys.stderr) - sys.exit(1) - - # Basic Info - print(PROG, "ver: ", VER) - print("Path: ", args.path) - print("Target: ", args.target) - print("Command: ", args.remaining) - print("Kernel Selection: ", args.kernel) - print("Dispatch Selection: ", args.dispatch) - if args.ipblocks == None: - print("IP Blocks: All") - else: - print("IP Blocks: ", args.ipblocks) - - # Set up directories - workload_dir = args.path + "/" + args.name + "/" + args.target - perfmon_dir = str(OMNIPERF_HOME) + "/perfmon_pub" - - # Perfmon filtering - perfmon_filter(workload_dir, perfmon_dir, args) - - # Workload profiling - for fname in glob.glob(workload_dir + "/perfmon/*.txt"): - # Kernel filtering (in-place replacement) - if not args.kernel == None: - run_subprocess( - [ - "sed", - "-i", - "-r", - "s%^(kernel:).*%" + "kernel: " + ",".join(args.kernel) + "%g", - fname, - ] - ) - - # Dispatch filtering (inplace replacement) - if not args.dispatch == None: - run_subprocess( - [ - "sed", - "-i", - "-r", - "s%^(range:).*%" + "range: " + ",".join(args.dispatch) + "%g", - fname, - ] - ) - run_prof(fname, workload_dir, perfmon_dir, args.remaining, args.verbose) - + run_prof(fname, workload_dir, perfmon_dir, app_cmd, target, verbose) # run again with timestamps run_subprocess( [ @@ -390,13 +354,233 @@ def omniperf_profile(args, VER): "on", "-o", workload_dir + "/" + "timestamps.csv", - '"' + args.remaining + '"', + '"' + app_cmd + '"', ] ) - # Update pmc_perf.csv timestamps replace_timestamps(workload_dir) + +################################################ +# Profiling Helpers +################################################ + + +def run_rocscope(args, fname): + # profile the app + if args.use_rocscope == True: + result = subprocess.run( + ["which", "rocscope"], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + if result.returncode == 0: + rs_cmd = [ + result.stdout.decode("ascii").strip(), + "metrics", + "-p", + args.path, + "-n", + args.name, + "-t", + fname, + "--", + ] + for i in args.remaining.split(): + rs_cmd.append(i) + print(rs_cmd) + result = run_subprocess( + rs_cmd + ) # , stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if result.returncode != 0: + print(result.stderr.decode("ascii")) + sys.exit(1) + + +def run_prof(fname, workload_dir, perfmon_dir, cmd, target, verbose): + global rocprof_cmd + + fbase = os.path.splitext(os.path.basename(fname))[0] + + if verbose: + print("pmc file:", os.path.basename(fname)) + + # profile the app (run w/ custom config files for mi100) + if target == "mi100": + print("RUNNING WITH CUSTOM METRICS") + run_subprocess( + [ + rocprof_cmd, + "-i", + fname, + "-m", + perfmon_dir + "/" + "metrics.xml", + "--timestamp", + "on", + "-o", + workload_dir + "/" + fbase + ".csv", + '"' + cmd + '"', + ] + ) + else: + run_subprocess( + [ + rocprof_cmd, + "-i", + fname, + "--timestamp", + "on", + "-o", + workload_dir + "/" + fbase + ".csv", + '"' + cmd + '"', + ] + ) + + +def omniperf_profile(args, VER): + # Verify valid target + if args.target not in SOC_LIST: + parse.print_help(sys.stderr) + sys.exit(1) + + # Verify valid name + if args.name.find(".") != -1 or args.name.find("-") != -1: + raise ValueError("'-' and '.' are not permited in workload name", args.name) + + # Basic Info + print(PROG, "ver: ", VER) + print("Path: ", args.path) + print("Target: ", args.target) + print("Command: ", args.remaining) + print("Kernel Selection: ", args.kernel) + print("Dispatch Selection: ", args.dispatch) + + if args.ipblocks == None: + print("IP Blocks: All", "\n") + else: + print("IP Blocks: ", args.ipblocks, "\n") + + # Set up directories + workload_dir = args.path + "/" + args.name + "/" + args.target + perfmon_dir = str(OMNIPERF_HOME) + "/perfmon_pub" + + # Perfmon filtering + perfmon_filter(workload_dir, perfmon_dir, args) + + if not args.lucky == None and args.lucky == True: + print("You're feeling lucky - only profiling top N kernels") + # look for whether workload_dir exists - create if not + try: + os.makedirs(workload_dir, exist_ok=True) + except Exception as e: + print("Unable to create workload directory: ", workload_dir) + print(e) + sys.exit(1) + + result = subprocess.run( + ["which", "rocscope"], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + if result.returncode == 0: + rs_cmd = [ + result.stdout.decode("ascii").strip(), + "top10", + "-p", + args.path, + "-n", + args.name, + "--", + ] + for i in args.remaining.split(): + rs_cmd.append(i) + print(rs_cmd) + result = run_subprocess( + rs_cmd + ) # , stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if result.returncode != 0: + print(result.stderr.decode("ascii")) + else: + print("rocscope must be in the PATH") + sys.exit(1) + elif not args.summaries == None and args.summaries == True: + print("creating kernel summaries") + # look for whether workload_dir exists - create if not + try: + os.makedirs(workload_dir, exist_ok=True) + except Exception as e: + print("Unable to create workload directory: ", workload_dir) + print(e) + sys.exit(1) + + result = subprocess.run( + ["which", "rocscope"], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + if result.returncode == 0: + rs_cmd = [ + result.stdout.decode("ascii").strip(), + "summary", + "-p", + args.path, + "-n", + args.name, + "--", + ] + for i in args.remaining.split(): + rs_cmd.append(i) + print(rs_cmd) + result = run_subprocess( + rs_cmd + ) # , stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if result.returncode != 0: + print(result.stderr.decode("ascii")) + else: + print("rocscope must be in the PATH") + sys.exit(1) + + else: + for fname in glob.glob(workload_dir + "/perfmon/*.txt"): + # Kernel filtering (in-place replacement) + if not args.kernel == None: + run_subprocess( + [ + "sed", + "-i", + "-r", + "s%^(kernel:).*%" + "kernel: " + ",".join(args.kernel) + "%g", + fname, + ] + ) + + # Dispatch filtering (inplace replacement) + if not args.dispatch == None: + run_subprocess( + [ + "sed", + "-i", + "-r", + "s%^(range:).*%" + "range: " + " ".join(args.dispatch) + "%g", + fname, + ] + ) + if args.use_rocscope == True: + run_rocscope(args, fname) + else: + run_prof(fname, workload_dir, perfmon_dir, args.remaining, args.target, args.verbose) + + # run again with timestamps + run_subprocess( + [ + rocprof_cmd, + # "-i", fname, + # "-m", perfmon_dir + "/" + "metrics.xml", + "--timestamp", + "on", + "-o", + workload_dir + "/" + "timestamps.csv", + '"' + args.remaining + '"', + ] + ) + + # Update pmc_perf.csv timestamps + replace_timestamps(workload_dir) + # Generate sysinfo gen_sysinfo(args.name, workload_dir, args.ipblocks, args.remaining, args.no_roof) @@ -466,6 +650,7 @@ def main(): # PROFILE MODE ############## if args.mode == "profile": + print("Resolving rocprof") resolve_rocprof() if ".." in str(args.path): throw_parse_error( @@ -495,62 +680,10 @@ def main(): elif args.roof_only: print("\n--------\nRoofline only\n--------\n") - if args.path == os.getcwd() + "/workloads": - args.path += "/" + args.name + "/" + str(get_soc()) - # Verify valid axes parameters - if args.axes: - if len(args.axes) != 4: - throw_parse_error( - my_parser, - "Invalid argument for --axes.\nMust contain four values formatted as: --axes xmin xmax ymin ymax", - ) - - if args.axes[0] > args.axes[1] or args.axes[2] > args.axes[3]: - throw_parse_error( - my_parser, - "Invalid argument for --axes.\nBreaks required conditions: (xmax > xmin && ymax > ymin)", - ) - - # We need to make a directory for a new roofline - if not os.path.isdir(args.path): - os.makedirs(args.path) - # does roof data exist? - print("Checking for roofline.csv in ", args.path) - roof_path = args.path + "/roofline.csv" - roofline_exists = os.path.isfile(roof_path) - if not roofline_exists: - if get_soc() != "mi200": - throw_parse_error( - my_parser, "Invalid SoC.\nRoofline only availible on MI200." - ) - mibench(args) - - # does sysinfo exist? - print("Checking for sysinfo.csv in ", args.path) - sysinfo_path = args.path + "/sysinfo.csv" - sysinfo_exists = os.path.isfile(sysinfo_path) - if not sysinfo_exists: - print("sysinfo not found") - gen_sysinfo(args.name, args.path, [], args.remaining, False) - - # does app data exist? - print("Checking for pmc_perf.csv in ", args.path) - app_path = args.path + "/pmc_perf.csv" - app_exists = os.path.isfile(app_path) - if not app_exists: - if get_soc() != "mi200": - throw_parse_error( - my_parser, "Invalid SoC.\nRoofline only availible on MI200." - ) - if not args.remaining: - throw_parse_error( - my_parser, - "Cannot find existing application data.\nAttempting to generate application data from -- .\n-- option is required to generate application data.", - ) - else: - characterize_app(args.path, args.remaining, args.verbose) + # Setup prerequisits for roofline + roof_setup(args, my_parser) # Generate roofline - plot_roofline.empirical_roof(args) + roofline_only(args.path, args.device, args.sort, args.mem_level, args.verbose) # Profile only else: diff --git a/src/omniperf_analyze/assets/layout.css b/src/omniperf_analyze/assets/layout.css index 44d0f99630..b723d236a3 100644 --- a/src/omniperf_analyze/assets/layout.css +++ b/src/omniperf_analyze/assets/layout.css @@ -593,20 +593,6 @@ button.report:hover { #l2_cache_per_channel a, #l2_cache_per_channel a:visited { color: #fff; } #l2_cache_per_channel a:hover, #l2_cache_per_channel a:focus { color: #11ABB0; } -#l2_cache_per_channel .float-container { - /* border: 3px solid #fff; */ - padding: 20px; -} -#l2_cache_per_channel .float-child { - width: 100%; - float: left; - padding: 20px; - /* border: 2px solid red; */ -} -#l2_cache_per_channel .float-child h3 { - color: #fff; -} - /* ------------------------------------------------------------------ */ /* c. About Section /* ------------------------------------------------------------------ */ diff --git a/src/omniperf_analyze/configs/gfx906/0700_wavefront-launch.yaml b/src/omniperf_analyze/configs/gfx906/0700_wavefront-launch.yaml index 15bb646ce9..c0592783e6 100644 --- a/src/omniperf_analyze/configs/gfx906/0700_wavefront-launch.yaml +++ b/src/omniperf_analyze/configs/gfx906/0700_wavefront-launch.yaml @@ -104,28 +104,28 @@ Panel Config: unit: Instr/wavefront tips: Wave Cycles: - avg: AVG(((4 * SQ_WAVE_CYCLES) / SQ_WAVES)) - min: MIN(((4 * SQ_WAVE_CYCLES) / SQ_WAVES)) - max: MAX(((4 * SQ_WAVE_CYCLES) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_WAVE_CYCLES) / $denom)) + min: MIN(((4 * SQ_WAVE_CYCLES) / $denom)) + max: MAX(((4 * SQ_WAVE_CYCLES) / $denom)) + unit: (Cycles + $normUnit) tips: Dependency Wait Cycles: - avg: AVG(((4 * SQ_WAIT_ANY) / SQ_WAVES)) - min: MIN(((4 * SQ_WAIT_ANY) / SQ_WAVES)) - max: MAX(((4 * SQ_WAIT_ANY) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_WAIT_ANY) / $denom)) + min: MIN(((4 * SQ_WAIT_ANY) / $denom)) + max: MAX(((4 * SQ_WAIT_ANY) / $denom)) + unit: (Cycles + $normUnit) tips: Issue Wait Cycles: - avg: AVG(((4 * SQ_WAIT_INST_ANY) / SQ_WAVES)) - min: MIN(((4 * SQ_WAIT_INST_ANY) / SQ_WAVES)) - max: MAX(((4 * SQ_WAIT_INST_ANY) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_WAIT_INST_ANY) / $denom)) + min: MIN(((4 * SQ_WAIT_INST_ANY) / $denom)) + max: MAX(((4 * SQ_WAIT_INST_ANY) / $denom)) + unit: (Cycles + $normUnit) tips: Active Cycles: - avg: AVG(((4 * SQ_ACTIVE_INST_ANY) / SQ_WAVES)) - min: MIN(((4 * SQ_ACTIVE_INST_ANY) / SQ_WAVES)) - max: MAX(((4 * SQ_ACTIVE_INST_ANY) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_ACTIVE_INST_ANY) / $denom)) + min: MIN(((4 * SQ_ACTIVE_INST_ANY) / $denom)) + max: MAX(((4 * SQ_ACTIVE_INST_ANY) / $denom)) + unit: (Cycles + $normUnit) tips: Wavefront Occupancy: avg: AVG((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE)) diff --git a/src/omniperf_analyze/configs/gfx906/1600_L1_cache.yaml b/src/omniperf_analyze/configs/gfx906/1600_L1_cache.yaml index a25e831de3..adcd9f2ad2 100644 --- a/src/omniperf_analyze/configs/gfx906/1600_L1_cache.yaml +++ b/src/omniperf_analyze/configs/gfx906/1600_L1_cache.yaml @@ -237,81 +237,107 @@ Panel Config: id: 1604 title: L1D - L2 Transactions header: + metric: Metric xfer: Xfer - mean: Mean + coherency: Coherency + avg: Avg min: Min max: Max unit: Unit tips: Tips metric: NC - Read: - mean: None # No perf counter + xfer: Read + coherency: NC + avg: None # No perf counter min: None # No perf counter max: None # No perf counter unit: (Req + $normUnit) tips: UC - Read: - mean: None # No perf counter + xfer: Read + coherency: UC + avg: None # No perf counter min: None # No perf counter max: None # No perf counter unit: (Req + $normUnit) tips: CC - Read: - mean: None # No perf counter + xfer: Read + coherency: CC + avg: None # No perf counter min: None # No perf counter max: None # No perf counter unit: (Req + $normUnit) tips: RW - Read: - mean: None # No perf counter + xfer: Read + coherency: RW + avg: None # No perf counter min: None # No perf counter max: None # No perf counter unit: (Req + $normUnit) tips: RW - Write: - mean: None # No perf counter + xfer: Write + coherency: RW + avg: None # No perf counter min: None # No perf counter max: None # No perf counter unit: (Req + $normUnit) tips: NC - Write: - mean: AVG((TCP_TCC_NC_WRITE_REQ_sum / $denom)) + xfer: Write + coherency: NC + avg: AVG((TCP_TCC_NC_WRITE_REQ_sum / $denom)) min: MIN((TCP_TCC_NC_WRITE_REQ_sum / $denom)) max: MAX((TCP_TCC_NC_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: - NC - Write: - mean: AVG((TCP_TCC_NC_WRITE_REQ_sum / $denom)) - min: MIN((TCP_TCC_NC_WRITE_REQ_sum / $denom)) - max: MAX((TCP_TCC_NC_WRITE_REQ_sum / $denom)) + CC - Write: + xfer: Write + coherency: CC + avg: AVG((TCP_TCC_CC_WRITE_REQ_sum / $denom)) + min: MIN((TCP_TCC_CC_WRITE_REQ_sum / $denom)) + max: MAX((TCP_TCC_CC_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: UC - Write: - mean: AVG((TCP_TCC_UC_WRITE_REQ_sum / $denom)) + xfer: Write + coherency: UC + avg: AVG((TCP_TCC_UC_WRITE_REQ_sum / $denom)) min: MIN((TCP_TCC_UC_WRITE_REQ_sum / $denom)) max: MAX((TCP_TCC_UC_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: NC - Atomic: - mean: None # No perf counter + xfer: Atomic + coherency: NC + avg: None # No perf counter min: None # No perf counter max: None # No perf counter unit: (Req + $normUnit) tips: UC - Atomic: - mean: None # No perf counter + xfer: Atomic + coherency: UC + avg: None # No perf counter min: None # No perf counter max: None # No perf counter unit: (Req + $normUnit) tips: CC - Atomic: - mean: None # No perf counter + xfer: Atomic + coherency: CC + avg: None # No perf counter min: None # No perf counter max: None # No perf counter unit: (Req + $normUnit) tips: RW - Atomic: - mean: None # No perf counter + xfer: Atomic + coherency: RW + avg: None # No perf counter min: None # No perf counter max: None # No perf counter unit: (Req + $normUnit) diff --git a/src/omniperf_analyze/configs/gfx906/1700_L2_cache.yaml b/src/omniperf_analyze/configs/gfx906/1700_L2_cache.yaml index 6133fc88f1..53235ca148 100644 --- a/src/omniperf_analyze/configs/gfx906/1700_L2_cache.yaml +++ b/src/omniperf_analyze/configs/gfx906/1700_L2_cache.yaml @@ -294,6 +294,8 @@ Panel Config: title: L2 - EA Interface Stalls header: metric: Metric + type: Type + transaction: Transaction avg: Avg min: Min max: Max @@ -301,42 +303,56 @@ Panel Config: tips: Tips metric: Read - Remote Socket Stall: + type: Remote Socket Stall + transaction: Read avg: AVG((TCC_EA_RDREQ_IO_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_RDREQ_IO_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_RDREQ_IO_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Read - Peer GCD Stall: + type: Peer GCD Stall + transaction: Read avg: AVG((TCC_EA_RDREQ_GMI_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_RDREQ_GMI_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_RDREQ_GMI_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Read - HBM Stall: + type: HBM Stall + transaction: Read avg: AVG((TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - Remote Socket Stall: + type: Remote Socket Stall + transaction: Write avg: AVG((TCC_EA_WRREQ_IO_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_WRREQ_IO_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_WRREQ_IO_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - Peer GCD Stall: + type: Peer GCD Stall + transaction: Write avg: AVG((TCC_EA_WRREQ_GMI_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_WRREQ_GMI_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_WRREQ_GMI_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - HBM Stall: + type: HBM Stall + transaction: Write avg: AVG((TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - Credit Starvation: + type: Credit Starvation + transaction: Write avg: AVG((TCC_TOO_MANY_EA_WRREQS_STALL_sum / $denom)) min: MIN((TCC_TOO_MANY_EA_WRREQS_STALL_sum / $denom)) max: MAX((TCC_TOO_MANY_EA_WRREQS_STALL_sum / $denom)) diff --git a/src/omniperf_analyze/configs/gfx906/1800_L2_cache_per_channel.yaml b/src/omniperf_analyze/configs/gfx906/1800_L2_cache_per_channel.yaml index 37a2954384..d0c59891cc 100644 --- a/src/omniperf_analyze/configs/gfx906/1800_L2_cache_per_channel.yaml +++ b/src/omniperf_analyze/configs/gfx906/1800_L2_cache_per_channel.yaml @@ -10,28 +10,28 @@ Panel Config: data source: - metric_table: id: 1801 - title: Channel 0 -15 + title: Channel 0-15 columnwise: True header: channel: Channel - hit rate: Hit Rate - req: Req - read req: Read Req - write req: Write Req - atomicreq: AtomicReq - ea read req: EA Read Req - ea write req: EA Write Req - ea atomicreq: EA AtomicReq - ea read lat - cycles: EA Read Lat - cycles - ea write lat - cycles: EA Write Lat - cycles - ea atomic lat - cycles: EA Atomic Lat - cycles - ea read stall - io: EA Read Stall - IO - ea read stall - gmi: EA Read Stall - GMI - ea read stall - dram: EA Read Stall - DRAM - ea write stall - io: EA Write Stall - IO - ea write stall - gmi: EA Write Stall - GMI - ea write stall - dram: EA Write Stall - DRAM - ea write stall - starve: EA Write Stall - Starve + hit rate: L2 Cache Hit Rate (%) + req: Requests (Requests) + read req: L1-L2 Read (Requests) + write req: L1-L2 Write (Requests) + atomic req: L1-L2 Atomic (Requests) + ea read req: L2-EA Read (Requests) + ea write req: L2-EA Write (Requests) + ea atomic req: L2-EA Atomic (Requests) + ea read lat - cycles: L2-EA Read Latency (Cycles) + ea write lat - cycles: L2-EA Write Latency (Cycles) + ea atomic lat - cycles: L2-EA Atomic Latency (Cycles) + ea read stall - io: L2-EA Read Stall - IO (Cycles per) + ea read stall - gmi: L2-EA Read Stall - GMI (Cycles per) + ea read stall - dram: L2-EA Read Stall - DRAM (Cycles per) + ea write stall - io: L2-EA Write Stall - IO (Cycles per) + ea write stall - gmi: L2-EA Write Stall - GMI (Cycles per) + ea write stall - dram: L2-EA Write Stall - DRAM (Cycles per) + ea write stall - starve: L2-EA Write Stall - Starve (Cycles per) tips: Tips metric: "0": @@ -41,10 +41,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[0]) / $denom)) read req: AVG((TO_INT(TCC_READ[0]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[0]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[0]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[0]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[0]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[0]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[0]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[0]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[0] / TCC_EA_RDREQ[0]) if (TCC_EA_RDREQ[0] != 0) else None)) @@ -69,10 +69,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[1]) / $denom)) read req: AVG((TO_INT(TCC_READ[1]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[1]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[1]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[1]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[1]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[1]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[1]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[1]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[1] / TCC_EA_RDREQ[1]) if (TCC_EA_RDREQ[1] != 0) else None)) @@ -97,10 +97,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[2]) / $denom)) read req: AVG((TO_INT(TCC_READ[2]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[2]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[2]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[2]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[2]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[2]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[2]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[2]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[2] / TCC_EA_RDREQ[2]) if (TCC_EA_RDREQ[2] != 0) else None)) @@ -125,10 +125,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[3]) / $denom)) read req: AVG((TO_INT(TCC_READ[3]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[3]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[3]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[3]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[3]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[3]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[3]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[3]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[3] / TCC_EA_RDREQ[3]) if (TCC_EA_RDREQ[3] != 0) else None)) @@ -153,10 +153,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[4]) / $denom)) read req: AVG((TO_INT(TCC_READ[4]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[4]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[4]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[4]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[4]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[4]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[4]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[4]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[4] / TCC_EA_RDREQ[4]) if (TCC_EA_RDREQ[4] != 0) else None)) @@ -181,10 +181,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[5]) / $denom)) read req: AVG((TO_INT(TCC_READ[5]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[5]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[5]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[5]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[5]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[5]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[5]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[5]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[5] / TCC_EA_RDREQ[5]) if (TCC_EA_RDREQ[5] != 0) else None)) @@ -209,10 +209,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[6]) / $denom)) read req: AVG((TO_INT(TCC_READ[6]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[6]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[6]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[6]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[6]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[6]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[6]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[6]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[6] / TCC_EA_RDREQ[6]) if (TCC_EA_RDREQ[6] != 0) else None)) @@ -237,10 +237,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[7]) / $denom)) read req: AVG((TO_INT(TCC_READ[7]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[7]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[7]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[7]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[7]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[7]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[7]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[7]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[7] / TCC_EA_RDREQ[7]) if (TCC_EA_RDREQ[7] != 0) else None)) @@ -265,10 +265,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[8]) / $denom)) read req: AVG((TO_INT(TCC_READ[8]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[8]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[8]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[8]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[8]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[8]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[8]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[8]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[8] / TCC_EA_RDREQ[8]) if (TCC_EA_RDREQ[8] != 0) else None)) @@ -293,10 +293,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[9]) / $denom)) read req: AVG((TO_INT(TCC_READ[9]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[9]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[9]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[9]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[9]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[9]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[9]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[9]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[9] / TCC_EA_RDREQ[9]) if (TCC_EA_RDREQ[9] != 0) else None)) @@ -321,10 +321,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[10]) / $denom)) read req: AVG((TO_INT(TCC_READ[10]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[10]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[10]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[10]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[10]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[10]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[10]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[10]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[10] / TCC_EA_RDREQ[10]) if (TCC_EA_RDREQ[10] != 0) else None)) @@ -349,10 +349,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[11]) / $denom)) read req: AVG((TO_INT(TCC_READ[11]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[11]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[11]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[11]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[11]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[11]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[11]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[11]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[11] / TCC_EA_RDREQ[11]) if (TCC_EA_RDREQ[11] != 0) else None)) @@ -377,10 +377,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[12]) / $denom)) read req: AVG((TO_INT(TCC_READ[12]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[12]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[12]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[12]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[12]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[12]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[12]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[12]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[12] / TCC_EA_RDREQ[12]) if (TCC_EA_RDREQ[12] != 0) else None)) @@ -405,10 +405,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[13]) / $denom)) read req: AVG((TO_INT(TCC_READ[13]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[13]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[13]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[13]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[13]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[13]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[13]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[13]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[13] / TCC_EA_RDREQ[13]) if (TCC_EA_RDREQ[13] != 0) else None)) @@ -433,10 +433,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[14]) / $denom)) read req: AVG((TO_INT(TCC_READ[14]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[14]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[14]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[14]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[14]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[14]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[14]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[14]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[14] / TCC_EA_RDREQ[14]) if (TCC_EA_RDREQ[14] != 0) else None)) @@ -461,10 +461,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[15]) / $denom)) read req: AVG((TO_INT(TCC_READ[15]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[15]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[15]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[15]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[15]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[15]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[15]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[15]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[15] / TCC_EA_RDREQ[15]) if (TCC_EA_RDREQ[15] != 0) else None)) @@ -485,28 +485,28 @@ Panel Config: - metric_table: id: 1802 - title: Channel 16 -31 + title: Channel 16-31 columnwise: True header: channel: Channel - hit rate: Hit Rate - req: Req - read req: Read Req - write req: Write Req - atomicreq: AtomicReq - ea read req: EA Read Req - ea write req: EA Write Req - ea atomicreq: EA AtomicReq - ea read lat - cycles: EA Read Lat - cycles - ea write lat - cycles: EA Write Lat - cycles - ea atomic lat - cycles: EA Atomic Lat - cycles - ea read stall - io: EA Read Stall - IO - ea read stall - gmi: EA Read Stall - GMI - ea read stall - dram: EA Read Stall - DRAM - ea write stall - io: EA Write Stall - IO - ea write stall - gmi: EA Write Stall - GMI - ea write stall - dram: EA Write Stall - DRAM - ea write stall - starve: EA Write Stall - Starve + hit rate: L2 Cache Hit Rate (%) + req: Requests (Requests) + read req: L1-L2 Read (Requests) + write req: L1-L2 Write (Requests) + atomic req: L1-L2 Atomic (Requests) + ea read req: L2-EA Read (Requests) + ea write req: L2-EA Write (Requests) + ea atomic req: L2-EA Atomic (Requests) + ea read lat - cycles: L2-EA Read Latency (Cycles) + ea write lat - cycles: L2-EA Write Latency (Cycles) + ea atomic lat - cycles: L2-EA Atomic Latency (Cycles) + ea read stall - io: L2-EA Read Stall - IO (Cycles per) + ea read stall - gmi: L2-EA Read Stall - GMI (Cycles per) + ea read stall - dram: L2-EA Read Stall - DRAM (Cycles per) + ea write stall - io: L2-EA Write Stall - IO (Cycles per) + ea write stall - gmi: L2-EA Write Stall - GMI (Cycles per) + ea write stall - dram: L2-EA Write Stall - DRAM (Cycles per) + ea write stall - starve: L2-EA Write Stall - Starve (Cycles per) tips: Tips metric: "16": @@ -514,10 +514,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -534,10 +534,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -554,10 +554,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -574,10 +574,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -594,10 +594,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -614,10 +614,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -634,10 +634,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -654,10 +654,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -674,10 +674,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -694,10 +694,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -714,10 +714,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -734,10 +734,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -754,10 +754,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -774,10 +774,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -794,10 +794,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter @@ -814,10 +814,10 @@ Panel Config: req: None # No perf counter read req: None # No perf counter write req: None # No perf counter - atomicreq: None # No perf counter + atomic req: None # No perf counter ea read req: None # No perf counter ea write req: None # No perf counter - ea atomicreq: None # No perf counter + ea atomic req: None # No perf counter ea read lat - cycles: None # No perf counter ea write lat - cycles: None # No perf counter ea atomic lat - cycles: None # No perf counter diff --git a/src/omniperf_analyze/configs/gfx908/0700_wavefront-launch.yaml b/src/omniperf_analyze/configs/gfx908/0700_wavefront-launch.yaml index 15bb646ce9..c0592783e6 100644 --- a/src/omniperf_analyze/configs/gfx908/0700_wavefront-launch.yaml +++ b/src/omniperf_analyze/configs/gfx908/0700_wavefront-launch.yaml @@ -104,28 +104,28 @@ Panel Config: unit: Instr/wavefront tips: Wave Cycles: - avg: AVG(((4 * SQ_WAVE_CYCLES) / SQ_WAVES)) - min: MIN(((4 * SQ_WAVE_CYCLES) / SQ_WAVES)) - max: MAX(((4 * SQ_WAVE_CYCLES) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_WAVE_CYCLES) / $denom)) + min: MIN(((4 * SQ_WAVE_CYCLES) / $denom)) + max: MAX(((4 * SQ_WAVE_CYCLES) / $denom)) + unit: (Cycles + $normUnit) tips: Dependency Wait Cycles: - avg: AVG(((4 * SQ_WAIT_ANY) / SQ_WAVES)) - min: MIN(((4 * SQ_WAIT_ANY) / SQ_WAVES)) - max: MAX(((4 * SQ_WAIT_ANY) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_WAIT_ANY) / $denom)) + min: MIN(((4 * SQ_WAIT_ANY) / $denom)) + max: MAX(((4 * SQ_WAIT_ANY) / $denom)) + unit: (Cycles + $normUnit) tips: Issue Wait Cycles: - avg: AVG(((4 * SQ_WAIT_INST_ANY) / SQ_WAVES)) - min: MIN(((4 * SQ_WAIT_INST_ANY) / SQ_WAVES)) - max: MAX(((4 * SQ_WAIT_INST_ANY) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_WAIT_INST_ANY) / $denom)) + min: MIN(((4 * SQ_WAIT_INST_ANY) / $denom)) + max: MAX(((4 * SQ_WAIT_INST_ANY) / $denom)) + unit: (Cycles + $normUnit) tips: Active Cycles: - avg: AVG(((4 * SQ_ACTIVE_INST_ANY) / SQ_WAVES)) - min: MIN(((4 * SQ_ACTIVE_INST_ANY) / SQ_WAVES)) - max: MAX(((4 * SQ_ACTIVE_INST_ANY) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_ACTIVE_INST_ANY) / $denom)) + min: MIN(((4 * SQ_ACTIVE_INST_ANY) / $denom)) + max: MAX(((4 * SQ_ACTIVE_INST_ANY) / $denom)) + unit: (Cycles + $normUnit) tips: Wavefront Occupancy: avg: AVG((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE)) diff --git a/src/omniperf_analyze/configs/gfx908/1600_L1_cache.yaml b/src/omniperf_analyze/configs/gfx908/1600_L1_cache.yaml index f609ee86c2..7e58ea2224 100644 --- a/src/omniperf_analyze/configs/gfx908/1600_L1_cache.yaml +++ b/src/omniperf_analyze/configs/gfx908/1600_L1_cache.yaml @@ -237,81 +237,107 @@ Panel Config: id: 1604 title: L1D - L2 Transactions header: + metric: Metric xfer: Xfer - mean: Mean + coherency: Coherency + avg: Avg min: Min max: Max unit: Unit tips: Tips metric: NC - Read: - mean: AVG((TCP_TCC_NC_READ_REQ_sum / $denom)) + xfer: Read + coherency: NC + avg: AVG((TCP_TCC_NC_READ_REQ_sum / $denom)) min: MIN((TCP_TCC_NC_READ_REQ_sum / $denom)) max: MAX((TCP_TCC_NC_READ_REQ_sum / $denom)) unit: (Req + $normUnit) tips: UC - Read: - mean: AVG((TCP_TCC_UC_READ_REQ_sum / $denom)) + xfer: Read + coherency: UC + avg: AVG((TCP_TCC_UC_READ_REQ_sum / $denom)) min: MIN((TCP_TCC_UC_READ_REQ_sum / $denom)) max: MAX((TCP_TCC_UC_READ_REQ_sum / $denom)) unit: (Req + $normUnit) tips: CC - Read: - mean: AVG((TCP_TCC_CC_READ_REQ_sum / $denom)) + xfer: Read + coherency: CC + avg: AVG((TCP_TCC_CC_READ_REQ_sum / $denom)) min: MIN((TCP_TCC_CC_READ_REQ_sum / $denom)) max: MAX((TCP_TCC_CC_READ_REQ_sum / $denom)) unit: (Req + $normUnit) tips: RW - Read: - mean: AVG((TCP_TCC_RW_READ_REQ_sum / $denom)) + xfer: Read + coherency: RW + avg: AVG((TCP_TCC_RW_READ_REQ_sum / $denom)) min: MIN((TCP_TCC_RW_READ_REQ_sum / $denom)) max: MAX((TCP_TCC_RW_READ_REQ_sum / $denom)) unit: (Req + $normUnit) tips: RW - Write: - mean: AVG((TCP_TCC_RW_WRITE_REQ_sum / $denom)) + xfer: Write + coherency: RW + avg: AVG((TCP_TCC_RW_WRITE_REQ_sum / $denom)) min: MIN((TCP_TCC_RW_WRITE_REQ_sum / $denom)) max: MAX((TCP_TCC_RW_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: NC - Write: - mean: AVG((TCP_TCC_NC_WRITE_REQ_sum / $denom)) + xfer: Write + coherency: NC + avg: AVG((TCP_TCC_NC_WRITE_REQ_sum / $denom)) min: MIN((TCP_TCC_NC_WRITE_REQ_sum / $denom)) max: MAX((TCP_TCC_NC_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: UC - Write: - mean: AVG((TCP_TCC_UC_WRITE_REQ_sum / $denom)) + xfer: Write + coherency: UC + avg: AVG((TCP_TCC_UC_WRITE_REQ_sum / $denom)) min: MIN((TCP_TCC_UC_WRITE_REQ_sum / $denom)) max: MAX((TCP_TCC_UC_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: CC - Write: - mean: AVG((TCP_TCC_CC_WRITE_REQ_sum / $denom)) + xfer: Write + coherency: CC + avg: AVG((TCP_TCC_CC_WRITE_REQ_sum / $denom)) min: MIN((TCP_TCC_CC_WRITE_REQ_sum / $denom)) max: MAX((TCP_TCC_CC_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: NC - Atomic: - mean: AVG((TCP_TCC_NC_ATOMIC_REQ_sum / $denom)) + xfer: Atomic + coherency: NC + avg: AVG((TCP_TCC_NC_ATOMIC_REQ_sum / $denom)) min: MIN((TCP_TCC_NC_ATOMIC_REQ_sum / $denom)) max: MAX((TCP_TCC_NC_ATOMIC_REQ_sum / $denom)) unit: (Req + $normUnit) tips: UC - Atomic: - mean: AVG((TCP_TCC_UC_ATOMIC_REQ_sum / $denom)) + xfer: Atomic + coherency: UC + avg: AVG((TCP_TCC_UC_ATOMIC_REQ_sum / $denom)) min: MIN((TCP_TCC_UC_ATOMIC_REQ_sum / $denom)) max: MAX((TCP_TCC_UC_ATOMIC_REQ_sum / $denom)) unit: (Req + $normUnit) tips: CC - Atomic: - mean: AVG((TCP_TCC_CC_ATOMIC_REQ_sum / $denom)) + xfer: Atomic + coherency: CC + avg: AVG((TCP_TCC_CC_ATOMIC_REQ_sum / $denom)) min: MIN((TCP_TCC_CC_ATOMIC_REQ_sum / $denom)) max: MAX((TCP_TCC_CC_ATOMIC_REQ_sum / $denom)) unit: (Req + $normUnit) tips: RW - Atomic: - mean: AVG((TCP_TCC_RW_ATOMIC_REQ_sum / $denom)) + xfer: Atomic + coherency: RW + avg: AVG((TCP_TCC_RW_ATOMIC_REQ_sum / $denom)) min: MIN((TCP_TCC_RW_ATOMIC_REQ_sum / $denom)) max: MAX((TCP_TCC_RW_ATOMIC_REQ_sum / $denom)) unit: (Req + $normUnit) diff --git a/src/omniperf_analyze/configs/gfx908/1700_L2_cache.yaml b/src/omniperf_analyze/configs/gfx908/1700_L2_cache.yaml index aca8e67037..9e76a39b65 100644 --- a/src/omniperf_analyze/configs/gfx908/1700_L2_cache.yaml +++ b/src/omniperf_analyze/configs/gfx908/1700_L2_cache.yaml @@ -294,6 +294,8 @@ Panel Config: title: L2 - EA Interface Stalls header: metric: Metric + type: Type + transaction: Transaction avg: Avg min: Min max: Max @@ -301,42 +303,56 @@ Panel Config: tips: Tips metric: Read - Remote Socket Stall: + type: Remote Socket Stall + transaction: Read avg: AVG((TCC_EA_RDREQ_IO_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_RDREQ_IO_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_RDREQ_IO_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Read - Peer GCD Stall: + type: Peer GCD Stall + transaction: Read avg: AVG((TCC_EA_RDREQ_GMI_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_RDREQ_GMI_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_RDREQ_GMI_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Read - HBM Stall: + type: HBM Stall + transaction: Read avg: AVG((TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - Remote Socket Stall: + type: Remote Socket Stall + transaction: Write avg: AVG((TCC_EA_WRREQ_IO_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_WRREQ_IO_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_WRREQ_IO_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - Peer GCD Stall: + type: Peer GCD Stall + transaction: Write avg: AVG((TCC_EA_WRREQ_GMI_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_WRREQ_GMI_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_WRREQ_GMI_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - HBM Stall: + type: HBM Stall + transaction: Write avg: AVG((TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - Credit Starvation: + type: Credit Starvation + transaction: Write avg: AVG((TCC_TOO_MANY_EA_WRREQS_STALL_sum / $denom)) min: MIN((TCC_TOO_MANY_EA_WRREQS_STALL_sum / $denom)) max: MAX((TCC_TOO_MANY_EA_WRREQS_STALL_sum / $denom)) diff --git a/src/omniperf_analyze/configs/gfx908/1800_L2_cache_per_channel.yaml b/src/omniperf_analyze/configs/gfx908/1800_L2_cache_per_channel.yaml index ad93c728f5..69e646db18 100644 --- a/src/omniperf_analyze/configs/gfx908/1800_L2_cache_per_channel.yaml +++ b/src/omniperf_analyze/configs/gfx908/1800_L2_cache_per_channel.yaml @@ -10,28 +10,28 @@ Panel Config: data source: - metric_table: id: 1801 - title: Channel 0 -15 + title: Channel 0-15 columnwise: True header: channel: Channel - hit rate: Hit Rate - req: Req - read req: Read Req - write req: Write Req - atomicreq: AtomicReq - ea read req: EA Read Req - ea write req: EA Write Req - ea atomicreq: EA AtomicReq - ea read lat - cycles: EA Read Lat - cycles - ea write lat - cycles: EA Write Lat - cycles - ea atomic lat - cycles: EA Atomic Lat - cycles - ea read stall - io: EA Read Stall - IO - ea read stall - gmi: EA Read Stall - GMI - ea read stall - dram: EA Read Stall - DRAM - ea write stall - io: EA Write Stall - IO - ea write stall - gmi: EA Write Stall - GMI - ea write stall - dram: EA Write Stall - DRAM - ea write stall - starve: EA Write Stall - Starve + hit rate: L2 Cache Hit Rate (%) + req: Requests (Requests) + read req: L1-L2 Read (Requests) + write req: L1-L2 Write (Requests) + atomic req: L1-L2 Atomic (Requests) + ea read req: L2-EA Read (Requests) + ea write req: L2-EA Write (Requests) + ea atomic req: L2-EA Atomic (Requests) + ea read lat - cycles: L2-EA Read Latency (Cycles) + ea write lat - cycles: L2-EA Write Latency (Cycles) + ea atomic lat - cycles: L2-EA Atomic Latency (Cycles) + ea read stall - io: L2-EA Read Stall - IO (Cycles per) + ea read stall - gmi: L2-EA Read Stall - GMI (Cycles per) + ea read stall - dram: L2-EA Read Stall - DRAM (Cycles per) + ea write stall - io: L2-EA Write Stall - IO (Cycles per) + ea write stall - gmi: L2-EA Write Stall - GMI (Cycles per) + ea write stall - dram: L2-EA Write Stall - DRAM (Cycles per) + ea write stall - starve: L2-EA Write Stall - Starve (Cycles per) tips: Tips metric: "0": @@ -41,10 +41,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[0]) / $denom)) read req: AVG((TO_INT(TCC_READ[0]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[0]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[0]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[0]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[0]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[0]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[0]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[0]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[0] / TCC_EA_RDREQ[0]) if (TCC_EA_RDREQ[0] != 0) else None)) @@ -69,10 +69,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[1]) / $denom)) read req: AVG((TO_INT(TCC_READ[1]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[1]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[1]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[1]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[1]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[1]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[1]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[1]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[1] / TCC_EA_RDREQ[1]) if (TCC_EA_RDREQ[1] != 0) else None)) @@ -97,10 +97,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[2]) / $denom)) read req: AVG((TO_INT(TCC_READ[2]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[2]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[2]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[2]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[2]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[2]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[2]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[2]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[2] / TCC_EA_RDREQ[2]) if (TCC_EA_RDREQ[2] != 0) else None)) @@ -125,10 +125,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[3]) / $denom)) read req: AVG((TO_INT(TCC_READ[3]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[3]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[3]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[3]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[3]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[3]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[3]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[3]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[3] / TCC_EA_RDREQ[3]) if (TCC_EA_RDREQ[3] != 0) else None)) @@ -153,10 +153,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[4]) / $denom)) read req: AVG((TO_INT(TCC_READ[4]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[4]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[4]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[4]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[4]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[4]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[4]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[4]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[4] / TCC_EA_RDREQ[4]) if (TCC_EA_RDREQ[4] != 0) else None)) @@ -181,10 +181,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[5]) / $denom)) read req: AVG((TO_INT(TCC_READ[5]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[5]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[5]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[5]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[5]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[5]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[5]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[5]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[5] / TCC_EA_RDREQ[5]) if (TCC_EA_RDREQ[5] != 0) else None)) @@ -209,10 +209,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[6]) / $denom)) read req: AVG((TO_INT(TCC_READ[6]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[6]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[6]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[6]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[6]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[6]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[6]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[6]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[6] / TCC_EA_RDREQ[6]) if (TCC_EA_RDREQ[6] != 0) else None)) @@ -237,10 +237,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[7]) / $denom)) read req: AVG((TO_INT(TCC_READ[7]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[7]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[7]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[7]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[7]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[7]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[7]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[7]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[7] / TCC_EA_RDREQ[7]) if (TCC_EA_RDREQ[7] != 0) else None)) @@ -265,10 +265,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[8]) / $denom)) read req: AVG((TO_INT(TCC_READ[8]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[8]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[8]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[8]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[8]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[8]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[8]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[8]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[8] / TCC_EA_RDREQ[8]) if (TCC_EA_RDREQ[8] != 0) else None)) @@ -293,10 +293,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[9]) / $denom)) read req: AVG((TO_INT(TCC_READ[9]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[9]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[9]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[9]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[9]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[9]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[9]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[9]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[9] / TCC_EA_RDREQ[9]) if (TCC_EA_RDREQ[9] != 0) else None)) @@ -321,10 +321,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[10]) / $denom)) read req: AVG((TO_INT(TCC_READ[10]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[10]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[10]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[10]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[10]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[10]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[10]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[10]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[10] / TCC_EA_RDREQ[10]) if (TCC_EA_RDREQ[10] != 0) else None)) @@ -349,10 +349,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[11]) / $denom)) read req: AVG((TO_INT(TCC_READ[11]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[11]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[11]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[11]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[11]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[11]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[11]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[11]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[11] / TCC_EA_RDREQ[11]) if (TCC_EA_RDREQ[11] != 0) else None)) @@ -377,10 +377,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[12]) / $denom)) read req: AVG((TO_INT(TCC_READ[12]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[12]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[12]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[12]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[12]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[12]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[12]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[12]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[12] / TCC_EA_RDREQ[12]) if (TCC_EA_RDREQ[12] != 0) else None)) @@ -405,10 +405,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[13]) / $denom)) read req: AVG((TO_INT(TCC_READ[13]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[13]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[13]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[13]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[13]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[13]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[13]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[13]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[13] / TCC_EA_RDREQ[13]) if (TCC_EA_RDREQ[13] != 0) else None)) @@ -433,10 +433,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[14]) / $denom)) read req: AVG((TO_INT(TCC_READ[14]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[14]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[14]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[14]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[14]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[14]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[14]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[14]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[14] / TCC_EA_RDREQ[14]) if (TCC_EA_RDREQ[14] != 0) else None)) @@ -461,10 +461,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[15]) / $denom)) read req: AVG((TO_INT(TCC_READ[15]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[15]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[15]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[15]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[15]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[15]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[15]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[15]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[15] / TCC_EA_RDREQ[15]) if (TCC_EA_RDREQ[15] != 0) else None)) @@ -485,28 +485,28 @@ Panel Config: - metric_table: id: 1802 - title: Channel 16 -31 + title: Channel 16-31 columnwise: True header: channel: Channel - hit rate: Hit Rate - req: Req - read req: Read Req - write req: Write Req - atomicreq: AtomicReq - ea read req: EA Read Req - ea write req: EA Write Req - ea atomicreq: EA AtomicReq - ea read lat - cycles: EA Read Lat - cycles - ea write lat - cycles: EA Write Lat - cycles - ea atomic lat - cycles: EA Atomic Lat - cycles - ea read stall - io: EA Read Stall - IO - ea read stall - gmi: EA Read Stall - GMI - ea read stall - dram: EA Read Stall - DRAM - ea write stall - io: EA Write Stall - IO - ea write stall - gmi: EA Write Stall - GMI - ea write stall - dram: EA Write Stall - DRAM - ea write stall - starve: EA Write Stall - Starve + hit rate: L2 Cache Hit Rate (%) + req: Requests (Requests) + read req: L1-L2 Read (Requests) + write req: L1-L2 Write (Requests) + atomic req: L1-L2 Atomic (Requests) + ea read req: L2-EA Read (Requests) + ea write req: L2-EA Write (Requests) + ea atomic req: L2-EA Atomic (Requests) + ea read lat - cycles: L2-EA Read Latency (Cycles) + ea write lat - cycles: L2-EA Write Latency (Cycles) + ea atomic lat - cycles: L2-EA Atomic Latency (Cycles) + ea read stall - io: L2-EA Read Stall - IO (Cycles per) + ea read stall - gmi: L2-EA Read Stall - GMI (Cycles per) + ea read stall - dram: L2-EA Read Stall - DRAM (Cycles per) + ea write stall - io: L2-EA Write Stall - IO (Cycles per) + ea write stall - gmi: L2-EA Write Stall - GMI (Cycles per) + ea write stall - dram: L2-EA Write Stall - DRAM (Cycles per) + ea write stall - starve: L2-EA Write Stall - Starve (Cycles per) tips: Tips metric: "16": @@ -516,10 +516,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[16]) / $denom)) read req: AVG((TO_INT(TCC_READ[16]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[16]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[16]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[16]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[16]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[16]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[16]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[16]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[16] / TCC_EA_RDREQ[16]) if (TCC_EA_RDREQ[16] != 0) else None)) @@ -544,10 +544,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[17]) / $denom)) read req: AVG((TO_INT(TCC_READ[17]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[17]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[17]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[17]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[17]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[17]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[17]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[17]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[17] / TCC_EA_RDREQ[17]) if (TCC_EA_RDREQ[17] != 0) else None)) @@ -572,10 +572,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[18]) / $denom)) read req: AVG((TO_INT(TCC_READ[18]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[18]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[18]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[18]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[18]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[18]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[18]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[18]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[18] / TCC_EA_RDREQ[18]) if (TCC_EA_RDREQ[18] != 0) else None)) @@ -600,10 +600,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[19]) / $denom)) read req: AVG((TO_INT(TCC_READ[19]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[19]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[19]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[19]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[19]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[19]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[19]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[19]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[19] / TCC_EA_RDREQ[19]) if (TCC_EA_RDREQ[19] != 0) else None)) @@ -628,10 +628,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[20]) / $denom)) read req: AVG((TO_INT(TCC_READ[20]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[20]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[20]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[20]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[20]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[20]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[20]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[20]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[20] / TCC_EA_RDREQ[20]) if (TCC_EA_RDREQ[20] != 0) else None)) @@ -656,10 +656,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[21]) / $denom)) read req: AVG((TO_INT(TCC_READ[21]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[21]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[21]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[21]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[21]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[21]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[21]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[21]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[21] / TCC_EA_RDREQ[21]) if (TCC_EA_RDREQ[21] != 0) else None)) @@ -684,10 +684,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[22]) / $denom)) read req: AVG((TO_INT(TCC_READ[22]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[22]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[22]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[22]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[22]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[22]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[22]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[22]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[22] / TCC_EA_RDREQ[22]) if (TCC_EA_RDREQ[22] != 0) else None)) @@ -712,10 +712,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[23]) / $denom)) read req: AVG((TO_INT(TCC_READ[23]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[23]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[23]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[23]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[23]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[23]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[23]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[23]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[23] / TCC_EA_RDREQ[23]) if (TCC_EA_RDREQ[23] != 0) else None)) @@ -740,10 +740,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[24]) / $denom)) read req: AVG((TO_INT(TCC_READ[24]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[24]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[24]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[24]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[24]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[24]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[24]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[24]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[24] / TCC_EA_RDREQ[24]) if (TCC_EA_RDREQ[24] != 0) else None)) @@ -768,10 +768,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[25]) / $denom)) read req: AVG((TO_INT(TCC_READ[25]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[25]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[25]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[25]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[25]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[25]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[25]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[25]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[25] / TCC_EA_RDREQ[25]) if (TCC_EA_RDREQ[25] != 0) else None)) @@ -796,10 +796,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[26]) / $denom)) read req: AVG((TO_INT(TCC_READ[26]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[26]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[26]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[26]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[26]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[26]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[26]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[26]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[26] / TCC_EA_RDREQ[26]) if (TCC_EA_RDREQ[26] != 0) else None)) @@ -824,10 +824,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[27]) / $denom)) read req: AVG((TO_INT(TCC_READ[27]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[27]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[27]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[27]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[27]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[27]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[27]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[27]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[27] / TCC_EA_RDREQ[27]) if (TCC_EA_RDREQ[27] != 0) else None)) @@ -852,10 +852,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[28]) / $denom)) read req: AVG((TO_INT(TCC_READ[28]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[28]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[28]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[28]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[28]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[28]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[28]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[28]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[28] / TCC_EA_RDREQ[28]) if (TCC_EA_RDREQ[28] != 0) else None)) @@ -880,10 +880,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[29]) / $denom)) read req: AVG((TO_INT(TCC_READ[29]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[29]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[29]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[29]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[29]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[29]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[29]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[29]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[29] / TCC_EA_RDREQ[29]) if (TCC_EA_RDREQ[29] != 0) else None)) @@ -908,10 +908,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[30]) / $denom)) read req: AVG((TO_INT(TCC_READ[30]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[30]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[30]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[30]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[30]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[30]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[30]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[30]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[30] / TCC_EA_RDREQ[30]) if (TCC_EA_RDREQ[30] != 0) else None)) @@ -936,10 +936,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[31]) / $denom)) read req: AVG((TO_INT(TCC_READ[31]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[31]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[31]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[31]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[31]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[31]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[31]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[31]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[31] / TCC_EA_RDREQ[31]) if (TCC_EA_RDREQ[31] != 0) else None)) diff --git a/src/omniperf_analyze/configs/gfx90a/0700_wavefront-launch.yaml b/src/omniperf_analyze/configs/gfx90a/0700_wavefront-launch.yaml index 2f20f8e3cc..fa53bbff74 100644 --- a/src/omniperf_analyze/configs/gfx90a/0700_wavefront-launch.yaml +++ b/src/omniperf_analyze/configs/gfx90a/0700_wavefront-launch.yaml @@ -104,28 +104,28 @@ Panel Config: unit: Instr/wavefront tips: Wave Cycles: - avg: AVG(((4 * SQ_WAVE_CYCLES) / SQ_WAVES)) - min: MIN(((4 * SQ_WAVE_CYCLES) / SQ_WAVES)) - max: MAX(((4 * SQ_WAVE_CYCLES) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_WAVE_CYCLES) / $denom)) + min: MIN(((4 * SQ_WAVE_CYCLES) / $denom)) + max: MAX(((4 * SQ_WAVE_CYCLES) / $denom)) + unit: (Cycles + $normUnit) tips: Dependency Wait Cycles: - avg: AVG(((4 * SQ_WAIT_ANY) / SQ_WAVES)) - min: MIN(((4 * SQ_WAIT_ANY) / SQ_WAVES)) - max: MAX(((4 * SQ_WAIT_ANY) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_WAIT_ANY) / $denom)) + min: MIN(((4 * SQ_WAIT_ANY) / $denom)) + max: MAX(((4 * SQ_WAIT_ANY) / $denom)) + unit: (Cycles + $normUnit) tips: Issue Wait Cycles: - avg: AVG(((4 * SQ_WAIT_INST_ANY) / SQ_WAVES)) - min: MIN(((4 * SQ_WAIT_INST_ANY) / SQ_WAVES)) - max: MAX(((4 * SQ_WAIT_INST_ANY) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_WAIT_INST_ANY) / $denom)) + min: MIN(((4 * SQ_WAIT_INST_ANY) / $denom)) + max: MAX(((4 * SQ_WAIT_INST_ANY) / $denom)) + unit: (Cycles + $normUnit) tips: Active Cycles: - avg: AVG(((4 * SQ_ACTIVE_INST_ANY) / SQ_WAVES)) - min: MIN(((4 * SQ_ACTIVE_INST_ANY) / SQ_WAVES)) - max: MAX(((4 * SQ_ACTIVE_INST_ANY) / SQ_WAVES)) - unit: Cycles/wave + avg: AVG(((4 * SQ_ACTIVE_INST_ANY) / $denom)) + min: MIN(((4 * SQ_ACTIVE_INST_ANY) / $denom)) + max: MAX(((4 * SQ_ACTIVE_INST_ANY) / $denom)) + unit: (Cycles + $normUnit) tips: Wavefront Occupancy: avg: AVG((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE)) diff --git a/src/omniperf_analyze/configs/gfx90a/1000_compute-unit-instruction-mix.yaml b/src/omniperf_analyze/configs/gfx90a/1000_compute-unit-instruction-mix.yaml index 3c000b4d7e..503bc702ee 100644 --- a/src/omniperf_analyze/configs/gfx90a/1000_compute-unit-instruction-mix.yaml +++ b/src/omniperf_analyze/configs/gfx90a/1000_compute-unit-instruction-mix.yaml @@ -163,17 +163,17 @@ Panel Config: tips: Tips metric: MFMA-I8: - count: AVG((SQ_INSTS_VALU_MFMA_I8 / SQ_WAVES)) + count: AVG((SQ_INSTS_VALU_MFMA_I8 / $denom)) tips: MFMA-F16: - count: AVG((SQ_INSTS_VALU_MFMA_F16 / SQ_WAVES)) + count: AVG((SQ_INSTS_VALU_MFMA_F16 / $denom)) tips: MFMA-BF16: - count: AVG((SQ_INSTS_VALU_MFMA_BF16 / SQ_WAVES)) + count: AVG((SQ_INSTS_VALU_MFMA_BF16 / $denom)) tips: MFMA-F32: - count: AVG((SQ_INSTS_VALU_MFMA_F32 / SQ_WAVES)) + count: AVG((SQ_INSTS_VALU_MFMA_F32 / $denom)) tips: MFMA-F64: - count: AVG((SQ_INSTS_VALU_MFMA_F64 / SQ_WAVES)) + count: AVG((SQ_INSTS_VALU_MFMA_F64 / $denom)) tips: diff --git a/src/omniperf_analyze/configs/gfx90a/1600_L1_cache.yaml b/src/omniperf_analyze/configs/gfx90a/1600_L1_cache.yaml index acf0d58bd1..275281031d 100644 --- a/src/omniperf_analyze/configs/gfx90a/1600_L1_cache.yaml +++ b/src/omniperf_analyze/configs/gfx90a/1600_L1_cache.yaml @@ -237,81 +237,107 @@ Panel Config: id: 1604 title: L1D - L2 Transactions header: + metric: Metric xfer: Xfer - mean: Mean + coherency: Coherency + avg: Avg min: Min max: Max unit: Unit tips: Tips metric: NC - Read: - mean: AVG((TCP_TCC_NC_READ_REQ_sum / $denom)) + xfer: Read + coherency: NC + avg: AVG((TCP_TCC_NC_READ_REQ_sum / $denom)) min: MIN((TCP_TCC_NC_READ_REQ_sum / $denom)) max: MAX((TCP_TCC_NC_READ_REQ_sum / $denom)) unit: (Req + $normUnit) tips: UC - Read: - mean: AVG((TCP_TCC_UC_READ_REQ_sum / $denom)) + xfer: Read + coherency: UC + avg: AVG((TCP_TCC_UC_READ_REQ_sum / $denom)) min: MIN((TCP_TCC_UC_READ_REQ_sum / $denom)) max: MAX((TCP_TCC_UC_READ_REQ_sum / $denom)) unit: (Req + $normUnit) tips: CC - Read: - mean: AVG((TCP_TCC_CC_READ_REQ_sum / $denom)) + xfer: Read + coherency: CC + avg: AVG((TCP_TCC_CC_READ_REQ_sum / $denom)) min: MIN((TCP_TCC_CC_READ_REQ_sum / $denom)) max: MAX((TCP_TCC_CC_READ_REQ_sum / $denom)) unit: (Req + $normUnit) tips: RW - Read: - mean: AVG((TCP_TCC_RW_READ_REQ_sum / $denom)) + xfer: Read + coherency: RW + avg: AVG((TCP_TCC_RW_READ_REQ_sum / $denom)) min: MIN((TCP_TCC_RW_READ_REQ_sum / $denom)) max: MAX((TCP_TCC_RW_READ_REQ_sum / $denom)) unit: (Req + $normUnit) tips: RW - Write: - mean: AVG((TCP_TCC_RW_WRITE_REQ_sum / $denom)) + xfer: Write + coherency: RW + avg: AVG((TCP_TCC_RW_WRITE_REQ_sum / $denom)) min: MIN((TCP_TCC_RW_WRITE_REQ_sum / $denom)) max: MAX((TCP_TCC_RW_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: NC - Write: - mean: AVG((TCP_TCC_NC_WRITE_REQ_sum / $denom)) + xfer: Write + coherency: NC + avg: AVG((TCP_TCC_NC_WRITE_REQ_sum / $denom)) min: MIN((TCP_TCC_NC_WRITE_REQ_sum / $denom)) max: MAX((TCP_TCC_NC_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: UC - Write: - mean: AVG((TCP_TCC_UC_WRITE_REQ_sum / $denom)) + xfer: Write + coherency: UC + avg: AVG((TCP_TCC_UC_WRITE_REQ_sum / $denom)) min: MIN((TCP_TCC_UC_WRITE_REQ_sum / $denom)) max: MAX((TCP_TCC_UC_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: CC - Write: - mean: AVG((TCP_TCC_CC_WRITE_REQ_sum / $denom)) + xfer: Write + coherency: CC + avg: AVG((TCP_TCC_CC_WRITE_REQ_sum / $denom)) min: MIN((TCP_TCC_CC_WRITE_REQ_sum / $denom)) max: MAX((TCP_TCC_CC_WRITE_REQ_sum / $denom)) unit: (Req + $normUnit) tips: NC - Atomic: - mean: AVG((TCP_TCC_NC_ATOMIC_REQ_sum / $denom)) + xfer: Atomic + coherency: NC + avg: AVG((TCP_TCC_NC_ATOMIC_REQ_sum / $denom)) min: MIN((TCP_TCC_NC_ATOMIC_REQ_sum / $denom)) max: MAX((TCP_TCC_NC_ATOMIC_REQ_sum / $denom)) unit: (Req + $normUnit) tips: UC - Atomic: - mean: AVG((TCP_TCC_UC_ATOMIC_REQ_sum / $denom)) + xfer: Atomic + coherency: UC + avg: AVG((TCP_TCC_UC_ATOMIC_REQ_sum / $denom)) min: MIN((TCP_TCC_UC_ATOMIC_REQ_sum / $denom)) max: MAX((TCP_TCC_UC_ATOMIC_REQ_sum / $denom)) unit: (Req + $normUnit) tips: CC - Atomic: - mean: AVG((TCP_TCC_CC_ATOMIC_REQ_sum / $denom)) + xfer: Atomic + coherency: CC + avg: AVG((TCP_TCC_CC_ATOMIC_REQ_sum / $denom)) min: MIN((TCP_TCC_CC_ATOMIC_REQ_sum / $denom)) max: MAX((TCP_TCC_CC_ATOMIC_REQ_sum / $denom)) unit: (Req + $normUnit) tips: RW - Atomic: - mean: AVG((TCP_TCC_RW_ATOMIC_REQ_sum / $denom)) + xfer: Atomic + coherency: RW + avg: AVG((TCP_TCC_RW_ATOMIC_REQ_sum / $denom)) min: MIN((TCP_TCC_RW_ATOMIC_REQ_sum / $denom)) max: MAX((TCP_TCC_RW_ATOMIC_REQ_sum / $denom)) unit: (Req + $normUnit) diff --git a/src/omniperf_analyze/configs/gfx90a/1700_L2_cache.yaml b/src/omniperf_analyze/configs/gfx90a/1700_L2_cache.yaml index d58d4f0822..7be18091af 100644 --- a/src/omniperf_analyze/configs/gfx90a/1700_L2_cache.yaml +++ b/src/omniperf_analyze/configs/gfx90a/1700_L2_cache.yaml @@ -294,6 +294,8 @@ Panel Config: title: L2 - Fabric Interface Stalls header: metric: Metric + type: Type + transaction: Transaction avg: Avg min: Min max: Max @@ -301,42 +303,56 @@ Panel Config: tips: Tips metric: Read - Remote Socket Stall: + type: Remote Socket Stall + transaction: Read avg: AVG((TCC_EA_RDREQ_IO_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_RDREQ_IO_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_RDREQ_IO_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Read - Peer GCD Stall: + type: Peer GCD Stall + transaction: Read avg: AVG((TCC_EA_RDREQ_GMI_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_RDREQ_GMI_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_RDREQ_GMI_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Read - HBM Stall: + type: HBM Stall + transaction: Read avg: AVG((TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - Remote Socket Stall: + type: Remote Socket Stall + transaction: Write avg: AVG((TCC_EA_WRREQ_IO_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_WRREQ_IO_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_WRREQ_IO_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - Peer GCD Stall: + type: Peer GCD Stall + transaction: Write avg: AVG((TCC_EA_WRREQ_GMI_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_WRREQ_GMI_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_WRREQ_GMI_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - HBM Stall: + type: HBM Stall + transaction: Write avg: AVG((TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum / $denom)) min: MIN((TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum / $denom)) max: MAX((TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum / $denom)) unit: (Req + $normUnit) tips: Write - Credit Starvation: + type: Credit Starvation + transaction: Write avg: AVG((TCC_TOO_MANY_EA_WRREQS_STALL_sum / $denom)) min: MIN((TCC_TOO_MANY_EA_WRREQS_STALL_sum / $denom)) max: MAX((TCC_TOO_MANY_EA_WRREQS_STALL_sum / $denom)) diff --git a/src/omniperf_analyze/configs/gfx90a/1800_L2_cache_per_channel.yaml b/src/omniperf_analyze/configs/gfx90a/1800_L2_cache_per_channel.yaml index 16b0930e61..4918e3a8d9 100644 --- a/src/omniperf_analyze/configs/gfx90a/1800_L2_cache_per_channel.yaml +++ b/src/omniperf_analyze/configs/gfx90a/1800_L2_cache_per_channel.yaml @@ -10,28 +10,28 @@ Panel Config: data source: - metric_table: id: 1801 - title: Channel 0 -15 + title: Channel 0-15 columnwise: True header: channel: Channel - hit rate: Hit Rate - req: Req - read req: Read Req - write req: Write Req - atomicreq: AtomicReq - ea read req: EA Read Req - ea write req: EA Write Req - ea atomicreq: EA AtomicReq - ea read lat - cycles: EA Read Lat - cycles - ea write lat - cycles: EA Write Lat - cycles - ea atomic lat - cycles: EA Atomic Lat - cycles - ea read stall - io: EA Read Stall - IO - ea read stall - gmi: EA Read Stall - GMI - ea read stall - dram: EA Read Stall - DRAM - ea write stall - io: EA Write Stall - IO - ea write stall - gmi: EA Write Stall - GMI - ea write stall - dram: EA Write Stall - DRAM - ea write stall - starve: EA Write Stall - Starve + hit rate: L2 Cache Hit Rate (%) + req: Requests (Requests) + read req: L1-L2 Read (Requests) + write req: L1-L2 Write (Requests) + atomic req: L1-L2 Atomic (Requests) + ea read req: L2-EA Read (Requests) + ea write req: L2-EA Write (Requests) + ea atomic req: L2-EA Atomic (Requests) + ea read lat - cycles: L2-EA Read Latency (Cycles) + ea write lat - cycles: L2-EA Write Latency (Cycles) + ea atomic lat - cycles: L2-EA Atomic Latency (Cycles) + ea read stall - io: L2-EA Read Stall - IO (Cycles per) + ea read stall - gmi: L2-EA Read Stall - GMI (Cycles per) + ea read stall - dram: L2-EA Read Stall - DRAM (Cycles per) + ea write stall - io: L2-EA Write Stall - IO (Cycles per) + ea write stall - gmi: L2-EA Write Stall - GMI (Cycles per) + ea write stall - dram: L2-EA Write Stall - DRAM (Cycles per) + ea write stall - starve: L2-EA Write Stall - Starve (Cycles per) tips: Tips metric: '0': @@ -40,10 +40,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[0]) / $denom)) read req: AVG((TO_INT(TCC_READ[0]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[0]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[0]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[0]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[0]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[0]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[0]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[0]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[0] / TCC_EA_RDREQ[0]) if (TCC_EA_RDREQ[0] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[0] / TCC_EA_WRREQ[0]) if (TCC_EA_WRREQ[0] @@ -64,10 +64,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[1]) / $denom)) read req: AVG((TO_INT(TCC_READ[1]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[1]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[1]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[1]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[1]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[1]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[1]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[1]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[1] / TCC_EA_RDREQ[1]) if (TCC_EA_RDREQ[1] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[1] / TCC_EA_WRREQ[1]) if (TCC_EA_WRREQ[1] @@ -88,10 +88,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[2]) / $denom)) read req: AVG((TO_INT(TCC_READ[2]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[2]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[2]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[2]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[2]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[2]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[2]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[2]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[2] / TCC_EA_RDREQ[2]) if (TCC_EA_RDREQ[2] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[2] / TCC_EA_WRREQ[2]) if (TCC_EA_WRREQ[2] @@ -112,10 +112,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[3]) / $denom)) read req: AVG((TO_INT(TCC_READ[3]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[3]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[3]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[3]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[3]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[3]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[3]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[3]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[3] / TCC_EA_RDREQ[3]) if (TCC_EA_RDREQ[3] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[3] / TCC_EA_WRREQ[3]) if (TCC_EA_WRREQ[3] @@ -136,10 +136,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[4]) / $denom)) read req: AVG((TO_INT(TCC_READ[4]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[4]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[4]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[4]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[4]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[4]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[4]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[4]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[4] / TCC_EA_RDREQ[4]) if (TCC_EA_RDREQ[4] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[4] / TCC_EA_WRREQ[4]) if (TCC_EA_WRREQ[4] @@ -160,10 +160,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[5]) / $denom)) read req: AVG((TO_INT(TCC_READ[5]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[5]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[5]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[5]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[5]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[5]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[5]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[5]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[5] / TCC_EA_RDREQ[5]) if (TCC_EA_RDREQ[5] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[5] / TCC_EA_WRREQ[5]) if (TCC_EA_WRREQ[5] @@ -184,10 +184,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[6]) / $denom)) read req: AVG((TO_INT(TCC_READ[6]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[6]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[6]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[6]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[6]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[6]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[6]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[6]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[6] / TCC_EA_RDREQ[6]) if (TCC_EA_RDREQ[6] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[6] / TCC_EA_WRREQ[6]) if (TCC_EA_WRREQ[6] @@ -208,10 +208,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[7]) / $denom)) read req: AVG((TO_INT(TCC_READ[7]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[7]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[7]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[7]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[7]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[7]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[7]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[7]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[7] / TCC_EA_RDREQ[7]) if (TCC_EA_RDREQ[7] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[7] / TCC_EA_WRREQ[7]) if (TCC_EA_WRREQ[7] @@ -232,10 +232,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[8]) / $denom)) read req: AVG((TO_INT(TCC_READ[8]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[8]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[8]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[8]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[8]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[8]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[8]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[8]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[8] / TCC_EA_RDREQ[8]) if (TCC_EA_RDREQ[8] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[8] / TCC_EA_WRREQ[8]) if (TCC_EA_WRREQ[8] @@ -256,10 +256,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[9]) / $denom)) read req: AVG((TO_INT(TCC_READ[9]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[9]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[9]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[9]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[9]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[9]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[9]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[9]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[9] / TCC_EA_RDREQ[9]) if (TCC_EA_RDREQ[9] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[9] / TCC_EA_WRREQ[9]) if (TCC_EA_WRREQ[9] @@ -280,10 +280,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[10]) / $denom)) read req: AVG((TO_INT(TCC_READ[10]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[10]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[10]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[10]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[10]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[10]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[10]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[10]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[10] / TCC_EA_RDREQ[10]) if (TCC_EA_RDREQ[10] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[10] / TCC_EA_WRREQ[10]) if (TCC_EA_WRREQ[10] @@ -304,10 +304,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[11]) / $denom)) read req: AVG((TO_INT(TCC_READ[11]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[11]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[11]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[11]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[11]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[11]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[11]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[11]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[11] / TCC_EA_RDREQ[11]) if (TCC_EA_RDREQ[11] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[11] / TCC_EA_WRREQ[11]) if (TCC_EA_WRREQ[11] @@ -328,10 +328,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[12]) / $denom)) read req: AVG((TO_INT(TCC_READ[12]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[12]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[12]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[12]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[12]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[12]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[12]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[12]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[12] / TCC_EA_RDREQ[12]) if (TCC_EA_RDREQ[12] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[12] / TCC_EA_WRREQ[12]) if (TCC_EA_WRREQ[12] @@ -352,10 +352,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[13]) / $denom)) read req: AVG((TO_INT(TCC_READ[13]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[13]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[13]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[13]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[13]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[13]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[13]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[13]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[13] / TCC_EA_RDREQ[13]) if (TCC_EA_RDREQ[13] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[13] / TCC_EA_WRREQ[13]) if (TCC_EA_WRREQ[13] @@ -376,10 +376,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[14]) / $denom)) read req: AVG((TO_INT(TCC_READ[14]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[14]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[14]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[14]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[14]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[14]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[14]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[14]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[14] / TCC_EA_RDREQ[14]) if (TCC_EA_RDREQ[14] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[14] / TCC_EA_WRREQ[14]) if (TCC_EA_WRREQ[14] @@ -400,10 +400,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[15]) / $denom)) read req: AVG((TO_INT(TCC_READ[15]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[15]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[15]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[15]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[15]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[15]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[15]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[15]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[15] / TCC_EA_RDREQ[15]) if (TCC_EA_RDREQ[15] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[15] / TCC_EA_WRREQ[15]) if (TCC_EA_WRREQ[15] @@ -420,28 +420,28 @@ Panel Config: tips: - metric_table: id: 1802 - title: Channel 16 -31 + title: Channel 16-31 columnwise: True header: channel: Channel - hit rate: Hit Rate - req: Req - read req: Read Req - write req: Write Req - atomicreq: AtomicReq - ea read req: EA Read Req - ea write req: EA Write Req - ea atomicreq: EA AtomicReq - ea read lat - cycles: EA Read Lat - cycles - ea write lat - cycles: EA Write Lat - cycles - ea atomic lat - cycles: EA Atomic Lat - cycles - ea read stall - io: EA Read Stall - IO - ea read stall - gmi: EA Read Stall - GMI - ea read stall - dram: EA Read Stall - DRAM - ea write stall - io: EA Write Stall - IO - ea write stall - gmi: EA Write Stall - GMI - ea write stall - dram: EA Write Stall - DRAM - ea write stall - starve: EA Write Stall - Starve + hit rate: L2 Cache Hit Rate (%) + req: Requests (Requests) + read req: L1-L2 Read (Requests) + write req: L1-L2 Write (Requests) + atomic req: L1-L2 Atomic (Requests) + ea read req: L2-EA Read (Requests) + ea write req: L2-EA Write (Requests) + ea atomic req: L2-EA Atomic (Requests) + ea read lat - cycles: L2-EA Read Latency (Cycles) + ea write lat - cycles: L2-EA Write Latency (Cycles) + ea atomic lat - cycles: L2-EA Atomic Latency (Cycles) + ea read stall - io: L2-EA Read Stall - IO (Cycles per) + ea read stall - gmi: L2-EA Read Stall - GMI (Cycles per) + ea read stall - dram: L2-EA Read Stall - DRAM (Cycles per) + ea write stall - io: L2-EA Write Stall - IO (Cycles per) + ea write stall - gmi: L2-EA Write Stall - GMI (Cycles per) + ea write stall - dram: L2-EA Write Stall - DRAM (Cycles per) + ea write stall - starve: L2-EA Write Stall - Starve (Cycles per) tips: Tips metric: '16': @@ -450,10 +450,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[16]) / $denom)) read req: AVG((TO_INT(TCC_READ[16]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[16]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[16]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[16]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[16]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[16]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[16]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[16]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[16] / TCC_EA_RDREQ[16]) if (TCC_EA_RDREQ[16] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[16] / TCC_EA_WRREQ[16]) if (TCC_EA_WRREQ[16] @@ -474,10 +474,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[17]) / $denom)) read req: AVG((TO_INT(TCC_READ[17]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[17]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[17]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[17]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[17]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[17]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[17]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[17]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[17] / TCC_EA_RDREQ[17]) if (TCC_EA_RDREQ[17] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[17] / TCC_EA_WRREQ[17]) if (TCC_EA_WRREQ[17] @@ -498,10 +498,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[18]) / $denom)) read req: AVG((TO_INT(TCC_READ[18]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[18]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[18]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[18]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[18]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[18]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[18]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[18]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[18] / TCC_EA_RDREQ[18]) if (TCC_EA_RDREQ[18] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[18] / TCC_EA_WRREQ[18]) if (TCC_EA_WRREQ[18] @@ -522,10 +522,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[19]) / $denom)) read req: AVG((TO_INT(TCC_READ[19]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[19]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[19]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[19]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[19]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[19]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[19]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[19]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[19] / TCC_EA_RDREQ[19]) if (TCC_EA_RDREQ[19] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[19] / TCC_EA_WRREQ[19]) if (TCC_EA_WRREQ[19] @@ -546,10 +546,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[20]) / $denom)) read req: AVG((TO_INT(TCC_READ[20]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[20]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[20]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[20]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[20]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[20]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[20]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[20]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[20] / TCC_EA_RDREQ[20]) if (TCC_EA_RDREQ[20] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[20] / TCC_EA_WRREQ[20]) if (TCC_EA_WRREQ[20] @@ -570,10 +570,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[21]) / $denom)) read req: AVG((TO_INT(TCC_READ[21]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[21]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[21]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[21]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[21]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[21]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[21]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[21]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[21] / TCC_EA_RDREQ[21]) if (TCC_EA_RDREQ[21] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[21] / TCC_EA_WRREQ[21]) if (TCC_EA_WRREQ[21] @@ -594,10 +594,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[22]) / $denom)) read req: AVG((TO_INT(TCC_READ[22]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[22]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[22]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[22]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[22]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[22]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[22]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[22]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[22] / TCC_EA_RDREQ[22]) if (TCC_EA_RDREQ[22] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[22] / TCC_EA_WRREQ[22]) if (TCC_EA_WRREQ[22] @@ -618,10 +618,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[23]) / $denom)) read req: AVG((TO_INT(TCC_READ[23]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[23]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[23]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[23]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[23]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[23]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[23]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[23]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[23] / TCC_EA_RDREQ[23]) if (TCC_EA_RDREQ[23] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[23] / TCC_EA_WRREQ[23]) if (TCC_EA_WRREQ[23] @@ -642,10 +642,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[24]) / $denom)) read req: AVG((TO_INT(TCC_READ[24]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[24]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[24]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[24]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[24]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[24]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[24]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[24]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[24] / TCC_EA_RDREQ[24]) if (TCC_EA_RDREQ[24] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[24] / TCC_EA_WRREQ[24]) if (TCC_EA_WRREQ[24] @@ -666,10 +666,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[25]) / $denom)) read req: AVG((TO_INT(TCC_READ[25]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[25]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[25]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[25]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[25]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[25]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[25]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[25]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[25] / TCC_EA_RDREQ[25]) if (TCC_EA_RDREQ[25] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[25] / TCC_EA_WRREQ[25]) if (TCC_EA_WRREQ[25] @@ -690,10 +690,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[26]) / $denom)) read req: AVG((TO_INT(TCC_READ[26]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[26]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[26]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[26]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[26]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[26]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[26]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[26]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[26] / TCC_EA_RDREQ[26]) if (TCC_EA_RDREQ[26] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[26] / TCC_EA_WRREQ[26]) if (TCC_EA_WRREQ[26] @@ -714,10 +714,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[27]) / $denom)) read req: AVG((TO_INT(TCC_READ[27]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[27]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[27]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[27]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[27]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[27]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[27]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[27]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[27] / TCC_EA_RDREQ[27]) if (TCC_EA_RDREQ[27] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[27] / TCC_EA_WRREQ[27]) if (TCC_EA_WRREQ[27] @@ -738,10 +738,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[28]) / $denom)) read req: AVG((TO_INT(TCC_READ[28]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[28]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[28]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[28]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[28]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[28]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[28]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[28]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[28] / TCC_EA_RDREQ[28]) if (TCC_EA_RDREQ[28] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[28] / TCC_EA_WRREQ[28]) if (TCC_EA_WRREQ[28] @@ -762,10 +762,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[29]) / $denom)) read req: AVG((TO_INT(TCC_READ[29]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[29]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[29]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[29]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[29]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[29]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[29]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[29]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[29] / TCC_EA_RDREQ[29]) if (TCC_EA_RDREQ[29] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[29] / TCC_EA_WRREQ[29]) if (TCC_EA_WRREQ[29] @@ -786,10 +786,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[30]) / $denom)) read req: AVG((TO_INT(TCC_READ[30]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[30]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[30]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[30]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[30]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[30]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[30]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[30]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[30] / TCC_EA_RDREQ[30]) if (TCC_EA_RDREQ[30] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[30] / TCC_EA_WRREQ[30]) if (TCC_EA_WRREQ[30] @@ -810,10 +810,10 @@ Panel Config: req: AVG((TO_INT(TCC_REQ[31]) / $denom)) read req: AVG((TO_INT(TCC_READ[31]) / $denom)) write req: AVG((TO_INT(TCC_WRITE[31]) / $denom)) - atomicreq: AVG((TO_INT(TCC_ATOMIC[31]) / $denom)) + atomic req: AVG((TO_INT(TCC_ATOMIC[31]) / $denom)) ea read req: AVG((TO_INT(TCC_EA_RDREQ[31]) / $denom)) ea write req: AVG((TO_INT(TCC_EA_WRREQ[31]) / $denom)) - ea atomicreq: AVG((TO_INT(TCC_EA_ATOMIC[31]) / $denom)) + ea atomic req: AVG((TO_INT(TCC_EA_ATOMIC[31]) / $denom)) ea read lat - cycles: AVG(((TCC_EA_RDREQ_LEVEL[31] / TCC_EA_RDREQ[31]) if (TCC_EA_RDREQ[31] != 0) else None)) ea write lat - cycles: AVG(((TCC_EA_WRREQ_LEVEL[31] / TCC_EA_WRREQ[31]) if (TCC_EA_WRREQ[31] diff --git a/src/omniperf_analyze/convertor/mongodb/convert b/src/omniperf_analyze/convertor/mongodb/convert index a5676dc317..dc8a33e920 100755 --- a/src/omniperf_analyze/convertor/mongodb/convert +++ b/src/omniperf_analyze/convertor/mongodb/convert @@ -1,7 +1,9 @@ #!/usr/bin/env python3 -################################################################################ -# Copyright (C) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -10,17 +12,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import ast import astunparse diff --git a/src/omniperf_analyze/convertor/sql/convertor.py b/src/omniperf_analyze/convertor/sql/convertor.py index fefab1b615..c6b36b5f97 100644 --- a/src/omniperf_analyze/convertor/sql/convertor.py +++ b/src/omniperf_analyze/convertor/sql/convertor.py @@ -1,7 +1,9 @@ #!/usr/bin/env python3 -################################################################################ -# Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -10,23 +12,22 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import re import sys if __name__ == "__main__": - with open(sys.argv[1], "r") as file: s = file.read() diff --git a/src/omniperf_analyze/convertor/sql/convertor2.py b/src/omniperf_analyze/convertor/sql/convertor2.py index 5247dcde16..cc2b89e6d7 100644 --- a/src/omniperf_analyze/convertor/sql/convertor2.py +++ b/src/omniperf_analyze/convertor/sql/convertor2.py @@ -1,7 +1,9 @@ #!/usr/bin/env python3 -################################################################################ -# Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. +################################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -10,23 +12,22 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +################################################################################el import re import sys if __name__ == "__main__": - with open(sys.argv[1], "r") as file: s = file.read() diff --git a/src/omniperf_analyze/omniperf_analyze.py b/src/omniperf_analyze/omniperf_analyze.py index 1d9c18028e..368e5c50c5 100644 --- a/src/omniperf_analyze/omniperf_analyze.py +++ b/src/omniperf_analyze/omniperf_analyze.py @@ -1,7 +1,9 @@ #!/usr/bin/env python3 -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -10,17 +12,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el """ Quick run: @@ -41,6 +43,7 @@ import argparse import os.path from pathlib import Path from omniperf_analyze.utils import parser, file_io +from omniperf_analyze.utils.gui_components.roofline import get_roofline def initialize_run(args, normalization_filter=None): @@ -143,7 +146,7 @@ def run_gui(args, runs): num_results, ) runs[args.path[0][0]].raw_pmc = file_io.create_df_pmc( - args.path[0][0] + args.path[0][0], args.verbose ) # create mega df parser.load_kernel_top(runs[args.path[0][0]], args.path[0][0]) @@ -188,7 +191,9 @@ def run_cli(args, runs): args.time_unit, num_results, ) - runs[d[0]].raw_pmc = file_io.create_df_pmc(d[0]) # creates mega dataframe + runs[d[0]].raw_pmc = file_io.create_df_pmc( + d[0], args.verbose + ) # creates mega dataframe is_gui = False parser.load_table_data( runs[d[0]], d[0], is_gui, args.g, args.verbose @@ -203,9 +208,37 @@ def run_cli(args, runs): args.decimal, args.time_unit, args.cols, + args.verbose, ) +def roofline_only(path_to_dir, dev_id, sort_type, mem_level, verbose): + import pandas as pd + from collections import OrderedDict + + # Change vL1D to a interpretable str, if required + if "vL1D" in mem_level: + mem_level.remove("vL1D") + mem_level.append("L1") + + app_path = path_to_dir + "/pmc_perf.csv" + roofline_exists = os.path.isfile(app_path) + if not roofline_exists: + print("Error: {} does not exist") + sys.exit(0) + t_df = OrderedDict() + t_df["pmc_perf"] = pd.read_csv(app_path) + get_roofline( + path_to_dir, + t_df, + verbose, + dev_id, # [Optional] Specify device id to collect roofline info from + sort_type, # [Optional] Sort AI by top kernels or dispatches + mem_level, # [Optional] Toggle particular level(s) of memory hierarchy + True, # [Optional] Generate a standalone roofline analysis + ) + + def analyze(args): if args.dependency: print("pip3 install astunparse numpy tabulate pandas pyyaml") diff --git a/src/omniperf_analyze/tests/unit/ast_parser_tester.py b/src/omniperf_analyze/tests/unit/ast_parser_tester.py index a04832e48a..f728743c2d 100644 --- a/src/omniperf_analyze/tests/unit/ast_parser_tester.py +++ b/src/omniperf_analyze/tests/unit/ast_parser_tester.py @@ -1,7 +1,9 @@ #!/usr/bin/env python3 -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -10,17 +12,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import ast import astunparse diff --git a/src/omniperf_analyze/utils/file_io.py b/src/omniperf_analyze/utils/file_io.py index 802dd82bf0..05219dbcca 100644 --- a/src/omniperf_analyze/utils/file_io.py +++ b/src/omniperf_analyze/utils/file_io.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,17 +10,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import os import pandas as pd @@ -180,7 +182,7 @@ def create_df_kernel_top_stats( grouped.to_csv(os.path.join(raw_data_dir, "pmc_kernel_top.csv"), index=False) -def create_df_pmc(raw_data_dir): +def create_df_pmc(raw_data_dir, verbose): """ Load all raw pmc counters and join into one df. """ @@ -200,8 +202,8 @@ def create_df_pmc(raw_data_dir): coll_levels.append(f[:-4]) final_df = pd.concat(dfs, keys=coll_levels, axis=1, copy=False) # TODO: join instead of concat! - - # print("pmc_raw_data final_df ", final_df.info()) + if verbose >= 2: + print("pmc_raw_data final_df ", final_df.info()) return final_df @@ -217,7 +219,6 @@ def collect_wave_occu_per_cu(in_dir, out_dir, numSE): for i in range(numSE): p = Path(in_dir, "wave_occu_se" + str(i) + ".csv") if p.exists(): - tmp_df = pd.read_csv(p) SE_idx = "SE" + str(tmp_df.loc[0, "SE"]) tmp_df.rename( diff --git a/src/omniperf_analyze/utils/gui.py b/src/omniperf_analyze/utils/gui.py index b96bcea8a2..eb083bfe9d 100644 --- a/src/omniperf_analyze/utils/gui.py +++ b/src/omniperf_analyze/utils/gui.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,22 +10,21 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el from selectors import EpollSelector import sys import copy -from matplotlib.axis import XAxis import pandas as pd from dash.dash_table import FormatTemplate from dash.dash_table.Format import Format, Scheme, Symbol @@ -51,19 +52,19 @@ HIDDEN_SECTIONS = ["Memory Chart Analysis", "Kernels"] HIDDEN_COLUMNS = ["Tips", "coll_level"] IS_DARK = True # default dark theme -# Add any elements you'd like displayed as a bar chart -barchart_elements = [ - 1001, # Instr mix - 1002, # VALU Arith Instr mix - 1101, # Compute pipe SOL - 1201, # LDS SOL - 1301, # Instruc cache SOL - 1401, # SL1D cache SOL - 1601, # VL1D cache SOL - 1701, # L2 cache SOL -] +# Define different types of bar charts +barchart_elements = { + # Group table ids by chart type + "instr_mix": [1001, 1002], + "multi_bar": [1604, 1704], + "sol": [1101, 1201, 1301, 1401, 1601, 1701], + "l2_cache_per_chan": [1801, 1802], +} +################## +# HELPER FUNCTIONS +################## def filter_df(column, df, filt): filt_df = df if filt != []: @@ -71,8 +72,20 @@ def filter_df(column, df, filt): return filt_df -def discrete_background_color_bins(df, n_bins=5, columns="all"): +def multi_bar_chart(table_id, display_df): + if table_id == 1604: + nested_bar = {"NC": {}, "UC": {}, "RW": {}, "CC": {}} + for index, row in display_df.iterrows(): + nested_bar[row["Coherency"]][row["Xfer"]] = row["Avg"] + if table_id == 1704: + nested_bar = {"Read": {}, "Write": {}} + for index, row in display_df.iterrows(): + nested_bar[row["Transaction"]][row["Type"]] = row["Avg"] + return nested_bar + + +def discrete_background_color_bins(df, n_bins=5, columns="all"): bounds = [i * (1.0 / n_bins) for i in range(n_bins + 1)] if columns == "all": if "id" in df: @@ -129,11 +142,14 @@ def discrete_background_color_bins(df, n_bins=5, columns="all"): return (styles, html.Div(legend, style={"padding": "5px 0 5px 0"})) -def build_bar_chart(display_df, table_config): +#################### +# GRAPHICAL ELEMENTS +#################### +def build_bar_chart(display_df, table_config, norm_filt): d_figs = [] # Insr Mix bar chart - if table_config["id"] == 1001 or table_config["id"] == 1002: + if table_config["id"] in barchart_elements["instr_mix"]: display_df["Count"] = [ x.astype(int) if x != "" else int(0) for x in display_df["Count"] ] @@ -150,8 +166,59 @@ def build_bar_chart(display_df, table_config): ) ) + # Multi bar chart + elif table_config["id"] in barchart_elements["multi_bar"]: + display_df["Avg"] = [ + x.astype(int) if x != "" else int(0) for x in display_df["Avg"] + ] + df_unit = display_df["Unit"][0] + nested_bar = multi_bar_chart(table_config["id"], display_df) + # generate chart for each coherency + for group, metric in nested_bar.items(): + d_figs.append( + px.bar( + title=group, + x=metric.values(), + y=metric.keys(), + labels={"x": df_unit, "y": ""}, + text=metric.values(), + orientation="h", + height=200, + ) + .update_xaxes(showgrid=False, rangemode="nonnegative") + .update_yaxes(showgrid=False) + .update_layout(title_x=0.5) + ) + # L2 Cache per channel + elif table_config["id"] in barchart_elements["l2_cache_per_chan"]: + nested_bar = {} + channels = [] + for colName, colData in display_df.items(): + if colName == "Channel": + channels = list(colData.values) + else: + display_df[colName] = [ + x.astype(float) if x != "" and x != None else float(0) + for x in display_df[colName] + ] + nested_bar[colName] = list(display_df[colName]) + for group, metric in nested_bar.items(): + d_figs.append( + px.bar( + title=group[0 : group.rfind("(")], + x=channels, + y=metric, + labels={ + "x": "Channel", + "y": group[group.rfind("(") + 1 : len(group) - 1].replace( + "per", norm_filt + ), + }, + ).update_yaxes(rangemode="nonnegative") + ) + # Speed-of-light bar chart - else: + elif table_config["id"] in barchart_elements["sol"]: display_df["Value"] = [ x.astype(float) if x != "" else float(0) for x in display_df["Value"] ] @@ -194,6 +261,13 @@ def build_bar_chart(display_df, table_config): orientation="h", ).update_xaxes(range=[0, 110]) ) + else: + print( + "ERROR: Table id {}. Cannot determine barchart type.".format( + table_config["id"] + ) + ) + sys.exit(-1) # update layout for each of the charts for fig in d_figs: @@ -343,13 +417,13 @@ def build_layout( def generate_from_filter( disp_filt, kernel_filter, gcd_filter, norm_filt, div_children ): - if verbose <= 1: + if verbose >= 1: print("normalization is ", norm_filt) base_data = initialize_run(args, norm_filt) # Re-initalize everything panel_configs = copy.deepcopy(archConfigs.panel_configs) # Generate original raw df - base_data[base_run].raw_pmc = file_io.create_df_pmc(path_to_dir) + base_data[base_run].raw_pmc = file_io.create_df_pmc(path_to_dir, verbose) if verbose >= 1: print("disp-filter is ", disp_filt) print("kernel-filter is ", kernel_filter) @@ -432,12 +506,39 @@ def build_layout( # Determine chart type: # a) Barchart - if table_config["id"] in barchart_elements: - d_figs = build_bar_chart(display_df, table_config) - for fig in d_figs: + if table_config["id"] in [ + x for i in barchart_elements.values() for x in i + ]: + d_figs = build_bar_chart(display_df, table_config, norm_filt) + # Smaller formatting if barchart yeilds several graphs + if ( + len(d_figs) > 2 + and not table_config["id"] + in barchart_elements["l2_cache_per_chan"] + ): + temp_obj = [] + for fig in d_figs: + temp_obj.append( + html.Div( + className="float-child", + children=[ + dcc.Graph( + figure=fig, style={"margin": "2%"} + ) + ], + ) + ) content.append( - dcc.Graph(figure=fig, style={"margin": "2%"}) + html.Div( + className="float-container", children=temp_obj + ) ) + # Normal formatting if < 2 graphs + else: + for fig in d_figs: + content.append( + dcc.Graph(figure=fig, style={"margin": "2%"}) + ) # B) Tablechart else: d_figs = build_table_chart( diff --git a/src/omniperf_analyze/utils/gui_components/header.py b/src/omniperf_analyze/utils/gui_components/header.py index 0e61055b0a..3dcf34be69 100644 --- a/src/omniperf_analyze/utils/gui_components/header.py +++ b/src/omniperf_analyze/utils/gui_components/header.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,26 +10,26 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el -from dash import html, dash_table, dcc +from dash import html, dcc import dash_bootstrap_components as dbc -from matplotlib.style import available from omniperf_analyze.utils import schema avail_normalizations = ["per_wave", "per_cycle", "per_second", "per_kernel"] + # List all the unique column values for desired column in df, 'target_col' def list_unique(orig_list, is_numeric): list_set = set(orig_list) diff --git a/src/omniperf_analyze/utils/gui_components/memchart.py b/src/omniperf_analyze/utils/gui_components/memchart.py index 8616ca9e30..f8af87d547 100644 --- a/src/omniperf_analyze/utils/gui_components/memchart.py +++ b/src/omniperf_analyze/utils/gui_components/memchart.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,17 +10,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import sys diff --git a/src/omniperf_analyze/utils/gui_components/roofline.py b/src/omniperf_analyze/utils/gui_components/roofline.py index 6e4ce2c54c..8fb6e36a74 100644 --- a/src/omniperf_analyze/utils/gui_components/roofline.py +++ b/src/omniperf_analyze/utils/gui_components/roofline.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,20 +10,21 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el from omniperf_analyze.utils import roofline_calc +import time import numpy as np from dash import html, dash_table @@ -36,91 +39,75 @@ def to_int(a): return int(a) -def generate_plots(roof_info, ai_data, verbose, fig=None): +def generate_plots(roof_info, ai_data, mem_level, is_standalone, verbose, fig=None): if fig is None: fig = go.Figure() - line_data = roofline_calc.empirical_roof(roof_info) + plotMode = "lines+text" if is_standalone else "lines" + line_data = roofline_calc.empirical_roof(roof_info, mem_level, verbose) + print("Line data:\n", line_data) ####################### # Plot BW Lines ####################### - fig.add_trace( - go.Scatter( - x=line_data["hbm"][0], - y=line_data["hbm"][1], - name="HBM-{}".format(roof_info["dtype"]), - mode="lines", - hovertemplate="%{text}", - text=[ - "{} GB/s".format(to_int(line_data["hbm"][2])), - "{} GFLOP/s".format(to_int(line_data["hbm"][2])), - ], + if mem_level == "ALL": + cacheHierarchy = ["HBM", "L2", "L1", "LDS"] + else: + cacheHierarchy = mem_level + + for cacheLevel in cacheHierarchy: + fig.add_trace( + go.Scatter( + x=line_data[cacheLevel.lower()][0], + y=line_data[cacheLevel.lower()][1], + name="{}-{}".format(cacheLevel, roof_info["dtype"]), + mode=plotMode, + hovertemplate="%{text}", + text=[ + "{} GB/s".format(to_int(line_data[cacheLevel.lower()][2])), + None + if is_standalone + else "{} GB/s".format(to_int(line_data[cacheLevel.lower()][2])), + ], + textposition="top right", + ) ) - ) - fig.add_trace( - go.Scatter( - x=line_data["l2"][0], - y=line_data["l2"][1], - name="L2-{}".format(roof_info["dtype"]), - mode="lines", - hovertemplate="%{text}", - text=[ - "{} GB/s".format(to_int(line_data["l2"][2])), - "{} GFLOP/s".format(to_int(line_data["l2"][2])), - ], - ) - ) - fig.add_trace( - go.Scatter( - x=line_data["l1"][0], - y=line_data["l1"][1], - name="L1-{}".format(roof_info["dtype"]), - mode="lines", - hovertemplate="%{text}", - text=[ - "{} GB/s".format(to_int(line_data["l1"][2])), - "{} GFLOP/s".format(to_int(line_data["l1"][2])), - ], - ) - ) - fig.add_trace( - go.Scatter( - x=line_data["lds"][0], - y=line_data["lds"][1], - name="LDS-{}".format(roof_info["dtype"]), - mode="lines", - hovertemplate="%{text}", - text=[ - "{} GB/s".format(to_int(line_data["lds"][2])), - "{} GFLOP/s".format(to_int(line_data["lds"][2])), - ], - ) - ) + if roof_info["dtype"] != "FP16" and roof_info["dtype"] != "I8": fig.add_trace( go.Scatter( x=line_data["valu"][0], y=line_data["valu"][1], name="Peak VALU-{}".format(roof_info["dtype"]), - mode="lines", + mode=plotMode, hovertemplate="%{text}", text=[ - "{} GFLOP/s".format(to_int(line_data["valu"][2])), + None + if is_standalone + else "{} GFLOP/s".format(to_int(line_data["valu"][2])), "{} GFLOP/s".format(to_int(line_data["valu"][2])), ], + textposition="top left", ) ) + + if roof_info["dtype"] == "FP16": + pos = "bottom left" + else: + pos = "top left" fig.add_trace( go.Scatter( x=line_data["mfma"][0], y=line_data["mfma"][1], name="Peak MFMA-{}".format(roof_info["dtype"]), - mode="lines", + mode=plotMode, hovertemplate="%{text}", text=[ - "{} GFLOP/s".format(to_int(line_data["mfma"][2])), + None + if is_standalone + else "{} GFLOP/s".format(to_int(line_data["mfma"][2])), "{} GFLOP/s".format(to_int(line_data["mfma"][2])), ], + textposition=pos, ) ) ####################### @@ -164,56 +151,86 @@ def generate_plots(roof_info, ai_data, verbose, fig=None): return fig -def get_roofline(path_to_dir, ret_df, verbose): +def get_roofline( + path_to_dir, + ret_df, + verbose, + dev_id=None, + sort_type="kernels", + mem_level="ALL", + is_standalone=False, +): # Roofline settings fp32_details = { "path": path_to_dir, - "sort": "kernels", + "sort": sort_type, "device": 0, "dtype": "FP32", } fp16_details = { "path": path_to_dir, - "sort": "kernels", + "sort": sort_type, "device": 0, "dtype": "FP16", } - int8_details = {"path": path_to_dir, "sort": "kernels", "device": 0, "dtype": "I8"} + int8_details = {"path": path_to_dir, "sort": sort_type, "device": 0, "dtype": "I8"} # Generate roofline plots print("Path: ", path_to_dir) - ai_data = roofline_calc.plot_application("kernels", ret_df, verbose) + ai_data = roofline_calc.plot_application(sort_type, ret_df, verbose) if verbose >= 1: # print AI data for each mem level + print("AI at each mem level") for i in ai_data: print(i, "->", ai_data[i]) print("\n") - fp32_fig = generate_plots(fp32_details, ai_data, verbose) - fp16_fig = generate_plots(fp16_details, ai_data, verbose) - ml_combo_fig = generate_plots(int8_details, ai_data, verbose, fp16_fig) - - return html.Section( - id="roofline", - children=[ - html.Div( - className="float-container", - children=[ - html.Div( - className="float-child", - children=[ - html.H3(children="Empirical Roofline Analysis (FP32/FP64)"), - dcc.Graph(figure=fp32_fig), - ], - ), - html.Div( - className="float-child", - children=[ - html.H3(children="Empirical Roofline Analysis (FP16/INT8)"), - dcc.Graph(figure=ml_combo_fig), - ], - ), - ], - ) - ], + fp32_fig = generate_plots(fp32_details, ai_data, mem_level, is_standalone, verbose) + fp16_fig = generate_plots(fp16_details, ai_data, mem_level, is_standalone, verbose) + ml_combo_fig = generate_plots( + int8_details, ai_data, mem_level, is_standalone, verbose, fp16_fig ) + + if is_standalone: + dev_id = "ALL" if dev_id == -1 else str(dev_id) + + fp32_fig.write_image(path_to_dir + "/empirRoof_gpu-{}_fp32.pdf".format(dev_id)) + ml_combo_fig.write_image( + path_to_dir + "/empirRoof_gpu-{}_fp8_fp16.pdf".format(dev_id) + ) + time.sleep(1) + # Re-save to remove loading MathJax pop up + fp32_fig.write_image(path_to_dir + "/empirRoof_gpu-{}_fp32.pdf".format(dev_id)) + ml_combo_fig.write_image( + path_to_dir + "/empirRoof_gpu-{}_fp8_fp16.pdf".format(dev_id) + ) + print("Empirical Roofline PDFs saved!") + else: + return html.Section( + id="roofline", + children=[ + html.Div( + className="float-container", + children=[ + html.Div( + className="float-child", + children=[ + html.H3( + children="Empirical Roofline Analysis (FP32/FP64)" + ), + dcc.Graph(figure=fp32_fig), + ], + ), + html.Div( + className="float-child", + children=[ + html.H3( + children="Empirical Roofline Analysis (FP16/INT8)" + ), + dcc.Graph(figure=ml_combo_fig), + ], + ), + ], + ) + ], + ) diff --git a/src/omniperf_analyze/utils/parser.py b/src/omniperf_analyze/utils/parser.py index ec925cef1a..cddf4960a2 100644 --- a/src/omniperf_analyze/utils/parser.py +++ b/src/omniperf_analyze/utils/parser.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,17 +10,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import ast import sys @@ -346,7 +348,6 @@ def build_dfs(archConfigs, filter_metrics): i = 0 for key, entries in data_cofig["metric"].items(): - data_source_idx = ( str(data_cofig["id"] // 100) + "." @@ -365,7 +366,6 @@ def build_dfs(archConfigs, filter_metrics): # the whole IP block in filter (str(panel_id // 100) in filter_metrics) ): - values.append(metric_idx) values.append(key) for k, v in entries.items(): @@ -401,7 +401,6 @@ def build_dfs(archConfigs, filter_metrics): or (data_source_idx == "0") # no filter or (data_source_idx in filter_metrics) ): - if ( "columnwise" in data_cofig and data_cofig["columnwise"] == True @@ -651,7 +650,7 @@ def apply_filters(workload, is_gui, debug): # NB: support ignoring the 1st n dispatched execution by '> n' # The better way may be parsing python slice string for d in workload.filter_dispatch_ids: - if int(d) > len(ret_df) - 2: # subtract 2 bc of the two header rows + if int(d) >= len(ret_df): # subtract 2 bc of the two header rows print("{} is an invalid dispatch id.".format(d)) sys.exit(1) if ">" in workload.filter_dispatch_ids[0]: diff --git a/src/omniperf_analyze/utils/roofline_calc.py b/src/omniperf_analyze/utils/roofline_calc.py index 1f49c7dde2..987b6694de 100644 --- a/src/omniperf_analyze/utils/roofline_calc.py +++ b/src/omniperf_analyze/utils/roofline_calc.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,31 +10,19 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el -from linecache import cache -import subprocess -from operator import sub -import os import sys -from pathlib import Path - -import numpy -import matplotlib.pyplot as plt -from matplotlib.pyplot import get, text -from math import log, pi, sqrt -import pandas as pd -import pylab from dataclasses import dataclass import csv @@ -54,6 +44,7 @@ FONT_WEIGHT = "bold" SUPPORTED_SOC = ["mi200"] + ################################################ # Helper funcs ################################################ @@ -68,6 +59,7 @@ class AI_Data: mfma_flops_bf16: float mfma_flops_f32: float mfma_flops_f64: float + mfma_iops_i8: float lds_data: float L1cache_data: float L2cache_data: float @@ -100,11 +92,14 @@ def get_color(catagory): # ------------------------------------------------------------------------------------- # Plot BW at each cache level # ------------------------------------------------------------------------------------- -def plot_roof(roof_details, roof_data): - +def plot_roof(roof_details, roof_data, mem_level, verbose): + # TODO: This is where filtering by memory level will need to occur for standalone graphPoints = {"hbm": [], "l2": [], "l1": [], "lds": [], "valu": [], "mfma": []} - cacheHierarchy = ["HBM", "L2", "L1", "LDS"] + if mem_level == "ALL": + cacheHierarchy = ["HBM", "L2", "L1", "LDS"] + else: + cacheHierarchy = mem_level x1 = y1 = x2 = y2 = -1 x1_mfma = y1_mfma = x2_mfma = y2_mfma = -1 @@ -116,7 +111,8 @@ def plot_roof(roof_details, roof_data): ) for i in range(0, len(cacheHierarchy)): # Plot BW line - # print("Current cache level is ", cacheHierarchy[i]) + if verbose >= 3: + print("Current cache level is ", cacheHierarchy[i]) curr_bw = cacheHierarchy[i] + "Bw" peakBw = float(roof_data[curr_bw][roof_details["device"]]) @@ -142,8 +138,9 @@ def plot_roof(roof_details, roof_data): y2_mfma = peakMFMA # These are the points to use: - # print("x = [{}, {}]".format(x1,x2_mfma)) - # print("y = [{}, {}]".format(y1, y2_mfma)) + if verbose >= 3: + print("x = [{}, {}]".format(x1, x2_mfma)) + print("y = [{}, {}]".format(y1, y2_mfma)) graphPoints[cacheHierarchy[i].lower()].append([x1, x2_mfma]) graphPoints[cacheHierarchy[i].lower()].append([y1, y2_mfma]) @@ -159,7 +156,8 @@ def plot_roof(roof_details, roof_data): if x2 < x0: x0 = x2 - # print("FMA ROOF [{}, {}], [{},{}]".format(x0, XMAX, peakOps, peakOps)) + if verbose >= 3: + print("FMA ROOF [{}, {}], [{},{}]".format(x0, XMAX, peakOps, peakOps)) graphPoints["valu"].append([x0, XMAX]) graphPoints["valu"].append([peakOps, peakOps]) graphPoints["valu"].append(peakOps) @@ -172,7 +170,8 @@ def plot_roof(roof_details, roof_data): if x2_mfma < x0_mfma: x0_mfma = x2_mfma - # print("MFMA ROOF [{}, {}], [{},{}]".format(x0_mfma, XMAX, peakMFMA, peakMFMA)) + if verbose >= 3: + print("MFMA ROOF [{}, {}], [{},{}]".format(x0_mfma, XMAX, peakMFMA, peakMFMA)) graphPoints["mfma"].append([x0_mfma, XMAX]) graphPoints["mfma"].append([peakMFMA, peakMFMA]) graphPoints["mfma"].append(peakMFMA) @@ -185,7 +184,6 @@ def plot_roof(roof_details, roof_data): # ------------------------------------------------------------------------------------- # Calculate relevent metrics for ai calculation def plot_application(sortType, ret_df, verbose): - df = ret_df["pmc_perf"] # Sort by top kernels or top dispatches? df = df.sort_values(by=["KernelName"]) @@ -231,6 +229,7 @@ def plot_application(sortType, ret_df, verbose): mfma_flops_bf16 / calls, mfma_flops_f32 / calls, mfma_flops_f64 / calls, + mfma_iops_i8 / calls, lds_data / calls, L1cache_data / calls, L2cache_data / calls, @@ -474,11 +473,7 @@ def plot_application(sortType, ret_df, verbose): return intensityPoints -def empirical_roof(roof_info): - - if roof_info["sort"] != "kernels" and roof_info["sort"] != "dispatches": - sys.exit("Invalid sort. Must be either 'kernels' or 'dispatches'") - +def empirical_roof(roof_info, mem_level, verbose): roofPath = roof_info["path"] + "/roofline.csv" # ----------------------------------------------------- # Initialize roofline data dictionary from roofline.csv @@ -517,7 +512,7 @@ def empirical_roof(roof_info): # ------------------ # Generate Roofline # ------------------ - results = plot_roof(roof_info, roof_data) + results = plot_roof(roof_info, roof_data, mem_level, verbose) # for key in results: # print(key, "->", results[key]) diff --git a/src/omniperf_analyze/utils/schema.py b/src/omniperf_analyze/utils/schema.py index 005afba02b..13d930916d 100644 --- a/src/omniperf_analyze/utils/schema.py +++ b/src/omniperf_analyze/utils/schema.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,17 +10,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el # # Define all common data storage classes, @@ -33,7 +35,6 @@ from collections import OrderedDict @dataclass class ArchConfig: - # [id: panel_config] pairs panel_configs: OrderedDict = field(default=dict) @@ -84,24 +85,24 @@ supported_field = [ "Alias", # Special keywords for L2 channel "Channel", - "Hit Rate", - "Req", - "Read Req", - "Write Req", - "AtomicReq", - "EA Read Req", - "EA Write Req", - "EA AtomicReq", - "EA Read Lat - cycles", - "EA Write Lat - cycles", - "EA Atomic Lat - cycles", - "EA Read Stall - IO", - "EA Read Stall - GMI", - "EA Read Stall - DRAM", - "EA Write Stall - IO", - "EA Write Stall - GMI", - "EA Write Stall - DRAM", - "EA Write Stall - Starve", + "L2 Cache Hit Rate (%)", + "Requests (Requests)", + "L1-L2 Read (Requests)", + "L1-L2 Write (Requests)", + "L1-L2 Atomic (Requests)", + "L2-EA Read (Requests)", + "L2-EA Write (Requests)", + "L2-EA Atomic (Requests)", + "L2-EA Read Latency (Cycles)", + "L2-EA Write Latency (Cycles)", + "L2-EA Atomic Latency (Cycles)", + "L2-EA Read Stall - IO (Cycles per)", + "L2-EA Read Stall - GMI (Cycles per)", + "L2-EA Read Stall - DRAM (Cycles per)", + "L2-EA Write Stall - IO (Cycles per)", + "L2-EA Write Stall - GMI (Cycles per)", + "L2-EA Write Stall - DRAM (Cycles per)", + "L2-EA Write Stall - Starve (Cycles per)", ] # The prefix of raw pmc_perf.csv diff --git a/src/omniperf_analyze/utils/tty.py b/src/omniperf_analyze/utils/tty.py index 0a8befbb98..0900fd689f 100644 --- a/src/omniperf_analyze/utils/tty.py +++ b/src/omniperf_analyze/utils/tty.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,17 +10,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import pandas as pd from tabulate import tabulate @@ -26,6 +28,7 @@ from tabulate import tabulate from omniperf_analyze.utils import schema, parser hidden_columns = ["Tips", "coll_level"] +hidden_sections = [1900, 2000] def string_multiple_lines(source, width, max_rows): @@ -44,19 +47,20 @@ def string_multiple_lines(source, width, max_rows): return "\n".join(lines) -def show_all(runs, archConfigs, output, decimal, time_unit, selected_cols): +def show_all(runs, archConfigs, output, decimal, time_unit, selected_cols, verbose): """ Show all panels with their data in plain text mode. """ comparable_columns = parser.build_comparable_columns(time_unit) for panel_id, panel in archConfigs.panel_configs.items(): - + # Skip panels that don't support baseline comparison + if panel_id in hidden_sections: + continue ss = "" # store content of all data_source from one pannel for data_source in panel["data source"]: for type, table_config in data_source.items(): - # take the 1st run as baseline base_run, base_data = next(iter(runs.items())) base_df = base_data.dfs[table_config["id"]] @@ -72,11 +76,9 @@ def show_all(runs, archConfigs, output, decimal, time_unit, selected_cols): ) or (type == "raw_csv_table") ): - if header in hidden_columns: pass elif header not in comparable_columns: - if ( type == "raw_csv_table" and table_config["source"] == "pmc_kernel_top.csv" @@ -102,18 +104,27 @@ def show_all(runs, archConfigs, output, decimal, time_unit, selected_cols): ): if run != base_run: # calc percentage over the baseline + base_df[header] = [ + float(x) if x != "" else float(0) + for x in base_df[header] + ] + cur_df[header] = [ + float(x) if x != "" else float(0) + for x in cur_df[header] + ] t_df = ( pd.concat( [ - base_df[header].astype("double"), - cur_df[header].astype("double"), + base_df[header], + cur_df[header], ], axis=1, ) .pct_change(axis="columns") .iloc[:, 1] ) - # print("---------", header, t_df) + if verbose >= 2: + print("---------", header, t_df) # show value + percentage # TODO: better alignment diff --git a/src/parser.py b/src/parser.py index 7e42d28ede..b305b60187 100644 --- a/src/parser.py +++ b/src/parser.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,20 +10,22 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import os import argparse +import subprocess + from common import ( OMNIPERF_HOME, PROG, @@ -31,7 +35,6 @@ from common import getVersion, getVersionDisplay def parse(my_parser): - # versioning info vData = getVersion() versionString = getVersionDisplay(vData["version"], vData["sha"], vData["mode"]) @@ -116,6 +119,49 @@ def parse(my_parser): default=None, help="\t\t\tKernel filtering.", ) + + result = subprocess.run( + ["which", "rocscope"], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + if result.returncode == 0: + profile_group.add_argument( + "-l", + "--i-feel-lucky", + required=False, + default=False, + action="store_true", + dest="lucky", + help="\t\t\tProfile only the most time consuming kernels.", + ) + profile_group.add_argument( + "-r", + "--use-rocscope", + required=False, + default=False, + action="store_true", + dest="use_rocscope", + help="\t\t\tUse rocscope for profiling", + ) + profile_group.add_argument( + "-s", + "--kernel-summaries", + required=False, + default=False, + action="store_true", + dest="summaries", + help="\t\t\tCreate kernel summaries.", + ) + else: + profile_group.add_argument( + "--i-feel-lucky", default=False, dest="lucky", help=argparse.SUPPRESS + ) + profile_group.add_argument( + "--use-rocscope", default=False, dest="use_rocscope", help=argparse.SUPPRESS + ) + profile_group.add_argument( + "--kernel-summaries", default=False, dest="summaries", help=argparse.SUPPRESS + ) + profile_group.add_argument( "-b", "--ipblocks", @@ -166,6 +212,7 @@ def parse(my_parser): metavar="", type=str, default="kernels", + choices=["kernels", "dispatches"], help="\t\t\tOverlay top kernels or top dispatches: (DEFAULT: kernels)\n\t\t\t kernels\n\t\t\t dispatches", ) roofline_group.add_argument( @@ -174,19 +221,11 @@ def parse(my_parser): required=False, choices=["HBM", "L2", "vL1D", "LDS"], metavar="", + nargs="+", type=str, default="ALL", help="\t\t\tFilter by memory level: (DEFAULT: ALL)\n\t\t\t HBM\n\t\t\t L2\n\t\t\t vL1D\n\t\t\t LDS", ) - roofline_group.add_argument( - "--axes", - default=None, - type=float, - required=False, - nargs="+", - metavar="", - help="\t\t\tDesired axis values for graph. As follows:\n\t\t\t xmin xmax ymin ymax", - ) roofline_group.add_argument( "--device", metavar="", @@ -348,7 +387,9 @@ def parse(my_parser): help="\t\tSpecify the output file.", ) analyze_group.add_argument( - "--list-kernels", action="store_true", help="\t\tList kernels." + "--list-kernels", + action="store_true", + help="\t\tList kernels. Top 10 kernels sorted by duration (descending order).", ) analyze_group.add_argument( "--list-metrics", @@ -358,35 +399,36 @@ def parse(my_parser): ) analyze_group.add_argument( "-b", - "--filter-metrics", + "--metric", + dest="filter_metrics", metavar="", nargs="+", - help="\t\tSpecify IP block/metric Ids from --list-metrics.", + help="\t\tSpecify IP block/metric id(s) from --list-metrics for filtering.", ) analyze_group.add_argument( "-k", - "--filter-kernels", + "--kernel", metavar="", type=int, dest="gpu_kernel", nargs="+", action="append", - help="\t\tSpecify kernel id from --list-kernels.", + help="\t\tSpecify kernel id(s) from --list-kernels for filtering.", ) analyze_group.add_argument( - "--filter-dispatch-ids", + "--dispatch", dest="gpu_dispatch_id", metavar="", nargs="+", action="append", - help="\t\tSpecify dispatch IDs.", + help="\t\tSpecify dispatch id(s) for filtering.", ) analyze_group.add_argument( - "--filter-gpu-ids", + "--gpu-id", dest="gpu_id", metavar="", nargs="+", - help="\t\tSpecify GPU IDs.", + help="\t\tSpecify GPU id(s) for filtering.", ) analyze_group.add_argument( "-n", diff --git a/src/perfmon_pub/gfx908_metrics.xml b/src/perfmon_pub/gfx908_metrics.xml new file mode 100644 index 0000000000..c38a8f8118 --- /dev/null +++ b/src/perfmon_pub/gfx908_metrics.xml @@ -0,0 +1,737 @@ + + # CPC counters + + + + + + + + + + + + + + + + + + + # GRBM counters + + + + + + + + + + + # SPI counters + + + + + + + + + + + + + + + + + + + # SQ counters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # TA counters + + + + + + + + + + + + + + + + + # TCA counters + + + # TCC counters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # TCP counters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # TD counters + + + + + + + + diff --git a/src/perfmon_pub/metrics.xml b/src/perfmon_pub/metrics.xml new file mode 100644 index 0000000000..e66531affe --- /dev/null +++ b/src/perfmon_pub/metrics.xml @@ -0,0 +1,163 @@ +#include "gfx908_metrics.xml" + + + + + + + + + + + + + + + + + + + + + + + + + #xlu - TA + + + + + + + + + + + + + + + + + + + + + + + + #xlu -TD + + + + + + + + + #xlu -TCP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #xlu - TCP + + + + + #xlu - TCC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/perfmon_pub/vega10/pmc_cpc_perf.txt b/src/perfmon_pub/vega10/pmc_cpc_perf.txt new file mode 100644 index 0000000000..c579c90580 --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_cpc_perf.txt @@ -0,0 +1,15 @@ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_CYCLES SQ_BUSY_CYCLES SQ_WAVES + +pmc: CPC_CPC_STAT_BUSY CPC_CPC_STAT_IDLE +pmc: CPC_CPC_TCIU_BUSY CPC_CPC_TCIU_IDLE +pmc: CPC_CPC_STAT_STALL CPC_UTCL1_STALL_ON_TRANSLATION +pmc: CPC_CPC_UTCL2IU_BUSY CPC_CPC_UTCL2IU_IDLE +pmc: CPC_CPC_UTCL2IU_STALL CPC_ME1_BUSY_FOR_PACKET_DECODE +pmc: CPC_ME1_DC0_SPI_BUSY + +range: +gpu: + +kernel: + + diff --git a/src/perfmon_pub/vega10/pmc_cpf_perf.txt b/src/perfmon_pub/vega10/pmc_cpf_perf.txt new file mode 100644 index 0000000000..452e42e8ae --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_cpf_perf.txt @@ -0,0 +1,13 @@ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_CYCLES SQ_BUSY_CYCLES SQ_WAVES + +pmc: CPF_CPF_STAT_BUSY CPF_CPF_STAT_STALL +pmc: CPF_CPF_TCIU_BUSY CPF_CPF_TCIU_STALL +pmc: CPF_CPF_STAT_IDLE CPF_CPF_TCIU_IDLE +pmc: CPF_CMP_UTCL1_STALL_ON_TRANSLATION + +range: +gpu: + +kernel: + + diff --git a/src/perfmon_pub/vega10/pmc_spi_perf.txt b/src/perfmon_pub/vega10/pmc_spi_perf.txt new file mode 100644 index 0000000000..09893f746f --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_spi_perf.txt @@ -0,0 +1,12 @@ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_CYCLES SQ_BUSY_CYCLES SQ_WAVES GRBM_SPI_BUSY + +pmc: SPI_CSN_WINDOW_VALID SPI_CSN_BUSY SPI_CSN_NUM_THREADGROUPS SPI_CSN_WAVE SPI_RA_REQ_NO_ALLOC SPI_RA_REQ_NO_ALLOC_CSN +pmc: SPI_RA_RES_STALL_CSN SPI_RA_TMP_STALL_CSN SPI_RA_WAVE_SIMD_FULL_CSN SPI_RA_VGPR_SIMD_FULL_CSN SPI_RA_SGPR_SIMD_FULL_CSN SPI_RA_LDS_CU_FULL_CSN +pmc: SPI_RA_BAR_CU_FULL_CSN SPI_RA_TGLIM_CU_FULL_CSN SPI_RA_WVLIM_STALL_CSN SPI_SWC_CSC_WR SPI_VWC_CSC_WR SPI_RA_BULKY_CU_FULL_CSN + +range: +gpu: + +kernel: + + diff --git a/src/perfmon_pub/vega10/pmc_sq_perf1.txt b/src/perfmon_pub/vega10/pmc_sq_perf1.txt new file mode 100644 index 0000000000..223c6f3cce --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_sq_perf1.txt @@ -0,0 +1,31 @@ +#SQ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_INSTS_VMEM_WR SQ_INSTS_VMEM_RD SQ_INSTS_VMEM SQ_INSTS_SALU SQ_INSTS_VSKIPPED +pmc: SQ_INSTS_SMEM SQ_INSTS_FLAT SQ_INSTS_LDS SQ_INSTS_GDS SQ_INSTS_EXP_GDS SQ_INSTS_BRANCH SQ_INSTS_SENDMSG SQ_INSTS +pmc: SQ_WAVE_CYCLES SQ_WAIT_ANY SQ_WAIT_INST_ANY SQ_ACTIVE_INST_ANY SQ_CYCLES SQ_BUSY_CYCLES SQ_BUSY_CU_CYCLES SQ_INSTS_VALU +pmc: SQ_ACTIVE_INST_VMEM SQ_ACTIVE_INST_LDS SQ_ACTIVE_INST_VALU SQ_ACTIVE_INST_SCA SQ_ACTIVE_INST_EXP_GDS SQ_ACTIVE_INST_MISC SQ_ACTIVE_INST_FLAT SQ_INST_CYCLES_VMEM_WR +pmc: SQ_INST_CYCLES_VMEM_RD SQ_INST_CYCLES_SMEM SQ_INST_CYCLES_SALU SQ_THREAD_CYCLES_VALU SQ_IFETCH SQ_LDS_BANK_CONFLICT SQ_LDS_ADDR_CONFLICT SQ_LDS_UNALIGNED_STALL +pmc: SQ_WAVES SQ_WAVES_EQ_64 SQ_WAVES_LT_64 SQ_WAVES_LT_48 SQ_WAVES_LT_32 SQ_WAVES_LT_16 SQ_ITEMS SQ_INSTS_VSKIPPED +pmc: SQ_LDS_MEM_VIOLATIONS SQ_LDS_ATOMIC_RETURN SQ_LDS_IDX_ACTIVE SQ_WAVES_RESTORED SQ_WAVES_SAVED SQ_INSTS_SMEM_NORM + + +#SQ:MI200 +#pmc: SQ_INSTS_MFMA SQ_INSTS_VALU_MFMA_I8 SQ_INSTS_VALU_MFMA_F16 SQ_INSTS_VALU_MFMA_BF16 SQ_INSTS_VALU_MFMA_F32 SQ_INSTS_VALU_MFMA_F64 SQ_VALU_MFMA_BUSY_CYCLES +#pmc: SQ_INSTS_FLAT_LDS_ONLY SQ_INSTS_VALU_MFMA_MOPS_I8 SQ_INSTS_VALU_MFMA_MOPS_F16 SQ_INSTS_VALU_MFMA_MOPS_BF16 SQ_INSTS_VALU_MFMA_MOPS_F32 SQ_INSTS_VALU_MFMA_MOPS_F64 + +#SQC +pmc: SQC_TC_INST_REQ SQC_TC_DATA_READ_REQ SQC_TC_DATA_WRITE_REQ SQC_TC_DATA_ATOMIC_REQ SQC_TC_STALL SQC_TC_REQ SQC_DCACHE_REQ_READ_16 +pmc: SQC_ICACHE_REQ SQC_ICACHE_HITS SQC_ICACHE_MISSES SQC_ICACHE_MISSES_DUPLICATE SQC_DCACHE_INPUT_VALID_READYB SQC_DCACHE_ATOMIC SQC_DCACHE_REQ_READ_8 +pmc: SQC_DCACHE_REQ SQC_DCACHE_HITS SQC_DCACHE_MISSES SQC_DCACHE_MISSES_DUPLICATE SQC_DCACHE_REQ_READ_1 SQC_DCACHE_REQ_READ_2 SQC_DCACHE_REQ_READ_4 + + + +######################################## +# Filtering +######################################## +range: +gpu: +kernel: + + + + diff --git a/src/perfmon_pub/vega10/pmc_sq_perf2.txt b/src/perfmon_pub/vega10/pmc_sq_perf2.txt new file mode 100644 index 0000000000..6f39f40015 --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_sq_perf2.txt @@ -0,0 +1,12 @@ +################################################# +# VMEM latency +################################################# +pmc: SQ_INSTS_VMEM SQ_INST_LEVEL_VMEM SQ_ACCUM_PREV_HIRES + + +range: +gpu: + +kernel: + + diff --git a/src/perfmon_pub/vega10/pmc_sq_perf3.txt b/src/perfmon_pub/vega10/pmc_sq_perf3.txt new file mode 100644 index 0000000000..7b48ccf564 --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_sq_perf3.txt @@ -0,0 +1,13 @@ +################################################# +# SMEM latency +################################################# +pmc: SQ_INSTS_SMEM SQ_INST_LEVEL_SMEM SQ_ACCUM_PREV_HIRES + + +range: +gpu: + + +kernel: + + diff --git a/src/perfmon_pub/vega10/pmc_sq_perf4.txt b/src/perfmon_pub/vega10/pmc_sq_perf4.txt new file mode 100644 index 0000000000..2161f8a1cb --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_sq_perf4.txt @@ -0,0 +1,11 @@ +################################################# +# ifetch latency +################################################# +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_WAVES SQ_IFETCH SQ_IFETCH_LEVEL SQ_ACCUM_PREV_HIRES + +range: +gpu: +kernel: + + + diff --git a/src/perfmon_pub/vega10/pmc_sq_perf6.txt b/src/perfmon_pub/vega10/pmc_sq_perf6.txt new file mode 100644 index 0000000000..13552f40f6 --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_sq_perf6.txt @@ -0,0 +1,15 @@ +################################################# +# LDS latency +################################################# +pmc: SQ_INSTS_LDS SQ_INST_LEVEL_LDS SQ_ACCUM_PREV_HIRES + +range: +gpu: + +kernel: + + + + + + diff --git a/src/perfmon_pub/vega10/pmc_sq_perf8.txt b/src/perfmon_pub/vega10/pmc_sq_perf8.txt new file mode 100644 index 0000000000..e322b01813 --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_sq_perf8.txt @@ -0,0 +1,7 @@ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE CPC_ME1_BUSY_FOR_PACKET_DECODE SQ_CYCLES SQ_WAVES SQ_WAVE_CYCLES SQ_BUSY_CYCLES SQ_LEVEL_WAVES SQ_ACCUM_PREV_HIRES + +gpu: +range: + +kernel: + diff --git a/src/perfmon_pub/vega10/pmc_sqc_perf1.txt b/src/perfmon_pub/vega10/pmc_sqc_perf1.txt new file mode 100644 index 0000000000..2b748eacc0 --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_sqc_perf1.txt @@ -0,0 +1,12 @@ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_CYCLES SQ_BUSY_CYCLES SQ_BUSY_CU_CYCLES SQ_WAVES SQ_WAVE_CYCLES + + +pmc: SQC_TC_INST_REQ SQC_TC_DATA_READ_REQ SQC_TC_DATA_WRITE_REQ SQC_TC_DATA_ATOMIC_REQ SQC_TC_STALL SQC_TC_REQ SQC_DCACHE_REQ_READ_16 +pmc: SQC_ICACHE_REQ SQC_ICACHE_HITS SQC_ICACHE_MISSES SQC_ICACHE_MISSES_DUPLICATE SQC_DCACHE_INPUT_VALID_READYB SQC_DCACHE_ATOMIC SQC_DCACHE_REQ_READ_8 +pmc: SQC_DCACHE_REQ SQC_DCACHE_HITS SQC_DCACHE_MISSES SQC_DCACHE_MISSES_DUPLICATE SQC_DCACHE_REQ_READ_1 SQC_DCACHE_REQ_READ_2 SQC_DCACHE_REQ_READ_4 + +range: +gpu: + +kernel: + diff --git a/src/perfmon_pub/vega10/pmc_ta_perf.txt b/src/perfmon_pub/vega10/pmc_ta_perf.txt new file mode 100644 index 0000000000..851f22400d --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_ta_perf.txt @@ -0,0 +1,37 @@ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_CYCLES SQ_BUSY_CYCLES SQ_BUSY_CU_CYCLES SQ_WAVES SQ_WAVE_CYCLES + +pmc: TA_TA_BUSY_sum TA_SH_FIFO_BUSY_sum +pmc: TA_SH_FIFO_CMD_BUSY_sum TA_SH_FIFO_ADDR_BUSY_sum +pmc: TA_SH_FIFO_DATA_BUSY_sum TA_SH_FIFO_DATA_SFIFO_BUSY_sum +pmc: TA_SH_FIFO_DATA_TFIFO_BUSY_sum TA_SQ_TA_CMD_CYCLES_sum +pmc: TA_SP_TA_ADDR_CYCLES_sum TA_SP_TA_DATA_CYCLES_sum + + +# Starvation +pmc: TA_SH_FIFO_ADDR_STARVED_WHILE_BUSY_CYCLES_sum TA_SH_FIFO_CMD_STARVED_WHILE_BUSY_CYCLES_sum +pmc: TA_SH_FIFO_DATA_STARVED_WHILE_BUSY_CYCLES_sum TA_TA_SH_FIFO_STARVED_sum + + + +# buffer access +pmc: TA_BUFFER_WAVEFRONTS_sum TA_BUFFER_READ_WAVEFRONTS_sum +pmc: TA_BUFFER_WRITE_WAVEFRONTS_sum TA_BUFFER_ATOMIC_WAVEFRONTS_sum +pmc: TA_BUFFER_TOTAL_CYCLES_sum TA_BUFFER_COALESCABLE_WAVEFRONTS_sum +pmc: TA_BUFFER_COALESCED_READ_CYCLES_sum TA_BUFFER_COALESCED_WRITE_CYCLES_sum + + +# stalls +pmc: TA_ADDR_STALLED_BY_TC_CYCLES_sum TA_TOTAL_WAVEFRONTS_sum +pmc: TA_ADDR_STALLED_BY_TD_CYCLES_sum TA_DATA_STALLED_BY_TC_CYCLES_sum + +# flat accesses +pmc: TA_FLAT_WAVEFRONTS_sum TA_FLAT_READ_WAVEFRONTS_sum +pmc: TA_FLAT_WRITE_WAVEFRONTS_sum TA_FLAT_ATOMIC_WAVEFRONTS_sum +pmc: TA_FLAT_COALESCEABLE_WAVEFRONTS_sum + + +range: + +gpu: + +kernel: diff --git a/src/perfmon_pub/vega10/pmc_tcc2_perf.txt b/src/perfmon_pub/vega10/pmc_tcc2_perf.txt new file mode 100644 index 0000000000..04b9a2bea5 --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_tcc2_perf.txt @@ -0,0 +1,26 @@ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_CYCLES SQ_BUSY_CYCLES SQ_WAVES + +# MI50: no TCC_RW_REQ +pmc: TCC_CYCLE[0] TCC_HIT[0] TCC_MISS[0] TCC_CYCLE[1] TCC_HIT[1] TCC_MISS[1] TCC_CYCLE[2] TCC_HIT[2] TCC_MISS[2] TCC_CYCLE[3] TCC_HIT[3] TCC_MISS[3] TCC_CYCLE[4] TCC_HIT[4] TCC_MISS[4] TCC_CYCLE[5] TCC_HIT[5] TCC_MISS[5] TCC_CYCLE[6] TCC_HIT[6] TCC_MISS[6] TCC_CYCLE[7] TCC_HIT[7] TCC_MISS[7] TCC_CYCLE[8] TCC_HIT[8] TCC_MISS[8] TCC_CYCLE[9] TCC_HIT[9] TCC_MISS[9] TCC_CYCLE[10] TCC_HIT[10] TCC_MISS[10] TCC_CYCLE[11] TCC_HIT[11] TCC_MISS[11] TCC_CYCLE[12] TCC_HIT[12] TCC_MISS[12] TCC_CYCLE[13] TCC_HIT[13] TCC_MISS[13] TCC_CYCLE[14] TCC_HIT[14] TCC_MISS[14] TCC_CYCLE[15] TCC_HIT[15] TCC_MISS[15] + + + +pmc: TCC_REQ[0] TCC_READ[0] TCC_WRITE[0] TCC_ATOMIC[0] TCC_REQ[1] TCC_READ[1] TCC_WRITE[1] TCC_ATOMIC[1] TCC_REQ[2] TCC_READ[2] TCC_WRITE[2] TCC_ATOMIC[2] TCC_REQ[3] TCC_READ[3] TCC_WRITE[3] TCC_ATOMIC[3] TCC_REQ[4] TCC_READ[4] TCC_WRITE[4] TCC_ATOMIC[4] TCC_REQ[5] TCC_READ[5] TCC_WRITE[5] TCC_ATOMIC[5] TCC_REQ[6] TCC_READ[6] TCC_WRITE[6] TCC_ATOMIC[6] TCC_REQ[7] TCC_READ[7] TCC_WRITE[7] TCC_ATOMIC[7] TCC_REQ[8] TCC_READ[8] TCC_WRITE[8] TCC_ATOMIC[8] TCC_REQ[9] TCC_READ[9] TCC_WRITE[9] TCC_ATOMIC[9] TCC_REQ[10] TCC_READ[10] TCC_WRITE[10] TCC_ATOMIC[10] TCC_REQ[11] TCC_READ[11] TCC_WRITE[11] TCC_ATOMIC[11] TCC_REQ[12] TCC_READ[12] TCC_WRITE[12] TCC_ATOMIC[12] TCC_REQ[13] TCC_READ[13] TCC_WRITE[13] TCC_ATOMIC[13] TCC_REQ[14] TCC_READ[14] TCC_WRITE[14] TCC_ATOMIC[14] TCC_REQ[15] TCC_READ[15] TCC_WRITE[15] TCC_ATOMIC[15] + + + +pmc: TCC_EA_RDREQ[0] TCC_EA_RDREQ_32B[0] TCC_EA_WRREQ[0] TCC_EA_WRREQ_64B[0] TCC_EA_RDREQ[1] TCC_EA_RDREQ_32B[1] TCC_EA_WRREQ[1] TCC_EA_WRREQ_64B[1] TCC_EA_RDREQ[2] TCC_EA_RDREQ_32B[2] TCC_EA_WRREQ[2] TCC_EA_WRREQ_64B[2] TCC_EA_RDREQ[3] TCC_EA_RDREQ_32B[3] TCC_EA_WRREQ[3] TCC_EA_WRREQ_64B[3] TCC_EA_RDREQ[4] TCC_EA_RDREQ_32B[4] TCC_EA_WRREQ[4] TCC_EA_WRREQ_64B[4] TCC_EA_RDREQ[5] TCC_EA_RDREQ_32B[5] TCC_EA_WRREQ[5] TCC_EA_WRREQ_64B[5] TCC_EA_RDREQ[6] TCC_EA_RDREQ_32B[6] TCC_EA_WRREQ[6] TCC_EA_WRREQ_64B[6] TCC_EA_RDREQ[7] TCC_EA_RDREQ_32B[7] TCC_EA_WRREQ[7] TCC_EA_WRREQ_64B[7] TCC_EA_RDREQ[8] TCC_EA_RDREQ_32B[8] TCC_EA_WRREQ[8] TCC_EA_WRREQ_64B[8] TCC_EA_RDREQ[9] TCC_EA_RDREQ_32B[9] TCC_EA_WRREQ[9] TCC_EA_WRREQ_64B[9] TCC_EA_RDREQ[10] TCC_EA_RDREQ_32B[10] TCC_EA_WRREQ[10] TCC_EA_WRREQ_64B[10] TCC_EA_RDREQ[11] TCC_EA_RDREQ_32B[11] TCC_EA_WRREQ[11] TCC_EA_WRREQ_64B[11] TCC_EA_RDREQ[12] TCC_EA_RDREQ_32B[12] TCC_EA_WRREQ[12] TCC_EA_WRREQ_64B[12] TCC_EA_RDREQ[13] TCC_EA_RDREQ_32B[13] TCC_EA_WRREQ[13] TCC_EA_WRREQ_64B[13] TCC_EA_RDREQ[14] TCC_EA_RDREQ_32B[14] TCC_EA_WRREQ[14] TCC_EA_WRREQ_64B[14] TCC_EA_RDREQ[15] TCC_EA_RDREQ_32B[15] TCC_EA_WRREQ[15] TCC_EA_WRREQ_64B[15] + + +pmc: TCC_EA_ATOMIC[0] TCC_EA_RDREQ_LEVEL[0] TCC_EA_WRREQ_LEVEL[0] TCC_EA_ATOMIC_LEVEL[0] TCC_EA_ATOMIC[1] TCC_EA_RDREQ_LEVEL[1] TCC_EA_WRREQ_LEVEL[1] TCC_EA_ATOMIC_LEVEL[1] TCC_EA_ATOMIC[2] TCC_EA_RDREQ_LEVEL[2] TCC_EA_WRREQ_LEVEL[2] TCC_EA_ATOMIC_LEVEL[2] TCC_EA_ATOMIC[3] TCC_EA_RDREQ_LEVEL[3] TCC_EA_WRREQ_LEVEL[3] TCC_EA_ATOMIC_LEVEL[3] TCC_EA_ATOMIC[4] TCC_EA_RDREQ_LEVEL[4] TCC_EA_WRREQ_LEVEL[4] TCC_EA_ATOMIC_LEVEL[4] TCC_EA_ATOMIC[5] TCC_EA_RDREQ_LEVEL[5] TCC_EA_WRREQ_LEVEL[5] TCC_EA_ATOMIC_LEVEL[5] TCC_EA_ATOMIC[6] TCC_EA_RDREQ_LEVEL[6] TCC_EA_WRREQ_LEVEL[6] TCC_EA_ATOMIC_LEVEL[6] TCC_EA_ATOMIC[7] TCC_EA_RDREQ_LEVEL[7] TCC_EA_WRREQ_LEVEL[7] TCC_EA_ATOMIC_LEVEL[7] TCC_EA_ATOMIC[8] TCC_EA_RDREQ_LEVEL[8] TCC_EA_WRREQ_LEVEL[8] TCC_EA_ATOMIC_LEVEL[8] TCC_EA_ATOMIC[9] TCC_EA_RDREQ_LEVEL[9] TCC_EA_WRREQ_LEVEL[9] TCC_EA_ATOMIC_LEVEL[9] TCC_EA_ATOMIC[10] TCC_EA_RDREQ_LEVEL[10] TCC_EA_WRREQ_LEVEL[10] TCC_EA_ATOMIC_LEVEL[10] TCC_EA_ATOMIC[11] TCC_EA_RDREQ_LEVEL[11] TCC_EA_WRREQ_LEVEL[11] TCC_EA_ATOMIC_LEVEL[11] TCC_EA_ATOMIC[12] TCC_EA_RDREQ_LEVEL[12] TCC_EA_WRREQ_LEVEL[12] TCC_EA_ATOMIC_LEVEL[12] TCC_EA_ATOMIC[13] TCC_EA_RDREQ_LEVEL[13] TCC_EA_WRREQ_LEVEL[13] TCC_EA_ATOMIC_LEVEL[13] TCC_EA_ATOMIC[14] TCC_EA_RDREQ_LEVEL[14] TCC_EA_WRREQ_LEVEL[14] TCC_EA_ATOMIC_LEVEL[14] TCC_EA_ATOMIC[15] TCC_EA_RDREQ_LEVEL[15] TCC_EA_WRREQ_LEVEL[15] TCC_EA_ATOMIC_LEVEL[15] + + +pmc: TCC_EA_RDREQ_IO_CREDIT_STALL[0] TCC_EA_RDREQ_GMI_CREDIT_STALL[0] TCC_EA_RDREQ_DRAM_CREDIT_STALL[0] TCC_EA_RDREQ_IO_CREDIT_STALL[1] TCC_EA_RDREQ_GMI_CREDIT_STALL[1] TCC_EA_RDREQ_DRAM_CREDIT_STALL[1] TCC_EA_RDREQ_IO_CREDIT_STALL[2] TCC_EA_RDREQ_GMI_CREDIT_STALL[2] TCC_EA_RDREQ_DRAM_CREDIT_STALL[2] TCC_EA_RDREQ_IO_CREDIT_STALL[3] TCC_EA_RDREQ_GMI_CREDIT_STALL[3] TCC_EA_RDREQ_DRAM_CREDIT_STALL[3] TCC_EA_RDREQ_IO_CREDIT_STALL[4] TCC_EA_RDREQ_GMI_CREDIT_STALL[4] TCC_EA_RDREQ_DRAM_CREDIT_STALL[4] TCC_EA_RDREQ_IO_CREDIT_STALL[5] TCC_EA_RDREQ_GMI_CREDIT_STALL[5] TCC_EA_RDREQ_DRAM_CREDIT_STALL[5] TCC_EA_RDREQ_IO_CREDIT_STALL[6] TCC_EA_RDREQ_GMI_CREDIT_STALL[6] TCC_EA_RDREQ_DRAM_CREDIT_STALL[6] TCC_EA_RDREQ_IO_CREDIT_STALL[7] TCC_EA_RDREQ_GMI_CREDIT_STALL[7] TCC_EA_RDREQ_DRAM_CREDIT_STALL[7] TCC_EA_RDREQ_IO_CREDIT_STALL[8] TCC_EA_RDREQ_GMI_CREDIT_STALL[8] TCC_EA_RDREQ_DRAM_CREDIT_STALL[8] TCC_EA_RDREQ_IO_CREDIT_STALL[9] TCC_EA_RDREQ_GMI_CREDIT_STALL[9] TCC_EA_RDREQ_DRAM_CREDIT_STALL[9] TCC_EA_RDREQ_IO_CREDIT_STALL[10] TCC_EA_RDREQ_GMI_CREDIT_STALL[10] TCC_EA_RDREQ_DRAM_CREDIT_STALL[10] TCC_EA_RDREQ_IO_CREDIT_STALL[11] TCC_EA_RDREQ_GMI_CREDIT_STALL[11] TCC_EA_RDREQ_DRAM_CREDIT_STALL[11] TCC_EA_RDREQ_IO_CREDIT_STALL[12] TCC_EA_RDREQ_GMI_CREDIT_STALL[12] TCC_EA_RDREQ_DRAM_CREDIT_STALL[12] TCC_EA_RDREQ_IO_CREDIT_STALL[13] TCC_EA_RDREQ_GMI_CREDIT_STALL[13] TCC_EA_RDREQ_DRAM_CREDIT_STALL[13] TCC_EA_RDREQ_IO_CREDIT_STALL[14] TCC_EA_RDREQ_GMI_CREDIT_STALL[14] TCC_EA_RDREQ_DRAM_CREDIT_STALL[14] TCC_EA_RDREQ_IO_CREDIT_STALL[15] TCC_EA_RDREQ_GMI_CREDIT_STALL[15] TCC_EA_RDREQ_DRAM_CREDIT_STALL[15] + + +pmc: TCC_EA_WRREQ_IO_CREDIT_STALL[0] TCC_EA_WRREQ_GMI_CREDIT_STALL[0] TCC_EA_WRREQ_DRAM_CREDIT_STALL[0] TCC_TOO_MANY_EA_WRREQS_STALL[0] TCC_EA_WRREQ_IO_CREDIT_STALL[1] TCC_EA_WRREQ_GMI_CREDIT_STALL[1] TCC_EA_WRREQ_DRAM_CREDIT_STALL[1] TCC_TOO_MANY_EA_WRREQS_STALL[1] TCC_EA_WRREQ_IO_CREDIT_STALL[2] TCC_EA_WRREQ_GMI_CREDIT_STALL[2] TCC_EA_WRREQ_DRAM_CREDIT_STALL[2] TCC_TOO_MANY_EA_WRREQS_STALL[2] TCC_EA_WRREQ_IO_CREDIT_STALL[3] TCC_EA_WRREQ_GMI_CREDIT_STALL[3] TCC_EA_WRREQ_DRAM_CREDIT_STALL[3] TCC_TOO_MANY_EA_WRREQS_STALL[3] TCC_EA_WRREQ_IO_CREDIT_STALL[4] TCC_EA_WRREQ_GMI_CREDIT_STALL[4] TCC_EA_WRREQ_DRAM_CREDIT_STALL[4] TCC_TOO_MANY_EA_WRREQS_STALL[4] TCC_EA_WRREQ_IO_CREDIT_STALL[5] TCC_EA_WRREQ_GMI_CREDIT_STALL[5] TCC_EA_WRREQ_DRAM_CREDIT_STALL[5] TCC_TOO_MANY_EA_WRREQS_STALL[5] TCC_EA_WRREQ_IO_CREDIT_STALL[6] TCC_EA_WRREQ_GMI_CREDIT_STALL[6] TCC_EA_WRREQ_DRAM_CREDIT_STALL[6] TCC_TOO_MANY_EA_WRREQS_STALL[6] TCC_EA_WRREQ_IO_CREDIT_STALL[7] TCC_EA_WRREQ_GMI_CREDIT_STALL[7] TCC_EA_WRREQ_DRAM_CREDIT_STALL[7] TCC_TOO_MANY_EA_WRREQS_STALL[7] TCC_EA_WRREQ_IO_CREDIT_STALL[8] TCC_EA_WRREQ_GMI_CREDIT_STALL[8] TCC_EA_WRREQ_DRAM_CREDIT_STALL[8] TCC_TOO_MANY_EA_WRREQS_STALL[8] TCC_EA_WRREQ_IO_CREDIT_STALL[9] TCC_EA_WRREQ_GMI_CREDIT_STALL[9] TCC_EA_WRREQ_DRAM_CREDIT_STALL[9] TCC_TOO_MANY_EA_WRREQS_STALL[9] TCC_EA_WRREQ_IO_CREDIT_STALL[10] TCC_EA_WRREQ_GMI_CREDIT_STALL[10] TCC_EA_WRREQ_DRAM_CREDIT_STALL[10] TCC_TOO_MANY_EA_WRREQS_STALL[10] TCC_EA_WRREQ_IO_CREDIT_STALL[11] TCC_EA_WRREQ_GMI_CREDIT_STALL[11] TCC_EA_WRREQ_DRAM_CREDIT_STALL[11] TCC_TOO_MANY_EA_WRREQS_STALL[11] TCC_EA_WRREQ_IO_CREDIT_STALL[12] TCC_EA_WRREQ_GMI_CREDIT_STALL[12] TCC_EA_WRREQ_DRAM_CREDIT_STALL[12] TCC_TOO_MANY_EA_WRREQS_STALL[12] TCC_EA_WRREQ_IO_CREDIT_STALL[13] TCC_EA_WRREQ_GMI_CREDIT_STALL[13] TCC_EA_WRREQ_DRAM_CREDIT_STALL[13] TCC_TOO_MANY_EA_WRREQS_STALL[13] TCC_EA_WRREQ_IO_CREDIT_STALL[14] TCC_EA_WRREQ_GMI_CREDIT_STALL[14] TCC_EA_WRREQ_DRAM_CREDIT_STALL[14] TCC_TOO_MANY_EA_WRREQS_STALL[14] TCC_EA_WRREQ_IO_CREDIT_STALL[15] TCC_EA_WRREQ_GMI_CREDIT_STALL[15] TCC_EA_WRREQ_DRAM_CREDIT_STALL[15] TCC_TOO_MANY_EA_WRREQS_STALL[15] + +gpu: +kernel: +range: + diff --git a/src/perfmon_pub/vega10/pmc_tcc_perf.txt b/src/perfmon_pub/vega10/pmc_tcc_perf.txt new file mode 100644 index 0000000000..dd71aba6aa --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_tcc_perf.txt @@ -0,0 +1,19 @@ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_CYCLES SQ_BUSY_CYCLES SQ_WAVES + +pmc: TCC_CYCLE_sum TCC_BUSY_sum TCC_PROBE_sum TCC_PROBE_ALL_sum +pmc: TCC_NC_REQ_sum TCC_UC_REQ_sum TCC_CC_REQ_sum +pmc: TCC_REQ_sum TCC_STREAMING_REQ_sum TCC_HIT_sum TCC_MISS_sum +pmc: TCC_READ_sum TCC_WRITE_sum TCC_ATOMIC_sum TCC_WRITEBACK_sum +pmc: TCC_EA_WRREQ_sum TCC_EA_WRREQ_64B_sum TCC_EA_WR_UNCACHED_32B_sum +pmc: TCC_EA_WRREQ_STALL_sum TCC_EA_WRREQ_IO_CREDIT_STALL_sum TCC_EA_WRREQ_GMI_CREDIT_STALL_sum TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum +pmc: TCC_TOO_MANY_EA_WRREQS_STALL_sum TCC_EA_ATOMIC_sum TCC_EA_RDREQ_sum TCC_EA_RDREQ_32B_sum +pmc: TCC_EA_RD_UNCACHED_32B_sum TCC_EA_RDREQ_IO_CREDIT_STALL_sum TCC_EA_RDREQ_GMI_CREDIT_STALL_sum TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum +pmc: TCC_NORMAL_WRITEBACK_sum TCC_ALL_TC_OP_WB_WRITEBACK_sum TCC_NORMAL_EVICT_sum +pmc: TCC_ALL_TC_OP_INV_EVICT_sum TCC_EA_RDREQ_DRAM_sum TCC_EA_WRREQ_DRAM_sum +pmc: TCC_EA_RDREQ_LEVEL_sum TCC_EA_WRREQ_LEVEL_sum TCC_EA_ATOMIC_LEVEL_sum + +gpu: +kernel: + +range: + diff --git a/src/perfmon_pub/vega10/pmc_tcp_perf.txt b/src/perfmon_pub/vega10/pmc_tcp_perf.txt new file mode 100644 index 0000000000..8b20dfc3a6 --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_tcp_perf.txt @@ -0,0 +1,18 @@ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_CYCLES SQ_BUSY_CYCLES SQ_BUSY_CU_CYCLES SQ_WAVES SQ_WAVE_CYCLES + +pmc: TCP_GATE_EN1_sum TCP_GATE_EN2_sum TCP_TD_TCP_STALL_CYCLES_sum TCP_TCR_TCP_STALL_CYCLES_sum +pmc: TCP_READ_TAGCONFLICT_STALL_CYCLES_sum TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum TCP_TA_TCP_STATE_READ_sum +pmc: TCP_VOLATILE_sum TCP_TOTAL_ACCESSES_sum TCP_TOTAL_READ_sum TCP_TOTAL_WRITE_sum +pmc: TCP_TOTAL_ATOMIC_WITH_RET_sum TCP_TOTAL_ATOMIC_WITHOUT_RET_sum TCP_TOTAL_WRITEBACK_INVALIDATES_sum TCP_TOTAL_CACHE_ACCESSES_sum +pmc: TCP_UTCL1_TRANSLATION_MISS_sum TCP_UTCL1_TRANSLATION_HIT_sum TCP_UTCL1_PERMISSION_MISS_sum TCP_UTCL1_REQUEST_sum +pmc: TCP_TCP_LATENCY_sum TCP_TCC_READ_REQ_LATENCY_sum TCP_TCC_WRITE_REQ_LATENCY_sum TCP_TCC_READ_REQ_sum +pmc: TCP_TCC_WRITE_REQ_sum TCP_TCC_ATOMIC_WITH_RET_REQ_sum TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum TCP_TCC_NC_READ_REQ_sum +pmc: TCP_TCC_NC_WRITE_REQ_sum TCP_TCC_NC_ATOMIC_REQ_sum TCP_TCC_UC_READ_REQ_sum TCP_TCC_UC_WRITE_REQ_sum +pmc: TCP_TCC_UC_ATOMIC_REQ_sum TCP_TCC_CC_READ_REQ_sum TCP_TCC_CC_WRITE_REQ_sum TCP_TCC_CC_ATOMIC_REQ_sum +pmc: TCP_PENDING_STALL_CYCLES_sum + +#pmc: TCA_CYCLE_sum TCA_BUSY_sum + +gpu: +kernel: +range: diff --git a/src/perfmon_pub/vega10/pmc_td_perf.txt b/src/perfmon_pub/vega10/pmc_td_perf.txt new file mode 100644 index 0000000000..97c1f37efe --- /dev/null +++ b/src/perfmon_pub/vega10/pmc_td_perf.txt @@ -0,0 +1,12 @@ +pmc: GRBM_COUNT GRBM_GUI_ACTIVE SQ_CYCLES SQ_BUSY_CYCLES SQ_BUSY_CU_CYCLES SQ_WAVES SQ_WAVE_CYCLES + +pmc: TD_TD_BUSY_sum TD_TC_STALL_sum +pmc: TD_COALESCABLE_WAVEFRONT_sum TD_LOAD_WAVEFRONT_sum +pmc: TD_ATOMIC_WAVEFRONT_sum TD_STORE_WAVEFRONT_sum + + + +gpu: +range: +kernel: + diff --git a/src/utils/csv_converter.py b/src/utils/csv_converter.py index 2e500ce090..b178439aca 100644 --- a/src/utils/csv_converter.py +++ b/src/utils/csv_converter.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,17 +10,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import argparse import collections @@ -37,7 +39,6 @@ MAX_SERVER_SEL_DELAY = 5000 # 5 sec connection timeout def kernel_name_shortener(df, cache, level): - if level >= 5: return df @@ -50,7 +51,6 @@ def kernel_name_shortener(df, cache, level): if columnName == "KernelName" or columnName == "Name": # loop through all indices for index in df.index: - original_name = df.loc[index, columnName] if original_name in cache: continue @@ -142,7 +142,7 @@ def parse(args, profileAndExport): print("Unable to parse SoC or workload name from sysinfo.csv") sys.exit(1) - db = "omniperf_" + args.team + "_" + name + "_" + soc + db = "omniperf_" + str(args.team) + "_" + str(name) + "_" + soc if Extractionlvl >= 5: print("KernelName shortening disabled") @@ -224,27 +224,27 @@ def convert_folder(connectionInfo, Extractionlvl): df_saved_file = t2.to_csv(newfilepath + file) cmd = ( - 'mongoimport --quiet --uri mongodb://{}:{}@{}:{} --authenticationDatabase "admin" --file {} -d {} -c {} --drop --type csv --headerline' + "mongoimport --quiet --uri mongodb://{}:{}@{}:{}/{}?authSource=admin --file {} -c {} --drop --type csv --headerline" ).format( connectionInfo["username"], connectionInfo["password"], connectionInfo["host"], connectionInfo["port"], - newfilepath + file, connectionInfo["db"], + newfilepath + file, fileName, ) os.system(cmd) else: cmd = ( - 'mongoimport --quiet --uri mongodb://{}:{}@{}:{} --authenticationDatabase "admin" --file {} -d {} -c {} --drop --type csv --headerline' + "mongoimport --quiet --uri mongodb://{}:{}@{}:{}/{}?authSource=admin --file {} -c {} --drop --type csv --headerline" ).format( connectionInfo["username"], connectionInfo["password"], connectionInfo["host"], connectionInfo["port"], - connectionInfo["workload"] + "/" + file, connectionInfo["db"], + connectionInfo["workload"] + "/" + file, fileName, ) os.system(cmd) diff --git a/src/utils/gfx_perfmon_builder.py b/src/utils/gfx_perfmon_builder.py index 68bcebe7a3..c5a77908ac 100755 --- a/src/utils/gfx_perfmon_builder.py +++ b/src/utils/gfx_perfmon_builder.py @@ -1,402 +1,396 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ - -from PyQt5.QtWidgets import ( - QMainWindow, - QApplication, - QTreeView, - QTableWidget, - QTableWidgetItem, -) -from PyQt5.QtWidgets import ( - QHBoxLayout, - QWidget, - QAction, - QFileDialog, - QAbstractItemView, - qApp, -) -from PyQt5.QtGui import QStandardItemModel, QStandardItem -from lxml import html -import sys - - -# class view(QWidget): -class mainWindow(QMainWindow): - def __init__(self): - super(QMainWindow, self).__init__() - - ############################################################################### - # SOC Parameters - ############################################################################## - - # Per IP block max number of simulutaneous counters - # GFX IP Blocks - self.perfmon_config = { - "SQ": 8, - "TA": 2, - "TD": 2, - "TCP": 4, - "TCC": 4, - "CPC": 2, - "CPF": 2, - "SPI": 2, - "GRBM": 2, - "GDS": 4, - } - - # GFX Architectures - self.soc_arch_list = ["gfx906", "gfx908", "gfx90a"] - - ############################################################################### - # Window layout Design - ############################################################################## - - self.block_list = [] - self.nodes_dict = {} # list of QStandardItem - - self.tree = QTreeView(self) - self.table = QTableWidget() - - # Tree setup - self.tree.header().setDefaultSectionSize(180) - self.model = QStandardItemModel() - self.model.setHorizontalHeaderLabels(["Metric", "Block", "Event", "Definition"]) - - self.tree.setModel(self.model) - # self.importData(data) - self.tree.setEditTriggers(QAbstractItemView.NoEditTriggers) - - # Set up click processing - self.tree.clicked.connect(self.pmc_select) - # self.tree.expandAll() - - # Table setup - tableHeader = list(self.perfmon_config.keys()) - self.table.setColumnCount(len(tableHeader)) - self.table.setHorizontalHeaderLabels(tableHeader) - self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) - self.table.showGrid() - - self.setWindowTitle("GFX Perfmon Builder") - # layout: lhs: metrics; rhs: selected perfmon - layout = QHBoxLayout(self) - layout.addWidget(self.tree) - layout.addWidget(self.table) - - widget = QWidget() - widget.setLayout(layout) - self.setCentralWidget(widget) - - # Add Status - self.statusBar() - - ############################################################################### - # Window Menu Design - ############################################################################## - - # Setup file menu - menuBar = self.menuBar() - menuBar.setNativeMenuBar(False) - - openAction = QAction("&Open", self) - openAction.setShortcut("Ctrl+O") - openAction.setStatusTip("Open GFX Metrics file") - openAction.triggered.connect(self.openGFXDialog) - - saveAction = QAction("&Save", self) - saveAction.setShortcut("Ctrl+S") - saveAction.setStatusTip("Save to PMC file") - saveAction.triggered.connect(self.exportGFXDialog) - - exitAction = QAction("&Exit", self) - exitAction.setShortcut("Ctrl+Q") - exitAction.setStatusTip("Exit") - exitAction.triggered.connect(self.close) - - # Create new action - fileMenu = menuBar.addMenu("&File") - fileMenu.addActions([openAction, saveAction]) - fileMenu.addSeparator() - fileMenu.addActions([exitAction]) - - def openGFXDialog(self): - options = QFileDialog.Options() - options |= QFileDialog.DontUseNativeDialog - fileName, _ = QFileDialog.getOpenFileName( - self, "Open GFX Metrics", "", "XML Files (*.xml)", "XML(*.xml)" - ) - - # Parse the xml - if fileName: - xmlparsed = html.parse(fileName) - self.importData(xmlparsed) - - def exportGFXDialog(self): - options = QFileDialog.Options() - options |= QFileDialog.DontUseNativeDialog - fileName, _ = QFileDialog.getSaveFileName( - self, "Export PMC Counters", "", "Text File (*.txt)", "Text File(*.txt)" - ) - - # Parse the xml - if fileName: - self.exportPMCCounters(fileName) - - def exportPMCCounters(self, fileName): - - f = open(fileName, "w") - - total_IP_blocks = len(list(self.perfmon_config.keys())) - for row in range(self.table.rowCount()): - pmc_str = "pmc: " - for col in range(total_IP_blocks): - cell = self.table.item(row, col) - - if cell: - pmc_str = pmc_str + " ".join(cell.text().split("\n")) + " " - - f.write(pmc_str + "\n") - - # Add standard lines - f.write("\n\n") - f.write("gpu: \n") - f.write("dispatch: \n") - f.write("kernel: \n") - - f.close() - - return - - def pmc_metric_selected(self, metric_name, col): - - # check if the metric already exists - metric_selected = False - - for row in range(self.table.rowCount()): - entry = self.table.item(row, col) - if entry: - pmc_list = entry.text().split(sep="\n") - if metric_name in pmc_list: - metric_selected = True - break - - return metric_selected - - def pmc_remove_metric(self, metric_name, IP_block): - # Remove the metric to pmc table, if it is selected - - # Map SQC to SQ, since they share the same Perfmon block - if IP_block == "SQC": - IP_block = "SQ" - - # not action if it is for a ghost IP! - if not IP_block in list(self.perfmon_config.keys()): - return - - # This is the column we need to add/remove perfmon counters - col = list(self.perfmon_config.keys()).index(IP_block) - - if not self.pmc_metric_selected(metric_name, col): - return - - pmc_list = [] - for row in range(self.table.rowCount()): - entry = self.table.item(row, col) - - if entry: - pmc_list = pmc_list + entry.text().split(sep="\n") - # clear the cell, we will re-allocate the pmc - - self.table.takeItem(row, col) - - # allowed PMC counters per batch - max_pmc_num = self.perfmon_config[IP_block] - - # remote this metric and re-segment the list and refill all rows in this column - pmc_list.remove(metric_name) - - # We are empty now, do nothing - if len(pmc_list) == 0: - return - - for row in range((len(pmc_list) + max_pmc_num - 1) // max_pmc_num): - start_index = row * max_pmc_num - pmc_str = "\n".join(pmc_list[start_index : start_index + max_pmc_num]) - self.table.setItem(row, col, QTableWidgetItem(pmc_str)) - - # Remove last row, if empty - last_row = self.table.rowCount() - 1 - empty_row = True - total_cols = len(list(self.perfmon_config.keys())) - for cindex in range(total_cols): - x = self.table.item(last_row, cindex) - - if x and x.text(): - empty_row = False - break - - if empty_row: - self.table.removeRow(last_row) - - def pmc_add_metric(self, metric_name, IP_block): - # Add the metric to pmc table, if not there yet - - # Map SQC to SQ, since they share the same Perfmon block - if IP_block == "SQC": - IP_block = "SQ" - - if not IP_block in list(self.perfmon_config.keys()): - return - - # This is the column we need to add/remove perfmon counters - col = list(self.perfmon_config.keys()).index(IP_block) - - # check if the metric already exists - if self.pmc_metric_selected(metric_name, col): - return - - # metric is not bucket yet, add it! - if self.table.rowCount() == 0: - # starting from scratch! - self.table.insertRow(0) - self.table.setItem(0, col, QTableWidgetItem(metric_name)) - return - - # find the row to insert - for row in range(self.table.rowCount()): - entry = self.table.item(row, col) - if not entry: - # print("search insert pos, row:", row, ", cell empty") - break - - if len(entry.text().split(sep="\n")) < self.perfmon_config[IP_block]: - # print("found") - break - - entry = self.table.item(row, col) - if not entry: - # put it into the empty cell - self.table.setItem(row, col, QTableWidgetItem(metric_name)) - return - - pmc_list = entry.text().split(sep="\n") - - if len(pmc_list) < self.perfmon_config[IP_block]: - # we still have hit per-IP HW counters limit, add it to the last row - pmc_list.append(metric_name) - pmc_str = "\n".join(pmc_list) - self.table.setItem(row, col, QTableWidgetItem(pmc_str)) - self.table.resizeRowsToContents() - else: - # Start a new row - row = row + 1 - self.table.insertRow(row) - self.table.setItem(row, col, QTableWidgetItem(metric_name)) - - def pmc_select(self, item): - - metric_name = item.data() - if ( - not metric_name in self.nodes_dict - or not self.nodes_dict[metric_name].isCheckable() - ): - return - - # only proper metrics check/uncheck is processed here. - IP_block = item.data().split(sep="_")[0] - - if self.nodes_dict[metric_name].checkState() == 0: - # unselect the metric in the table if it is currently selected - self.pmc_remove_metric(metric_name, IP_block) - - elif self.nodes_dict[metric_name].checkState() == 2: - self.pmc_add_metric(metric_name, IP_block) - - # Function to save populate treeview with a dictionary - def importData(self, xmlparsed, root=None): - - self.model.setRowCount(0) - if root is None: - root = self.model.invisibleRootItem() - - for x in xmlparsed.getiterator(): - - # Add SoC node to Root - if x.tag in self.soc_arch_list: - parent = root - parent.appendRow([QStandardItem(x.tag)]) - self.nodes_dict[x.tag] = parent.child(parent.rowCount() - 1) - - # check all metrics in an SoC family - if x.tag == "metric" and x.getparent().tag in self.soc_arch_list: - - # New IP block (e.g., SQ), detected, create a new hierarchy for the block - if not x.attrib["block"] in self.block_list: - - self.block_list.append(x.attrib["block"]) - parent = self.nodes_dict[x.getparent().tag] # the SoC node - parent.appendRow( - [ - QStandardItem(x.attrib["block"]), - QStandardItem(""), - QStandardItem(""), - QStandardItem(""), - ] - ) - - # record the tree node for the block - self.nodes_dict[x.attrib["block"]] = parent.child( - parent.rowCount() - 1 - ) - - # Add metric node to the Block node - parent = self.nodes_dict[x.attrib["block"]] - metric_name = QStandardItem(x.attrib["name"]) - metric_name.setCheckable(True) - parent.appendRow( - [ - metric_name, - QStandardItem(x.attrib["block"]), - QStandardItem(x.attrib["event"]), - QStandardItem(x.attrib["descr"]), - ] - ) - - self.nodes_dict[x.attrib["name"]] = parent.child(parent.rowCount() - 1) - - -if __name__ == "__main__": - - app = QApplication(sys.argv) - app.setStyle("Fusion") - - # populate the view with GFX metrics.xml - window = mainWindow() - - # show the view - window.setGeometry(300, 100, 600, 300) - # view.setWindowTitle('GFX Perfmon Counters') - window.show() - - # start the application - sys.exit(app.exec_()) +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + +from PyQt5.QtWidgets import ( + QMainWindow, + QApplication, + QTreeView, + QTableWidget, + QTableWidgetItem, +) +from PyQt5.QtWidgets import ( + QHBoxLayout, + QWidget, + QAction, + QFileDialog, + QAbstractItemView, + qApp, +) +from PyQt5.QtGui import QStandardItemModel, QStandardItem +from lxml import html +import sys + + +# class view(QWidget): +class mainWindow(QMainWindow): + def __init__(self): + super(QMainWindow, self).__init__() + + ############################################################################### + # SOC Parameters + ############################################################################## + + # Per IP block max number of simulutaneous counters + # GFX IP Blocks + self.perfmon_config = { + "SQ": 8, + "TA": 2, + "TD": 2, + "TCP": 4, + "TCC": 4, + "CPC": 2, + "CPF": 2, + "SPI": 2, + "GRBM": 2, + "GDS": 4, + } + + # GFX Architectures + self.soc_arch_list = ["gfx906", "gfx908", "gfx90a"] + + ############################################################################### + # Window layout Design + ############################################################################## + + self.block_list = [] + self.nodes_dict = {} # list of QStandardItem + + self.tree = QTreeView(self) + self.table = QTableWidget() + + # Tree setup + self.tree.header().setDefaultSectionSize(180) + self.model = QStandardItemModel() + self.model.setHorizontalHeaderLabels(["Metric", "Block", "Event", "Definition"]) + + self.tree.setModel(self.model) + # self.importData(data) + self.tree.setEditTriggers(QAbstractItemView.NoEditTriggers) + + # Set up click processing + self.tree.clicked.connect(self.pmc_select) + # self.tree.expandAll() + + # Table setup + tableHeader = list(self.perfmon_config.keys()) + self.table.setColumnCount(len(tableHeader)) + self.table.setHorizontalHeaderLabels(tableHeader) + self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) + self.table.showGrid() + + self.setWindowTitle("GFX Perfmon Builder") + # layout: lhs: metrics; rhs: selected perfmon + layout = QHBoxLayout(self) + layout.addWidget(self.tree) + layout.addWidget(self.table) + + widget = QWidget() + widget.setLayout(layout) + self.setCentralWidget(widget) + + # Add Status + self.statusBar() + + ############################################################################### + # Window Menu Design + ############################################################################## + + # Setup file menu + menuBar = self.menuBar() + menuBar.setNativeMenuBar(False) + + openAction = QAction("&Open", self) + openAction.setShortcut("Ctrl+O") + openAction.setStatusTip("Open GFX Metrics file") + openAction.triggered.connect(self.openGFXDialog) + + saveAction = QAction("&Save", self) + saveAction.setShortcut("Ctrl+S") + saveAction.setStatusTip("Save to PMC file") + saveAction.triggered.connect(self.exportGFXDialog) + + exitAction = QAction("&Exit", self) + exitAction.setShortcut("Ctrl+Q") + exitAction.setStatusTip("Exit") + exitAction.triggered.connect(self.close) + + # Create new action + fileMenu = menuBar.addMenu("&File") + fileMenu.addActions([openAction, saveAction]) + fileMenu.addSeparator() + fileMenu.addActions([exitAction]) + + def openGFXDialog(self): + options = QFileDialog.Options() + options |= QFileDialog.DontUseNativeDialog + fileName, _ = QFileDialog.getOpenFileName( + self, "Open GFX Metrics", "", "XML Files (*.xml)", "XML(*.xml)" + ) + + # Parse the xml + if fileName: + xmlparsed = html.parse(fileName) + self.importData(xmlparsed) + + def exportGFXDialog(self): + options = QFileDialog.Options() + options |= QFileDialog.DontUseNativeDialog + fileName, _ = QFileDialog.getSaveFileName( + self, "Export PMC Counters", "", "Text File (*.txt)", "Text File(*.txt)" + ) + + # Parse the xml + if fileName: + self.exportPMCCounters(fileName) + + def exportPMCCounters(self, fileName): + f = open(fileName, "w") + + total_IP_blocks = len(list(self.perfmon_config.keys())) + for row in range(self.table.rowCount()): + pmc_str = "pmc: " + for col in range(total_IP_blocks): + cell = self.table.item(row, col) + + if cell: + pmc_str = pmc_str + " ".join(cell.text().split("\n")) + " " + + f.write(pmc_str + "\n") + + # Add standard lines + f.write("\n\n") + f.write("gpu: \n") + f.write("dispatch: \n") + f.write("kernel: \n") + + f.close() + + return + + def pmc_metric_selected(self, metric_name, col): + # check if the metric already exists + metric_selected = False + + for row in range(self.table.rowCount()): + entry = self.table.item(row, col) + if entry: + pmc_list = entry.text().split(sep="\n") + if metric_name in pmc_list: + metric_selected = True + break + + return metric_selected + + def pmc_remove_metric(self, metric_name, IP_block): + # Remove the metric to pmc table, if it is selected + + # Map SQC to SQ, since they share the same Perfmon block + if IP_block == "SQC": + IP_block = "SQ" + + # not action if it is for a ghost IP! + if not IP_block in list(self.perfmon_config.keys()): + return + + # This is the column we need to add/remove perfmon counters + col = list(self.perfmon_config.keys()).index(IP_block) + + if not self.pmc_metric_selected(metric_name, col): + return + + pmc_list = [] + for row in range(self.table.rowCount()): + entry = self.table.item(row, col) + + if entry: + pmc_list = pmc_list + entry.text().split(sep="\n") + # clear the cell, we will re-allocate the pmc + + self.table.takeItem(row, col) + + # allowed PMC counters per batch + max_pmc_num = self.perfmon_config[IP_block] + + # remote this metric and re-segment the list and refill all rows in this column + pmc_list.remove(metric_name) + + # We are empty now, do nothing + if len(pmc_list) == 0: + return + + for row in range((len(pmc_list) + max_pmc_num - 1) // max_pmc_num): + start_index = row * max_pmc_num + pmc_str = "\n".join(pmc_list[start_index : start_index + max_pmc_num]) + self.table.setItem(row, col, QTableWidgetItem(pmc_str)) + + # Remove last row, if empty + last_row = self.table.rowCount() - 1 + empty_row = True + total_cols = len(list(self.perfmon_config.keys())) + for cindex in range(total_cols): + x = self.table.item(last_row, cindex) + + if x and x.text(): + empty_row = False + break + + if empty_row: + self.table.removeRow(last_row) + + def pmc_add_metric(self, metric_name, IP_block): + # Add the metric to pmc table, if not there yet + + # Map SQC to SQ, since they share the same Perfmon block + if IP_block == "SQC": + IP_block = "SQ" + + if not IP_block in list(self.perfmon_config.keys()): + return + + # This is the column we need to add/remove perfmon counters + col = list(self.perfmon_config.keys()).index(IP_block) + + # check if the metric already exists + if self.pmc_metric_selected(metric_name, col): + return + + # metric is not bucket yet, add it! + if self.table.rowCount() == 0: + # starting from scratch! + self.table.insertRow(0) + self.table.setItem(0, col, QTableWidgetItem(metric_name)) + return + + # find the row to insert + for row in range(self.table.rowCount()): + entry = self.table.item(row, col) + if not entry: + # print("search insert pos, row:", row, ", cell empty") + break + + if len(entry.text().split(sep="\n")) < self.perfmon_config[IP_block]: + # print("found") + break + + entry = self.table.item(row, col) + if not entry: + # put it into the empty cell + self.table.setItem(row, col, QTableWidgetItem(metric_name)) + return + + pmc_list = entry.text().split(sep="\n") + + if len(pmc_list) < self.perfmon_config[IP_block]: + # we still have hit per-IP HW counters limit, add it to the last row + pmc_list.append(metric_name) + pmc_str = "\n".join(pmc_list) + self.table.setItem(row, col, QTableWidgetItem(pmc_str)) + self.table.resizeRowsToContents() + else: + # Start a new row + row = row + 1 + self.table.insertRow(row) + self.table.setItem(row, col, QTableWidgetItem(metric_name)) + + def pmc_select(self, item): + metric_name = item.data() + if ( + not metric_name in self.nodes_dict + or not self.nodes_dict[metric_name].isCheckable() + ): + return + + # only proper metrics check/uncheck is processed here. + IP_block = item.data().split(sep="_")[0] + + if self.nodes_dict[metric_name].checkState() == 0: + # unselect the metric in the table if it is currently selected + self.pmc_remove_metric(metric_name, IP_block) + + elif self.nodes_dict[metric_name].checkState() == 2: + self.pmc_add_metric(metric_name, IP_block) + + # Function to save populate treeview with a dictionary + def importData(self, xmlparsed, root=None): + self.model.setRowCount(0) + if root is None: + root = self.model.invisibleRootItem() + + for x in xmlparsed.getiterator(): + # Add SoC node to Root + if x.tag in self.soc_arch_list: + parent = root + parent.appendRow([QStandardItem(x.tag)]) + self.nodes_dict[x.tag] = parent.child(parent.rowCount() - 1) + + # check all metrics in an SoC family + if x.tag == "metric" and x.getparent().tag in self.soc_arch_list: + # New IP block (e.g., SQ), detected, create a new hierarchy for the block + if not x.attrib["block"] in self.block_list: + self.block_list.append(x.attrib["block"]) + parent = self.nodes_dict[x.getparent().tag] # the SoC node + parent.appendRow( + [ + QStandardItem(x.attrib["block"]), + QStandardItem(""), + QStandardItem(""), + QStandardItem(""), + ] + ) + + # record the tree node for the block + self.nodes_dict[x.attrib["block"]] = parent.child( + parent.rowCount() - 1 + ) + + # Add metric node to the Block node + parent = self.nodes_dict[x.attrib["block"]] + metric_name = QStandardItem(x.attrib["name"]) + metric_name.setCheckable(True) + parent.appendRow( + [ + metric_name, + QStandardItem(x.attrib["block"]), + QStandardItem(x.attrib["event"]), + QStandardItem(x.attrib["descr"]), + ] + ) + + self.nodes_dict[x.attrib["name"]] = parent.child(parent.rowCount() - 1) + + +if __name__ == "__main__": + app = QApplication(sys.argv) + app.setStyle("Fusion") + + # populate the view with GFX metrics.xml + window = mainWindow() + + # show the view + window.setGeometry(300, 100, 600, 300) + # view.setWindowTitle('GFX Perfmon Counters') + window.show() + + # start the application + sys.exit(app.exec_()) diff --git a/src/utils/perfagg.py b/src/utils/perfagg.py index 6c7eb72b5a..0606b4dc4b 100755 --- a/src/utils/perfagg.py +++ b/src/utils/perfagg.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,17 +10,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import sys, os, pathlib, shutil, subprocess, argparse, glob, re import numpy as np @@ -29,6 +31,19 @@ prog = "omniperf" # Per IP block max number of simulutaneous counters # GFX IP Blocks perfmon_config = { + "vega10": { + "SQ": 8, + "TA": 2, + "TD": 2, + "TCP": 4, + "TCC": 4, + "CPC": 2, + "CPF": 2, + "SPI": 2, + "GRBM": 2, + "GDS": 4, + "TCC_channels": 16, + }, "mi50": { "SQ": 8, "TA": 2, @@ -72,7 +87,6 @@ perfmon_config = { def perfmon_coalesce(pmc_files_list, workload_dir, soc): - workload_perfmon_dir = workload_dir + "/perfmon" # match pattern for pmc counters @@ -97,7 +111,6 @@ def perfmon_coalesce(pmc_files_list, workload_dir, soc): # Extract all PMC counters and store in separate buckets for fname in pmc_files_list: - lines = open(fname, "r").read().splitlines() for line in lines: @@ -170,7 +183,6 @@ def perfmon_coalesce(pmc_files_list, workload_dir, soc): def perfmon_emit(pmc_list, workload_dir, soc): - workload_perfmon_dir = workload_dir + "/perfmon" # Calculate the minimum number of iteration to save the pmc counters @@ -233,7 +245,6 @@ def perfmon_emit(pmc_list, workload_dir, soc): def perfmon_filter(workload_dir, perfmon_dir, args): - workload_perfmon_dir = workload_dir + "/perfmon" soc = args.target @@ -275,7 +286,6 @@ def perfmon_filter(workload_dir, perfmon_dir, args): def pmc_filter(workload_dir, perfmon_dir, soc): - workload_perfmon_dir = workload_dir + "/perfmon" if not os.path.isdir(workload_perfmon_dir): diff --git a/src/utils/plot_roofline.py b/src/utils/plot_roofline.py deleted file mode 100644 index d1d0958cc7..0000000000 --- a/src/utils/plot_roofline.py +++ /dev/null @@ -1,661 +0,0 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ - -from linecache import cache -import subprocess -from operator import sub -import os -import sys -from pathlib import Path - -import numpy -import matplotlib.pyplot as plt -from matplotlib.pyplot import get, text -from math import log, pi, sqrt -import pandas as pd -import pylab - -from dataclasses import dataclass -import csv - - -################################################ -# Global vars -################################################ - -IMGNAME = "empirRoof" - -L2_BANKS = 32 # default assuming mi200 - -XMIN = 0.01 -XMAX = 1000 - -FONT_SIZE = 16 -FONT_COLOR = "black" -FONT_WEIGHT = "bold" - -SUPPORTED_SOC = ["mi200"] - -################################################ -# Helper funcs -################################################ -@dataclass -class AI_Data: - KernelName: str - numCalls: float - - total_flops: float - valu_flops: float - mfma_flops_f16: float - mfma_flops_bf16: float - mfma_flops_f32: float - mfma_flops_f64: float - lds_data: float - L1cache_data: float - L2cache_data: float - hbm_data: float - - totalDuration: float - avgDuration: float - - -def get_font(): - return { - "size": FONT_SIZE, - "color": FONT_COLOR, - "weight": FONT_WEIGHT, - "family": "serif", - } - - -def get_color(catagory): - if catagory == "curr_ai_l1": - return "green" - elif catagory == "curr_ai_l2": - return "blue" - elif catagory == "curr_ai_hbm": - return "red" - else: - raise RuntimeError("Invalid catagory passed to get_color()") - - -# ------------------------------------------------------------------------------------- -# Plot BW at each cache level -# ------------------------------------------------------------------------------------- -def plot_roof(inputs, roof_data): - cacheHierarchy = [] - if inputs["mem"] == "ALL": - cacheHierarchy += ["HBM", "L2", "L1", "LDS"] - else: - cacheHierarchy.append(inputs["mem"]) - targ_dtype = ( - "FP32" - if float(roof_data["FP32Flops"][0]) > float(roof_data["FP64Flops"][0]) - else "FP64" - ) - print("Dtype: ", targ_dtype) - print(inputs["mem"]) - x1 = y1 = x2 = y2 = -1 - x1_mfma = y1_mfma = x2_mfma = y2_mfma = -1 - target_precision = targ_dtype[2:] - - peakOps = float(roof_data[targ_dtype + "Flops"][0]) - for i in range(0, len(cacheHierarchy)): - # Plot BW line - # print("Current cache level: {}".format(cacheHierarchy[i])) - curr_bw = cacheHierarchy[i] + "Bw" - peakBw = float(roof_data[curr_bw][0]) - - peakMFMA = float(roof_data["MFMAF{}Flops".format(target_precision)][0]) - - x1 = float(XMIN) - y1 = float(XMIN) * peakBw - - x2 = peakOps / peakBw - y2 = peakOps - - plt.plot([x1, x2], [y1, y2], color="magenta") - # print("Mem Points: [{}, {}], [{}, {}]".format(x1, x2, y1, y2)) - - # Plot MFMA lines (NOTE: Assuming MI200 soc) - x1_mfma = peakOps / peakBw - y1_mfma = peakOps - - x2_mfma = peakMFMA / peakBw - y2_mfma = peakMFMA - - plt.plot([x1_mfma, x2_mfma], [y1_mfma, y2_mfma], color="blue") - # print("Extend BW Points: [{}, {}], [{}, {}]".format(x1_mfma, x2_mfma, y1_mfma, y2_mfma)) - - # These are the points to use: - # print("x = [{}, {}]".format(x1,x2_mfma)) - # print("y = [{}, {}]".format(y1, y2_mfma)) - - # Plot BW label - x1log = log(x1) / log(10) - x2log = log(x2) / log(10) - y1log = log(y1) / log(10) - y2log = log(y2) / log(10) - x_text = 10 ** ((x1log + x2log) / 2) - y_text = 10 ** ((y1log + y2log) / 2) - - fig = plt.gcf() - size = fig.get_size_inches() * fig.dpi - fig_x, fig_y = size - - # dx = log(x2) - log(x1) - # dy = log(y2) - log(y1) - # x_min, x_max = plt.xlim() - # y_min, y_max = plt.ylim() - # Dx = dx * fig_x / (log(x_max) - log(x_min)) - # Dy = dy * fig_y / (log(y_max) - log(y_min)) - # #fdiv = 0.7 #TODO: improve accuracy of text angle (tilt) - # angle = (180.0 / pi) * numpy.arctan(Dy / Dx )#/fdiv) - - dx = abs(log(x2) - log(x1)) - dy = abs(log(y2) - log(y1)) - angle = (180.0 / pi) * numpy.arctan(dy / dx) - # If user isn't zooming in, print bw labels normally - if not inputs["axes"]: - text( - x_text, - y_text, - "{} vL1D GB/s".format(int(peakBw)) - if cacheHierarchy[i].upper() == "L1" - else "{} {} GB/s".format(int(peakBw), cacheHierarchy[i].upper()), - rotation=angle, - rotation_mode="anchor", - **get_font(), - ) - else: - # if bw line isn't being cut out then plot bw - print("if {} < {}".format(inputs["axes"][0], 10**x2log)) - if inputs["axes"][0] < 10**x2log: - text( - 10**x2log, - 10**y2log, - "{} {} GB/s".format(int(peakBw), cacheHierarchy[i].upper()), - rotation=angle, - rotation_mode="anchor", - **get_font(), - ) - - # ------------------------------------------------------------------------------------- - # Plot computing roof - # ------------------------------------------------------------------------------------- - # Plot FMA roof - x0 = XMAX - if x2 < x0: - x0 = x2 - - temp_label = "{} VALU GFLOP/sec".format(int(peakOps)) - plt.plot([x0, XMAX], [peakOps, peakOps], color="magenta") - # print("FMA Points: [{}, {}], [{},{}]".format(x0, XMAX, peakOps, peakOps)) - text( - XMAX if not inputs["axes"] else inputs["axes"][1], - peakOps - 4000, # should i keep this fixed at 4000? - temp_label, - horizontalalignment="right", - **get_font(), - ) - - # Plot MFMA roof - if x1_mfma != -1: # assert that mfma has been assigned - x0_mfma = XMAX - if x2_mfma < x0_mfma: - x0_mfma = x2_mfma - - peakMFMA = float(roof_data["MFMAF{}Flops".format(target_precision)][0]) - temp_label = "{} MFMA GFLOP/sec".format(int(peakMFMA)) - plt.plot([x0_mfma, XMAX], [peakMFMA, peakMFMA], color="blue") - # print("MFMA Points: [{}, {}], [{},{}]".format(x0_mfma, XMAX, peakMFMA, peakMFMA)) - text( - XMAX if not inputs["axes"] else inputs["axes"][1], - peakMFMA + 1000, - temp_label, - horizontalalignment="right", - **get_font(), - ) - - return targ_dtype - - -# ------------------------------------------------------------------------------------- -# Overlay application performance -# ------------------------------------------------------------------------------------- -# Calculate relevent metrics for ai calculation -def plot_application(inputs, verbose): - - df = pd.read_csv(inputs["path"] + "/pmc_perf.csv") - # Sort by top kernels or top dispatches? - df = df.sort_values(by=["KernelName"]) - df = df.reset_index(drop=True) - - total_flops = ( - valu_flops - ) = ( - mfma_flops_bf16 - ) = ( - mfma_flops_f16 - ) = ( - mfma_iops_i8 - ) = ( - mfma_flops_f32 - ) = ( - mfma_flops_f64 - ) = ( - lds_data - ) = L1cache_data = L2cache_data = hbm_data = calls = totalDuration = avgDuration = 0.0 - kernelName = "" - - myList = [] - for index, row in df.iterrows(): - # CASE: Top kernels - if inputs["sort"] == "kernels" and ( - (row["KernelName"] != kernelName and kernelName != "") - or index == df.shape[0] - 1 - ): - if df.shape[0] - 1 == index: - calls += 1 - myList.append( - AI_Data( - kernelName, - calls, - total_flops / calls, - valu_flops / calls, - mfma_flops_f16 / calls, - mfma_flops_bf16 / calls, - mfma_flops_f32 / calls, - mfma_flops_f64 / calls, - lds_data / calls, - L1cache_data / calls, - L2cache_data / calls, - hbm_data / calls, - totalDuration, - avgDuration / calls, - ) - ) - if verbose >= 2: - print( - "Just added {} to AI_Data at index {}. # of calls: {}".format( - kernelName, index, calls - ) - ) - total_flops = ( - valu_flops - ) = ( - mfma_flops_bf16 - ) = ( - mfma_flops_f16 - ) = ( - mfma_iops_i8 - ) = ( - mfma_flops_f32 - ) = ( - mfma_flops_f64 - ) = ( - lds_data - ) = ( - L1cache_data - ) = L2cache_data = hbm_data = calls = totalDuration = avgDuration = 0.0 - - kernelName = row["KernelName"] - try: - total_flops += ( - ( - 64 - * ( - row["SQ_INSTS_VALU_ADD_F16"] - + row["SQ_INSTS_VALU_MUL_F16"] - + (2 * row["SQ_INSTS_VALU_FMA_F16"]) - + row["SQ_INSTS_VALU_TRANS_F16"] - ) - ) - + ( - 64 - * ( - row["SQ_INSTS_VALU_ADD_F32"] - + row["SQ_INSTS_VALU_MUL_F32"] - + (2 * row["SQ_INSTS_VALU_FMA_F32"]) - + row["SQ_INSTS_VALU_TRANS_F32"] - ) - ) - + ( - 64 - * ( - row["SQ_INSTS_VALU_ADD_F64"] - + row["SQ_INSTS_VALU_MUL_F64"] - + (2 * row["SQ_INSTS_VALU_FMA_F64"]) - + row["SQ_INSTS_VALU_TRANS_F64"] - ) - ) - + (row["SQ_INSTS_VALU_MFMA_MOPS_F16"] * 512) - + (row["SQ_INSTS_VALU_MFMA_MOPS_BF16"] * 512) - + (row["SQ_INSTS_VALU_MFMA_MOPS_F32"] * 512) - + (row["SQ_INSTS_VALU_MFMA_MOPS_F64"] * 512) - ) - except KeyError: - if verbose >= 2: - print("Skipped total_flops at index {}".format(index)) - pass - try: - valu_flops += ( - 64 - * ( - row["SQ_INSTS_VALU_ADD_F16"] - + row["SQ_INSTS_VALU_MUL_F16"] - + (2 * row["SQ_INSTS_VALU_FMA_F16"]) - + row["SQ_INSTS_VALU_TRANS_F16"] - ) - + 64 - * ( - row["SQ_INSTS_VALU_ADD_F32"] - + row["SQ_INSTS_VALU_MUL_F32"] - + (2 * row["SQ_INSTS_VALU_FMA_F32"]) - + row["SQ_INSTS_VALU_TRANS_F32"] - ) - + 64 - * ( - row["SQ_INSTS_VALU_ADD_F64"] - + row["SQ_INSTS_VALU_MUL_F64"] - + (2 * row["SQ_INSTS_VALU_FMA_F64"]) - + row["SQ_INSTS_VALU_TRANS_F64"] - ) - ) - except KeyError: - if verbose >= 2: - print("Skipped valu_flops at index {}".format(index)) - pass - - try: - mfma_flops_f16 += row["SQ_INSTS_VALU_MFMA_MOPS_F16"] * 512 - mfma_flops_bf16 += row["SQ_INSTS_VALU_MFMA_MOPS_BF16"] * 512 - mfma_flops_f32 += row["SQ_INSTS_VALU_MFMA_MOPS_F32"] * 512 - mfma_flops_f64 += row["SQ_INSTS_VALU_MFMA_MOPS_F64"] * 512 - mfma_iops_i8 += row["SQ_INSTS_VALU_MFMA_MOPS_I8"] * 512 - except KeyError: - if verbose >= 2: - print("Skipped mfma ops at index {}".format(index)) - pass - - try: - lds_data += ( - (row["SQ_LDS_IDX_ACTIVE"] - row["SQ_LDS_BANK_CONFLICT"]) * 4 * L2_BANKS - ) # L2_BANKS = 32 (since assuming mi200) - except KeyError: - if verbose >= 2: - print("Skipped lds_data at index {}".format(index)) - pass - - try: - L1cache_data += row["TCP_TOTAL_CACHE_ACCESSES_sum"] * 64 - except KeyError: - if verbose >= 2: - print("Skipped L1cache_data at index {}".format(index)) - pass - - try: - L2cache_data += ( - row["TCP_TCC_WRITE_REQ_sum"] * 64 - + row["TCP_TCC_ATOMIC_WITH_RET_REQ_sum"] * 64 - + row["TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum"] * 64 - + row["TCP_TCC_READ_REQ_sum"] * 64 - ) - except KeyError: - if verbose >= 2: - print("Skipped L2cache_data at index {}".format(index)) - pass - try: - hbm_data += ( - (row["TCC_EA_RDREQ_32B_sum"] * 32) - + ((row["TCC_EA_RDREQ_sum"] - row["TCC_EA_RDREQ_32B_sum"]) * 64) - + (row["TCC_EA_WRREQ_64B_sum"] * 64) - + ((row["TCC_EA_WRREQ_sum"] - row["TCC_EA_WRREQ_64B_sum"]) * 32) - ) - except KeyError: - if verbose >= 2: - print("Skipped hbm_data at index {}".format(index)) - pass - - totalDuration += row["EndNs"] - row["BeginNs"] - - avgDuration += row["EndNs"] - row["BeginNs"] - - calls += 1 - if inputs["sort"] == "dispatches": - myList.append( - AI_Data( - kernelName, - calls, - total_flops, - valu_flops, - mfma_flops_f16, - mfma_flops_bf16, - mfma_flops_f32, - mfma_flops_f64, - mfma_iops_i8, - lds_data, - L1cache_data, - L2cache_data, - hbm_data, - totalDuration, - avgDuration, - ) - ) - total_flops = ( - valu_flops - ) = ( - mfma_flops_bf16 - ) = ( - mfma_flops_f16 - ) = ( - mfma_iops_i8 - ) = ( - mfma_flops_f32 - ) = ( - mfma_flops_f64 - ) = ( - lds_data - ) = ( - L1cache_data - ) = L2cache_data = hbm_data = calls = totalDuration = avgDuration = 0.0 - - myList.sort(key=lambda x: x.totalDuration, reverse=True) - - print("Top 10 intensities ('{}')...".format(inputs["sort"])) - intensities = {"curr_ai_l1": [], "curr_ai_l2": [], "curr_ai_hbm": []} - curr_perf = [] - i = 0 - # Create list of top 5 intensities - while i <= 9 and i != len(myList): - intensities["curr_ai_l1"].append( - myList[i].total_flops / myList[i].L1cache_data - ) if myList[i].L1cache_data else intensities["curr_ai_l1"].append(0) - # print("cur_ai_L1", myList[i].total_flops/myList[i].L1cache_data) if myList[i].L1cache_data else print("null") - # print() - intensities["curr_ai_l2"].append( - myList[i].total_flops / myList[i].L2cache_data - ) if myList[i].L2cache_data else intensities["curr_ai_l2"].append(0) - # print("cur_ai_L2", myList[i].total_flops/myList[i].L2cache_data) if myList[i].L2cache_data else print("null") - # print() - intensities["curr_ai_hbm"].append( - myList[i].total_flops / myList[i].hbm_data - ) if myList[i].hbm_data else intensities["curr_ai_hbm"].append(0) - # print("cur_ai_hbm", myList[i].total_flops/myList[i].hbm_data) if myList[i].hbm_data else print("null") - # print() - curr_perf.append(myList[i].total_flops / myList[i].avgDuration) if myList[ - i - ].avgDuration else curr_perf.append(0) - # print("cur_perf", myList[i].total_flops/myList[i].avgDuration) if myList[i].avgDuration else print("null") - - i += 1 - - print(intensities) - - # fig, ax = plt.subplots() - - plotted_spots = [] - labels = [] - for i in intensities: - values = intensities[i] - color = get_color(i) - x = [] - y = [] - for entryIndx in range(0, len(values)): - x.append(values[entryIndx]) - y.append(curr_perf[entryIndx]) - myScatter = plt.scatter(x, y, c=color, marker="o") - plotted_spots.append(myScatter) - label = i - labels.append(label) - - try: - pylab.legend( - plotted_spots, - labels, - prop={"size": (FONT_SIZE - 2)}, - bbox_to_anchor=(1.04, 1), - loc="upper left", - title="Top {}".format(inputs["sort"]), - title_fontsize=FONT_SIZE, - ) - except Exception as e: - sys.stderr.write(f"{e}\n") - pylab.legend( - plotted_spots, - labels, - prop={"size": (FONT_SIZE - 2)}, - ) - - -def empirical_roof(args): - soc = args.target - inputs = { - "path": str, - "cmd": str, - "sort": str, - "mem": str, - "axes": list, - "device": int, - # "workgroups": int, - # "wsize": int, - # "dataset": int, - # "experiments": int, - # "iter": int - } - - inputs["sort"] = args.sort.lower() - inputs["mem"] = args.mem_level.upper() - - if inputs["sort"] != "kernels" and inputs["sort"] != "dispatches": - sys.exit("Invalid sort. Must be either 'kernels' or 'dispatches'") - if ( - inputs["mem"] != "HBM" - and inputs["mem"] != "VL1D" - and inputs["mem"] != "L2" - and inputs["mem"] != "LDS" - and inputs["mem"] != "ALL" - ): - sys.exit( - "Invalid mem-level. Must be one of these option 'LDS', 'L2', 'vL1D', or 'HBM'" - ) - if inputs["mem"] == "VL1D": - inputs["mem"] = "L1" - - inputs["device"] = int(args.device) - # inputs["workgroups"] = int(args.workgroups) - # inputs["wsize"] = int(args.wsize) - # inputs["dataset"] = int(args.dataset) - # inputs["experiments"] = int(args.experiments) - # inputs["iter"] = int(args.iter) - inputs["path"] = args.path - inputs["cmd"] = args.remaining - inputs["axes"] = args.axes - - # device_list = [int(item) for item in args.device.split(',')] - - if soc not in SUPPORTED_SOC: - sys.exit("SoC not yet supported for Roofline Analysis") - - # Basic Info - print("Path: ", inputs["path"]) - print("Target: ", soc) - print("Memory Level: ", inputs["mem"]) - - roofPath = inputs["path"] + "/roofline.csv" - # ----------------------------------------------------- - # Initialize roofline data dictionary from roofline.csv - # ----------------------------------------------------- - roof_data = ( - {} - ) # TODO: consider changing this to an ordered dict for consistency over py versions - headers = [] - with open(roofPath, "r") as csvfile: - csvReader = csv.reader(csvfile, delimiter=",") - rowCount = 0 - for row in csvReader: - row.pop(0) # remove devID - if rowCount == 0: - headers = row - for i in headers: - roof_data[i] = [] - else: - for i, key in enumerate(headers): - roof_data[key].append(row[i]) - - rowCount += 1 - csvfile.close() - - # Initalize plot - f = plt.figure(figsize=(1600 / 100, 1200 / 100), dpi=100) - f.add_subplot(111) - - _title_font = get_font() - _title_font["size"] += 8 - - plt.title("Empirical Roofline", **_title_font) - plt.xlabel("Arithmetic Intensity (FLOP/Byte)", **get_font()) - plt.ylabel("Performance (GFLOP/sec)", **get_font()) - plt.grid(True, which="major", ls="--", lw=1) - plt.grid(True, which="minor", ls="--", lw=0.5) - plt.yscale("log") - plt.xscale("log") - # Adjust axes if instructed - if inputs["axes"]: - plt.xlim(inputs["axes"][0], inputs["axes"][1]) - plt.ylim(inputs["axes"][2], inputs["axes"][3]) - - # ------------------ - # Generate Roofline - # ------------------ - dtype = plot_roof(inputs, roof_data) # Also returns chosen dtype - plot_application(inputs, args.verbose) - - filename = IMGNAME + "_gpu-" + str(inputs["device"]) + "_{}".format(dtype) + ".pdf" - - full_path = os.path.abspath(inputs["path"]) - path_to_output = full_path + "/" + filename - - print('Saving plot: "{}"...'.format(filename)) - plt.savefig(path_to_output, bbox_inches="tight", format="pdf") - print('File saved to: "{}"'.format(path_to_output)) - plt.close() diff --git a/src/utils/remove_workload.py b/src/utils/remove_workload.py index 3d21186a0a..02ba864f59 100755 --- a/src/utils/remove_workload.py +++ b/src/utils/remove_workload.py @@ -1,7 +1,9 @@ #!/usr/bin/env python3 -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -10,22 +12,23 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import argparse import getpass from pymongo import MongoClient + # Verify target directory and setup connection def remove_workload(args): # parser = argparse.ArgumentParser(description='Remove a workload from an Omniperf Instance') diff --git a/src/utils/resources.py b/src/utils/resources.py index fce329d13d..4986394811 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -1,5 +1,7 @@ -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -8,17 +10,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import pathlib import sys diff --git a/src/utils/specs.py b/src/utils/specs.py index 696f850c0e..6ea7178c81 100644 --- a/src/utils/specs.py +++ b/src/utils/specs.py @@ -1,7 +1,9 @@ """Get host/gpu specs.""" -################################################################################ -# Copyright (c) 2021 - 2022 Advanced Micro Devices, Inc. All rights reserved. +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -10,17 +12,17 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -################################################################################ +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el import os import re @@ -32,7 +34,7 @@ from dataclasses import dataclass from pathlib import Path as path from textwrap import dedent -gpu_list = {"gfx906", "gfx908", "gfx90a"} +gpu_list = {"gfx906", "gfx908", "gfx90a", "gfx900"} @dataclass @@ -84,7 +86,6 @@ class MachineSpecs: def gpuinfo(): - rocminfo = run(["rocminfo"]).split("\n") for idx1, linetext in enumerate(rocminfo): @@ -97,7 +98,6 @@ def gpuinfo(): L1, L2 = "", "" for idx2, linetext in enumerate(rocminfo[idx1 + 1 :]): - key = search(r"^\s*L1:\s+ ([a-zA-Z0-9]+)\s*", linetext) if key != None: L1 = key @@ -148,6 +148,9 @@ def gpuinfo(): def run(cmd): p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if cmd[0] == "rocm-smi" and p.returncode == 8: + print("ERROR: No GPU detected. Unable to load rocm-smi") + sys.exit(1) return p.stdout.decode("ascii") @@ -159,7 +162,6 @@ def search(pattern, string): def get_machine_specs(devicenum): - cpuinfo = path("/proc/cpuinfo").read_text() meminfo = path("/proc/meminfo").read_text() version = path("/proc/version").read_text() @@ -180,7 +182,6 @@ def get_machine_specs(devicenum): for itr in version_loc: _path = os.path.join(os.getenv("ROCM_PATH", "/opt/rocm"), ".info", itr) if os.path.exists(_path): - print(_path) rocm_ver = path(_path).read_text() rocmFound = True break diff --git a/tests/test_analyze_commands.py b/tests/test_analyze_commands.py index 051365e60e..e79cdfef9b 100644 --- a/tests/test_analyze_commands.py +++ b/tests/test_analyze_commands.py @@ -145,7 +145,7 @@ def test_filter_dispatch_ids_mi100(): "analyze", "--path", "tests/workloads/mixbench/mi100", - "--filter-dispatch-ids", + "--dispatch", "0", ], ): @@ -162,7 +162,7 @@ def test_filter_dispatch_ids_inv_mi100(): "analyze", "--path", "tests/workloads/mixbench/mi100", - "--filter-dispatch-ids", + "--dispatch", "99", ], ): @@ -179,7 +179,7 @@ def test_filter_gpu_ids_mi100(): "analyze", "--path", "tests/workloads/mixbench/mi100", - "--filter-gpu-ids", + "--gpu-id", "0", ], ): @@ -196,7 +196,7 @@ def test_filter_gpu_ids_inv_mi100(): "analyze", "--path", "tests/workloads/mixbench/mi100", - "--filter-gpu-ids", + "--gpu-id", "99", ], ): @@ -490,7 +490,7 @@ def test_filter_dispatch_ids_mi200(): "analyze", "--path", "tests/workloads/mixbench/mi200", - "--filter-dispatch-ids", + "--dispatch", "0", ], ): @@ -507,7 +507,7 @@ def test_filter_dispatch_ids_inv_mi200(): "analyze", "--path", "tests/workloads/mixbench/mi200", - "--filter-dispatch-ids", + "--dispatch", "99", ], ): @@ -524,7 +524,7 @@ def test_filter_gpu_ids_mi200(): "analyze", "--path", "tests/workloads/mixbench/mi200", - "--filter-gpu-ids", + "--gpu-id", "0", ], ): @@ -541,7 +541,7 @@ def test_filter_gpu_ids_inv_mi200(): "analyze", "--path", "tests/workloads/mixbench/mi200", - "--filter-gpu-ids", + "--gpu-id", "99", ], ): diff --git a/utils/update_license.py b/utils/update_license.py new file mode 100755 index 0000000000..353c4a7eba --- /dev/null +++ b/utils/update_license.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 +# ------------------------------------------------------------------------------- +# Support script for license header management. +# ------------------------------------------------------------------------------- + +import argparse +import logging +import glob +import os +import sys +import re +import filecmp +import shutil + +begDelim = "######bl$" +endDelim = "######el$" +maxHeaderLines = 200 + + +def cacheLicenseFile(infile, comment="#"): + if not os.path.isfile(infile): + logging.error("Unable to access license file - >%s" % infile) + sys.exit(1) + + license = "" + with open(infile, "r") as file_in: + for line in file_in: + license += comment + if line.strip() != "": + license += " " + license += line + return license + + +parser = argparse.ArgumentParser() +parser.add_argument("--license", required=True, help="License File") +parser.add_argument("--source", required=True, help="Source directory") +parser.add_argument("--dryrun", help="enable dryrun mode", action="store_true") + +group = parser.add_mutually_exclusive_group(required=True) +group.add_argument("--extension", help="file extension to parse") +group.add_argument("--files", help="specific file(s) to parse") + +logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.INFO) + +args = parser.parse_args() + +srcDir = args.source +fileExtension = None +specificFiles = None +if args.extension: + fileExtension = args.extension +if args.files: + specificFiles = args.files.split(",") + +print("") +logging.info("Source directory = %s" % srcDir) +if fileExtension: + logging.info("File extension = %s" % fileExtension) +if specificFiles: + logging.info("Specific files = %s" % specificFiles) + +# cache license file +license = cacheLicenseFile(args.license) + +# Scan files in provided source directory... +for filename in glob.iglob(srcDir + "/**", recursive=True): + # skip directories + if os.path.isdir(filename): + continue + + # File matching options: + + # (1) filter non-matching extensions + if fileExtension: + if not filename.endswith(fileExtension): + continue + + # or, (2) filter for specific filename + if specificFiles: + found = False + for file in specificFiles: + fullPath = os.path.join(srcDir, file) + if fullPath == filename: + found = True + break + if not found: + continue + + logging.debug("Examining %s for license..." % filename) + + # Update license header contents if delimiters are found + with open(filename, "r") as file_in: + baseName = os.path.basename(filename) + dirName = os.path.dirname(filename) + tmpFile = dirName + "/." + baseName + ".tmp" + + file_out = open(tmpFile, "w") + for line in file_in: + if re.search(begDelim, line): + logging.debug("Found beginning delimiter") + file_out.write(line) + file_out.write(license) + + foundEnd = False + + for i in range(maxHeaderLines): + line = file_in.readline() + if re.search(endDelim, line): + logging.debug("Found ending delimiter") + file_out.write(line) + foundEnd = True + break + if not foundEnd: + logging.error("Unable to find end of delimited header") + sys.exit(1) + + else: + file_out.write(line) + + file_out.close() + + # Check if file changed and update + if not filecmp.cmp(filename, tmpFile, shallow=False): + logging.info("%s changed" % filename) + shutil.copystat(filename, tmpFile) + if not args.dryrun: + os.rename(tmpFile, filename) + else: + os.unlink(tmpFile)