Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,9 @@ b37657e6ad9af16eaec2982d8e2397acd2af2881

# Add cython-lint to pre-commit config
0ce1aef210ffb88b7d2ea3a89e861486498f652f

# Add new linters and rules to pre-commit
5cf074899f226726d07026db9899bb7632d8c1de

# Transition from clang-format 18 to clang-format 22
759dcdc80d0d99790205e87bdd7c5d4f2e93a1ff
208 changes: 101 additions & 107 deletions .github/workflows/conda-package.yml

Large diffs are not rendered by default.

24 changes: 13 additions & 11 deletions .github/workflows/generate-coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ jobs:

- name: Add Intel repository
run: |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
cat GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
wget -qO- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
| gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" \
| sudo tee /etc/apt/sources.list.d/oneAPI.list
sudo apt update

- name: Install latest Intel OneAPI
Expand Down Expand Up @@ -111,15 +111,17 @@ jobs:
shell: bash -l {0}
run: |
echo "Processing c-api-coverage"
export DPCTL_LCOV_FN=$(find _skbuild -name dpctl.lcov)
grep "/tmp" $DPCTL_LCOV_FN
DPCTL_LCOV_FN=$(find _skbuild -name dpctl.lcov)
export DPCTL_LCOV_FN
grep "/tmp" "$DPCTL_LCOV_FN"
coveralls-lcov -v -n \
$DPCTL_LCOV_FN > dpctl-c-api-coverage.json
"$DPCTL_LCOV_FN" > dpctl-c-api-coverage.json
echo "Processing pytest-coverage"
export DPCTL_PYTEST_LCOV=$(find . -name dpctl_pytest.lcov)
grep "/tmp" $DPCTL_PYTEST_LCOV
DPCTL_PYTEST_LCOV=$(find . -name dpctl_pytest.lcov)
export DPCTL_PYTEST_LCOV
grep "/tmp" "$DPCTL_PYTEST_LCOV"
coveralls-lcov -v -n \
$DPCTL_PYTEST_LCOV > pytest-dpctl-c-api-coverage.json
"$DPCTL_PYTEST_LCOV" > pytest-dpctl-c-api-coverage.json
echo "Merging JSON files"
python -c "import json; \
fh1 = open('dpctl-c-api-coverage.json', 'r'); \
Expand All @@ -132,7 +134,7 @@ jobs:
# merge combined file with coverage data and upload
ls -lh dpctl-c-api-coverage.json pytest-dpctl-c-api-coverage.json \
combined-dpctl-c-api-coverage.json \
$(find _skbuild -name dpctl.lcov) $(find . -name dpctl_pytest.lcov)
"$DPCTL_LCOV_FN" "$DPCTL_PYTEST_LCOV"
echo "Merging combined files with coverage data"
coveralls --service=github --merge=combined-dpctl-c-api-coverage.json
env:
Expand Down
26 changes: 13 additions & 13 deletions .github/workflows/generate-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ jobs:
- name: Add Intel repository
if: ${{ !github.event.pull_request || github.event.action != 'closed' }}
run: |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
cat GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
wget -qO- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
| gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" \
| sudo tee /etc/apt/sources.list.d/oneAPI.list
sudo apt update
- name: Install Intel OneAPI
if: ${{ !github.event.pull_request || github.event.action != 'closed' }}
Expand Down Expand Up @@ -75,7 +75,7 @@ jobs:
source /opt/intel/oneapi/setvars.sh
wget https://github.com/vovkos/doxyrest/releases/download/doxyrest-2.1.2/doxyrest-2.1.2-linux-amd64.tar.xz
tar xf doxyrest-2.1.2-linux-amd64.tar.xz
python scripts/gen_docs.py --doxyrest-root=`pwd`/doxyrest-2.1.2-linux-amd64 --verbose --multiversion --clean || exit 1
python scripts/gen_docs.py --doxyrest-root="$(pwd)/doxyrest-2.1.2-linux-amd64" --verbose --multiversion --clean || exit 1
python -c "import dpctl; print(dpctl.__version__)" || exit 1
mv "$(find _skbuild -type d -path "*/cmake-install/docs/docs" | head -n 1)" ~/docs
git clean -dfx
Expand All @@ -87,9 +87,9 @@ jobs:
git remote add tokened_docs https://IntelPython:${{ secrets.GITHUB_TOKEN }}@github.com/IntelPython/dpctl.git
git fetch tokened_docs
git checkout --track tokened_docs/gh-pages
echo `pwd`
pwd
cd master
git rm -rf *
git rm -rf ./*
mv ~/docs/* . || exit 1
git add .
git config --global user.name 'github-actions[doc-deploy-bot]'
Expand All @@ -112,10 +112,10 @@ jobs:
git remote add tokened_docs https://IntelPython:${{ secrets.GITHUB_TOKEN }}@github.com/IntelPython/dpctl.git
git fetch tokened_docs
git checkout --track tokened_docs/gh-pages
echo `pwd`
[ -d pulls/${PR_NUM} ] && git rm -rf pulls/${PR_NUM}
mkdir -p pulls/${PR_NUM}
cd pulls/${PR_NUM}
pwd
[ -d "pulls/${PR_NUM}" ] && git rm -rf "pulls/${PR_NUM}"
mkdir -p "pulls/${PR_NUM}"
cd "pulls/${PR_NUM}"
mv ~/docs/* .
git add .
git config --global user.name 'github-actions[doc-deploy-bot]'
Expand All @@ -131,10 +131,10 @@ jobs:
git remote add tokened_docs https://IntelPython:${{ secrets.GITHUB_TOKEN }}@github.com/IntelPython/dpctl.git
git fetch tokened_docs
git checkout --track tokened_docs/gh-pages
echo `pwd`
pwd
ls
[ -d pulls ] && ls pulls && echo "This is pull/${PR_NUM}"
[ -d pulls/${PR_NUM} ] && git rm -rf pulls/${PR_NUM}
[ -d "pulls/${PR_NUM}" ] && git rm -rf "pulls/${PR_NUM}"
git config --global user.name 'github-actions[doc-deploy-bot]'
git config --global user.email 'github-actions[doc-deploy-bot]@users.noreply.github.com'
git commit -m "Removing docs for closed pull request ${PR_NUM}"
Expand Down
45 changes: 28 additions & 17 deletions .github/workflows/os-llvm-sycl-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,28 +59,35 @@ jobs:
cd sycl_bundle
if [[ "${USE_LATEST_SYCLOS:-0}" -eq "1" ]]; then
# get list of shas and tags from remote, filter nightly tags and reverse order
export LLVM_TAGS=$(git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://github.com/intel/llvm.git | \
LLVM_TAGS=$(git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://github.com/intel/llvm.git | \
grep 'refs/tags/nightly-' | awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }')
export LLVM_TAGS
# initialize
unset DEPLOY_NIGHTLY_TAG
unset DEPLOY_NIGHTLY_TAG_SHA

# go through tags and find the most recent one where nighly build binary is available
while IFS= read -r NEXT_LLVM_TAG; do
export NEXT_LLVM_TAG_SHA=$(echo ${NEXT_LLVM_TAG} | awk '{print $1}')
export NEXT_NIGHTLY_TAG=$(python3 -c "import sys, urllib.parse as ul; print (ul.quote_plus(sys.argv[1]))" \
$(echo ${NEXT_LLVM_TAG} | awk '{gsub(/^refs\/tags\//, "", $2)} {print $2}'))
if [[ `wget -S --spider ${DOWNLOAD_URL_PREFIX}/${NEXT_NIGHTLY_TAG}/${ARTIFACT_NAME}.tar.gz 2>&1 | grep 'HTTP/1.1 200 OK'` ]];
NEXT_LLVM_TAG_SHA=$(echo "${NEXT_LLVM_TAG}" | awk '{print $1}')
export NEXT_LLVM_TAG_SHA
NEXT_NIGHTLY_TAG=$(python3 -c "import sys, urllib.parse as ul; print(ul.quote_plus(sys.argv[1]))" \
"$(echo "${NEXT_LLVM_TAG}" | awk '{gsub(/^refs\/tags\//, "", $2)} {print $2}')")
export NEXT_NIGHTLY_TAG
if wget -S --spider "${DOWNLOAD_URL_PREFIX}/${NEXT_NIGHTLY_TAG}/${ARTIFACT_NAME}.tar.gz" 2>&1 | grep -q 'HTTP/1.1 200 OK';
then
export DEPLOY_NIGHTLY_TAG=${NEXT_NIGHTLY_TAG}
export DEPLOY_LLVM_TAG_SHA=${NEXT_LLVM_TAG_SHA}
DEPLOY_NIGHTLY_TAG="${NEXT_NIGHTLY_TAG}"
export DEPLOY_NIGHTLY_TAG
DEPLOY_LLVM_TAG_SHA="${NEXT_LLVM_TAG_SHA}"
export DEPLOY_LLVM_TAG_SHA
break
fi
done <<< "${LLVM_TAGS}"
else
# Use latest known to work tag instead
export DEPLOY_NIGHTLY_TAG="sycl-nightly%2F20230606"
export DEPLOY_LLVM_TAG_SHA=f44d0133d4b0077298f034697a1f3818ff1d6134
DEPLOY_NIGHTLY_TAG="sycl-nightly%2F20230606"
export DEPLOY_NIGHTLY_TAG
DEPLOY_LLVM_TAG_SHA=f44d0133d4b0077298f034697a1f3818ff1d6134
export DEPLOY_LLVM_TAG_SHA
fi

[[ -n "${DEPLOY_NIGHTLY_TAG}" ]] || exit 1
Expand All @@ -90,16 +97,20 @@ jobs:
if [[ -f bundle_id.txt && ( "$(cat bundle_id.txt)" == "${DEPLOY_LLVM_TAG_SHA}" ) ]]; then
echo "Using cached download of ${DEPLOY_LLVM_TAG_SHA}"
else
rm -rf ${ARTIFACT_NAME}.tar.gz
wget ${DOWNLOAD_URL_PREFIX}/${DEPLOY_NIGHTLY_TAG}/${ARTIFACT_NAME}.tar.gz && echo ${DEPLOY_LLVM_TAG_SHA} > bundle_id.txt || rm -rf bundle_id.txt
[ -f ${OCLCPUEXP_FN} ] || wget ${DOWNLOAD_URL_PREFIX}/${DRIVER_PATH}/${OCLCPUEXP_FN} || rm -rf bundle_id.txt
[ -f ${TBB_FN} ] || wget ${TBB_URL}/${TBB_FN} || rm -rf bundle_id.txt
rm -rf "${ARTIFACT_NAME}.tar.gz"
if wget "${DOWNLOAD_URL_PREFIX}/${DEPLOY_NIGHTLY_TAG}/${ARTIFACT_NAME}.tar.gz"; then
echo "${DEPLOY_LLVM_TAG_SHA}" > bundle_id.txt
else
rm -rf bundle_id.txt
fi
[ -f "${OCLCPUEXP_FN}" ] || wget "${DOWNLOAD_URL_PREFIX}/${DRIVER_PATH}/${OCLCPUEXP_FN}" || rm -rf bundle_id.txt
[ -f "${TBB_FN}" ] || wget "${TBB_URL}/${TBB_FN}" || rm -rf bundle_id.txt
rm -rf dpcpp_compiler
mkdir -p dpcpp_compiler
tar xf ${ARTIFACT_NAME}.tar.gz -C dpcpp_compiler
tar xf "${ARTIFACT_NAME}.tar.gz" -C dpcpp_compiler
mkdir -p oclcpuexp
[ -d oclcpuexp/x64 ] || tar xf ${OCLCPUEXP_FN} -C oclcpuexp
[ -d ${TBB_INSTALL_DIR}/lib ] || tar xf ${TBB_FN}
[ -d oclcpuexp/x64 ] || tar xf "${OCLCPUEXP_FN}" -C oclcpuexp
[ -d "${TBB_INSTALL_DIR}/lib" ] || tar xf "${TBB_FN}"
cp oclcpuexp/x64/libOpenCL.so* dpcpp_compiler/lib/
fi

Expand Down Expand Up @@ -152,7 +163,7 @@ jobs:
run: |
source set_allvars.sh
python scripts/build_locally.py --c-compiler=clang --cxx-compiler=clang++ \
--compiler-root=${SYCL_BUNDLE_FOLDER}/dpcpp_compiler/bin || exit 1
--compiler-root="${SYCL_BUNDLE_FOLDER}/dpcpp_compiler/bin" || exit 1

- name: Run lsplatforms
shell: bash -l {0}
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,20 @@ permissions: read-all

jobs:
pre-commit:
name: pre-commit

runs-on: ubuntu-24.04
timeout-minutes: 30

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.12'
python-version: '3.14'
- name: Install from PyPI
shell: bash -l {0}
run: |
pip install codespell pylint
- name: Version of clang-format
run: |
clang-format --version
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/run-tests-from-dppy-bits.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,39 +35,39 @@ jobs:
steps:
- name: Construct channels line
run: |
echo "CHANNELS=-c ${{ env.INTEL_CHANNEL }} -c conda-forge --override-channels" >> $GITHUB_ENV
echo "CHANNELS=-c ${{ env.INTEL_CHANNEL }} -c conda-forge --override-channels" >> "$GITHUB_ENV"

- name: Display channels line
run: |
echo ${{ env.CHANNELS }}
echo "${{ env.CHANNELS }}"

- name: Set pkgs_dirs
run: |
echo "pkgs_dirs: [~/.conda/pkgs]" >> ~/.condarc

- name: Install dpctl
run: |
conda create -n ${{ env.TEST_ENV_NAME }} -c dppy/label/dev ${{ env.CHANNELS }} dpctl pytest pytest-cov cython setuptools c-compiler cxx-compiler
conda create -n "${{ env.TEST_ENV_NAME }}" -c dppy/label/dev "${{ env.CHANNELS }}" dpctl pytest pytest-cov cython setuptools c-compiler cxx-compiler

- name: Smoke test
run: |
. $CONDA/etc/profile.d/conda.sh
conda activate ${{ env.TEST_ENV_NAME }}
. "$CONDA/etc/profile.d/conda.sh"
conda activate "${{ env.TEST_ENV_NAME }}"
python -m dpctl -f

- name: Create test temp dir
# create temporary empty folder to runs tests from
# https://github.com/pytest-dev/pytest/issues/11904
run: mkdir -p ${GITHUB_WORKSPACE}/test_tmp
run: mkdir -p "${GITHUB_WORKSPACE}/test_tmp"

- name: Run tests
working-directory: ${{ github.workspace }}/test_tmp
env:
SYCL_CACHE_PERSISTENT: 1
run: |
. $CONDA/etc/profile.d/conda.sh
conda activate ${{ env.TEST_ENV_NAME }}
python -m pytest -v --pyargs $MODULE_NAME
. "$CONDA/etc/profile.d/conda.sh"
conda activate "${{ env.TEST_ENV_NAME }}"
python -m pytest -v --pyargs "${{ env.MODULE_NAME }}"


test_windows:
Expand All @@ -94,7 +94,7 @@ jobs:

- name: Display channels line
run: |
echo ${{ env.CHANNELS }}
echo "${{ env.CHANNELS }}"

- uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
Expand Down
59 changes: 57 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
exclude: "docs/_legacy/"
repos:
- repo: https://github.com/PyCQA/bandit
rev: '1.9.4'
Expand All @@ -10,8 +11,46 @@ repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
# Git
- id: check-added-large-files
- id: no-commit-to-branch
name: "ensure no direct commit to master/maintenance branches"
args: [--branch, "master", --pattern, "maintenance/.*"]
- id: check-case-conflict
- id: check-illegal-windows-names
- id: check-ast
- id: check-builtin-literals
- id: check-case-conflict
- id: check-executables-have-shebangs
- id: check-merge-conflict
- id: check-toml
- id: debug-statements
- id: destroyed-symlinks
- id: end-of-file-fixer
- id: fix-byte-order-marker
- id: mixed-line-ending
- id: trailing-whitespace
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.10.0
hooks:
- id: python-check-blanket-noqa
- id: python-check-blanket-type-ignore
- id: python-check-mock-methods
- id: python-no-eval
- id: python-no-log-warn
- id: python-use-type-annotations
- id: rst-backticks
- id: rst-directive-colons
- id: rst-inline-touching-normal
- id: text-unicode-replacement-char
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
- id: codespell
args: ["-L", "ba,som,xWindows"] # ignore some variable names
additional_dependencies:
- tomli
exclude: "docs/doxyrest-config.lua.in"
- repo: https://github.com/psf/black
rev: 26.3.1
hooks:
Expand All @@ -32,8 +71,8 @@ repos:
rev: 7.3.0
hooks:
- id: flake8
- repo: https://github.com/pocc/pre-commit-hooks
rev: v1.3.5
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v22.1.3
hooks:
- id: clang-format
args: ["-i"]
Expand All @@ -47,3 +86,19 @@ repos:
hooks:
- id: cython-lint
- id: double-quote-cython-strings

- repo: https://github.com/jumanjihouse/pre-commit-hooks
rev: 3.0.0
hooks:
- id: shellcheck

- repo: https://github.com/gitleaks/gitleaks
rev: v8.30.0
hooks:
- id: gitleaks

- repo: https://github.com/rhysd/actionlint
rev: v1.7.11
hooks:
- id: actionlint
args: ["-ignore", "SC2317"]
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ To get the library from the latest oneAPI release, follow the
instructions from Intel(R) [oneAPI installation
guide](https://www.intel.com/content/www/us/en/developer/articles/guide/installation-guide-for-oneapi-toolkits.html).

> **NOTE:** You need to install the Intel(R) oneAPI AI Analytics Tookit to get
> **NOTE:** You need to install the Intel(R) oneAPI AI Analytics Toolkit to get
>IDP and `dpctl`.


Expand Down
4 changes: 2 additions & 2 deletions cmake/IntelSYCLConfig.cmake
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
IntelSYCLConfig
-------

Library to verify SYCL compatability of CMAKE_CXX_COMPILER
Library to verify SYCL compatibility of CMAKE_CXX_COMPILER
and passes relevant compiler flags.

Result Variables
Expand Down Expand Up @@ -290,7 +290,7 @@ if(nosycllang)
set(IntelSYCL_NOT_FOUND_MESSAGE "${SYCL_REASON_FAILURE}")
endif()

# Placeholder for identifying various implemenations of SYCL compilers.
# Placeholder for identifying various implementations of SYCL compilers.
# for now, set to the CMAKE_CXX_COMPILER_ID
set(SYCL_IMPLEMENTATION_ID "${CMAKE_CXX_COMPILER_ID}")

Expand Down
Loading
Loading