Skip to content

Commit acadc99

Browse files
committed
rocpd: add Duration column to kernel CSV output and validation test
Add Duration column computed as (end - start) in get_kernel_csv_query(). Add kernel-duration-ns integration test validating Duration against JSON output using rocpd Python API. Validation ensures: - Duration == End_Timestamp - Start_Timestamp - rocpd DB values match JSON kernel records for the same execution.
1 parent 5ba26a8 commit acadc99

File tree

3 files changed

+157
-130
lines changed

3 files changed

+157
-130
lines changed

projects/rocprofiler-sdk/source/lib/python/rocpd/csv.py

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,7 @@ def build_agent_id_string(agent_index_value, prefix=""):
212212
else:
213213
return ""
214214

215-
216-
def write_kernel_csv(importData, config) -> None:
217-
215+
def get_kernel_csv_query(config) -> str:
218216
agent_id = build_agent_id_string(config.agent_index_value)
219217

220218
if config.kernel_rename:
@@ -249,21 +247,19 @@ def write_kernel_csv(importData, config) -> None:
249247
"grid_z AS Grid_Size_Z",
250248
]
251249

252-
aliased_headers = []
253-
for column in select_columns:
254-
aliased_headers.append(column)
255-
256-
select_clause = ",\n".join(aliased_headers)
250+
select_clause = ",\n".join(select_columns)
257251

258-
query = f"""
252+
return f"""
259253
SELECT
260254
{select_clause}
261255
FROM "kernels"
262256
ORDER BY
263257
guid ASC, start ASC, end DESC
264258
"""
265-
write_sql_query_to_csv(importData, config, query, "kernel")
266259

260+
def write_kernel_csv(importData, config) -> None:
261+
query = get_kernel_csv_query(config)
262+
write_sql_query_to_csv(importData, config, query, "kernel")
267263

268264
def write_memory_copy_csv(importData, config) -> None:
269265

@@ -280,15 +276,13 @@ def write_memory_copy_csv(importData, config) -> None:
280276
{dst_agent_id} AS Destination_Agent_Id,
281277
stack_id AS Correlation_Id,
282278
start AS Start_Timestamp,
283-
end AS End_Timestamp,
284-
(end - start) AS Duration
279+
end AS End_Timestamp
285280
FROM "memory_copies"
286281
ORDER BY
287282
guid ASC, start ASC, end DESC
288283
"""
289284
write_sql_query_to_csv(importData, config, query, "memory_copy")
290285

291-
292286
def write_memory_allocation_csv(importData, config) -> None:
293287

294288
agent_id = build_agent_id_string(config.agent_index_value)
@@ -311,8 +305,7 @@ def write_memory_allocation_csv(importData, config) -> None:
311305
'0x' || printf('%016X', address) AS Address,
312306
stack_id AS Correlation_Id,
313307
start AS Start_Timestamp,
314-
end AS End_Timestamp,
315-
(end - start) AS Duration
308+
end AS End_Timestamp
316309
FROM "memory_allocations"
317310
ORDER BY
318311
guid ASC, start ASC, end DESC
@@ -344,8 +337,7 @@ def write_counters_csv(importData, config) -> None:
344337
"counter_name",
345338
"value AS Counter_Value",
346339
"start AS Start_Timestamp",
347-
"end AS End_Timestamp",
348-
"(end - start) AS Duration",
340+
"end AS End_Timestamp"
349341
]
350342

351343
aliased_headers = []
@@ -378,8 +370,7 @@ def write_scratch_memory_csv(importData, config) -> None:
378370
tid AS Thread_Id,
379371
alloc_flags,
380372
start AS Start_Timestamp,
381-
end AS End_Timestamp,
382-
(end - start) AS Duration
373+
end AS End_Timestamp
383374
FROM "scratch_memory"
384375
ORDER BY
385376
guid ASC, start ASC, end DESC
@@ -398,8 +389,7 @@ def write_region_csv(importData, config) -> None:
398389
tid AS Thread_Id,
399390
stack_id AS Correlation_Id,
400391
start AS Start_Timestamp,
401-
end AS End_Timestamp,
402-
(end - start) AS Duration
392+
end AS End_Timestamp
403393
FROM "regions"
404394
ORDER BY
405395
guid ASC, start ASC, end DESC

projects/rocprofiler-sdk/tests/rocprofv3/kernel-duration-ns/CMakeLists.txt

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@ project(
1111
find_package(rocprofiler-sdk REQUIRED)
1212
find_package(Python3 REQUIRED)
1313

14-
set(rocprofv3-env
14+
set(rocprofv3-generate-env
1515
"${ROCPROFILER_MEMCHECK_PRELOAD_ENV}"
1616
"PYTHONPATH=${rocprofiler-sdk_LIB_DIR}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages"
1717
"ROCPROF_OUTPUT_FORMAT=json,rocpd")
1818

19+
set(rocprofv3-validate-env
20+
"${ROCPROFILER_MEMCHECK_PRELOAD_ENV}"
21+
"PYTHONPATH=${rocprofiler-sdk_LIB_DIR}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages")
22+
1923
rocprofiler_configure_pytest_files(CONFIG pytest.ini COPY conftest.py validate.py)
2024

2125
# Generate BOTH JSON and rocpd in a SINGLE execution using environment variable
@@ -28,18 +32,14 @@ add_test(
2832

2933
set_tests_properties(
3034
rocprofv3-test-kernel-trace-duration-generate
31-
PROPERTIES TIMEOUT
32-
120
33-
LABELS
34-
"integration-tests;kernel-trace-duration"
35-
ENVIRONMENT
36-
"${rocprofv3-env}"
37-
FAIL_REGULAR_EXPRESSION
38-
"${ROCPROFILER_DEFAULT_FAIL_REGEX}"
39-
FIXTURES_SETUP
40-
rocprofv3-test-kernel-trace-duration-data)
41-
42-
# Validate: Convert rocpd DB -> CSV and compare with JSON
35+
PROPERTIES
36+
TIMEOUT 120
37+
LABELS "integration-tests;kernel-trace-duration"
38+
ENVIRONMENT "${rocprofv3-generate-env}"
39+
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}"
40+
FIXTURES_SETUP rocprofv3-test-kernel-trace-duration-data)
41+
42+
# Validate: compare rocpd kernel query output with JSON
4343
add_test(
4444
NAME rocprofv3-test-kernel-trace-duration-validation
4545
COMMAND
@@ -50,13 +50,9 @@ add_test(
5050

5151
set_tests_properties(
5252
rocprofv3-test-kernel-trace-duration-validation
53-
PROPERTIES TIMEOUT
54-
120
55-
LABELS
56-
"integration-tests;kernel-trace-duration"
57-
ENVIRONMENT
58-
"${rocprofv3-env}"
59-
FIXTURES_REQUIRED
60-
rocprofv3-test-kernel-trace-duration-data
61-
FAIL_REGULAR_EXPRESSION
62-
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
53+
PROPERTIES
54+
TIMEOUT 120
55+
LABELS "integration-tests;kernel-trace-duration"
56+
ENVIRONMENT "${rocprofv3-validate-env}"
57+
FIXTURES_REQUIRED rocprofv3-test-kernel-trace-duration-data
58+
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")

0 commit comments

Comments
 (0)