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
207 lines
6.7 KiB
YAML
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!"
|