9cfbfb5060
* Adding tool pc sampling support
Fixing merge issue
tool support on SDKupdates
link amd-comgr
Sanitizer failure fix
fix format
Addressing review comments
misc fix
Adding dispatch id to the CSV output
AddingCHANGELOG
[ROCProfV3][PC Sampling] Initial ROCProfV3 PC sampling tests for JSON and CSV formats (#17)
ROCProfV3 initial tests for JSON and CSV output.
Simple kernels that simplify the verification of samples to instruction decoding
has been introduced.
removing option to enable pc sampling explicitly
Adding documentation
no pc-sampling option in tests anymore
Addressing review comments
Updating docs
an option for choosing whether all units must be sampled
try ignoring PC sampling tests (#36)
* run pc-sampling tests on MI2xx runners
* use v_fmac_f32 instead of s_nop 0 in tests
* fixing docs
[ROCm/rocprofiler-sdk commit: 50b185b9ac]
68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import json
|
|
import os
|
|
import pytest
|
|
import pandas as pd
|
|
|
|
from rocprofiler_sdk.pytest_utils.dotdict import dotdict
|
|
from rocprofiler_sdk.pytest_utils import collapse_dict_list
|
|
|
|
|
|
def pytest_addoption(parser):
|
|
parser.addoption(
|
|
"--input-csv",
|
|
action="store",
|
|
help="Path to CSV file.",
|
|
)
|
|
|
|
parser.addoption(
|
|
"--input-json",
|
|
action="store",
|
|
help="Path to CSV file.",
|
|
)
|
|
|
|
parser.addoption(
|
|
"--all-sampled",
|
|
action="store",
|
|
help="All SW and HW units must be sampled.",
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def input_csv(request):
|
|
filename = request.config.getoption("--input-csv")
|
|
if not os.path.isfile(filename):
|
|
# The CSV file is not generated, because the dependency test
|
|
# responsible to generate this file was skipped or failed.
|
|
# Thus emit the message to skip this test as well.
|
|
print("PC sampling unavailable")
|
|
else:
|
|
with open(filename, "r") as inp:
|
|
return pd.read_csv(
|
|
inp,
|
|
na_filter=False, # parse empty fields as ""
|
|
keep_default_na=False, # parse empty fields as ""
|
|
dtype={
|
|
"Exec_Mask": "uint64",
|
|
"Instruction": str,
|
|
"Instruction_Comment": str,
|
|
},
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def input_json(request):
|
|
filename = request.config.getoption("--input-json")
|
|
with open(filename, "r") as inp:
|
|
# Significant overhead of 5-6secs observed when feeding
|
|
# data into the dotdict.
|
|
# Using plain python dict instead
|
|
return collapse_dict_list(json.load(inp))
|
|
|
|
|
|
@pytest.fixture
|
|
def all_sampled(request):
|
|
_all_sampled_str = request.config.getoption("--all-sampled")
|
|
return _all_sampled_str == "True"
|