diff --git a/projects/rocprofiler-compute/src/common.py b/projects/rocprofiler-compute/src/common.py index d33c7c55f2..8268608b4a 100644 --- a/projects/rocprofiler-compute/src/common.py +++ b/projects/rocprofiler-compute/src/common.py @@ -31,7 +31,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/projects/rocprofiler-compute/src/omniperf b/projects/rocprofiler-compute/src/omniperf old mode 100755 new mode 100644 index d8a8ef3d4e..9931b3d7fd --- a/projects/rocprofiler-compute/src/omniperf +++ b/projects/rocprofiler-compute/src/omniperf @@ -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) @@ -319,6 +321,23 @@ def characterize_app(path, cmd, verbose): # 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, + "--", args.remaining] + print(rs_cmd) + result = subprocess.run(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, verbose): global rocprof_cmd @@ -360,6 +379,7 @@ def omniperf_profile(args, VER): print("Command: ", args.remaining) print("Kernel Selection: ", args.kernel) print("Dispatch Selection: ", args.dispatch) + if args.ipblocks == None: print("IP Blocks: All") else: @@ -368,53 +388,107 @@ def omniperf_profile(args, VER): # 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, - ] - ) + 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) - # 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) + 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, + "--", args.remaining] + print(rs_cmd) + result = subprocess.run(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) - # run again with timestamps - run_subprocess( - [ - rocprof_cmd, - # "-i", fname, - # "-m", perfmon_dir + "/" + "metrics.xml", - "--timestamp", - "on", - "-o", - workload_dir + "/" + "timestamps.csv", - '"' + args.remaining + '"', - ] - ) + 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, + "--", args.remaining] + print(rs_cmd) + result = subprocess.run(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) - # Update pmc_perf.csv timestamps - replace_timestamps(workload_dir) + 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.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) @@ -485,6 +559,7 @@ def main(): # PROFILE MODE ############## if args.mode == "profile": + print("Resolving rocprof") resolve_rocprof() if ".." in str(args.path): throw_parse_error( diff --git a/projects/rocprofiler-compute/src/parser.py b/projects/rocprofiler-compute/src/parser.py index 7e42d28ede..50878873b2 100644 --- a/projects/rocprofiler-compute/src/parser.py +++ b/projects/rocprofiler-compute/src/parser.py @@ -22,6 +22,8 @@ import os import argparse +import subprocess + from common import ( OMNIPERF_HOME, PROG, @@ -116,6 +118,41 @@ 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", diff --git a/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_cpc_perf.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_cpc_perf.txt new file mode 100644 index 0000000000..c579c90580 --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_cpf_perf.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_cpf_perf.txt new file mode 100644 index 0000000000..452e42e8ae --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_spi_perf.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_spi_perf.txt new file mode 100644 index 0000000000..09893f746f --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf1.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf1.txt new file mode 100644 index 0000000000..223c6f3cce --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf2.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf2.txt new file mode 100644 index 0000000000..6f39f40015 --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf3.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf3.txt new file mode 100644 index 0000000000..7b48ccf564 --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf4.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf4.txt new file mode 100644 index 0000000000..2161f8a1cb --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf6.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf6.txt new file mode 100644 index 0000000000..13552f40f6 --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf8.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sq_perf8.txt new file mode 100644 index 0000000000..e322b01813 --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sqc_perf1.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_sqc_perf1.txt new file mode 100644 index 0000000000..2b748eacc0 --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_ta_perf.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_ta_perf.txt new file mode 100644 index 0000000000..851f22400d --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_tcc2_perf.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_tcc2_perf.txt new file mode 100644 index 0000000000..04b9a2bea5 --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_tcc_perf.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_tcc_perf.txt new file mode 100644 index 0000000000..dd71aba6aa --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_tcp_perf.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_tcp_perf.txt new file mode 100644 index 0000000000..8b20dfc3a6 --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_td_perf.txt b/projects/rocprofiler-compute/src/perfmon_pub/vega10/pmc_td_perf.txt new file mode 100644 index 0000000000..97c1f37efe --- /dev/null +++ b/projects/rocprofiler-compute/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/projects/rocprofiler-compute/src/utils/perfagg.py b/projects/rocprofiler-compute/src/utils/perfagg.py index 6c7eb72b5a..07cd4a59bf 100755 --- a/projects/rocprofiler-compute/src/utils/perfagg.py +++ b/projects/rocprofiler-compute/src/utils/perfagg.py @@ -29,6 +29,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, diff --git a/projects/rocprofiler-compute/src/utils/specs.py b/projects/rocprofiler-compute/src/utils/specs.py index 1bb63c6efe..d63b6b4f1f 100644 --- a/projects/rocprofiler-compute/src/utils/specs.py +++ b/projects/rocprofiler-compute/src/utils/specs.py @@ -32,7 +32,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