name: rocprofiler-compute mi-rhel9 on: push: paths: - 'projects/rocprofiler-compute/**' # Allows manual execution workflow_dispatch: permissions: contents: read checks: write pull-requests: write concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: profile: strategy: matrix: version: [5.7.1, 6.0.2] hardware: [mi100, mi200] profiler: [default, rocprofv2] exclude: - profiler: rocprofv2 hardware: mi100 fail-fast: false runs-on: [mi100, rhel9] env: PYTHONPATH: /home1/ciuser/rocprofiler-compute_deps CI_VISIBLE_DEVICES: 1 name: ROCm v${{ matrix.version }} / ${{ matrix.hardware }} / ${{ matrix.profiler }} steps: - name: Checkout uses: actions/checkout@v4 with: sparse-checkout: projects/rocprofiler-compute - name: Python Path run: echo ${PYTHONPATH} - name: Setup hardware-specific run details working-directory: projects/rocprofiler-compute run: | if [ ${{ matrix.hardware }} == "mi100" ];then echo "CI_QUEUE=ci" >> $GITHUB_ENV echo "CI_ARCH=gfx908" >> $GITHUB_ENV elif [ ${{ matrix.hardware }} == "mi200" ];then echo "CI_QUEUE=mi2104x" >> $GITHUB_ENV echo "CI_ARCH=gfx90a" >> $GITHUB_ENV else echo "Unsupported hardware" exit 1 fi - name: Setup profiling mode working-directory: projects/rocprofiler-compute run: | if [ ${{ matrix.profiler }} == "rocprofv2" ];then echo "ROCPROF=rocprofv2" >> $GITHUB_ENV fi - name: Install Python collateral (build and test) working-directory: projects/rocprofiler-compute run: | pip3 install -t ${PYTHONPATH} -r requirements.txt pip3 install -t ${PYTHONPATH} -r requirements-test.txt - name: Load ROCm ${{ matrix.version}} working-directory: projects/rocprofiler-compute run: | module load cmake module load rocm/${{ matrix.version }} echo $PATH > $GITHUB_PATH echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> "$GITHUB_ENV" echo "ROCM_PATH=$ROCM_PATH" >> "$GITHUB_ENV" - name: Check Environment working-directory: projects/rocprofiler-compute run: | echo "PATH=$PATH" echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" echo "ROCM_PATH=$ROCM_PATH" echo "CI_QUEUE=$CI_QUEUE" echo "CI_ARCH=$CI_ARCH" echo "CI_VISIBLE_DEVICES=$CI_VISIBLE_DEVICES" echo "ROCPROF=$ROCPROF" - name: Configure working-directory: projects/rocprofiler-compute run: | mkdir build cd build ml cmake cmake -DENABLE_TESTS=ON -DCMAKE_HIP_ARCHITECTURES=$CI_ARCH -DENABLE_COVERAGE=ON -DPYTEST_NUMPROCS=8 .. - name: Build tests and Run [profile] mode working-directory: projects/rocprofiler-compute run: | cd build make srun -N 1 -J rocprof-compute -p $CI_QUEUE -t 00:20:00 ctest -j 4 --resource-spec-file ../tests/4gpus.json --verbose -L profile - name: Run [analyze workloads] mode working-directory: projects/rocprofiler-compute if: '!cancelled()' run: | cd build srun -N 1 -J rocprof-compute -p $CI_QUEUE -t 00:10:00 ctest --verbose -R test_analyze_workloads - name: Run [analyze commands] mode working-directory: projects/rocprofiler-compute if: '!cancelled()' run: | cd build srun -N 1 -J rocprof-compute -p $CI_QUEUE -t 00:10:00 ctest --verbose -R test_analyze_commands - name: Publish Test Results uses: EnricoMi/publish-unit-test-result-action/linux@v2 if: always() with: files: | projects/rocprofiler-compute/tests/**/test_*.xml - name: Summarize code coverage if: always() run: coverage report - name: Upload code coverage uses: zgosalvez/github-actions-report-lcov@v4 if: always() with: coverage-files: projects/rocprofiler-compute/tests/coverage.info minimum-coverage: 35 artifact-name: code-coverage-report-rocm${{ matrix.version }}-${{ matrix.hardware }}-${{ matrix.profiler }} github-token: ${{ secrets.GITHUB_TOKEN }} update-comment: true