|
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