[CI, enhancement] add sklearnex CI job with nightly oneDAL DPCPP build in github actions #4
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
branches: [ "main" ] | |
push: | |
branches: | |
- main | |
env: | |
TBB_VERSION: 2021.13 | |
DPCPP_VERSION: 2024.2 | |
DPCTL_VERSION: 0.17.0 | |
DPNP_VERSION: 0.15.0 | |
jobs: | |
sklearn_lnx: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- PYTHON_VERSION: "3.9" | |
SKLEARN_VERSION: "1.1" | |
name: Linux-nightly/pip Python${{ matrix.PYTHON_VERSION }}_Sklearn${{ matrix.SKLEARN_VERSION }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.PYTHON_VERSION }} | |
- name: Get run ID of "oneDAL-nightly" workflow | |
id: get-run-id | |
run: | | |
OTHER_REPO="${{ github.repository }}" | |
WF_NAME="oneDAL-nightly" | |
RUN_ID=`gh run --repo ${OTHER_REPO} list --workflow "${WF_NAME}" --json databaseId --status completed --jq .[0].databaseId` | |
echo "Detected latest run id of ${RUN_ID} for workflow ${WF_NAME}" | |
echo "run-id=${RUN_ID}" >> "$GITHUB_OUTPUT" | |
env: | |
GH_TOKEN: ${{ github.token }} | |
- name: Download oneDAL build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: __release_lnx | |
github-token: ${{ github.token }} | |
repository: ${{ github.repository }} | |
run-id: ${{ steps.get-run-id.outputs.run-id }} | |
path: ./__release_lnx | |
- name: apt-get | |
run: sudo apt-get update && sudo apt-get install -y clang-format | |
- name: dpcpp installation | |
run: bash .ci/scripts/install_dpcpp.sh | |
- name: describe system | |
run: bash .ci/scripts/describe_system.sh | |
- name: Install develop requirements | |
run: | | |
python -m venv env2 | |
source ./env2/bin/activate | |
pip install -r dependencies-dev | |
pip list | |
echo "DPCPPROOT=/opt/intel/oneapi/compiler/latest" >> "$GITHUB_ENV" | |
echo "NO_DIST=1" >> "$GITHUB_ENV" | |
- name: Build daal4py/sklearnex | |
run: | | |
source ./env2/bin/activate | |
source .github/scripts/activate_components.sh | |
python setup.py install --single-version-externally-managed --record=record.txt | |
python setup_sklearnex.py install --single-version-externally-managed --record=record_sklearnex.txt | |
- name: Install testing requirements | |
run: | | |
source ./env2/bin/activate | |
source .github/scripts/activate_components.sh | |
bash .ci/scripts/setup_sklearn.sh ${{ matrix.SKLEARN_VERSION }} | |
pip install --upgrade -r requirements-test.txt | |
pip install $(python .ci/scripts/get_compatible_scipy_version.py) pyyaml | |
if [ $(echo ${{ matrix.PYTHON_VERSION }} | grep '3.9\|3.11') ]; then pip install dpctl==${{ env.DPCTL_VERSION }} dpnp==${{ env.DPNP_VERSION }}; fi | |
pip list | |
- name: Sklearnex testing | |
run: | | |
source env2/bin/activate | |
source .github/scripts/activate_components.sh | |
cd .ci | |
../conda-recipe/run_test.sh | |
- name: Sklearn testing | |
run: | | |
source env2/bin/activate | |
source .github/scripts/activate_components.sh | |
bash .ci/scripts/run_sklearn_tests.sh cpu | |
- name: Sklearn testing [preview] | |
run: | | |
source env2/bin/activate | |
source .github/scripts/activate_components.sh | |
export SKLEARNEX_PREVIEW='YES' | |
bash .ci/scripts/run_sklearn_tests.sh cpu | |
sklearn_win: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- PYTHON_VERSION: "3.9" | |
SKLEARN_VERSION: "1.1" | |
name: Windows-nightly/pip Python${{ matrix.PYTHON_VERSION }}_Sklearn${{ matrix.SKLEARN_VERSION }} | |
runs-on: windows-2022 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.PYTHON_VERSION }} | |
- name: Get run ID of "oneDAL-nightly" workflow | |
id: get-run-id | |
shell: bash | |
run: | | |
OTHER_REPO="${{ github.repository }}" | |
WF_NAME="oneDAL-nightly" | |
RUN_ID=`gh run --repo ${OTHER_REPO} list --workflow "${WF_NAME}" --json databaseId --status completed --jq .[0].databaseId` | |
echo "Detected latest run id of ${RUN_ID} for workflow ${WF_NAME}" | |
echo "run-id=${RUN_ID}" >> "$GITHUB_OUTPUT" | |
env: | |
GH_TOKEN: ${{ github.token }} | |
- name: Download oneDAL build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: __release_win | |
github-token: ${{ github.token }} | |
repository: ${{ github.repository }} | |
run-id: ${{ steps.get-run-id.outputs.run-id }} | |
path: .\__release_win | |
- name: Download DPCPP compiler artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: icx_compiler | |
github-token: ${{ github.token }} | |
repository: ${{ github.repository }} | |
run-id: ${{ steps.get-run-id.outputs.run-id }} | |
path: . | |
- name: Download Intel OpenCL CPU Runtime artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: opencl_rt_installer | |
github-token: ${{ github.token }} | |
repository: ${{ github.repository }} | |
run-id: ${{ steps.get-run-id.outputs.run-id }} | |
path: . | |
- name: Unzip Compiler | |
shell: cmd | |
run: | | |
tar -xvzf icx.zip | |
echo "Unzip complete" | |
- name: Install Intel OpenCL CPU Runtime | |
run: | | |
Start-Process msiexec -ArgumentList "/i opencl_rt.msi /qn" -Wait | |
echo "Installed Intel OpenCL CPU Runtime" | |
- name: Set Environment Variables | |
shell: bash | |
run: | | |
echo "C:\msys64\usr\bin;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\bin;" >> $GITHUB_PATH | |
# Disable SPMD testing | |
echo "NO_DIST=1" >> "$GITHUB_ENV" | |
- name: Install dependencies | |
shell: cmd | |
run: | | |
python -m venv env2 | |
call .\env2\Scripts\activate.bat | |
pip install --upgrade setuptools | |
pip install cpufeature clang-format pyyaml | |
pip install -r dependencies-dev | |
- name: System info | |
shell: cmd | |
run: | | |
call .\dpcpp\compiler\${{ env.DPCPP_VERSION }}\env\vars.bat | |
call .\dpcpp\compiler\${{ env.DPCPP_VERSION }}\bin\sycl-ls.exe | |
bash .ci/scripts/describe_system.sh | |
- name: Build daal4py/sklearnex | |
shell: cmd | |
run: | | |
call .\env2\Scripts\activate.bat | |
call .\.github\scripts\activate_components.bat ${{ env.DPCPP_VERSION }} ${{ env.TBB_VERSION }} | |
set PREFIX=. | |
set PYTHON=python | |
call .\conda-recipe\bld.bat | |
IF %ERRORLEVEL% neq 0 EXIT /b %ERRORLEVEL% | |
set CONDA_PREFIX=%DALROOT% | |
python setup_sklearnex.py install --single-version-externally-managed --record=record_sklearnex.txt | |
- name: Install testing requirements | |
shell: cmd | |
run: | | |
call .\env2\Scripts\activate.bat | |
call .\.github\scripts\activate_components.bat ${{ env.DPCPP_VERSION }} ${{ env.TBB_VERSION }} | |
bash .ci/scripts/setup_sklearn.sh ${{ matrix.SKLEARN_VERSION }} | |
pip install --upgrade -r requirements-test.txt | |
for /f "delims=" %%c in ('python .ci\scripts\get_compatible_scipy_version.py') do set SCIPY_VERSION=%%c | |
pip install %SCIPY_VERSION% | |
set DPCTL_SUPPORTED=3.9 3.11 | |
for %%i in (%DPCTL_SUPPORTED%) do if ${{ matrix.PYTHON_VERSION }}==%%i pip install dpctl==${{ env.DPCTL_VERSION }} dpnp==${{ env.DPNP_VERSION }} | |
pip list | |
- name: Sklearnex testing | |
shell: cmd | |
run: | | |
call .\env2\Scripts\activate.bat | |
call .\.github\scripts\activate_components.bat ${{ env.DPCPP_VERSION }} ${{ env.TBB_VERSION }} | |
set PYTHON=python | |
cd .. | |
call scikit-learn-intelex\conda-recipe\run_test.bat scikit-learn-intelex | |
- name: Sklearn testing | |
shell: cmd | |
run: | | |
call .\env2\Scripts\activate.bat | |
call .\.github\scripts\activate_components.bat ${{ env.DPCPP_VERSION }} ${{ env.TBB_VERSION }} | |
bash .ci/scripts/run_sklearn_tests.sh | |
- name: Sklearn testing [preview] | |
shell: cmd | |
run: | | |
call .\env2\Scripts\activate.bat | |
call .\.github\scripts\activate_components.bat ${{ env.DPCPP_VERSION }} ${{ env.TBB_VERSION }} | |
set SKLEARNEX_PREVIEW=YES | |
bash .ci/scripts/run_sklearn_tests.sh |