Skip to content

Commit 883260d

Browse files
adarshyogaZzEeKkAa
authored andcommitted
adding conda recipe
1 parent 5daec03 commit 883260d

File tree

12 files changed

+587
-1
lines changed

12 files changed

+587
-1
lines changed
Lines changed: 390 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,390 @@
1+
# SPDX-FileCopyrightText: 2022 - 2023 Intel Corporation
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
name: Conda package
6+
7+
on:
8+
push:
9+
branches:
10+
- main
11+
pull_request:
12+
13+
env:
14+
PACKAGE_NAME: dpbench
15+
MODULE_NAME: dpbench
16+
CHANNELS: '-c dppy/label/dev -c conda-forge -c intel -c nodefaults --override-channels'
17+
VER_JSON_NAME: 'version.json'
18+
VER_SCRIPT1: "import json; f = open('version.json', 'r'); j = json.load(f); f.close(); "
19+
VER_SCRIPT2: "d = j['dpbench'][0]; print('='.join((d[s] for s in ('version', 'build'))))"
20+
21+
jobs:
22+
build:
23+
name: Build ['${{ matrix.os }}', python='${{ matrix.python }}']
24+
25+
strategy:
26+
fail-fast: false
27+
matrix:
28+
python: ['3.9', '3.10']
29+
os: [ubuntu-latest, windows-latest]
30+
31+
runs-on: ${{ matrix.os }}
32+
33+
defaults:
34+
run:
35+
shell: ${{ matrix.os == 'windows-latest' && 'cmd /C CALL {0}' || 'bash -l {0}' }}
36+
37+
continue-on-error: false
38+
39+
steps:
40+
- name: Cancel Previous Runs
41+
uses: styfle/[email protected]
42+
with:
43+
access_token: ${{ github.token }}
44+
45+
- name: Checkout DPBENCH repo
46+
uses: actions/[email protected]
47+
with:
48+
fetch-depth: 0
49+
50+
- name: Setup miniconda
51+
uses: conda-incubator/[email protected]
52+
with:
53+
auto-update-conda: true
54+
python-version: ${{ matrix.python }}
55+
miniconda-version: 'latest'
56+
activate-environment: 'build'
57+
58+
- if: matrix.os == 'ubuntu-latest'
59+
name: Store conda paths as envs on Linux
60+
run: echo "CONDA_BLD=$CONDA_PREFIX/conda-bld/linux-64/" >> $GITHUB_ENV
61+
62+
- if: matrix.os == 'windows-latest'
63+
name: Store conda paths as envs on Win
64+
run: |
65+
@echo on
66+
(echo CONDA_BLD=%CONDA_PREFIX%\conda-bld\win-64\) >> %GITHUB_ENV%
67+
68+
- name: Install conda-build
69+
run: conda install conda-build
70+
71+
- name: Cache conda packages
72+
uses: actions/[email protected]
73+
env:
74+
CACHE_NUMBER: 1 # Increase to reset cache
75+
with:
76+
path: ${{ env.CONDA_PKGS_DIR }}
77+
key:
78+
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('**/meta.yaml') }}
79+
restore-keys: |
80+
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-
81+
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-
82+
83+
- name: Build conda package
84+
run: conda build --no-test --python ${{ matrix.python }} ${{ env.CHANNELS }} conda-recipe
85+
86+
- name: Upload artifact
87+
uses: actions/[email protected]
88+
with:
89+
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }}
90+
path: ${{ env.CONDA_BLD }}${{ env.PACKAGE_NAME }}-*.tar.bz2
91+
92+
test:
93+
name: Test ['${{ matrix.os }}', python='${{ matrix.python }}']
94+
95+
needs: build
96+
97+
runs-on: ${{ matrix.os }}
98+
99+
defaults:
100+
run:
101+
shell: ${{ matrix.os == 'windows-latest' && 'cmd /C CALL {0}' || 'bash -l {0}' }}
102+
# shell: bash -l {0}
103+
104+
strategy:
105+
fail-fast: false
106+
matrix:
107+
python: ['3.9', '3.10']
108+
os: [ubuntu-20.04, ubuntu-latest, windows-latest]
109+
experimental: [false]
110+
111+
continue-on-error: ${{ matrix.experimental }}
112+
113+
steps:
114+
- name: Setup miniconda
115+
uses: conda-incubator/[email protected]
116+
with:
117+
auto-update-conda: true
118+
python-version: ${{ matrix.python }}
119+
miniconda-version: 'latest'
120+
activate-environment: 'test'
121+
122+
- if: matrix.os != 'windows-latest'
123+
name: Store conda paths as envs on Linux
124+
run: |
125+
echo "channel-path=${{ github.workspace }}/channel/" >> $GITHUB_ENV
126+
echo "pkg-path-in-channel=${{ github.workspace }}/channel/linux-64/" >> $GITHUB_ENV
127+
echo "extracted-pkg-path=${{ github.workspace }}/pkg/" >> $GITHUB_ENV
128+
echo "ver-json-path=${{ github.workspace }}/version.json" >> $GITHUB_ENV
129+
130+
- if: matrix.os == 'windows-latest'
131+
name: Store conda paths as envs on Win
132+
shell: bash -l {0}
133+
run: |
134+
echo "channel-path=${{ github.workspace }}\\channel\\" >> $GITHUB_ENV
135+
echo "pkg-path-in-channel=${{ github.workspace }}\\channel\\win-64\\" >> $GITHUB_ENV
136+
echo "extracted-pkg-path=${{ github.workspace }}\\pkg\\" >> $GITHUB_ENV
137+
echo "ver-json-path=${{ github.workspace }}\\version.json" >> $GITHUB_ENV
138+
139+
- name: Download artifact
140+
uses: actions/[email protected]
141+
with:
142+
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }}
143+
path: ${{ env.pkg-path-in-channel }}
144+
145+
- name: Extract package archive
146+
shell: bash -l {0}
147+
run: |
148+
mkdir -p ${{ env.extracted-pkg-path }}
149+
tar -xvf ${{ env.pkg-path-in-channel }}${{ env.PACKAGE_NAME }}-*.tar.bz2 -C ${{ env.extracted-pkg-path }}
150+
151+
#
152+
#
153+
# @echo on
154+
# (echo CONDA_LIB_PATH=%CONDA_PREFIX%\Library\lib\) >> %GITHUB_ENV%
155+
# (echo CONDA_LIB_BIN_PATH=%CONDA_PREFIX%\Library\bin\) >> %GITHUB_ENV%
156+
157+
# Needed to be able to run conda index
158+
- name: Install conda-build
159+
run: conda install conda-build
160+
161+
- name: Create conda channel
162+
run: conda index ${{ env.channel-path }}
163+
164+
- name: Test conda channel
165+
run: |
166+
conda search ${{ env.PACKAGE_NAME }} -c ${{ env.channel-path }} --override-channels --info --json > ${{ env.ver-json-path }}
167+
cat ${{ env.ver-json-path }}
168+
169+
- name: Collect dependencies
170+
shell: bash -l {0}
171+
run: |
172+
export PACKAGE_VERSION=$(python -c "${{ env.VER_SCRIPT1 }} ${{ env.VER_SCRIPT2 }}")
173+
174+
echo PACKAGE_VERSION=${PACKAGE_VERSION}
175+
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_ENV
176+
177+
conda install ${{ env.PACKAGE_NAME }}=${PACKAGE_VERSION} python=${{ matrix.python }} ${{ env.TEST_CHANNELS }} --only-deps --dry-run > lockfile
178+
cat lockfile
179+
env:
180+
TEST_CHANNELS: '-c ${{ env.channel-path }} ${{ env.CHANNELS }}'
181+
182+
- name: Cache conda packages
183+
uses: actions/[email protected]
184+
env:
185+
CACHE_NUMBER: 1 # Increase to reset cache
186+
with:
187+
path: ${{ env.CONDA_PKGS_DIR }}
188+
key:
189+
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('lockfile') }}
190+
restore-keys: |
191+
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-
192+
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-
193+
194+
# - name: Install opencl_rt
195+
# run: conda install opencl_rt -c intel --override-channels
196+
197+
- name: Install dpbench
198+
run: conda install ${{ env.PACKAGE_NAME }}=${{ env.PACKAGE_VERSION }} pytest python=${{ matrix.python }} ${{ env.TEST_CHANNELS }}
199+
env:
200+
TEST_CHANNELS: '-c ${{ env.channel-path }} ${{ env.CHANNELS }}'
201+
202+
- name: List installed packages
203+
run: conda list
204+
205+
- name: Smoke test
206+
run: python -c "import dpnp, dpctl, dpbench; dpctl.lsplatform()"
207+
208+
- name: Run benchmakrs
209+
run: |
210+
dpbench -i numpy,numba_dpex_p,dpnp,numba_n,sycl run
211+
dpbench report
212+
213+
# test_windows:
214+
# name: Test ['windows-latest', python='${{ matrix.python }}']
215+
216+
# needs: build
217+
218+
# runs-on: windows-latest
219+
220+
# defaults:
221+
# run:
222+
# shell: cmd /C CALL {0}
223+
224+
# strategy:
225+
# matrix:
226+
# python: ['3.9', '3.10']
227+
# experimental: [false]
228+
229+
# continue-on-error: ${{ matrix.experimental }}
230+
231+
# env:
232+
# conda-pkgs: 'C:\Users\runneradmin\conda_pkgs_dir\'
233+
# channel-path: '${{ github.workspace }}\channel\'
234+
# pkg-path-in-channel: '${{ github.workspace }}\channel\win-64\'
235+
# extracted-pkg-path: '${{ github.workspace }}\pkg'
236+
# ver-json-path: '${{ github.workspace }}\version.json'
237+
# active-env-name: 'test'
238+
239+
# steps:
240+
# - name: Download artifact
241+
# uses: actions/[email protected]
242+
# with:
243+
# name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }}
244+
# path: ${{ env.pkg-path-in-channel }}
245+
246+
# - name: Extract package archive
247+
# run: |
248+
# @echo on
249+
# mkdir -p ${{ env.extracted-pkg-path }}
250+
251+
# set SEARCH_SCRIPT="DIR ${{ env.pkg-path-in-channel }} /s/b | FINDSTR /r "dpbench-.*\.tar\.bz2""
252+
# FOR /F "tokens=* USEBACKQ" %%F IN (`%SEARCH_SCRIPT%`) DO (
253+
# SET FULL_PACKAGE_PATH=%%F
254+
# )
255+
# echo FULL_PACKAGE_PATH: %FULL_PACKAGE_PATH%
256+
257+
# python -c "import shutil; shutil.unpack_archive(r\"%FULL_PACKAGE_PATH%\", extract_dir=r\"${{ env.extracted-pkg-path }}\")"
258+
# dir ${{ env.extracted-pkg-path }}
259+
260+
# - name: Setup miniconda
261+
# uses: conda-incubator/[email protected]
262+
# with:
263+
# auto-update-conda: true
264+
# python-version: ${{ matrix.python }}
265+
# miniconda-version: 'latest'
266+
# activate-environment: ${{ env.active-env-name }}
267+
268+
# - name: Store conda paths as envs
269+
# run: |
270+
# @echo on
271+
# (echo CONDA_LIB_PATH=%CONDA_PREFIX%\Library\lib\) >> %GITHUB_ENV%
272+
# (echo CONDA_LIB_BIN_PATH=%CONDA_PREFIX%\Library\bin\) >> %GITHUB_ENV%
273+
274+
# # Needed to be able to run conda index
275+
# - name: Install conda-build
276+
# run: conda install conda-build
277+
278+
# - name: Create conda channel
279+
# run: conda index ${{ env.channel-path }}
280+
281+
# - name: Test conda channel
282+
# run: |
283+
# @echo on
284+
# conda search ${{ env.PACKAGE_NAME }} -c ${{ env.channel-path }} --override-channels --info --json > ${{ env.ver-json-path }}
285+
286+
# - name: Dump version.json
287+
# run: more ${{ env.ver-json-path }}
288+
289+
# - name: Collect dependencies
290+
# run: |
291+
# @echo on
292+
# set "SCRIPT=${{ env.VER_SCRIPT1 }} ${{ env.VER_SCRIPT2 }}"
293+
# FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO (
294+
# SET PACKAGE_VERSION=%%F
295+
# )
296+
# echo PACKAGE_VERSION: %PACKAGE_VERSION%
297+
# (echo PACKAGE_VERSION=%PACKAGE_VERSION%) >> %GITHUB_ENV%
298+
299+
# conda install ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% python=${{ matrix.python }} ${{ env.TEST_CHANNELS }} --only-deps --dry-run > lockfile
300+
# env:
301+
# TEST_CHANNELS: '-c ${{ env.channel-path }} ${{ env.CHANNELS }}'
302+
303+
# - name: Dump lockfile
304+
# run: more lockfile
305+
306+
# - name: Cache conda packages
307+
# uses: actions/[email protected]
308+
# env:
309+
# CACHE_NUMBER: 1 # Increase to reset cache
310+
# with:
311+
# path: ${{ env.conda-pkgs }}
312+
# key:
313+
# ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('lockfile') }}
314+
# restore-keys: |
315+
# ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-
316+
# ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-
317+
318+
# - name: Install opencl_rt
319+
# run: conda install opencl_rt -c intel --override-channels
320+
321+
# - name: Install dpbench
322+
# run: |
323+
# @echo on
324+
# conda install ${{ env.PACKAGE_NAME }}=${{ env.PACKAGE_VERSION }} pytest python=${{ matrix.python }} ${{ env.TEST_CHANNELS }}
325+
# env:
326+
# TEST_CHANNELS: '-c ${{ env.channel-path }} ${{ env.CHANNELS }}'
327+
328+
# - name: List installed packages
329+
# run: conda list
330+
331+
# - name: Activate OCL CPU RT
332+
# shell: pwsh
333+
# run: |
334+
# $script_path="$env:CONDA_PREFIX\Scripts\set-intel-ocl-icd-registry.ps1"
335+
# &$script_path
336+
# # Check the variable assisting OpenCL CPU driver to find TBB DLLs which are not located where it expects them by default
337+
# $cl_cfg="$env:CONDA_PREFIX\Library\lib\cl.cfg"
338+
# Get-Content -Tail 5 -Path $cl_cfg
339+
340+
# - name: Smoke test
341+
# run: python -c "import dpnp, dpctl, dpbench; dpctl.lsplatform()"
342+
343+
# # TODO: run the whole scope once the issues on CPU are resolved
344+
# - name: Run benchmakrs
345+
# run: |
346+
# dpbench -i numpy,numba_dpex_p,dpnp,numba_n run
347+
348+
# upload:
349+
# name: Upload ['${{ matrix.os }}', python='${{ matrix.python }}']
350+
351+
# needs: [test_linux, test_windows]
352+
353+
# strategy:
354+
# matrix:
355+
# python: ['3.9', '3.10']
356+
# os: [ubuntu-20.04, windows-latest]
357+
358+
# runs-on: ${{ matrix.os }}
359+
360+
# defaults:
361+
# run:
362+
# shell: ${{ matrix.os == 'windows-latest' && 'cmd /C CALL {0}' || 'bash -l {0}' }}
363+
364+
# continue-on-error: false
365+
366+
# if: |
367+
# (github.repository == 'IntelPython/dpnp') &&
368+
# (github.ref == 'refs/heads/master' || (startsWith(github.ref, 'refs/heads/release') == true) || github.event_name == 'push' && contains(github.ref, 'refs/tags/'))
369+
370+
# steps:
371+
# - name: Download artifact
372+
# uses: actions/[email protected]
373+
# with:
374+
# name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }}
375+
376+
# - name: Setup miniconda
377+
# uses: conda-incubator/[email protected]
378+
# with:
379+
# auto-update-conda: true
380+
# python-version: ${{ matrix.python }}
381+
# miniconda-version: 'latest'
382+
# activate-environment: 'upload'
383+
384+
# - name: Install anaconda-client
385+
# run: conda install anaconda-client
386+
387+
# - name: Upload
388+
# run: anaconda --token ${{ env.ANACONDA_TOKEN }} upload --user dppy --label dev ${{ env.PACKAGE_NAME }}-*.tar.bz2
389+
# env:
390+
# ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }}

0 commit comments

Comments
 (0)