Files
TheRock/rocm-systems/.github/workflows/rocprofiler-compute-sanitizers.yml
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

207 lines
6.7 KiB
YAML

name: rocprofiler-compute Sanitizers
run-name: rocprofiler-compute-sanitizers
on:
workflow_dispatch:
push:
branches:
- develop
- rocprofiler-compute-develop
paths:
- ".github/workflows/rocprofiler-compute-sanitizers.yml"
- "projects/rocprofiler-compute/**"
- "!**/*.md"
- "!**/*.rtf"
- "!**/*.rst"
- "!**/.markdownlint-ci2.yaml"
- "!**/.readthedocs.yaml"
- "!**/.spellcheck.local.yaml"
- "!**/.wordlist.txt"
- "!projects/rocprofiler-compute/docs/**"
- "!projects/rocprofiler-compute/source/docs/**"
- "!projects/rocprofiler-compute/source/python/gui/**"
- "!projects/rocprofiler-compute/docker/**"
- "!projects/rocprofiler-compute/CMakePresets.json"
pull_request:
paths:
- ".github/workflows/rocprofiler-compute-sanitizers.yml"
- "projects/rocprofiler-compute/**"
- "!**/*.md"
- "!**/*.rtf"
- "!**/*.rst"
- "!**/.markdownlint-ci2.yaml"
- "!**/.readthedocs.yaml"
- "!**/.spellcheck.local.yaml"
- "!**/.wordlist.txt"
- "!projects/rocprofiler-compute/docs/**"
- "!projects/rocprofiler-compute/source/docs/**"
- "!projects/rocprofiler-compute/source/python/gui/**"
- "!projects/rocprofiler-compute/docker/**"
- "!projects/rocprofiler-compute/CMakePresets.json"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
packages: read
env:
ROCPROFSYS_CI: ON
ROCM_PATH: "/opt/rocm"
jobs:
sanitizer:
name: ${{ matrix.sanitizer.name }}
runs-on: linux-gfx950-1gpu-ccs-ossci-rocm
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
sanitizer:
- name: asan
enable_sanitizer: ASAN
- name: tsan
enable_sanitizer: TSAN
- name: ubsan
enable_sanitizer: UBSAN
env:
HIP_PLATFORM: "amd"
OMPI_ALLOW_RUN_AS_ROOT: 1
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1
container:
image: ghcr.io/rocm/rocprofiler-ubuntu:24.04-compute-ci-multiarch
options: >-
--privileged
--ipc host
--group-add video
--device /dev/kfd
--device /dev/dri
--cap-add CAP_SYS_ADMIN
--env-file /etc/podinfo/gha-gpu-isolation-settings
steps:
- uses: actions/checkout@v6
with:
sparse-checkout: |
projects/rocprofiler-compute
shared/ctest
- name: Install dependencies
shell: bash
run: |
apt-get update
apt-get install -y libdw-dev pkg-config
echo "✅ Dependencies Installed!"
- name: Install latest nightly ROCm
shell: bash
run: |
set -e
mkdir "${ROCM_PATH}"
tarball="$(ls "${ROCM_PATH}"-*-multiarch.tar.gz | head -n1)"
tar -xf "${tarball}" -C "${ROCM_PATH}"
echo "ROCm installed to: ${ROCM_PATH}"
echo "✅ ROCm Installation Complete!"
- name: Output TheRock manifest
run: cat "${ROCM_PATH}/share/therock/therock_manifest.json"
- name: Locate clang sanitizer runtime
id: sanitizer_runtime
shell: bash
run: |
resource_dir="$("${ROCM_PATH}/llvm/bin/clang" -print-resource-dir)"
sanitizer_lib_dir="${resource_dir}/lib/linux"
if [ ! -d "${sanitizer_lib_dir}" ]; then
echo "❌ Missing clang sanitizer runtime: ${sanitizer_lib_dir}"
exit 1
fi
echo "sanitizer_lib_dir=${sanitizer_lib_dir}" >> "${GITHUB_OUTPUT}"
echo "Clang sanitizer runtime: ${sanitizer_lib_dir}"
- name: Install Python requirements
working-directory: projects/rocprofiler-compute
shell: bash
run: |
for attempt in 1 2 3; do
pip install \
-r requirements.txt \
--break-system-packages \
--ignore-installed \
--timeout 60 && break
echo "⚠️ pip install attempt ${attempt} failed, retrying..."
sleep 10
done
for attempt in 1 2 3; do
pip install \
-r requirements-test.txt \
--break-system-packages \
--ignore-installed \
--timeout 60 && break
echo "⚠️ pip install attempt ${attempt} failed, retrying..."
sleep 10
done
echo "✅ pip requirements installed!"
- name: Configure, build, and test
id: test
continue-on-error: true
working-directory: projects/rocprofiler-compute
shell: bash
run: |
set -e
git config --global --add safe.directory "${GITHUB_WORKSPACE}"
git config --global --add safe.directory "${PWD}"
export PATH="${ROCM_PATH}/bin:${ROCM_PATH}/llvm/bin:${PATH}"
export LD_LIBRARY_PATH="${ROCM_PATH}/lib:${ROCM_PATH}/llvm/lib:${ROCM_PATH}/lib/rocm_sysdeps/lib:${{ steps.sanitizer_runtime.outputs.sanitizer_lib_dir }}:${LD_LIBRARY_PATH:-}"
c_compiler="$(command -v amdclang)"
cxx_compiler="$(command -v amdclang++)"
python3 ./tools/run-ci.py \
--name "ROCm/rocprofiler-compute-${{ github.ref_name }}-ubuntu-24.04-${{ matrix.sanitizer.name }}" \
--actor "${{ github.actor }}" \
--site linux-gfx950-1gpu-ccs-ossci-rocm \
--mode Continuous \
--build-jobs 16 \
--repeat-until-pass 1 \
--repeat-after-timeout 1 \
-- \
"-DCMAKE_C_COMPILER=${c_compiler}" \
"-DCMAKE_CXX_COMPILER=${cxx_compiler}" \
"-DCMAKE_HIP_COMPILER=${cxx_compiler}" \
-DCMAKE_BUILD_TYPE=Debug \
"-DCMAKE_PREFIX_PATH=${ROCM_PATH}" \
-DENABLE_TESTS=ON \
-DINSTALL_TESTS=ON \
"-DENABLE_SANITIZER=${{ matrix.sanitizer.enable_sanitizer }}" \
-- \
-L sanitizer
- name: Output logs
if: steps.test.outcome == 'failure'
working-directory: projects/rocprofiler-compute
shell: bash
run: |
echo "❌ Run Failed: Outputting available log files..."
for log in build/Testing/Temporary/LastTest*.log \
build/Testing/Temporary/LastConfigure*.log; do
if [ -f "${log}" ]; then
echo "=== ${log} ==="
cat "${log}"
fi
done
- name: Check test results
if: always()
shell: bash
run: |
if [ "${{ steps.test.outcome }}" = "failure" ]; then
echo "❌ Tests failed - see CDash for details: https://my.cdash.org/index.php?project=rocprofiler-compute"
exit 1
fi
echo "✅ All tests passed!"