Files
TheRock/rocm-systems/projects/rocshmem/DEBUG.md
T
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

2.4 KiB

Hacking and Debugging RocSHMEM

This documentation is mostly for core RocSHMEM developers and contributors. Power users may still find it useful.

How to debug parallel programs

When using Open MPI as the launch mechanism, you can use OMPI_MCA_mpi_abort_delay=-1 to keep parallel processes active after a crash. You can then use ssh -t $nodename rocgdb -p $pid to connect a rocgdb to the failed process. Sometimes errors are caught by UCX, UCX_HANDLE_ERRORS=freeze will have the same effect in such cases.

Look into scripts/functional_tests/GDB_README about an alternative technique that deploys multiple xterm to gdb into parallel processes.

How to use the address sanitizer (ASAN)

Refer to General documentation for ASAN on AMD GPUs.

Compiling with ASAN

If this is a fresh build directory, simply add -DASAN=ON to the cmake invocation. cmake . <...> -DASAN=ON

If you are enabling ASAN in a previously used build directory, use ccmake to alter the CMake Cache ccmake .

In the ccmake interface:

  1. find and toggle ASAN ON
  2. find and delete COMPILING_TARGETS (keybind d)

Do not forget to delete COMPILING_TARGETS again when disabling ASAN (otherwise xnack will remain required, causing failure in production runs).

Running with ASAN

You need to set environment variable HSA_XNACK=1. Do not forget to unset this variable when not using ASAN (it will impact performance).

You may need to add the path to libclang_rt.asan-x86_64.so into LD_LIBRARY_PATH by hand. Depending on the ROCm version, it may be in an unusual place, e.g., $ROCM_ROOT/lib/llvm/lib/clang/19/lib/linux/libclang_rt.asan-x86_64.so; find /opt/rocm -name libclang_rt.asan-x86_64.so may be required to find it.

ASAN may crash when using Open MPI. If that happens, set environment variable OMPI_MCA_memory=^patcher. Do not forget to unset this variable when not using ASAN (it will impact performance).

When running the program, the behavior of ASAN can be controlled with the ASAN_OPTIONS environment variable.

you can redude the amount of spurious leak reports by setting environment variable LSAN_OPTIONS=suppressions=$ROCSHEM_SRC/scripts/lsan-suppressions.txt.

References