Skip to content

Changes to private array declarations to use new API in dpex #1503

Changes to private array declarations to use new API in dpex

Changes to private array declarations to use new API in dpex #1503

Workflow file for this run

# SPDX-FileCopyrightText: 2022 - 2023 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
name: build and run
# Declare default permissions as read only.
permissions: read-all
on:
pull_request:
env:
# sycl is not included. Add it manually if you need
WORKLOADS: python,numpy,dpnp,numba_n,numba_np,numba_npr,numba_dpex_k,numba_dpex_n,numba_dpex_p
PYTHONIOENCODING: 'utf-8'
jobs:
build:
name: Build and run
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "windows-latest"]
python: ["3.9", "3.10", "3.11"]
sycl: ["sycl","no-sycl"]
install: ["pip", "setup.py"]
precision: ["single", "double"]
exclude:
# setuptools<64 + scikit-build produce 'UNKOWN' package name for
# python 3.11. Could not find exact reference for that issue.
# latest setuptools is unable to create editable environment for pip
- python: "3.11"
install: "pip"
sycl: "sycl"
include:
- sycl: sycl
os: ubuntu-latest
cc: icx
cxx: icpx
environment: conda-linux-sycl.yml
- sycl: sycl
os: windows-latest
cc: icx
cxx: icx
environment: conda-win-sycl.yml
- sycl: no-sycl
environment: conda.yml
runs-on: ${{matrix.os}}
defaults:
run:
shell: ${{ matrix.os == 'windows-latest' && 'cmd /U /C CALL {0}' || 'bash -el {0}' }}
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}
- name: Checkout dpbench
uses: actions/checkout@v3
with:
fetch-depth: 0
# intel:numpy for python 3.11 is not upstreamed yet
- name: Patch numpy dependency for Python 3.11
if: matrix.python == '3.11'
shell: bash -l {0}
run: |
find ./environments -type f | xargs sed -i 's/intel::numpy/numpy/'
find ./environments -type f | xargs sed -i 's/setuptools>=42,<64/setuptools/'
- name: Setup miniconda
uses: conda-incubator/setup-miniconda@v2
with:
python-version: ${{ matrix.python }}
miniforge-variant: Mambaforge
miniforge-version: latest
activate-environment: "build"
channel-priority: "disabled"
environment-file: environments/${{ matrix.environment }}
run-post: false
- name: Conda info
run: |
conda info
conda list
- name: Patch IntelLLVM cmake
if: runner.os == 'Windows' && matrix.sycl == 'sycl'
shell: pwsh
run: |
$env:PATCHED_CMAKE_VERSION="3.26"
$env:PLATFORM_DIR="${env:CONDA_PREFIX}\Library\share\cmake-${env:PATCHED_CMAKE_VERSION}\Modules\Platform"
$env:FN="Windows-IntelLLVM.cmake"
Copy-Item ".github\workflows\Windows-IntelLLVM_${env:PATCHED_CMAKE_VERSION}.cmake" "${env:PLATFORM_DIR}\${env:FN}"
# TODO: remove it once it is removed from hard dependency. Not presented
# in conda-forge version, but there are some blockers before we could use
# it.
- name: Remove vs env
if: runner.os == 'Windows' && matrix.sycl == 'sycl'
run: |
conda remove --force vs2017_win-64
# Github pre-installed versions:
# https://github.com/actions/runner-images/blob/main/images/win/Windows2022-Readme.md
# Intel's compatible versions:
# https://www.intel.com/content/www/us/en/developer/articles/reference-implementation/intel-compilers-compatibility-with-microsoft-visual-studio-and-xcode.html
# TODO: do we want to enforce installing version that we want?
# Is it as easy as `choco install msvc==14.35`?
- name: Configure MSBuild
if: runner.os == 'Windows' && matrix.sycl == 'sycl'
# TODO: uses: microsoft/setup-msbuild ?
uses: ilammy/msvc-dev-cmd@v1
with:
toolset: 14.2
- name: Configure Sycl
if: matrix.sycl == 'sycl'
shell: bash -el {0}
run: |
sycl-ls
echo "CC=${{matrix.cc}}" >> "$GITHUB_ENV"
echo "CXX=${{matrix.cxx}}" >> "$GITHUB_ENV"
echo "DPBENCH_SYCL=1" >> "$GITHUB_ENV"
echo "WORKLOADS=$WORKLOADS,sycl" >> "$GITHUB_ENV"
- name: Configure compiler
shell: bash -el {0}
run: |
echo "CMAKE_GENERATOR=Ninja" >> "$GITHUB_ENV"
- name: Configure OneAPI
run: |
echo "ONEAPI_DEVICE_SELECTOR=opencl:cpu" >> "$GITHUB_ENV"
- name: Populate conda environment paths
shell: pwsh
if: runner.os == 'Windows'
run: |
echo "LIB=$env:CONDA_PREFIX\Library\lib;$env:CONDA_PREFIX\compiler\lib;$env:LIB" >> $env:GITHUB_ENV
echo "INCLUDE=$env:CONDA_PREFIX\include;$env:INCLUDE" >> $env:GITHUB_ENV
- name: Build dpbench
if: matrix.install == 'pip'
run: pip install --no-index --no-deps --no-build-isolation -e . -v
- name: Build dpbench
if: matrix.install == 'setup.py'
run: python setup.py develop
- name: Configure dpbench
shell: bash -el {0}
run: |
# Turn off numba-dpex autofall back
echo "NUMBA_DPEX_FALLBACK_ON_CPU=0" >> "GITHUB_ENV"
- name: Setup OpenCL CPU device
if: runner.os == 'Windows'
shell: pwsh
run: |
$script_path="$env:CONDA_PREFIX\Scripts\set-intel-ocl-icd-registry.ps1"
&$script_path
echo "OCL_ICD_FILENAMES=$env:CONDA_PREFIX\Library\lib\intelocl64.dll" >> $env:GITHUB_ENV
- name: Run benchmarks
run: dpbench -i ${{env.WORKLOADS}} run -r2 --no-print-results --precision=${{matrix.precision}} || exit 1
# TODO: Re-enable rodinia benchmarks in CI once workloads have been changed to new numba-dpex API
# - name: Run rodinia benchmarks
# run: dpbench -i ${{env.WORKLOADS}} --last-run run -r2 --no-print-results --rodinia --no-dpbench --precision=${{matrix.precision}} || exit 1
- name: Generate report
run: dpbench -i ${{env.WORKLOADS}} report || exit 1