@@ -128,13 +128,14 @@ jobs:
128
128
129
129
- name : Install benchmarking scripts deps
130
130
run : |
131
- python -m venv .venv
131
+ python3 -m venv .venv
132
132
source .venv/bin/activate
133
133
pip install -r ${{github.workspace}}/sc/devops/scripts/benchmarks/requirements.txt
134
134
135
135
- name : Set core range and GPU mask
136
136
run : |
137
- # Compute the core range for the second NUMA node; first node is for SYCL/UR jobs.
137
+ # On the L0_PERF runner, compute the core range for the second NUMA node;
138
+ # first node is for SYCL/UR jobs.
138
139
# Skip the first 4 cores - the kernel is likely to schedule more work on these.
139
140
CORES=$(lscpu | awk '
140
141
/NUMA node1 CPU|On-line CPU/ {line=$0}
@@ -147,20 +148,57 @@ jobs:
147
148
echo "Selected core: $CORES"
148
149
echo "CORES=$CORES" >> $GITHUB_ENV
149
150
150
- ZE_AFFINITY_MASK=1
151
+ ZE_AFFINITY_MASK=${{ inputs.runner == 'L0_PERF_GPU' && '0' || '1' }}
151
152
echo "ZE_AFFINITY_MASK=$ZE_AFFINITY_MASK" >> $GITHUB_ENV
152
153
153
- - name : Run UMF benchmarks
154
+ - name : Download latest sycl
155
+ if : inputs.runner == 'L0_PERF_GPU'
156
+ run : |
157
+ llvm_tag=$(curl -s https://api.github.com/repos/intel/llvm/releases | awk -F'"' '/"tag_name": "nightly/ {print $4; exit}')
158
+ download_url="https://github.com/intel/llvm/releases/download/${llvm_tag}/sycl_linux.tar.gz"
159
+ echo "llvm tag: $llvm_tag"
160
+ wget --no-verbose $download_url -O sycl_linux.tar.gz
161
+
162
+ - name : Unpack sycl
163
+ if : inputs.runner == 'L0_PERF_GPU'
164
+ run : |
165
+ mkdir -p sycl
166
+ tar -xzf sycl_linux.tar.gz -C sycl --strip-components=1
167
+ rm sycl_linux.tar.gz
168
+ echo "SYCL_DIR=${{ github.workspace }}/sycl" >> $GITHUB_ENV
169
+ echo "${{ github.workspace }}/sycl/bin" >> $GITHUB_PATH
170
+ echo "LD_LIBRARY_PATH=${{ github.workspace }}/sycl/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
171
+
172
+ - name : Remove UMF libraries from sycl
173
+ if : inputs.runner == 'L0_PERF_GPU'
174
+ run : rm -f ${{ env.SYCL_DIR }}/lib/libumf*
175
+
176
+ - name : Copy UMF libraries to sycl
177
+ if : inputs.runner == 'L0_PERF_GPU'
178
+ run : |
179
+ cp ${{ env.BUILD_DIR }}/lib/libumf* ${{ env.SYCL_DIR }}/lib/
180
+
181
+ - name : Run sycl-ls
182
+ if : inputs.runner == 'L0_PERF_GPU'
183
+ env :
184
+ LD_LIBRARY_PATH : ${{ env.SYCL_DIR }}/lib
185
+ SYCL_UR_TRACE : 1
186
+ SYCL_UR_USE_LEVEL_ZERO_V2 : 1
187
+ run : ${{ env.SYCL_DIR }}/bin/sycl-ls
188
+
189
+ - name : Run benchmarks
154
190
id : benchmarks
191
+ env :
192
+ LD_LIBRARY_PATH : ${{ env.SYCL_DIR }}/lib
193
+ CPATH : ${{ env.SYCL_DIR }}/include
155
194
run : >
156
195
source .venv/bin/activate &&
157
196
taskset -c ${{ env.CORES }} ./sc/devops/scripts/benchmarks/main.py
158
197
~/bench_workdir_umf
159
- --umf ${{env.BUILD_DIR}}
160
- --timeout 3000
161
- --output-html remote
162
198
--results-dir ${{ github.workspace }}/results-repo
163
199
--output-markdown
200
+ ${{ (inputs.runner == 'L0_PERF') && format('--umf {0} --timeout 3000 --output-html remote', env.BUILD_DIR) || '' }}
201
+ ${{ (inputs.runner == 'L0_PERF_GPU') && format('--sycl {0} --timeout 7200', env.SYCL_DIR) || '' }}
164
202
${{ env.bench_params }}
165
203
166
204
# In case it failed to add a comment, we can still print the results.
@@ -196,6 +234,7 @@ jobs:
196
234
197
235
- name : Commit data.json and results directory
198
236
working-directory : results-repo
237
+ if : inputs.runner == 'L0_PERF'
199
238
run : |
200
239
git config --global user.name "GitHub Actions Bot"
201
240
git config --global user.email "actions@github.com"
0 commit comments