Support dpnp in virtual environment on Windows out of the box (#2242) #23
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: Test oneMKL interfaces | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
permissions: read-all | |
env: | |
CHANNELS: '-c dppy/label/dev -c https://software.repos.intel.com/python/conda/ -c conda-forge --override-channels' | |
TEST_ENV_NAME: 'test_onemkl_interfaces' | |
RERUN_TESTS_ON_FAILURE: 'true' | |
RUN_TESTS_MAX_ATTEMPTS: 2 | |
BUILD_DEP_PKGS: >- | |
mkl-devel-dpcpp | |
tbb-devel | |
dpctl | |
onedpl-devel | |
setuptools | |
python | |
numpy">=2.0" | |
cython | |
cmake | |
ninja | |
scikit-build | |
jobs: | |
test_by_tag: | |
name: Run on ['${{ matrix.os }}', python='${{ matrix.python }}'] with oneMKL tag | |
strategy: | |
matrix: | |
python: ['3.12'] | |
os: [ubuntu-22.04] # windows-2019 - no DFT support for Windows in oneMKL | |
permissions: | |
# Needed to cancel any previous runs that are not completed for a given workflow | |
actions: write | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: ${{ matrix.os == 'windows-2019' && 'cmd /C CALL {0}' || 'bash -el {0}' }} | |
continue-on-error: false | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout DPNP repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Setup miniconda | |
uses: conda-incubator/setup-miniconda@d2e6a045a86077fb6cad6f5adf368e9076ddaa8d # v3.1.0 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
channels: conda-forge | |
conda-remove-defaults: 'true' | |
python-version: ${{ matrix.python }} | |
activate-environment: ${{ env.TEST_ENV_NAME }} | |
# Sometimes `mamba install ...` fails due to slow download speed rate, so disable the check in mamba | |
- name: Disable speed limit check in mamba | |
run: echo "MAMBA_NO_LOW_SPEED_LIMIT=1" >> $GITHUB_ENV | |
- name: Install dpnp build dependencies | |
run: | | |
mamba install ${{ env.DPCPP_PKG }} ${{ env.BUILD_DEP_PKGS }} ${{ env.CHANNELS }} | |
env: | |
DPCPP_PKG: ${{ matrix.os == 'windows-2019' && 'dpcpp_win-64 vs_win-64=2017.9' || 'dpcpp_linux-64' }} | |
- name: Conda info | |
run: | | |
mamba info | |
mamba list | |
- name: Build and install DPNP package | |
run: | | |
python scripts/build_locally.py --onemkl-interfaces --verbose | |
- name: Smoke test | |
run: | | |
python -m dpctl -f | |
python -c "import dpnp; print(dpnp.__version__)" | |
- name: Install pytest | |
run: | | |
mamba install pytest ${{ env.CHANNELS }} | |
- name: Run tests | |
if: env.RERUN_TESTS_ON_FAILURE != 'true' | |
run: | | |
python -m pytest -ra --pyargs dpnp.tests | |
env: | |
SYCL_CACHE_PERSISTENT: 1 | |
- name: ReRun tests on Linux | |
if: env.RERUN_TESTS_ON_FAILURE == 'true' | |
id: run_tests | |
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0 | |
with: | |
timeout_minutes: 10 | |
max_attempts: ${{ env.RUN_TESTS_MAX_ATTEMPTS }} | |
retry_on: any | |
command: | | |
. $CONDA/etc/profile.d/conda.sh | |
. $CONDA/etc/profile.d/mamba.sh | |
mamba activate ${{ env.TEST_ENV_NAME }} | |
python -m pytest -ra --pyargs dpnp.tests | |
env: | |
SYCL_CACHE_PERSISTENT: 1 | |
test_by_branch: | |
name: Run on ['${{ matrix.os }}', python='${{ matrix.python }}'] with oneMKL develop branch | |
strategy: | |
matrix: | |
python: ['3.12'] | |
os: [ubuntu-22.04] # windows-2019 - no DFT support for Windows in oneMKL | |
permissions: | |
# Needed to cancel any previous runs that are not completed for a given workflow | |
actions: write | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: ${{ matrix.os == 'windows-2019' && 'cmd /C CALL {0}' || 'bash -el {0}' }} | |
continue-on-error: true | |
env: | |
onemkl-source-dir: '${{ github.workspace }}/onemkl/' | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout DPNP repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Checkout oneMKL repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
repository: 'oneapi-src/oneMKL' | |
ref: 'develop' | |
path: ${{ env.onemkl-source-dir }} | |
fetch-depth: 0 | |
- name: oneMKL ls info | |
run: | | |
ls -la ${{ env.onemkl-source-dir }} | |
- name: Setup miniconda | |
uses: conda-incubator/setup-miniconda@d2e6a045a86077fb6cad6f5adf368e9076ddaa8d # v3.1.0 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
channels: conda-forge | |
conda-remove-defaults: 'true' | |
python-version: ${{ matrix.python }} | |
activate-environment: ${{ env.TEST_ENV_NAME }} | |
# Sometimes `mamba install ...` fails due to slow download speed rate, so disable the check in mamba | |
- name: Disable speed limit check in mamba | |
run: echo "MAMBA_NO_LOW_SPEED_LIMIT=1" >> $GITHUB_ENV | |
- name: Install dpnp build dependencies | |
run: | | |
mamba install ${{ env.DPCPP_PKG }} ${{ env.BUILD_DEP_PKGS }} ${{ env.CHANNELS }} | |
env: | |
DPCPP_PKG: ${{ matrix.os == 'windows-2019' && 'dpcpp_win-64 vs_win-64=2017.9' || 'dpcpp_linux-64' }} | |
- name: Conda info | |
run: | | |
mamba info | |
mamba list | |
- name: Build and install DPNP package | |
run: | | |
python scripts/build_locally.py --onemkl-interfaces --onemkl-interfaces-dir=${{ env.onemkl-source-dir }} --verbose | |
- name: Smoke test | |
run: | | |
python -m dpctl -f | |
python -c "import dpnp; print(dpnp.__version__)" | |
- name: Install pytest | |
run: | | |
mamba install pytest ${{ env.CHANNELS }} | |
- name: Run tests | |
if: env.RERUN_TESTS_ON_FAILURE != 'true' | |
run: | | |
python -m pytest -ra --pyargs dpnp.tests | |
env: | |
SYCL_CACHE_PERSISTENT: 1 | |
- name: ReRun tests on Linux | |
if: env.RERUN_TESTS_ON_FAILURE == 'true' | |
id: run_tests | |
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0 | |
with: | |
timeout_minutes: 10 | |
max_attempts: ${{ env.RUN_TESTS_MAX_ATTEMPTS }} | |
retry_on: any | |
command: | | |
. $CONDA/etc/profile.d/conda.sh | |
. $CONDA/etc/profile.d/mamba.sh | |
mamba activate ${{ env.TEST_ENV_NAME }} | |
python -m pytest -ra --pyargs dpnp.tests | |
env: | |
SYCL_CACHE_PERSISTENT: 1 |