Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
373 commits
Select commit Hold shift + click to select a range
88a23a2
Move _searchsorted_left/right to _tensor_sorting_impl
vlad-perevezentsev Mar 2, 2026
148b6e5
Fix bug: wrong shape pointer for positions array
vlad-perevezentsev Mar 2, 2026
8b010b0
Move ti.searchsorted() and reuse it in dpnp
vlad-perevezentsev Mar 2, 2026
9766d34
Move dpt.unique_all() and dpt.unique_inverse() and reuse it in dpnp
vlad-perevezentsev Mar 2, 2026
b8ad5ec
Move _isin to _tensor_sorting_impl
vlad-perevezentsev Mar 2, 2026
ce570a5
Fix bug: wrong shape pointer for dst array
vlad-perevezentsev Mar 2, 2026
a7c6440
Move dpt.isin() and reuse it in dpnp
vlad-perevezentsev Mar 2, 2026
62d19f1
Move _topk to _tensor_sorting_impl
vlad-perevezentsev Mar 2, 2026
56d397d
Move dpt.top_k()
vlad-perevezentsev Mar 2, 2026
ad814fb
Initialize _tensor_reductions_impl extension and move _all
vlad-perevezentsev Mar 3, 2026
c4f2496
Add TODO with incorrect logic in reductions_over_axis.hpp
vlad-perevezentsev Mar 3, 2026
bd3add0
Move ti.all() to dpctl_ext.tensor and reuse it in dpnp
vlad-perevezentsev Mar 3, 2026
b1953df
Move _any to _tensor_reductions_impl
vlad-perevezentsev Mar 3, 2026
32802d6
Move ti.any()/ti.diff() and reuse them in dpnp
vlad-perevezentsev Mar 3, 2026
1b4e498
Move _min_over_axis/_max_over_axis to _tensor_reductions_impl
vlad-perevezentsev Mar 3, 2026
aa313ff
Move ti.min()/max() and reuse it in dpnp
vlad-perevezentsev Mar 3, 2026
c6d600a
Move _argmax/argmin_over_axis to _tensor_reductions_impl
vlad-perevezentsev Mar 3, 2026
8ae933d
Move ti.argmax()/argmin() to dpctl_ext.tensor and reuse them in dpnp
vlad-perevezentsev Mar 3, 2026
2ec3cc7
Move _prod/sum_over_axis to _tensor_reductions_impl
vlad-perevezentsev Mar 3, 2026
6b27b1b
Move ti.sum()/prod() to dpctl_ext.tensor and reuse them in dpnp
vlad-perevezentsev Mar 3, 2026
3041d7d
Move _logsumexp/hypot_over_axis to _tensor_reductions_impl
vlad-perevezentsev Mar 3, 2026
4872bb6
Move ti.count_nonzero()/logsumexp()/reduce_hypot() to dpctl_ext.tenso…
vlad-perevezentsev Mar 3, 2026
58fdef3
Initialize _tensor_elementwise_impl extension and move _abs
vlad-perevezentsev Mar 3, 2026
d4cda7c
Move ti.abs() and reuse _abs in dpnp
vlad-perevezentsev Mar 3, 2026
ec74213
Move _acos/_acosh to _tensor_elementwise_impl
vlad-perevezentsev Mar 3, 2026
d4293a2
Move ti.acos()/acosh() and reuse them in dpnp
vlad-perevezentsev Mar 3, 2026
a548dbb
Move _angle/_asin/_asinh to _tensor_elementwise_impl
vlad-perevezentsev Mar 3, 2026
0cec8c3
Move ti.angel()/asin()/asinh() and reuse them
vlad-perevezentsev Mar 3, 2026
4e10a53
Move _atan/_atanh to _tensor_elementwise_impl
vlad-perevezentsev Mar 3, 2026
d509f6d
Move ti.atan()/atanh() and reuse them
vlad-perevezentsev Mar 3, 2026
e54114f
Move __bitwise_invert/_ceil/_conj to _tensor_elementwise_impl
vlad-perevezentsev Mar 3, 2026
e24b129
Move ti.bitwise_invert()/ceil()/conj() and reust them
vlad-perevezentsev Mar 3, 2026
a6100b8
Move _cos/_cosh to _tensor_elementwise_impl
vlad-perevezentsev Mar 4, 2026
e6d0d6f
Move ti.cos()/cosh() and reuse them
vlad-perevezentsev Mar 4, 2026
44ac844
Move _exp/_expmp/_floor to dpctl_ext.tensor and reuse them
vlad-perevezentsev Mar 4, 2026
eab5fec
Move ti.imag()/isfinite()/isfinite() and reuse them
vlad-perevezentsev Mar 4, 2026
4a8c05d
Move ti.isnan()/log()/log1p() and reuse them
vlad-perevezentsev Mar 4, 2026
6d9221c
Move ti.log2()/log10() and reuse them
vlad-perevezentsev Mar 4, 2026
7f444bd
Move ti.logical_not()/negative()/positive() and reuse them
vlad-perevezentsev Mar 4, 2026
dbf021a
Move ti.proj()/real()/round() and reuse them
vlad-perevezentsev Mar 4, 2026
0bc8973
Move ti.sign()/signbit()/sin()/sinh() and reuse them
vlad-perevezentsev Mar 4, 2026
a1707b2
Move ti.square()/sqrt()/tan()/tanh() and reuse them
vlad-perevezentsev Mar 4, 2026
0cdc3e4
Move ti.cbrt()/exp2()/reciprocal()/rsqrt()/trunc() and reuse them
vlad-perevezentsev Mar 4, 2026
3333fc1
add tensor linalg extension
ndgrigorian Mar 5, 2026
bdf3b18
Move helper logic for binary functions
vlad-perevezentsev Mar 5, 2026
d8aab36
Move ti.add() and reuse them
vlad-perevezentsev Mar 5, 2026
a51d34f
Move ti.atan2()/bitwise_and() and reuse them
vlad-perevezentsev Mar 5, 2026
ccb4c67
Move all binary bitwise functions and reuse them
vlad-perevezentsev Mar 5, 2026
fe7778d
Move ti.equal()/floor_divide()/divide() and reuse them
vlad-perevezentsev Mar 5, 2026
c73df9c
Move ti.greater()/greater_equal()/hypot() and reuse them
vlad-perevezentsev Mar 5, 2026
fefaa17
Move ti.less()/less_equal() and reuse them
vlad-perevezentsev Mar 5, 2026
28288ae
Move ti.logaddexp() and reuse it
vlad-perevezentsev Mar 5, 2026
1fb889d
Move all binary logical_ functions and reuse them
vlad-perevezentsev Mar 5, 2026
87f5529
Move ti.maximum()/minimum()/multiply() and reuse them
vlad-perevezentsev Mar 5, 2026
2d5d2ea
Move ti.nextafter()/not_equal()/pow() and reuse them
vlad-perevezentsev Mar 5, 2026
cab0b36
Move ti.copysign()/remainder()/subtract() and reuse them
vlad-perevezentsev Mar 5, 2026
ada8a5c
Merge include-dpctl-tensor into move_tensor_accumulation_impl
vlad-perevezentsev Mar 5, 2026
85ef3e0
Apply remarks
vlad-perevezentsev Mar 5, 2026
99c75cb
Use function from dpctl_ext.tensor in tensor python files
vlad-perevezentsev Mar 5, 2026
8dbf689
Move statistical functions to dpctl_ext.tensor and reuse them
vlad-perevezentsev Mar 5, 2026
e574a9a
Use _tensor_elementwise_impl from dpctl_ext
vlad-perevezentsev Mar 5, 2026
5a897c8
Add where to __init__
vlad-perevezentsev Mar 5, 2026
ecbc6a3
Move ti.allclose() to dpctl_ext.tensor
vlad-perevezentsev Mar 5, 2026
6e40f22
Merge move_tensor_accumulation_impl into move_tensor_sorting_impl
vlad-perevezentsev Mar 5, 2026
c9644ac
Merge move_tensor_sorting_impl into move_tensor_reductions_impl_ext
vlad-perevezentsev Mar 5, 2026
6a2c31b
Merge move_tensor_reductions_impl_ext into move_tensor_elementwise_im…
vlad-perevezentsev Mar 5, 2026
9339cb8
Merge move_tensor_elementwise_impl_unary into move_tensor_elementwise…
vlad-perevezentsev Mar 5, 2026
a506fe9
Merge move_tensor_elementwise_impl_unary_par_2 into move_tensor_eleme…
vlad-perevezentsev Mar 5, 2026
fc34f30
Merge move_tensor_elementwise_impl_unary_par_3 into move-tensor-linalg
vlad-perevezentsev Mar 5, 2026
c9efd4d
Merge move-tensor-linalg into move_elementwise_binary_impl
vlad-perevezentsev Mar 5, 2026
ee6ba17
Add missing logaddexp to __init__.py
vlad-perevezentsev Mar 5, 2026
d80285e
Merge move_elementwise_binary_impl into move_elementwise_binary_impl_…
vlad-perevezentsev Mar 5, 2026
c3d5ad7
Merge move_elementwise_binary_impl_part_2 into move_elementwise_binar…
vlad-perevezentsev Mar 5, 2026
a59ccd1
Merge move_elementwise_binary_impl_part_3 into finalize_functional_mi…
vlad-perevezentsev Mar 5, 2026
3bd1b0e
fix includes and namespaces in dot.cpp
ndgrigorian Mar 5, 2026
1620f77
use dpctl_ext.tensor throughout _linear_algebra_functions
ndgrigorian Mar 5, 2026
cb03a49
Move data types to dpctl_ext.tensor
vlad-perevezentsev Mar 5, 2026
93510c0
Move class Device to dpctl_ext.tensor
vlad-perevezentsev Mar 5, 2026
8e11b23
Move constants to dpctl_ext.tensor
vlad-perevezentsev Mar 5, 2026
54fe331
Move array API utilities
vlad-perevezentsev Mar 5, 2026
60bba8f
Move print functions to dpctl_ext.tensor
vlad-perevezentsev Mar 5, 2026
b4fa023
Move include/dlpack to dpctl_ext.tensor
vlad-perevezentsev Mar 5, 2026
fb8b77e
Move _dlpack.pyx/pxd to dpctl_ext.tensor
vlad-perevezentsev Mar 5, 2026
5c9e183
Move _flags.pyx to dpctl_ext.tensor
vlad-perevezentsev Mar 5, 2026
8f44c37
Move cython helper files
vlad-perevezentsev Mar 6, 2026
e2441eb
Move dldevice_conversions functions
vlad-perevezentsev Mar 6, 2026
422e87e
Move usm_ndarray to dpctl_ext.tensor
vlad-perevezentsev Mar 6, 2026
75580a5
fix clang-format
ndgrigorian Mar 6, 2026
e114808
Fix import _flags and _dlpack in _usmarray.pyx
vlad-perevezentsev Mar 6, 2026
39c0571
Update CMakes files to build usm_ndarray
vlad-perevezentsev Mar 6, 2026
7e6a283
abbreviate namespaces in linalg module sources and headers
ndgrigorian Mar 6, 2026
3c428a6
Switch fully to dpctl_ext.tensor in dpctl_ext.tensor
vlad-perevezentsev Mar 6, 2026
3883a1c
Switch fully to dpctl_ext.tensor in dpnp
vlad-perevezentsev Mar 6, 2026
23164ac
Reorder _usmarray import in __init__.py
vlad-perevezentsev Mar 6, 2026
18c3d61
Add missing _place_impl() to _copy_utils.py
vlad-perevezentsev Mar 6, 2026
7f14dfc
Update _dlpack.pyx to use dpctl_ext.tensor
vlad-perevezentsev Mar 6, 2026
5e7123d
Update _usmarray.pyx to use dpctl_ext.tensor
vlad-perevezentsev Mar 6, 2026
f4da0de
Integrate dpctl_ext.tensor C-API to dpnp4pybind11.hpp
vlad-perevezentsev Mar 6, 2026
1e4902d
Add from_dlpack to API dpctl_ext.tensor
vlad-perevezentsev Mar 9, 2026
9a50f9f
Extend .gitignore for dpctl_ext/include
vlad-perevezentsev Mar 9, 2026
153a91b
Add DpctlExtCAPI interface target
vlad-perevezentsev Mar 9, 2026
95acc3d
Increase build time for public CI
vlad-perevezentsev Mar 9, 2026
f55507d
Update test_from_dlpack_with_dpt to use dpt.empty
vlad-perevezentsev Mar 10, 2026
5d11ff7
Merge include-dpctl-tensor into move_tensor_elementwise_impl_unary
vlad-perevezentsev Mar 11, 2026
281adbf
Apply remarks
vlad-perevezentsev Mar 11, 2026
7b63ab5
Merge move_tensor_elementwise_impl_unary into move_tensor_elementwise…
vlad-perevezentsev Mar 11, 2026
a2d28af
Clean-up includes
vlad-perevezentsev Mar 11, 2026
1403be4
Merge move_tensor_elementwise_impl_unary_par_2 into move_tensor_eleme…
vlad-perevezentsev Mar 11, 2026
0182c74
Clean-up includes
vlad-perevezentsev Mar 11, 2026
86878cf
Merge move_tensor_elementwise_impl_unary_par_3 into move-tensor-linalg
vlad-perevezentsev Mar 11, 2026
c0ff29f
Add the missing includes for dot.cpp
vlad-perevezentsev Mar 11, 2026
ca295f1
Merge move-tensor-linalg into move_elementwise_binary_impl
vlad-perevezentsev Mar 11, 2026
e6e179e
Clean-up includes
vlad-perevezentsev Mar 11, 2026
ed289fc
Merge move_elementwise_binary_impl into move_elementwise_binary_impl_…
vlad-perevezentsev Mar 11, 2026
a3b2d00
Clean-up includes
vlad-perevezentsev Mar 11, 2026
d4ca39b
Merge move_elementwise_binary_impl_part_2 into move_elementwise_binar…
vlad-perevezentsev Mar 11, 2026
b467db5
Clean-up includes
vlad-perevezentsev Mar 11, 2026
608802a
Clean-up includes
vlad-perevezentsev Mar 11, 2026
b614202
Merge move_elementwise_binary_impl_part_2 into move_elementwise_binar…
vlad-perevezentsev Mar 11, 2026
f4c05d2
Merge move_elementwise_binary_impl_part_3 into finalize_functional_mi…
vlad-perevezentsev Mar 11, 2026
9a7fae9
Merge finalize_functional_migration into move_usm_ndarray
vlad-perevezentsev Mar 11, 2026
85c4906
Initialize dpnp/tests/tensor and migrate test_tensor_* files
vlad-perevezentsev Mar 12, 2026
244dd6a
Migrate test_usm_ndarray_* to dpnp/tests/tensor
vlad-perevezentsev Mar 12, 2026
b61078f
Fix test_boolean_reductions_nan_inf to assert array instead of scalar
vlad-perevezentsev Mar 12, 2026
fd62a26
Migrate elementwise tests to dpnp/tests/tensor/elementwise
vlad-perevezentsev Mar 12, 2026
e2e633e
Fix incorrect expected dtype in test_complex_usm_type
vlad-perevezentsev Mar 12, 2026
a06936d
Fix incorrect expected dtype in test_hyper_complex_contig
vlad-perevezentsev Mar 13, 2026
935e4e6
Fix incorrect expected dtype in test_log1p_special_cases
vlad-perevezentsev Mar 13, 2026
6f5a792
Fix round() output dtype for boolean input to match numpy
vlad-perevezentsev Mar 13, 2026
42cb05b
Fix incorrect expected dtype in test_trig_complex_contig
vlad-perevezentsev Mar 13, 2026
bf41dc6
Include tensor folder tests in package distribution
vlad-perevezentsev Mar 13, 2026
1a56ad0
Move dpnp/tests/tensor into dpctl_ext/tests
vlad-perevezentsev Mar 16, 2026
fad5749
Update imports in tensor tests and add conftest.py
vlad-perevezentsev Mar 16, 2026
bd015a5
Update package_data for tensor tests in setup.py
vlad-perevezentsev Mar 16, 2026
7c6afd2
Include dpctl_ext tensor tests in public CI pipeline
vlad-perevezentsev Mar 16, 2026
bbda500
Extend package_data with dpctl_ext/tests/*.py
vlad-perevezentsev Mar 16, 2026
7ccc050
Increase build timeout-minutes public CI
vlad-perevezentsev Mar 16, 2026
5c96686
Increase coverage build timeout to 90 minutes
vlad-perevezentsev Mar 16, 2026
3ba741a
Add public C-API header for dpctl_ext
vlad-perevezentsev Mar 17, 2026
946ce93
Move dpctl C-API imports to dpctl_ext_capi.h
vlad-perevezentsev Mar 17, 2026
da0995c
Remove the workaround via CMAKE_BINARY_DIR from DpctlExtCAPI
vlad-perevezentsev Mar 17, 2026
31685d4
Disable pylint check no-name-in-module in dpnp_iface_statistics.py
vlad-perevezentsev Mar 17, 2026
fddedde
Merge include-dpctl-tensor into move_elementwise_binary_impl_part_2
vlad-perevezentsev Mar 18, 2026
969ec9a
Add a missing include
vlad-perevezentsev Mar 18, 2026
b0a4a6e
Apply remarks
vlad-perevezentsev Mar 18, 2026
21f1aec
Merge move_elementwise_binary_impl_part_2 into move_elementwise_binar…
vlad-perevezentsev Mar 18, 2026
255a20b
Merge include-dpctl-tensor into move_elementwise_binary_impl_part_3
vlad-perevezentsev Mar 18, 2026
d00ebe4
Clean up includes
vlad-perevezentsev Mar 18, 2026
1a4f450
Merge move_elementwise_binary_impl_part_3 into finalize_functional_mi…
vlad-perevezentsev Mar 18, 2026
ed51252
Merge finalize_functional_migration into move_usm_ndarray
vlad-perevezentsev Mar 18, 2026
b4395ea
Increase timeout_minutes for build dpnp with coverage step
vlad-perevezentsev Mar 18, 2026
7327502
Increase timeout-minutes for Build and Deploy Docs
vlad-perevezentsev Mar 18, 2026
252f385
Merge move_usm_ndarray into move_tensor_tests
vlad-perevezentsev Mar 19, 2026
42a6ada
Merge include-dpctl-tensor into finalize_functional_migration
vlad-perevezentsev Mar 19, 2026
7294993
Enable dpctl_ext tests in conda test scripts
vlad-perevezentsev Mar 19, 2026
bc52234
Update test_from_dlpack_with_dpt to use empty from dpctl_ext
vlad-perevezentsev Mar 19, 2026
8adaa68
Fully switch to using dpctl_ext functions for dpnp_elementwise_common.py
vlad-perevezentsev Mar 19, 2026
0277672
Update _testing.py in dpctl_ext/tensor
vlad-perevezentsev Mar 19, 2026
11562a2
Merge finalize_functional_migration into move_usm_ndarray
vlad-perevezentsev Mar 19, 2026
fd763f3
Merge include-dpctl-tensor into move_usm_ndarray
vlad-perevezentsev Mar 19, 2026
b30e6cc
Apply remarks
vlad-perevezentsev Mar 19, 2026
ec030b2
Move dpctl_ext/tensor into dpnp/tensor w/o updates
vlad-perevezentsev Mar 24, 2026
118410d
Register dpnp.tensor in setup.py
vlad-perevezentsev Mar 24, 2026
c6c0d18
Update imports in dpnp.tensor files and remove TODO
vlad-perevezentsev Mar 24, 2026
005635c
Update imports in dpnp files and remove TODO
vlad-perevezentsev Mar 24, 2026
efc9957
Move include/dpctl_ext_capi.h and rename to dpnp_tensor_capi.h
vlad-perevezentsev Mar 24, 2026
38227d1
Update dpnp4pybind11.hpp
vlad-perevezentsev Mar 24, 2026
3911d28
Update CMake configuration for dpnp.tensor
vlad-perevezentsev Mar 25, 2026
81a031d
Remove dpctl_ext folder
vlad-perevezentsev Mar 25, 2026
862a800
Rename DpctlExtCAPI to DpnpTensorCAPI
vlad-perevezentsev Mar 25, 2026
3e591f7
Update CMake files
vlad-perevezentsev Mar 25, 2026
7bf9492
Update .gitignore
vlad-perevezentsev Mar 25, 2026
7c90dc7
Test: reduce memory usage in coverage build
vlad-perevezentsev Mar 26, 2026
d0a08e0
Remove dpctl_ext.tensor C-API logic
vlad-perevezentsev Mar 26, 2026
09d9c46
Fix dpnp build dependencies after C-API removal
vlad-perevezentsev Mar 26, 2026
a9aadd9
Remove the warning suppress
vlad-perevezentsev Mar 27, 2026
996ecfb
Merge move_usm_ndarray into remove_c_api_tensor
vlad-perevezentsev Mar 27, 2026
6ea695a
Increase timeout-minutes for generate-coverage job
vlad-perevezentsev Mar 27, 2026
3dd6429
Merge move_usm_ndarray into move_dpctl_ext_to_dpnp_tensor
vlad-perevezentsev Mar 27, 2026
d41bfc0
Test: increase timeout_minutes and CMAKE_BUILD_PARALLEL_LEVEL
vlad-perevezentsev Mar 27, 2026
eeb1d49
Test: increase timeout_minutes and swap memory
vlad-perevezentsev Mar 30, 2026
76b1a0f
Undo accidentally removed import DLDeviceType
vlad-perevezentsev Mar 30, 2026
fd8c438
Test: CMAKE_BUILD_PARALLEL_LEVEL to 1 and timeout_minutes 350
vlad-perevezentsev Mar 30, 2026
fe3b2db
Update dlpack.h to v1.3 and README.md
vlad-perevezentsev Mar 30, 2026
9087bbf
Update examples in dpctl_ext.tensor cython files
vlad-perevezentsev Mar 30, 2026
aa934f7
Add TODO comment in __init__.py
vlad-perevezentsev Mar 30, 2026
33fc8fc
Apply remark
vlad-perevezentsev Mar 30, 2026
03efb63
Skip tensor build for coverage
vlad-perevezentsev Mar 30, 2026
5b7600c
Revert coverage test changes
vlad-perevezentsev Mar 30, 2026
72a18a1
Merge branch 'move_usm_ndarray' into move_dpctl_ext_to_dpnp_tensor
vlad-perevezentsev Mar 30, 2026
e841145
Merge include-dpctl-tensor into remove_c_api_tensor
vlad-perevezentsev Mar 31, 2026
7173375
Move CMAKE_BINARY_DIR to SYSTEM includes and remove duplicates
vlad-perevezentsev Mar 31, 2026
9ed637e
Remove the remaining dpctl_ext imports
vlad-perevezentsev Mar 31, 2026
9939b55
Merge include-dpctl-tensor into move_dpctl_ext_to_dpnp_tensor
vlad-perevezentsev Mar 31, 2026
fbb3706
Merge branch 'remove_c_api_tensor' into move_dpctl_ext_to_dpnp_tensor
vlad-perevezentsev Mar 31, 2026
3b2cb40
Update cython docstrings
vlad-perevezentsev Mar 31, 2026
51670fa
Merge branch 'remove_c_api_tensor' into move_dpctl_ext_to_dpnp_tensor
vlad-perevezentsev Mar 31, 2026
ad50437
Remove dpctl_ext folder
vlad-perevezentsev Mar 31, 2026
b261373
Remove dpctl_ext_capi.h that appeared after the merge
vlad-perevezentsev Mar 31, 2026
9f7b5ad
Merge branch 'remove_c_api_tensor' into move_dpctl_ext_to_dpnp_tensor
vlad-perevezentsev Mar 31, 2026
b95873e
Remove dpnp_tensor_capi.h
vlad-perevezentsev Mar 31, 2026
b263cbd
Remove installation of dpnp C-API headers
vlad-perevezentsev Mar 31, 2026
1fefc4e
Update comment in dpnp4pybind11.hpp
vlad-perevezentsev Mar 31, 2026
52f1f77
Split coverage build into separate steps
vlad-perevezentsev Mar 31, 2026
0d74e4d
Add SYCL_CACHE_PERSISTENT: 1 for GH coverage build
vlad-perevezentsev Mar 31, 2026
d819ae3
Test: swap space and use CMAKE_BUILD_PARALLEL_LEVEL: 2
vlad-perevezentsev Apr 1, 2026
609e1ab
Test : remove swap
vlad-perevezentsev Apr 1, 2026
e023f2f
Test: use -fsycl-device-code-split=off for tensor coverage build
vlad-perevezentsev Apr 1, 2026
6f8f4a2
Make _usmarray dependencies conditional in backend extensions
vlad-perevezentsev Apr 1, 2026
a29a169
Use dpnp.tensor.usm_ndarray in get_array() check
vlad-perevezentsev Apr 1, 2026
af8e355
Use -fsycl-device-code-split=per_source in tensor coverage
vlad-perevezentsev Apr 1, 2026
2f9e5d9
Use per_source device code splitting for coverage build
vlad-perevezentsev Apr 1, 2026
6fc1439
Test: add Run coverage tests as a separate step
vlad-perevezentsev Apr 7, 2026
56ac18a
Merge include-dpctl-tensor into move_dpctl_ext_to_dpnp_tensor
vlad-perevezentsev Apr 7, 2026
bf0c6b1
Remove per_source device code splitting and separate run test step
vlad-perevezentsev Apr 7, 2026
1992b6f
Optimize tensor coverage build to match dpctl
vlad-perevezentsev Apr 7, 2026
331fd49
Simplify coverage build to single step
vlad-perevezentsev Apr 8, 2026
27df7d9
Merge include-dpctl-tensor into move_tensor_tests
vlad-perevezentsev Apr 8, 2026
0ba14f5
Remove _usmarray dependencies conditional
vlad-perevezentsev Apr 8, 2026
be72615
Merge move_dpctl_ext_to_dpnp_tensor into move_tensor_tests
vlad-perevezentsev Apr 8, 2026
1bca6b2
Move dpctl_ext/tests into dpnp/tests
vlad-perevezentsev Apr 8, 2026
75d82dd
Update tensor tests: use dpnp.tensor import
vlad-perevezentsev Apr 8, 2026
257dea8
Remove capi tests
vlad-perevezentsev Apr 8, 2026
2ac6361
Update tensor test configuration in public CI
vlad-perevezentsev Apr 8, 2026
a0785bb
Apply remarks
vlad-perevezentsev Apr 8, 2026
779440e
Apply remarks with coverage
vlad-perevezentsev Apr 8, 2026
39d054e
Merge move_dpctl_ext_to_dpnp_tensor into move_tensor_tests
vlad-perevezentsev Apr 8, 2026
e1a18a5
Merge include-dpctl-tensor into move_tensor_tests
vlad-perevezentsev Apr 8, 2026
c3390af
Move _compute_follows_data.pyx into dpnp.tensor
vlad-perevezentsev Apr 8, 2026
d002967
Update dpnp files by replacing dpctl.utils import
vlad-perevezentsev Apr 8, 2026
9636c28
Update dpnp.tensor files by replacing dpctl.utils import
vlad-perevezentsev Apr 8, 2026
01b92b8
Update dpnp.tests.tensor files by replacing dpctl.utils import
vlad-perevezentsev Apr 8, 2026
06cce1b
Update dpnp.tests files by replacing dpctl.utils import
vlad-perevezentsev Apr 8, 2026
8e84608
Align dpnp.tensor CMake flags with dpctl.tensor
vlad-perevezentsev Apr 9, 2026
25e121f
Increase timeout-minutes for OneMath workflows
vlad-perevezentsev Apr 9, 2026
a5a5e64
Test: split running tests in conda-recipe
vlad-perevezentsev Apr 9, 2026
eea1dc1
use --deselect instead of not working --ignore
vlad-perevezentsev Apr 9, 2026
19178ad
Fix a circular import in _usmarray.py
vlad-perevezentsev Apr 9, 2026
9b125c3
Test: add SKIP_TENSOR_TESTS env variable and apply it
vlad-perevezentsev Apr 9, 2026
e11366e
Remove separate test runs in conda-recipe
vlad-perevezentsev Apr 9, 2026
8cc35f1
Reset print options in test_print_dpnp_1d
vlad-perevezentsev Apr 9, 2026
4ffd5b5
Apply w/a to custom_inclusive_scan_over_group from dpctl #2275
vlad-perevezentsev Apr 9, 2026
bc35610
Test: test_print_dpnp_1d on CPU
vlad-perevezentsev Apr 9, 2026
2897e05
Skip test_print_dpnp_1d with TODO
vlad-perevezentsev Apr 9, 2026
ca48a49
Merge move_tensor_tests into move_compute_follows_data_utils
vlad-perevezentsev Apr 10, 2026
30705f8
Apply remark
vlad-perevezentsev Apr 10, 2026
f9d6f55
Link jira ticket to skip reason
vlad-perevezentsev Apr 10, 2026
8ed2fa3
Merge move_tensor_tests into move_compute_follows_data_utils
vlad-perevezentsev Apr 10, 2026
a0d2c2a
Merge include-dpctl-tensor into move_compute_follows_data_utils
vlad-perevezentsev Apr 10, 2026
61a7248
Apply remarks
vlad-perevezentsev Apr 10, 2026
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
3 changes: 1 addition & 2 deletions dpnp/dpnp_algo/dpnp_arraycreation.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
import math
import operator

import dpctl.utils as dpu
import numpy

import dpnp
Expand Down Expand Up @@ -340,7 +339,7 @@ class dpnp_nd_grid:
def __init__(
self, sparse=False, device=None, usm_type="device", sycl_queue=None
):
dpu.validate_usm_type(usm_type, allow_none=True)
dpt.validate_usm_type(usm_type, allow_none=True)
self.sparse = sparse
self.usm_type = "device" if usm_type is None else usm_type
self.sycl_queue_normalized = dpnp.get_normalized_queue_device(
Expand Down
4 changes: 2 additions & 2 deletions dpnp/dpnp_algo/dpnp_elementwise_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ def __call__(
f"Expected output shape is {x.shape}, got {res.shape}"
)

if dpu.get_execution_queue((exec_q, res.sycl_queue)) is None:
if dpt.get_execution_queue((exec_q, res.sycl_queue)) is None:
raise dpnp.exceptions.ExecutionPlacementError(
"Input and output allocation queues are not compatible"
)
Expand Down Expand Up @@ -1062,7 +1062,7 @@ def __call__(
f"Expected output shape is {res_shape}, got {res.shape}"
)

if dpu.get_execution_queue((exec_q, res.sycl_queue)) is None:
if dpt.get_execution_queue((exec_q, res.sycl_queue)) is None:
raise dpnp.exceptions.ExecutionPlacementError(
"Input and output allocation queues are not compatible"
)
Expand Down
4 changes: 2 additions & 2 deletions dpnp/dpnp_algo/dpnp_fill.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ def dpnp_fill(arr, val):
val = dpnp.get_usm_ndarray(val)
if val.shape != ():
raise ValueError("`val` must be a scalar or 0D-array")
if dpu.get_execution_queue((exec_q, val.sycl_queue)) is None:
raise dpu.ExecutionPlacementError(
if dpt.get_execution_queue((exec_q, val.sycl_queue)) is None:
raise dpt.ExecutionPlacementError(
"Input arrays have incompatible queues."
)
a_val = dpt.astype(val, arr.dtype)
Expand Down
16 changes: 7 additions & 9 deletions dpnp/dpnp_container.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@

"""

import dpctl.utils as dpu

import dpnp
import dpnp.tensor as dpt
from dpnp.dpnp_array import dpnp_array
Expand Down Expand Up @@ -67,7 +65,7 @@ def arange(
sycl_queue=None,
):
"""Validate input parameters before passing them into `dpctl.tensor` module"""
dpu.validate_usm_type(usm_type, allow_none=False)
dpt.validate_usm_type(usm_type, allow_none=False)
sycl_queue_normalized = dpnp.get_normalized_queue_device(
sycl_queue=sycl_queue, device=device
)
Expand All @@ -93,7 +91,7 @@ def asarray(
sycl_queue=None,
):
"""Converts `x1` to `dpnp_array`."""
dpu.validate_usm_type(usm_type, allow_none=True)
dpt.validate_usm_type(usm_type, allow_none=True)

if order is None:
order = "K"
Expand Down Expand Up @@ -154,7 +152,7 @@ def empty(
sycl_queue=None,
):
"""Validate input parameters before passing them into `dpctl.tensor` module"""
dpu.validate_usm_type(usm_type, allow_none=False)
dpt.validate_usm_type(usm_type, allow_none=False)
sycl_queue_normalized = dpnp.get_normalized_queue_device(
sycl_queue=sycl_queue, device=device
)
Expand Down Expand Up @@ -185,7 +183,7 @@ def eye(
sycl_queue=None,
):
"""Validate input parameters before passing them into `dpctl.tensor` module"""
dpu.validate_usm_type(usm_type, allow_none=False)
dpt.validate_usm_type(usm_type, allow_none=False)
sycl_queue_normalized = dpnp.get_normalized_queue_device(
sycl_queue=sycl_queue, device=device
)
Expand Down Expand Up @@ -216,7 +214,7 @@ def full(
sycl_queue=None,
):
"""Validate input parameters before passing them into `dpctl.tensor` module"""
dpu.validate_usm_type(usm_type, allow_none=True)
dpt.validate_usm_type(usm_type, allow_none=True)

sycl_queue_normalized = dpnp.get_normalized_queue_device(
fill_value, sycl_queue=sycl_queue, device=device
Expand Down Expand Up @@ -249,7 +247,7 @@ def ones(
sycl_queue=None,
):
"""Validate input parameters before passing them into `dpctl.tensor` module"""
dpu.validate_usm_type(usm_type, allow_none=False)
dpt.validate_usm_type(usm_type, allow_none=False)
sycl_queue_normalized = dpnp.get_normalized_queue_device(
sycl_queue=sycl_queue, device=device
)
Expand Down Expand Up @@ -289,7 +287,7 @@ def zeros(
sycl_queue=None,
):
"""Validate input parameters before passing them into `dpctl.tensor` module"""
dpu.validate_usm_type(usm_type, allow_none=False)
dpt.validate_usm_type(usm_type, allow_none=False)
sycl_queue_normalized = dpnp.get_normalized_queue_device(
sycl_queue=sycl_queue, device=device
)
Expand Down
2 changes: 1 addition & 1 deletion dpnp/dpnp_iface.py
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ def get_dpnp_descriptor(
if queue is not None and copy_when_nondefault_queue:
default_queue = dpctl.SyclQueue()
queue_is_default = (
dpctl.utils.get_execution_queue([queue, default_queue]) is not None
dpt.get_execution_queue([queue, default_queue]) is not None
)
if not queue_is_default:
ext_obj = dpnp.array(ext_obj, sycl_queue=default_queue)
Expand Down
7 changes: 4 additions & 3 deletions dpnp/dpnp_iface_histograms.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
result_type_for_device,
to_supported_dtypes,
)
from dpnp.tensor import get_coerced_usm_type, get_execution_queue

# pylint: disable=no-name-in-module
from .dpnp_utils import get_usm_allocations
Expand Down Expand Up @@ -87,10 +88,10 @@ def _ravel_check_a_and_weights(a, weights):
if weights is not None:
# check that `weights` array has supported type
dpnp.check_supported_arrays_type(weights)
usm_type = dpu.get_coerced_usm_type([usm_type, weights.usm_type])
usm_type = get_coerced_usm_type([usm_type, weights.usm_type])

# check that arrays have the same allocation queue
if dpu.get_execution_queue([a.sycl_queue, weights.sycl_queue]) is None:
if get_execution_queue([a.sycl_queue, weights.sycl_queue]) is None:
raise ValueError(
"a and weights must be allocated on the same SYCL queue"
)
Expand Down Expand Up @@ -173,7 +174,7 @@ def _get_bin_edges(a, bins, range, usm_type):

elif numpy.ndim(bins) == 1:
if dpnp.is_supported_array_type(bins):
if dpu.get_execution_queue([a.sycl_queue, bins.sycl_queue]) is None:
if get_execution_queue([a.sycl_queue, bins.sycl_queue]) is None:
raise ValueError(
"a and bins must be allocated on the same SYCL queue"
)
Expand Down
8 changes: 4 additions & 4 deletions dpnp/dpnp_iface_indexing.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ def _choose_run(inds, chcs, q, usm_type, out=None, mode=0):
f"got {out.dtype}"
)

if dpu.get_execution_queue((q, out.sycl_queue)) is None:
raise dpu.ExecutionPlacementError(
if dpt.get_execution_queue((q, out.sycl_queue)) is None:
raise dpt.ExecutionPlacementError(
"Input and output allocation queues are not compatible"
)

Expand Down Expand Up @@ -292,8 +292,8 @@ def _take_index(x, inds, axis, q, usm_type, out=None, mode=0):
f"Output array of type {x.dtype} is needed, " f"got {out.dtype}"
)

if dpu.get_execution_queue((q, out.sycl_queue)) is None:
raise dpu.ExecutionPlacementError(
if dpt.get_execution_queue((q, out.sycl_queue)) is None:
raise dpt.ExecutionPlacementError(
"Input and output allocation queues are not compatible"
)

Expand Down
4 changes: 2 additions & 2 deletions dpnp/dpnp_iface_logic.py
Original file line number Diff line number Diff line change
Expand Up @@ -1261,12 +1261,12 @@ def isin(
usm_element = dpnp.get_usm_ndarray(element)
else:
if (
dpu.get_execution_queue(
dpt.get_execution_queue(
(element.sycl_queue, test_elements.sycl_queue)
)
is None
):
raise dpu.ExecutionPlacementError(
raise dpt.ExecutionPlacementError(
"Input arrays have incompatible allocation queues"
)
usm_element = dpnp.get_usm_ndarray(element)
Expand Down
10 changes: 5 additions & 5 deletions dpnp/dpnp_iface_mathematical.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,10 +270,10 @@ def _process_ediff1d_args(arg, arg_name, ary_dtype, ary_sycl_queue, usm_type):
if not dpnp.is_supported_array_type(arg):
arg = dpnp.asarray(arg, usm_type=usm_type, sycl_queue=ary_sycl_queue)
else:
usm_type = dpu.get_coerced_usm_type([usm_type, arg.usm_type])
usm_type = dpt.get_coerced_usm_type([usm_type, arg.usm_type])
# check that arrays have the same allocation queue
if dpu.get_execution_queue([ary_sycl_queue, arg.sycl_queue]) is None:
raise dpu.ExecutionPlacementError(
if dpt.get_execution_queue([ary_sycl_queue, arg.sycl_queue]) is None:
raise dpt.ExecutionPlacementError(
f"ary and {arg_name} must be allocated on the same SYCL queue"
)

Expand Down Expand Up @@ -304,7 +304,7 @@ def _validate_interp_param(param, name, exec_q, usm_type, dtype=None):
f"a {name} value must be 0-dimensional, "
f"but got {param.ndim}-dim"
)
if dpu.get_execution_queue([exec_q, param.sycl_queue]) is None:
if dpt.get_execution_queue([exec_q, param.sycl_queue]) is None:
raise ValueError(
f"input arrays and {name} must be allocated "
"on the same SYCL queue"
Expand Down Expand Up @@ -2721,7 +2721,7 @@ def gradient(f, *varargs, axis=None, edge_order=1):
if dpnp.isscalar(ax_dx):
usm_type = f.usm_type
else:
usm_type = dpu.get_coerced_usm_type([f.usm_type, ax_dx.usm_type])
usm_type = dpt.get_coerced_usm_type([f.usm_type, ax_dx.usm_type])
out = dpnp.empty_like(f, dtype=otype, usm_type=usm_type)

# spacing for the current axis
Expand Down
2 changes: 1 addition & 1 deletion dpnp/dpnp_iface_statistics.py
Original file line number Diff line number Diff line change
Expand Up @@ -670,7 +670,7 @@ def _run_native_sliding_dot_product1d(a, v, l_pad, r_pad, rdtype):
a_casted = dpnp.asarray(a, dtype=supported_dtype, order="C")
v_casted = dpnp.asarray(v, dtype=supported_dtype, order="C")

usm_type = dpu.get_coerced_usm_type([a_casted.usm_type, v_casted.usm_type])
usm_type = dpt.get_coerced_usm_type([a_casted.usm_type, v_casted.usm_type])
out_size = l_pad + r_pad + a_casted.size - v_casted.size + 1
# out type is the same as input type
out = dpnp.empty_like(a_casted, shape=out_size, usm_type=usm_type)
Expand Down
12 changes: 6 additions & 6 deletions dpnp/dpnp_utils/dpnp_algo_utils.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ This module contains different helpers and utilities
"""

import dpctl
import dpctl.utils as dpu
import numpy

import dpnp
import dpnp.config as config
import dpnp.dpnp_container as dpnp_container
from dpnp.dpnp_array import dpnp_array
from dpnp.tensor import get_coerced_usm_type, get_execution_queue

cimport cpython
cimport cython
Expand Down Expand Up @@ -153,7 +153,7 @@ def call_origin(function, *args, **kwargs):
kwargx = convert_item(kwarg)
kwargs_new[key] = kwargx

exec_q = dpu.get_execution_queue(alloc_queues)
exec_q = get_execution_queue(alloc_queues)
if exec_q is None:
exec_q = dpnp.get_normalized_queue_device(sycl_queue=sycl_queue)
# print(f"DPNP call_origin(): backend called. \n\t function={function}, \n\t args_new={args_new}, \n\t kwargs_new={kwargs_new}, \n\t dpnp_inplace={dpnp_inplace}")
Expand Down Expand Up @@ -221,7 +221,7 @@ def _get_coerced_usm_type(objects):
elif len(types_in_use) == 1:
return types_in_use[0]

common_usm_type = dpu.get_coerced_usm_type(types_in_use)
common_usm_type = get_coerced_usm_type(types_in_use)
if common_usm_type is None:
raise ValueError("Input arrays must have coerced USM types")
return common_usm_type
Expand All @@ -234,7 +234,7 @@ def _get_common_allocation_queue(objects):
elif len(queues_in_use) == 1:
return queues_in_use[0]

common_queue = dpu.get_execution_queue(queues_in_use)
common_queue = get_execution_queue(queues_in_use)
if common_queue is None:
raise ValueError("Input arrays must be allocated on the same SYCL queue")
return common_queue
Expand Down Expand Up @@ -401,13 +401,13 @@ cdef tuple get_common_usm_allocation(dpnp_descriptor x1, dpnp_descriptor x2):
array1_obj = x1.get_array()
array2_obj = x2.get_array()

common_usm_type = dpctl.utils.get_coerced_usm_type((array1_obj.usm_type, array2_obj.usm_type))
common_usm_type = get_coerced_usm_type((array1_obj.usm_type, array2_obj.usm_type))
if common_usm_type is None:
raise ValueError(
"could not recognize common USM type for inputs of USM types {} and {}"
"".format(array1_obj.usm_type, array2_obj.usm_type))

common_sycl_queue = dpu.get_execution_queue((array1_obj.sycl_queue, array2_obj.sycl_queue))
common_sycl_queue = get_execution_queue((array1_obj.sycl_queue, array2_obj.sycl_queue))
if common_sycl_queue is None:
raise ValueError(
"could not recognize common SYCL queue for inputs in SYCL queues {} and {}"
Expand Down
5 changes: 2 additions & 3 deletions dpnp/dpnp_utils/dpnp_utils_einsum.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,12 @@
import operator
import warnings

import dpctl
import numpy
from dpctl.utils import ExecutionPlacementError

import dpnp
from dpnp.dpnp_array import dpnp_array
from dpnp.dpnp_utils import get_usm_allocations, map_dtype_to_device
from dpnp.tensor import ExecutionPlacementError

_einsum_symbols = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

Expand Down Expand Up @@ -1023,7 +1022,7 @@ def dpnp_einsum(
res_usm_type, exec_q = get_usm_allocations(arrays)
if out is not None:
dpnp.check_supported_arrays_type(out)
if dpctl.utils.get_execution_queue((exec_q, out.sycl_queue)) is None:
if dpnp.tensor.get_execution_queue((exec_q, out.sycl_queue)) is None:
raise ExecutionPlacementError(
"Input and output allocation queues are not compatible"
)
Expand Down
5 changes: 2 additions & 3 deletions dpnp/dpnp_utils/dpnp_utils_linearalgebra.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@

import dpctl.utils as dpu
import numpy
from dpctl.utils import ExecutionPlacementError

import dpnp
import dpnp.backend.extensions.blas._blas_impl as bi
Expand Down Expand Up @@ -694,8 +693,8 @@ def _validate_out_array(out, exec_q):
"""Validate out is supported array and has correct queue."""
if out is not None:
dpnp.check_supported_arrays_type(out)
if dpu.get_execution_queue((exec_q, out.sycl_queue)) is None:
raise ExecutionPlacementError(
if dpt.get_execution_queue((exec_q, out.sycl_queue)) is None:
raise dpt.ExecutionPlacementError(
"Input and output allocation queues are not compatible"
)

Expand Down
7 changes: 2 additions & 5 deletions dpnp/dpnp_utils/dpnp_utils_statistics.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,6 @@

import warnings

import dpctl
from dpctl.utils import ExecutionPlacementError

import dpnp
import dpnp.tensor as dpt
from dpnp.dpnp_array import dpnp_array
Expand Down Expand Up @@ -67,9 +64,9 @@ def _calc_nanmedian(a, out=None):
res = dpnp.empty_like(valid_counts, dtype=a.dtype)
else:
dpnp.check_supported_arrays_type(out)
exec_q = dpctl.utils.get_execution_queue((a.sycl_queue, out.sycl_queue))
exec_q = dpt.get_execution_queue((a.sycl_queue, out.sycl_queue))
if exec_q is None:
raise ExecutionPlacementError(
raise dpt.ExecutionPlacementError(
"Input and output allocation queues are not compatible"
)
if out.shape != valid_counts.shape:
Expand Down
2 changes: 1 addition & 1 deletion dpnp/exceptions/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@
SyclQueueCreationError,
)
from dpctl.memory import USMAllocationError
from dpctl.utils import ExecutionPlacementError
from numpy.exceptions import AxisError

from dpnp.tensor import ExecutionPlacementError
from dpnp.tensor._dlpack import DLPackCreationError

__all__ = [
Expand Down
Loading
Loading