|
1 | 1 | name: Benchmarks Reusable |
2 | 2 |
|
3 | | -on: |
4 | | - workflow_call: |
5 | | - inputs: |
6 | | - str_name: |
7 | | - required: true |
8 | | - type: string |
9 | | - pr_no: |
10 | | - required: true |
11 | | - # even though this is a number, this is a workaround for issues with |
12 | | - # reusable workflow calls that result in "Unexpected value '0'" error. |
13 | | - type: string |
14 | | - bench_script_params: |
15 | | - required: false |
16 | | - type: string |
17 | | - default: '' |
18 | | - sycl_config_params: |
19 | | - required: false |
20 | | - type: string |
21 | | - default: '' |
22 | | - upload_report: |
23 | | - required: false |
24 | | - type: boolean |
25 | | - default: false |
26 | | - compute_runtime_commit: |
27 | | - required: false |
28 | | - type: string |
29 | | - default: '' |
| 3 | +# This workflow is a WIP: This workflow file acts as a placeholder. |
30 | 4 |
|
31 | | -permissions: |
32 | | - contents: read |
33 | | - pull-requests: write |
| 5 | +on: [ workflow_call ] |
34 | 6 |
|
35 | 7 | jobs: |
36 | | - bench-run: |
37 | | - name: Build SYCL, Run Benchmarks |
38 | | - strategy: |
39 | | - matrix: |
40 | | - adapter: [ |
41 | | - {str_name: "${{ inputs.str_name }}", |
42 | | - sycl_config: "${{ inputs.sycl_config_params }}" |
43 | | - } |
44 | | - ] |
45 | | - build_type: [Release] |
46 | | - compiler: [{c: clang, cxx: clang++}] |
47 | | - |
48 | | - runs-on: "PVC_PERF" |
49 | | - |
| 8 | + do-nothing: |
| 9 | + runs-on: ubuntu-latest |
50 | 10 | steps: |
51 | | - - name: Add comment to PR |
52 | | - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 |
53 | | - if: ${{ always() && inputs.pr_no != 0 }} |
54 | | - with: |
55 | | - script: | |
56 | | - const pr_no = '${{ inputs.pr_no }}'; |
57 | | - const adapter = '${{ matrix.adapter.str_name }}'; |
58 | | - const url = '${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'; |
59 | | - const params = '${{ inputs.bench_script_params }}'; |
60 | | - const body = `Compute Benchmarks ${adapter} run (with params: ${params}):\n${url}`; |
61 | | -
|
62 | | - github.rest.issues.createComment({ |
63 | | - issue_number: pr_no, |
64 | | - owner: context.repo.owner, |
65 | | - repo: context.repo.repo, |
66 | | - body: body |
67 | | - }) |
68 | | -
|
69 | | - - name: Checkout SYCL |
70 | | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 |
71 | | - with: |
72 | | - path: sycl-repo |
73 | | - |
74 | | - # We need to fetch special ref for proper PR's merge commit. Note, this ref may be absent if the PR is already merged. |
75 | | - - name: Fetch PR's merge commit |
76 | | - if: ${{ inputs.pr_no != 0 }} |
77 | | - working-directory: ${{github.workspace}}/sycl-repo |
78 | | - run: | |
79 | | - git fetch -- https://github.com/${{github.repository}} +refs/pull/${{ inputs.pr_no }}/*:refs/remotes/origin/pr/${{ inputs.pr_no }}/* |
80 | | - git checkout origin/pr/${{ inputs.pr_no }}/merge |
81 | | - git rev-parse origin/pr/${{ inputs.pr_no }}/merge |
82 | | -
|
83 | | - - name: Install pip packages |
84 | | - run: | |
85 | | - pip install --force-reinstall -r ${{github.workspace}}/sycl-repo/unified-runtime/scripts/benchmarks/requirements.txt |
86 | | -
|
87 | | - - name: Configure SYCL |
88 | | - run: > |
89 | | - python3 sycl-repo/buildbot/configure.py |
90 | | - -t ${{matrix.build_type}} |
91 | | - -o ${{github.workspace}}/sycl_build |
92 | | - --cmake-gen "Ninja" |
93 | | - --cmake-opt="-DLLVM_INSTALL_UTILS=ON" |
94 | | - --cmake-opt="-DSYCL_PI_TESTS=OFF" |
95 | | - --cmake-opt=-DCMAKE_C_COMPILER_LAUNCHER=ccache |
96 | | - --cmake-opt=-DCMAKE_CXX_COMPILER_LAUNCHER=ccache |
97 | | - ${{matrix.adapter.sycl_config}} |
98 | | -
|
99 | | - - name: Build SYCL |
100 | | - run: cmake --build ${{github.workspace}}/sycl_build -j $(nproc) |
101 | | - |
102 | | - # We need a complete installed UR for compute-benchmarks. |
103 | | - - name: Configure UR |
104 | | - run: > |
105 | | - cmake -DCMAKE_BUILD_TYPE=${{matrix.build_type}} |
106 | | - -S${{github.workspace}}/sycl-repo/unified-runtime |
107 | | - -B${{github.workspace}}/ur_build |
108 | | - -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/ur_install |
109 | | - -DUR_BUILD_TESTS=OFF |
110 | | - -DUR_BUILD_ADAPTER_L0=ON |
111 | | - -DUR_BUILD_ADAPTER_L0_V2=ON |
112 | | - -DUMF_DISABLE_HWLOC=ON |
113 | | -
|
114 | | - - name: Build UR |
115 | | - run: cmake --build ${{github.workspace}}/ur_build -j $(nproc) |
116 | | - |
117 | | - - name: Install UR |
118 | | - run: cmake --install ${{github.workspace}}/ur_build |
119 | | - |
120 | | - - name: Compute core range |
121 | | - run: | |
122 | | - # Compute the core range for the first NUMA node; second node is for UMF jobs. |
123 | | - # Skip the first 4 cores - the kernel is likely to schedule more work on these. |
124 | | - CORES="$(lscpu | awk ' |
125 | | - /NUMA node0 CPU|On-line CPU/ {line=$0} |
126 | | - END { |
127 | | - split(line, a, " ") |
128 | | - split(a[4], b, ",") |
129 | | - sub(/^0/, "4", b[1]) |
130 | | - print b[1] |
131 | | - }')" |
132 | | - echo "Selected core: $CORES" |
133 | | - echo "CORES=$CORES" >> $GITHUB_ENV |
134 | | -
|
135 | | - ZE_AFFINITY_MASK=0 |
136 | | - echo "ZE_AFFINITY_MASK=$ZE_AFFINITY_MASK" >> $GITHUB_ENV |
137 | | -
|
138 | | - - name: Run benchmarks |
139 | | - working-directory: ${{ github.workspace }} |
140 | | - id: benchmarks |
141 | | - run: > |
142 | | - taskset -c "${{ env.CORES }}" ${{ github.workspace }}/sycl-repo/unified-runtime/scripts/benchmarks/main.py |
143 | | - ~/llvm_bench_workdir |
144 | | - --sycl ${{ github.workspace }}/sycl_build |
145 | | - --ur ${{ github.workspace }}/ur_install |
146 | | - --adapter ${{ matrix.adapter.str_name }} |
147 | | - --compare baseline |
148 | | - --compute-runtime ${{ inputs.compute_runtime_commit }} |
149 | | - --build-igc |
150 | | - ${{ inputs.upload_report && '--output-html' || '' }} |
151 | | - ${{ inputs.pr_no != 0 && '--output-markdown' || '' }} |
152 | | - ${{ inputs.bench_script_params }} |
153 | | -
|
154 | | - - name: Print benchmark results |
155 | | - run: | |
156 | | - cat ${{ github.workspace }}/benchmark_results.md || true |
157 | | -
|
158 | | - - name: Add comment to PR |
159 | | - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 |
160 | | - if: ${{ always() && inputs.pr_no != 0 }} |
161 | | - with: |
162 | | - script: | |
163 | | - let markdown = "" |
164 | | - try { |
165 | | - const fs = require('fs'); |
166 | | - markdown = fs.readFileSync('benchmark_results.md', 'utf8'); |
167 | | - } catch(err) { |
168 | | - } |
169 | | -
|
170 | | - const pr_no = '${{ inputs.pr_no }}'; |
171 | | - const adapter = '${{ matrix.adapter.str_name }}'; |
172 | | - const url = '${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'; |
173 | | - const test_status = '${{ steps.benchmarks.outcome }}'; |
174 | | - const job_status = '${{ job.status }}'; |
175 | | - const params = '${{ inputs.bench_script_params }}'; |
176 | | - const body = `Benchmarks ${adapter} run (${params}):\n${url}\nJob status: ${job_status}. Test status: ${test_status}.\n ${markdown}`; |
177 | | -
|
178 | | - github.rest.issues.createComment({ |
179 | | - issue_number: pr_no, |
180 | | - owner: context.repo.owner, |
181 | | - repo: context.repo.repo, |
182 | | - body: body |
183 | | - }) |
184 | | -
|
185 | | - - name: Rename benchmark results file |
186 | | - if: ${{ always() && inputs.upload_report }} |
187 | | - run: mv benchmark_results.html benchmark_results_${{ inputs.pr_no }}.html |
188 | | - |
189 | | - - name: Upload HTML report |
190 | | - if: ${{ always() && inputs.upload_report }} |
191 | | - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 |
192 | | - with: |
193 | | - path: benchmark_results_${{ inputs.pr_no }}.html |
194 | | - key: benchmark-results-${{ inputs.pr_no }}-${{ matrix.adapter.str_name }}-${{ github.run_id }} |
195 | | - |
196 | | - - name: Get information about platform |
197 | | - if: ${{ always() }} |
198 | | - run: ${{github.workspace}}/sycl-repo/unified-runtime/.github/scripts/get_system_info.sh |
| 11 | + - run: echo 'This workflow is a WIP.' |
| 12 | + |
0 commit comments