# MIT License # # Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. find_package(ROCmVersion) if(NOT ROCmVersion_FOUND) message( WARNING "ROCmVersion_FOUND not found, skipping tests in ${CMAKE_CURRENT_LIST_FILE}" ) return() endif() # -------------------------------------------------------------------------------------- # # # roctx tests # # -------------------------------------------------------------------------------------- # # Ensure ROCPROFSYS_ROCM_DOMAINS is defined # Use legacy trace mode for roctx tests to preserve depth information set(_roctx_environment "${_base_environment}" "ROCPROFSYS_TRACE_LEGACY=ON" "ROCPROFSYS_ROCM_DOMAINS=hip_runtime_api,marker_api,kernel_dispatch" ) # 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 _roctx_environment "ROCPROFSYS_USE_ROCPD=ON") endif() rocprofiler_systems_add_test( SKIP_RUNTIME NAME roctx-api TARGET roctx GPU ON LABELS "roctx" ENVIRONMENT "${_roctx_environment}" ) # Legacy mode preserves individual entries with their original depths set(ROCTX_LEGACY_LABEL roctxMark_GPU_workload roctxRangePush_run_profiling roctxRangeStart_GPU_Compute roctxRangeStart_GPU_Compute roctxRangePush_HIP_Kernel roctxRangePush_HIP_Kernel roctxGetThreadId roctxMark_RoctxProfilerPause_End roctxMark_Thread_Start roctxMark_End roctxMark_Finished_GPU ) set(ROCTX_LEGACY_COUNT 1 1 1 1 1 1 1 1 1 1 1 ) set(ROCTX_LEGACY_DEPTH 1 1 2 0 3 1 2 2 0 0 1 ) # Cached mode aggregates entries by name, so counts reflect total occurrences set(ROCTX_CACHED_LABEL roctxMark_GPU_workload roctxRangePush_HIP_Kernel roctxRangeStart_GPU_Compute roctxGetThreadId roctxMark_RoctxProfilerPause_End roctxMark_Thread_Start roctxMark_End roctxRangePush_run_profiling roctxMark_Finished_GPU ) set(ROCTX_CACHED_COUNT 1 2 2 1 1 1 1 1 1 ) set(ROCTX_CACHED_DEPTH 1 1 1 1 1 2 1 1 1 ) # Determine which expectations to use based on trace mode in environment set(ROCTX_LABEL ${ROCTX_CACHED_LABEL}) set(ROCTX_COUNT ${ROCTX_CACHED_COUNT}) set(ROCTX_DEPTH ${ROCTX_CACHED_DEPTH}) # Check if ROCPROFSYS_TRACE_LEGACY=ON is set in the test environment list(FIND _roctx_environment "ROCPROFSYS_TRACE_LEGACY=ON" _legacy_idx) if(_legacy_idx GREATER -1) # Legacy mode is enabled, use legacy expectations set(ROCTX_LABEL ${ROCTX_LEGACY_LABEL}) set(ROCTX_COUNT ${ROCTX_LEGACY_COUNT}) set(ROCTX_DEPTH ${ROCTX_LEGACY_DEPTH}) endif() rocprofiler_systems_add_validation_test( NAME roctx-api-sampling PERFETTO_METRIC "rocm_marker_api" PERFETTO_FILE "perfetto-trace.proto" LABELS "roctx" ARGS -l ${ROCTX_LABEL} -c ${ROCTX_COUNT} -d ${ROCTX_DEPTH} -p ) if(${ENABLE_ROCPD_TEST} AND ${_VALID_GPU} AND TEST roctx-api-sampling) set_property(TEST roctx-api-sampling APPEND PROPERTY LABELS rocpd) rocprofiler_systems_add_validation_test( NAME roctx-api-sampling ROCPD_FILE "rocpd.db" ARGS --validation-rules "${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/default-rules.json" "${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/roctx/amd-smi-rules.json" "${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/roctx/validation-rules.json" "${CMAKE_CURRENT_LIST_DIR}/rocpd-validation-rules/roctx/sdk-metrics-rules.json" LABELS "roctx;rocpd" ) endif()