Files
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

73 lines
2.2 KiB
C++

// Copyright (c) Advanced Micro Devices, Inc.
// SPDX-License-Identifier: MIT
// Demonstrates interleaving of Pause/Resume with Selective Region Tracing.
// Scenario: Pause occurs OUTSIDE the target region (before it starts).
//
// Supports two region marker styles (selected via --push-pop argument):
// default (start/stop): roctxRangeStartA / roctxRangeStop
// --push-pop: roctxRangePushA / roctxRangePop
//
// The pause happens outside any target region, so it is not valid in the
// context of region filtering. When the target region starts, profiling
// begins normally. The resume inside the region is a no-op since there
// was no valid pause to undo.
//
// Code flow:
// roctxProfilerPause
// CodeBlock_Z (outside region — not profiled)
// <range start>("Region1")
// CodeBlock_A (profiled)
// CodeBlock_B (profiled)
// roctxProfilerResume (no-op)
// CodeBlock_C (profiled)
// <range stop>
// CodeBlock_D (outside region — not profiled)
//
// Run with filter:
// ROCPROFSYS_SELECTED_REGIONS="Region1" rocprof-sys -- ./selective-region-pause-2
// ROCPROFSYS_SELECTED_REGIONS="Region1" rocprof-sys -- ./selective-region-pause-2
// --push-pop
//
// Expected: profiling data recorded for {CodeBlock_A, CodeBlock_B, CodeBlock_C}
#include "roctx-example-kernels.hpp"
DEFINE_KERNEL(CodeBlock_Z, 10)
DEFINE_KERNEL(CodeBlock_A, 20)
DEFINE_KERNEL(CodeBlock_B, 30)
DEFINE_KERNEL(CodeBlock_C, 40)
DEFINE_KERNEL(CodeBlock_D, 50)
int
main(int argc, char** argv)
{
const bool use_push_pop = (argc > 1 && std::string_view(argv[1]) == "--push-pop");
gpu_buffer buf;
float* d = buf.get();
roctx_thread_id_t roctx_tid{};
roctxGetThreadId(&roctx_tid);
roctxProfilerPause(roctx_tid);
LAUNCH_KERNEL(CodeBlock_Z, d);
roctx_range_id_t region1_id = range_start("Region1", use_push_pop);
LAUNCH_KERNEL(CodeBlock_A, d);
LAUNCH_KERNEL(CodeBlock_B, d);
roctxProfilerResume(roctx_tid);
LAUNCH_KERNEL(CodeBlock_C, d);
range_stop(region1_id, use_push_pop);
LAUNCH_KERNEL(CodeBlock_D, d);
return 0;
}