Skip to content

Commit 74ab8f3

Browse files
Merge branch 'master' into convolve
2 parents 21197ee + 04bfac7 commit 74ab8f3

17 files changed

+870
-862
lines changed

.github/workflows/build-sphinx.yml

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,26 @@ jobs:
135135
environment-file: ${{ env.environment-file }}
136136
activate-environment: 'docs'
137137

138-
- name: Conda info
139-
run: mamba info
138+
# We can't install dpctl as a conda package when the environment is created through
139+
# installing of Intel OneAPI packages because the dpctl conda package has a runtime
140+
# dependency on DPC++ RT one. Whereas the DPC++ RT package has been already installed
141+
# by the apt command above and its version has been matched with the DPC++ compiler.
142+
# In case where we install the DPC++ compiler with the apt (including DPC++ RT) and
143+
# install the DPC++ RT conda package while resolving dependencies, this can lead
144+
# to a versioning error, i.e. compatibility issue as the DPC++ compiler only guarantees
145+
# backwards compatibility, not forward compatibility (DPC++ RT may not run a binary built
146+
# with a newer version of the DPC++ compiler).
147+
# Installing dpctl via the pip manager has no such limitation, as the package has no
148+
# run dependency on the DPC++ RT pip package, so this is why the step is necessary here.
149+
- name: Install dpctl
150+
if: env.oneapi-pkgs-env == ''
151+
run: |
152+
pip install -i https://pypi.anaconda.org/dppy/label/dev/simple dpctl==0.20.0dev0
140153
141-
- name: Conda list
142-
run: mamba list
154+
- name: Conda info
155+
run: |
156+
mamba info
157+
mamba list
143158
144159
- name: Build library
145160
run: |

.github/workflows/check-mkl-interfaces.yaml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ env:
1313
environment-file-name: 'environment.yml'
1414
environment-file-loc: '${{ github.workspace }}/environments'
1515
build-with-oneapi-env: 'environments/build_with_oneapi.yml'
16+
dpctl-pkg-env: 'environments/dpctl_pkg.yml'
1617
oneapi-pkgs-env: 'environments/oneapi_pkgs.yml'
1718
test-env-name: 'test_onemkl_interfaces'
1819
rerun-tests-on-failure: 'true'
@@ -47,10 +48,11 @@ jobs:
4748

4849
- name: Merge conda env files
4950
run: |
50-
conda-merge ${{ env.build-with-oneapi-env }} ${{ env.oneapi-pkgs-env }} > ${{ env.environment-file }}
51+
conda-merge ${{ env.build-with-oneapi-env }} ${{ env.dpctl-pkg-env }} ${{ env.oneapi-pkgs-env }} > ${{ env.environment-file }}
52+
cat ${{ env.environment-file }}
5153
5254
- name: Upload artifact
53-
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
55+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
5456
with:
5557
name: ${{ env.environment-file-name }}
5658
path: ${{ env.environment-file }}
@@ -81,7 +83,7 @@ jobs:
8183
fetch-depth: 0
8284

8385
- name: Download artifact
84-
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9
86+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
8587
with:
8688
name: ${{ env.environment-file-name }}
8789
path: ${{ env.environment-file-loc }}
@@ -174,7 +176,7 @@ jobs:
174176
fetch-depth: 0
175177

176178
- name: Download artifact
177-
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9
179+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
178180
with:
179181
name: ${{ env.environment-file-name }}
180182
path: ${{ env.environment-file-loc }}

.github/workflows/conda-package.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,13 @@ jobs:
102102
MAX_BUILD_CMPL_MKL_VERSION: '2025.1a0'
103103

104104
- name: Upload artifact
105-
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
105+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
106106
with:
107107
name: ${{ env.package-name }} ${{ runner.os }} Python ${{ matrix.python }}
108108
path: ${{ env.CONDA_BLD }}${{ env.package-name }}-*.conda
109109

110110
- name: Upload wheels artifact
111-
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
111+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
112112
with:
113113
name: ${{ env.package-name }} ${{ runner.os }} Wheels Python ${{ matrix.python }}
114114
path: ${{ env.WHEELS_OUTPUT_FOLDER }}${{ env.package-name }}-*.whl
@@ -146,7 +146,7 @@ jobs:
146146
path: ${{ env.dpnp-repo-path }}
147147

148148
- name: Download artifact
149-
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9
149+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
150150
with:
151151
name: ${{ env.package-name }} ${{ runner.os }} Python ${{ matrix.python }}
152152
path: ${{ env.pkg-path-in-channel }}
@@ -278,7 +278,7 @@ jobs:
278278
path: ${{ env.dpnp-repo-path }}
279279

280280
- name: Download artifact
281-
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9
281+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
282282
with:
283283
name: ${{ env.package-name }} ${{ runner.os }} Python ${{ matrix.python }}
284284
path: ${{ env.pkg-path-in-channel }}
@@ -442,12 +442,12 @@ jobs:
442442
fetch-depth: ${{ env.fetch-depth }}
443443

444444
- name: Download artifact
445-
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9
445+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
446446
with:
447447
name: ${{ env.package-name }} ${{ runner.os }} Python ${{ matrix.python }}
448448

449449
- name: Download wheels artifact
450-
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9
450+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
451451
with:
452452
name: ${{ env.package-name }} ${{ runner.os }} Wheels Python ${{ matrix.python }}
453453

@@ -530,7 +530,7 @@ jobs:
530530
path: ${{ env.dpnp-repo-path }}
531531

532532
- name: Download artifact
533-
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9
533+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
534534
with:
535535
name: ${{ env.package-name }} ${{ runner.os }} Python ${{ env.python-ver }}
536536
path: ${{ env.pkg-path-in-channel }}

.github/workflows/generate_coverage.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,22 @@ jobs:
9494
environment-file: ${{ env.environment-file }}
9595
activate-environment: 'coverage'
9696

97+
# We can't install dpctl as a conda package when the environment is created through
98+
# installing of Intel OneAPI packages because the dpctl conda package has a runtime
99+
# dependency on DPC++ RT one. Whereas the DPC++ RT package has beedn already installed
100+
# by the apt command above and its version has been matched with the DPC++ compiler.
101+
# In case where we install the DPC++ compiler with the apt (including DPC++ RT) and
102+
# install the DPC++ RT conda package while resolving dependencies, this can lead
103+
# to a versioning error, i.e. compatibility issue as the DPC++ compiler only guarantees
104+
# backwards compatibility, not forward compatibility (DPC++ RT may not run a binary built
105+
# with a newer version of the DPC++ compiler).
106+
# Installing dpctl via the pip manager has no such limitation, as the package has no
107+
# run dependency on the DPC++ RT pip package, so this is why the step is necessary here.
108+
- name: Install dpctl
109+
if: env.oneapi-pkgs-env == ''
110+
run: |
111+
pip install -i https://pypi.anaconda.org/dppy/label/dev/simple dpctl==0.20.0dev0
112+
97113
- name: Conda info
98114
run: |
99115
mamba info

.github/workflows/openssf-scorecard.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,14 @@ jobs:
6060
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
6161
# format to the repository Actions tab.
6262
- name: "Upload artifact"
63-
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
63+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
6464
with:
6565
name: SARIF file
6666
path: results.sarif
6767
retention-days: 14
6868

6969
# Upload the results to GitHub's code scanning dashboard.
7070
- name: "Upload to code-scanning"
71-
uses: github/codeql-action/upload-sarif@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11
71+
uses: github/codeql-action/upload-sarif@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12
7272
with:
7373
sarif_file: results.sarif

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1616

1717
### Changed
1818

19+
* Extended `dpnp.fft.fftfreq` and `dpnp.fft.rfftfreq` functions to support `dtype` keyword per Python Array API spec 2024.12 [#2384](https://github.com/IntelPython/dpnp/pull/2384)
1920
* Allowed input array of `uint64` dtype in `dpnp.bincount` [#2361](https://github.com/IntelPython/dpnp/pull/2361)
21+
* The vector norms `ord={None, 1, 2, inf}` and the matrix norms `ord={None, 1, 2, inf, "fro", "nuc"}` now consistently return zero for empty arrays, which are arrays with at least one axis of size zero. This change affects `dpnp.linalg.norm`, `dpnp.linalg.vector_norm`, and `dpnp.linalg.matrix_norm`. Previously, dpnp would either raise errors or return zero depending on the parameters provided [#2371](https://github.com/IntelPython/dpnp/pull/2371)
2022

2123
### Fixed
2224

25+
* Resolved an issue with an incorrect result returned due to missing dependency from the strided kernel on a copy event in `dpnp.erf` [#2378](https://github.com/IntelPython/dpnp/pull/2378)
26+
2327

2428
## [0.17.0] - 02/26/2025
2529

dpnp/backend/kernels/dpnp_krnl_elemwise.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ constexpr T dispatch_erf_op(T elem)
148148
} \
149149
}; \
150150
auto kernel_func = [&](sycl::handler &cgh) { \
151+
cgh.depends_on(copy_strides_ev); \
151152
cgh.parallel_for<class __name__##_strides_kernel<_DataType>>( \
152153
gws, kernel_parallel_for_func); \
153154
}; \

dpnp/dpnp_iface_sorting.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,22 +110,26 @@ def argsort(
110110
axis : {None, int}, optional
111111
Axis along which to sort. If ``None``, the array is flattened before
112112
sorting. The default is ``-1``, which sorts along the last axis.
113+
113114
Default: ``-1``.
114115
kind : {None, "stable", "mergesort", "radixsort"}, optional
115116
Sorting algorithm. The default is ``None``, which uses parallel
116117
merge-sort or parallel radix-sort algorithms depending on the array
117118
data type.
119+
118120
Default: ``None``.
119121
descending : bool, optional
120122
Sort order. If ``True``, the array must be sorted in descending order
121123
(by value). If ``False``, the array must be sorted in ascending order
122124
(by value).
125+
123126
Default: ``False``.
124127
stable : {None, bool}, optional
125128
Sort stability. If ``True``, the returned array will maintain the
126129
relative order of `a` values which compare as equal. The same behavior
127130
applies when set to ``False`` or ``None``.
128131
Internally, this option selects ``kind="stable"``.
132+
129133
Default: ``None``.
130134
131135
Returns
@@ -251,22 +255,26 @@ def sort(a, axis=-1, kind=None, order=None, *, descending=False, stable=None):
251255
axis : {None, int}, optional
252256
Axis along which to sort. If ``None``, the array is flattened before
253257
sorting. The default is ``-1``, which sorts along the last axis.
258+
254259
Default: ``-1``.
255260
kind : {None, "stable", "mergesort", "radixsort"}, optional
256261
Sorting algorithm. The default is ``None``, which uses parallel
257262
merge-sort or parallel radix-sort algorithms depending on the array
258263
data type.
264+
259265
Default: ``None``.
260266
descending : bool, optional
261267
Sort order. If ``True``, the array must be sorted in descending order
262268
(by value). If ``False``, the array must be sorted in ascending order
263269
(by value).
270+
264271
Default: ``False``.
265272
stable : {None, bool}, optional
266273
Sort stability. If ``True``, the returned array will maintain the
267274
relative order of `a` values which compare as equal. The same behavior
268275
applies when set to ``False`` or ``None``.
269276
Internally, this option selects ``kind="stable"``.
277+
270278
Default: ``None``.
271279
272280
Returns

dpnp/dpnp_iface_statistics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -972,7 +972,7 @@ def cov(
972972
>>> import dpnp as np
973973
>>> x = np.array([[0, 2], [1, 1], [2, 0]]).T
974974
975-
Consider two variables, :math:`x_0` and :math:`x_1`, which correlate
975+
Consider two variables, :math:`x_0` and :math:`x_1`, which correlate
976976
perfectly, but in opposite directions:
977977
978978
>>> x

0 commit comments

Comments
 (0)