diff --git a/projects/rocprofiler-sdk/.github/workflows/ci_pc_sampling.yml b/projects/rocprofiler-sdk/.github/workflows/ci_pc_sampling.yml new file mode 100644 index 0000000000..5ae7b9adbb --- /dev/null +++ b/projects/rocprofiler-sdk/.github/workflows/ci_pc_sampling.yml @@ -0,0 +1,91 @@ + +name: PC-Sampling Continuous Integration + +on: + workflow_dispatch: + push: + branches: [ amd-staging, amd-mainline ] + paths: + - '*/*/*/pc_sampling*/**' + - '*/*/*/*/pc_sampling*' + - '*/*/*/pc_sampling*' + - '*/pc_sampling*/**' + pull_request: + paths: + - '*/*/*/pc_sampling*/**' + - '*/*/*/*/pc_sampling*' + - '*/*/*/pc_sampling*' + - '*/pc_sampling*/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + # TODO(jrmadsen): replace LD_RUNPATH_FLAG, GPU_LIST, etc. with internal handling in cmake + ROCM_PATH: "/opt/rocm" + GPU_LIST: "gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx1100 gfx1101 gfx1102" + PATH: "/usr/bin:$PATH" + INCLUDED_TESTS: ".*pc_sampling.*" + +jobs: + pc-sampling: + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + strategy: + fail-fast: true + matrix: + runner: [pc-sampling-runner-set] + os: [ubuntu-22.04] + build-type: [RelWithDebInfo] + ci-flags: ['--linter clang-tidy'] + name-tag: [''] + + runs-on: ${{ matrix.runner }} + + # define this for containers + env: + GIT_DISCOVERY_ACROSS_FILESYSTEM: 1 + + steps: + - uses: actions/checkout@v4 + + - name: Install requirements + shell: bash + run: | + git config --global --add safe.directory '*' + apt-get update + apt-get install -y cmake clang-tidy g++-11 g++-12 python3-pip + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 10 --slave /usr/bin/g++ g++ /usr/bin/g++-11 + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 20 --slave /usr/bin/g++ g++ /usr/bin/g++-12 + python3 -m pip install -r requirements.txt + python3 -m pip install pytest + python3 -m pip install 'cmake>=3.22.0' + + - name: List Files + shell: bash + run: | + which-realpath() { echo -e "\n$1 resolves to $(realpath $(which $1))"; echo "$($(which $1) --version &> /dev/stdout | head -n 1)"; } + for i in python python3 git cmake ctest; do which-realpath $i; done + ls -la + cat /sys/class/kfd/kfd/topology/nodes/*/gpu_id || true; /opt/rocm/bin/rocminfo | grep gfx + + - name: Configure, Build, and Test + timeout-minutes: 30 + shell: bash + run: + python3 ./source/scripts/run-ci.py -B build + --name ${{ github.repository }}-${{ github.ref_name }}-${{ matrix.os }}${{ matrix.name-tag }} + --build-jobs 16 + --site $(echo $RUNNER_HOSTNAME)-$(/opt/rocm/bin/rocm_agent_enumerator | sed -n '2 p') + --gpu-targets ${{ env.GPU_LIST }} + ${{ matrix.ci-flags }} + -- + -DROCPROFILER_DEP_ROCMCORE=ON + -DROCPROFILER_BUILD_DOCS=ON + -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} + -DCMAKE_INSTALL_PREFIX=/opt/rocprofiler-sdk + -DCPACK_GENERATOR='DEB;RPM;TGZ' + -DCPACK_PACKAGING_INSTALL_PREFIX="$(realpath /opt/rocm)" + -DPython3_EXECUTABLE=$(which python3) + -- + -L ${{ env.INCLUDED_TESTS }} diff --git a/projects/rocprofiler-sdk/.github/workflows/continuous_integration.yml b/projects/rocprofiler-sdk/.github/workflows/continuous_integration.yml index a53c5c60e4..ceb5a49d72 100644 --- a/projects/rocprofiler-sdk/.github/workflows/continuous_integration.yml +++ b/projects/rocprofiler-sdk/.github/workflows/continuous_integration.yml @@ -23,6 +23,7 @@ env: ROCM_PATH: "/opt/rocm" GPU_LIST: "gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx1100 gfx1101 gfx1102" PATH: "/usr/bin:$PATH" + EXCLUDED_TESTS: ".*pc_sampling.*" jobs: core: @@ -104,6 +105,8 @@ jobs: -DCPACK_GENERATOR='DEB;RPM;TGZ' -DCPACK_PACKAGING_INSTALL_PREFIX="$(realpath /opt/rocm)" -DPython3_EXECUTABLE=$(which python3) + -- + -LE ${{ env.EXCLUDED_TESTS }} - name: Install timeout-minutes: 10 @@ -124,8 +127,8 @@ jobs: export LD_LIBRARY_PATH=/opt/rocprofiler-sdk/lib:${LD_LIBRARY_PATH} cmake --build build-samples --target all --parallel 16 cmake --build build-tests --target all --parallel 16 - ctest --test-dir build-samples --output-on-failure - ctest --test-dir build-tests --output-on-failure + ctest --test-dir build-samples -LE ${{ env.EXCLUDED_TESTS }} --output-on-failure + ctest --test-dir build-tests -LE ${{ env.EXCLUDED_TESTS }} --output-on-failure - name: Install Packages timeout-minutes: 5 @@ -144,8 +147,8 @@ jobs: CMAKE_PREFIX_PATH=/opt/rocm cmake -B build-tests-deb /opt/rocm/share/rocprofiler-sdk/tests cmake --build build-samples-deb --target all --parallel 16 cmake --build build-tests-deb --target all --parallel 16 - ctest --test-dir build-samples-deb --output-on-failure - ctest --test-dir build-tests-deb --output-on-failure + ctest --test-dir build-samples-deb -LE ${{ env.EXCLUDED_TESTS }} --output-on-failure + ctest --test-dir build-tests-deb -LE ${{ env.EXCLUDED_TESTS }} --output-on-failure - name: Archive production artifacts uses: actions/upload-artifact@v4 @@ -236,6 +239,8 @@ jobs: -- -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DPython3_EXECUTABLE=$(which python3) + -- + -LE ${{ env.EXCLUDED_TESTS }} - name: Configure, Build, and Test (Tests Code Coverage) timeout-minutes: 30 @@ -251,6 +256,8 @@ jobs: -- -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DPython3_EXECUTABLE=$(which python3) + -- + -LE ${{ env.EXCLUDED_TESTS }} - name: Configure, Build, and Test (Samples Code Coverage) timeout-minutes: 30 @@ -266,6 +273,8 @@ jobs: -- -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DPython3_EXECUTABLE=$(which python3) + -- + -LE ${{ env.EXCLUDED_TESTS }} - name: Save XML Code Coverage id: save-coverage @@ -342,15 +351,15 @@ jobs: # - unittests # - integration-tests # - ctest -N -LE 'samples|tests' -O ctest.mislabeled.log + ctest -N -LE 'samples|tests|${{ env.EXCLUDED_TESTS }}' -O ctest.mislabeled.log grep 'Total Tests: 0' ctest.mislabeled.log # # if following fails, then there is overlap between the labels. # A test cannot both be a sample and (unit/integration) test. # - ctest -N -O ctest.all.log - ctest -N -O ctest.samples.log -L samples - ctest -N -O ctest.tests.log -L tests + ctest -LE ${{ env.EXCLUDED_TESTS }} -N -O ctest.all.log + ctest -LE ${{ env.EXCLUDED_TESTS }} -N -O ctest.samples.log -L samples + ctest -LE ${{ env.EXCLUDED_TESTS }} -N -O ctest.tests.log -L tests NUM_ALL=$(grep 'Total Tests:' ctest.all.log | awk '{print $NF}') NUM_SAMPLE=$(grep 'Total Tests:' ctest.samples.log | awk '{print $NF}') NUM_TEST=$(grep 'Total Tests:' ctest.tests.log | awk '{print $NF}') @@ -423,3 +432,5 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DCMAKE_INSTALL_PREFIX="${{ env.ROCM_PATH }}" -DPython3_EXECUTABLE=$(which python3) + -- + -LE ${{ env.EXCLUDED_TESTS }}