Enable some simple ROCpd testing (#834)

* Add for rocpd testing and output validation

Add for transpose, video-decode, jpeg-decode, roctx, and openmp-target
Add JSON check to pre-commit-config

Co-authored-by: Marjan Antic <Marjan.Antic@amd.com>

* Remove redundant environment variable

* Fix spelling typo

* Fix typo in error message

* Fix memory_allocation query

* Incorperate feedback from review. Handle case where there are multiple matching "name_prefix" tables.

* Fix environment settings in `rocprof-sys-testing.cmake`

Accidently removed in previous refactoring.

* Formatting python file

---------

Co-authored-by: Marjan Antic <Marjan.Antic@amd.com>
This commit is contained in:
David Galiffi
2025-10-20 17:40:10 -04:00
committed by GitHub
parent 35b07e041f
commit 32f9fa6ca5
26 changed files with 2446 additions and 34 deletions
@@ -27,34 +27,57 @@
# -------------------------------------------------------------------------------------- #
set(_video_decode_environment
"${_base_environment}"
"ROCPROFSYS_ROCM_DOMAINS=hip_runtime_api,kernel_dispatch,memory_copy,rocdecode_api"
"ROCPROFSYS_AMD_SMI_METRICS=busy,temp,power,vcn_activity,mem_usage"
"ROCPROFSYS_SAMPLING_CPUS=none"
)
set(_jpeg_decode_environment
"${_base_environment}"
"ROCPROFSYS_ROCM_DOMAINS=hip_runtime_api,kernel_dispatch,memory_copy,rocjpeg_api"
"ROCPROFSYS_AMD_SMI_METRICS=busy,temp,power,jpeg_activity,mem_usage"
"ROCPROFSYS_SAMPLING_CPUS=none"
)
set(_vcn_rocpd_validation_rules
"${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/video-decode/validation-rules.json"
"${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/video-decode/sdk-metrics-rules.json"
)
set(_jpeg_rocpd_validation_rules
"${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/default-rules.json"
"${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/jpeg-decode/validation-rules.json"
"${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/jpeg-decode/sdk-metrics-rules.json"
)
# Enable ROCPD for tests only if valid ROCm is installed and a valid GPU is detected
if(${ENABLE_ROCPD_TEST} AND ${_VALID_GPU})
list(APPEND _video_decode_environment "ROCPROFSYS_USE_ROCPD=ON")
list(APPEND _jpeg_decode_environment "ROCPROFSYS_USE_ROCPD=ON")
endif()
# Engine activity counters are only supported on MI300 and later GPUs
rocprofiler_systems_get_gfx_archs(MI300_DETECTED GFX_MATCH "gfx9[4-9][A-Fa-f0-9]" ECHO)
if(MI300_DETECTED)
list(APPEND VCN_COUNTER_NAMES_ARG --counter-names "VCN Activity")
list(APPEND JPEG_COUNTER_NAMES_ARG --counter-names "JPEG Activity")
list(APPEND _vcn_counter_names --counter-names "VCN Activity")
list(APPEND _jpeg_counter_names --counter-names "JPEG Activity")
list(
APPEND
_vcn_rocpd_validation_rules
"${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/video-decode/amd-smi-rules.json"
)
list(
APPEND
_jpeg_rocpd_validation_rules
"${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/jpeg-decode/amd-smi-rules.json"
)
endif()
# check_gpu("MI100" MI100_DETECTED) if(MI100_DETECTED) list(APPEND VCN_COUNTER_NAMES_ARG
# --counter-names "VCN Activity") endif()
rocprofiler_systems_add_test(
SKIP_BASELINE SKIP_RUNTIME SKIP_REWRITE
NAME video-decode
TARGET videodecode
GPU ON
ENVIRONMENT "${_video_decode_environment}"
ENVIRONMENT "${_base_environment};${_video_decode_environment}"
RUN_ARGS -i ${PROJECT_BINARY_DIR}/videos -t 1
LABELS "decode"
)
@@ -64,9 +87,21 @@ rocprofiler_systems_add_validation_test(
PERFETTO_METRIC "rocm_rocdecode_api"
PERFETTO_FILE "perfetto-trace.proto"
LABELS "decode"
ARGS -l rocDecCreateVideoParser -c 2 -d 1 ${VCN_COUNTER_NAMES_ARG} -p
ARGS -l rocDecCreateVideoParser -c 2 -d 1 ${_vcn_counter_names} -p
)
if(${ENABLE_ROCPD_TEST} AND ${_VALID_GPU})
set_property(TEST video-decode-sampling APPEND PROPERTY LABELS rocpd)
rocprofiler_systems_add_validation_test(
NAME video-decode-sampling
ROCPD_FILE "rocpd.db"
LABELS "decode;rocpd"
ARGS --validation-rules
${_vcn_rocpd_validation_rules}
)
endif()
# -------------------------------------------------------------------------------------- #
#
# jpeg decode tests
@@ -78,7 +113,7 @@ rocprofiler_systems_add_test(
NAME jpeg-decode
TARGET jpegdecode
GPU ON
ENVIRONMENT "${_jpeg_decode_environment}"
ENVIRONMENT "${_base_environment};${_jpeg_decode_environment}"
RUN_ARGS -i ${PROJECT_BINARY_DIR}/images -b 32
LABELS "decode"
)
@@ -88,5 +123,17 @@ rocprofiler_systems_add_validation_test(
PERFETTO_METRIC "rocm_rocjpeg_api"
PERFETTO_FILE "perfetto-trace.proto"
LABELS "decode"
ARGS -l rocJpegCreate -c 1 -d 1 ${JPEG_COUNTER_NAMES_ARG} -p
ARGS -l rocJpegCreate -c 1 -d 1 ${_jpeg_counter_names} -p
)
if(${ENABLE_ROCPD_TEST} AND ${_VALID_GPU})
set_property(TEST jpeg-decode-sampling APPEND PROPERTY LABELS rocpd)
rocprofiler_systems_add_validation_test(
NAME jpeg-decode-sampling
ROCPD_FILE "rocpd.db"
LABELS "decode;rocpd"
ARGS --validation-rules
${_jpeg_rocpd_validation_rules}
)
endif()