[rocprofiler-compute] Fix for multi process workload profiling (#2418)
* Fix for multi process workload profiling
Native counter collection tool updates:
* Do not dump empty counter data for a process
* Use PID instead of UUID for dumped csv files to facilitate correlation
* Handle merging multiple pairs of rocpd (from sdk tool) and csv (from
native tool) files
* Handle merging multiple pairs of csv (from sdk tool) and csv (from
native tool) files
Rocpd output format updates:
* Merge multiple rocpd databases into a single csv
* Reset dispatch id and kernel id for unique dispatches and unique
kernels respectively
* Retain multiple rocpd databases per run for multi process workloads
* Add test case for multiprocess profiling using rocflop workload
* Add rocflop
* Fix native counter csv to rocprofv3 csv conversion
* Use kernel_id instead of dispatch_id to correlate native counter csv
and kernel trace csv
* python formatting using ruff 0.14 instead of 0.13
This commit is contained in:
committed by
GitHub
orang tua
3e49440495
melakukan
588773f9bf
@@ -67,3 +67,11 @@ set_target_properties(
|
||||
laplace_eqn
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/tests
|
||||
)
|
||||
|
||||
set(ROCFLOP_SOURCES ../sample/rocflop.cpp)
|
||||
set_source_files_properties(${ROCFLOP_SOURCES} PROPERTIES LANGUAGE HIP)
|
||||
add_executable(rocflop ${ROCFLOP_SOURCES})
|
||||
set_target_properties(
|
||||
rocflop
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/tests
|
||||
)
|
||||
|
||||
@@ -68,6 +68,7 @@ config["app_mat_mul_max"] = ["./tests/mat_mul_max"]
|
||||
config["app_hip_dynamic_shared"] = ["./tests/hip_dynamic_shared"]
|
||||
config["app_laplace_eqn"] = ["./tests/laplace_eqn", "-i", "5000"]
|
||||
config["app_laplace_eqn_iter"] = ["./tests/laplace_eqn", "-i", "15000"]
|
||||
config["rocflop"] = ["./tests/rocflop", "--device", "0"]
|
||||
config["cleanup"] = True
|
||||
config["COUNTER_LOGGING"] = False
|
||||
config["METRIC_COMPARE"] = False
|
||||
@@ -637,6 +638,29 @@ def test_path(binary_handler_profile_rocprof_compute):
|
||||
test_utils.clean_output_dir(config["cleanup"], workload_dir)
|
||||
|
||||
|
||||
@pytest.mark.path
|
||||
def test_path_rocflop(
|
||||
binary_handler_profile_rocprof_compute,
|
||||
):
|
||||
# Test whether multiprocess workloads like rocflop are handled correctly
|
||||
workload_dir = test_utils.get_output_dir()
|
||||
options = ["--block", "2.1.1"]
|
||||
_ = binary_handler_profile_rocprof_compute(
|
||||
config,
|
||||
workload_dir,
|
||||
options,
|
||||
check_success=True,
|
||||
roof=False,
|
||||
app_name="rocflop",
|
||||
)
|
||||
pmc_perf_df = test_utils.check_csv_files(workload_dir, num_devices, num_kernels)[
|
||||
"pmc_perf.csv"
|
||||
]
|
||||
# Ensure non zero length of df
|
||||
assert len(pmc_perf_df) > 0
|
||||
test_utils.clean_output_dir(config["cleanup"], workload_dir)
|
||||
|
||||
|
||||
@pytest.mark.path
|
||||
def test_path_no_native(binary_handler_profile_rocprof_compute):
|
||||
workload_dir = test_utils.get_output_dir()
|
||||
|
||||
Reference in New Issue
Block a user