6a899b5f6d
In order for pre-commit to be useful, everything needs to meet a common baseline. Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
158 Zeilen
5.9 KiB
YAML
158 Zeilen
5.9 KiB
YAML
name: rocprofiler-compute Code Coverage
|
|
run-name: rocprofiler-compute-code-coverage
|
|
|
|
on:
|
|
schedule:
|
|
- cron: '0 2 * * *'
|
|
workflow_dispatch:
|
|
inputs:
|
|
runner_matrix:
|
|
description: 'Runner configuration'
|
|
required: false
|
|
type: string
|
|
|
|
env:
|
|
ROCM_PATH: "/opt/rocm"
|
|
ROCM_VERSION: "7.0.2"
|
|
|
|
jobs:
|
|
prepare_matrix:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
matrix: ${{ steps.generate_matrix.outputs.matrix }}
|
|
|
|
steps:
|
|
- name: Generate matrix
|
|
id: generate_matrix
|
|
run: |
|
|
MATRIX='[{"os-release":"22.04","gpu":"mi355","arch":"gfx950","runner":"linux-mi355-1gpu-ossci-rocm","code-name":"jammy"},{"os-release":"24.04","gpu":"mi355","arch":"gfx950","runner":"linux-mi355-1gpu-ossci-rocm","code-name":"noble"},{"os-release":"22.04","gpu":"mi325","arch":"gfx94X","runner":"linux-mi325-1gpu-ossci-rocm","code-name":"jammy"},{"os-release":"24.04","gpu":"mi325","arch":"gfx94X","runner":"linux-mi325-1gpu-ossci-rocm","code-name":"noble"}]'
|
|
|
|
if [ -n "${{ github.event.inputs.runner_matrix }}" ]; then
|
|
MATRIX='${{ github.event.inputs.runner_matrix }}'
|
|
fi
|
|
|
|
echo "matrix=${MATRIX}" >> $GITHUB_OUTPUT
|
|
|
|
coverage:
|
|
name: Coverage • ${{ matrix.system.gpu }} • Ubuntu ${{ matrix.system.os-release }}
|
|
needs: prepare_matrix
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
system: ${{ fromJSON(needs.prepare_matrix.outputs.matrix) }}
|
|
runs-on: ${{ matrix.system.runner }}
|
|
env:
|
|
HIP_PLATFORM: "amd"
|
|
OMPI_ALLOW_RUN_AS_ROOT: 1
|
|
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1
|
|
permissions:
|
|
packages: read
|
|
container:
|
|
image: ghcr.io/rocm/rocprofiler-ubuntu:${{ matrix.system.os-release }}-systems-ci-${{ matrix.system.arch }}
|
|
options:
|
|
--privileged
|
|
--ipc host
|
|
--group-add video
|
|
--device /dev/kfd
|
|
--device /dev/dri
|
|
--cap-add CAP_SYS_ADMIN
|
|
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
with:
|
|
sparse-checkout: projects/rocprofiler-compute/
|
|
|
|
- name: Update system packages
|
|
run: |
|
|
apt-get update
|
|
apt-get dist-upgrade -y
|
|
echo "✅ System packages updated!"
|
|
|
|
- name: Install amdgpu and dependencies
|
|
shell: bash
|
|
run: |
|
|
ROCM_MAJOR=$(echo ${{ env.ROCM_VERSION }} | sed 's/\./ /g' | awk '{print $1}')
|
|
ROCM_MINOR=$(echo ${{ env.ROCM_VERSION }} | sed 's/\./ /g' | awk '{print $2}')
|
|
ROCM_VERSN=$(( (${ROCM_MAJOR}*10000)+(${ROCM_MINOR}*100) ))
|
|
wget -N -P /tmp/ https://repo.radeon.com/amdgpu-install/${ROCM_MAJOR}.${ROCM_MINOR}/ubuntu/${{ matrix.system.code-name }}/amdgpu-install_${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1_all.deb
|
|
apt-get install -y /tmp/amdgpu-install_${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1_all.deb
|
|
apt-get update
|
|
apt install -y amd-smi-lib libdw-dev
|
|
echo "✅ amdgpu and dependencies Installed!"
|
|
|
|
- name: Install MPI
|
|
run: |
|
|
apt install -y libopenmpi-dev
|
|
echo "✅ MPI Installed!"
|
|
|
|
- name: Install ROCm
|
|
run: |
|
|
apt install -y rocm-dev
|
|
echo "✅ ROCm Installation Complete!"
|
|
|
|
- name: Install Python Dependencies
|
|
working-directory: projects/rocprofiler-compute
|
|
run: |
|
|
pip install -r requirements.txt --break-system-packages --ignore-installed
|
|
pip install -r requirements-test.txt --break-system-packages --ignore-installed
|
|
echo "✅ Python dependencies installed!"
|
|
|
|
- name: Configure, Build, Test, and Upload Coverage
|
|
id: run_coverage
|
|
timeout-minutes: 120
|
|
working-directory: projects/rocprofiler-compute
|
|
continue-on-error: true
|
|
run: |
|
|
set -e
|
|
git config --global --add safe.directory ${GITHUB_WORKSPACE}
|
|
git config --global --add safe.directory ${PWD}
|
|
|
|
BUILD_NAME="ROCm/rocprofiler-compute-${{ github.ref_name }}-ubuntu-${{ matrix.system.os-release }}-${{ matrix.system.gpu }}"
|
|
SITE_NAME="${{ matrix.system.runner }}"
|
|
|
|
PATH=${{ env.ROCM_PATH }}/bin:${{ env.ROCM_PATH }}/llvm/bin:$PATH \
|
|
LD_LIBRARY_PATH=${{ env.ROCM_PATH }}/lib:${{ env.ROCM_PATH }}/llvm/lib:$LD_LIBRARY_PATH \
|
|
python3 ./tools/run-code-coverage.py \
|
|
--build-name "${BUILD_NAME}" \
|
|
--site "${SITE_NAME}" \
|
|
--mode "Nightly" \
|
|
--build-jobs 16 \
|
|
--pytest-numprocs 8 \
|
|
--install
|
|
|
|
- name: Check Coverage Configuration
|
|
if: always()
|
|
working-directory: projects/rocprofiler-compute
|
|
run: |
|
|
echo "=== Checking Build Configuration ==="
|
|
if [ -f "build/CMakeCache.txt" ]; then
|
|
echo "CMakeCache.txt contents (relevant variables):"
|
|
grep -E "ENABLE_TESTS|ENABLE_COVERAGE|INSTALL_TESTS|PYTEST_NUMPROCS" build/CMakeCache.txt || echo "⚠️ Coverage variables not found!"
|
|
echo ""
|
|
echo "=== Checking for coverage.xml ==="
|
|
if [ -f "build/coverage.xml" ]; then
|
|
echo "✅ coverage.xml found!"
|
|
ls -lh build/coverage.xml
|
|
else
|
|
echo "❌ coverage.xml NOT found!"
|
|
fi
|
|
echo ""
|
|
echo "=== Checking CTest results ==="
|
|
if [ -f "build/Testing/Temporary/LastTest.log" ]; then
|
|
echo "Last 50 lines of test log:"
|
|
tail -n 50 build/Testing/Temporary/LastTest.log
|
|
fi
|
|
else
|
|
echo "❌ build/CMakeCache.txt not found - build may have failed!"
|
|
fi
|
|
|
|
- name: Upload Logs on Failure
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-logs-${{ matrix.system.gpu }}-${{ matrix.system.os-release }}
|
|
path: |
|
|
projects/rocprofiler-compute/build/Testing/Temporary/LastTest*.log
|
|
projects/rocprofiler-compute/build/coverage.xml
|
|
retention-days: 7
|