Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
291 commits
Select commit Hold shift + click to select a range
0976171
Move _copy_usm_ndarray_for_reshape
vlad-perevezentsev Feb 17, 2026
318692e
Move reshape() to dpctl_ext/tensor
vlad-perevezentsev Feb 17, 2026
3c0c113
Reuse reshape from dpctl_ext in dpnp
vlad-perevezentsev Feb 17, 2026
30f2c53
Move _copy_usm_ndarray_for_roll
vlad-perevezentsev Feb 17, 2026
85c29da
Move roll() to dpctl_ext/tensor
vlad-perevezentsev Feb 17, 2026
6e8d857
Update dpnp.roll to use dpctl_ext
vlad-perevezentsev Feb 17, 2026
19e93b9
Update .gitignore to ignore .so files in dpctl_ext
vlad-perevezentsev Feb 18, 2026
b111e49
Remove unused includes in tensor_ctors.cpp
vlad-perevezentsev Feb 18, 2026
c082224
Use Python::Module for dpctl_ext static lib to avoid libpython depend…
vlad-perevezentsev Feb 18, 2026
9e7deb3
Merge move_tensor_impl_ext into move_tensor_impl_ext_part_2
vlad-perevezentsev Feb 18, 2026
1a736f7
Merge include-dpctl-tensor into move_tensor_impl_ext_part_2
vlad-perevezentsev Feb 19, 2026
8bde614
Merge move_tensor_impl_ext_part_2 into move_tensor_impl_copy
vlad-perevezentsev Feb 19, 2026
c3bc8ba
Move ti.mask_positions() and ti._cumsum_1d()
vlad-perevezentsev Feb 19, 2026
69b36b2
Move ti._extract(), ti._place(), ti._nonzero()
vlad-perevezentsev Feb 19, 2026
70a0fc6
Move place() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 19, 2026
afa5411
Move extract() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 19, 2026
7feb4ee
Move nonzero() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 19, 2026
f63f2f0
Move put_along_axis to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 19, 2026
6fecefe
Move take_along_axis() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 19, 2026
b60d095
Move ti._eye to() to dpctl_ext/tensor/libtensor
vlad-perevezentsev Feb 19, 2026
a1eea4e
Move eye() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 19, 2026
95ccf70
Move ti._repeat... to dpctl_ext/tensor
vlad-perevezentsev Feb 19, 2026
43f97cf
Move repeat() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 19, 2026
9b248f4
Move ti._where() to dpctl_ext/tensor/libtensor
vlad-perevezentsev Feb 19, 2026
24425cf
Move _type_utils.py to dpctl_ext/tensor
vlad-perevezentsev Feb 19, 2026
c88297c
Use import _type_utils from dpctl_ext
vlad-perevezentsev Feb 20, 2026
9207fc5
Move _broadcast_shape_impl to dpctl_ext/tenspr/_manipulation_fucntion…
vlad-perevezentsev Feb 20, 2026
ebbce34
Reuse can_cast() from dpctl_ext/tensor
vlad-perevezentsev Feb 20, 2026
6a13333
Reuse finfo(), iinfo(), isdtype() from dpctl_ext/tensor
vlad-perevezentsev Feb 20, 2026
de2c429
Reuse result_type() from dpctl_ext/tensor
vlad-perevezentsev Feb 20, 2026
9a97002
Move _scalar_utils.py to dpctl_ext/tensor
vlad-perevezentsev Feb 20, 2026
15c467d
Move where() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 20, 2026
134bb35
Update imports in dpnp/dpnp_iface_indexing.py
vlad-perevezentsev Feb 20, 2026
5fa6ee7
Merge move_tensor_impl_accum_bool_ind_eye into move_tensor_impl_repea…
vlad-perevezentsev Feb 20, 2026
c58b531
Enable -fno-fast-math compiler flag
vlad-perevezentsev Feb 20, 2026
4f00632
Move _clip to dpctl_ext/tensor/libtensor
vlad-perevezentsev Feb 20, 2026
5d45d85
Move clip() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 20, 2026
e70425b
Populate dispatch tables with where
vlad-perevezentsev Feb 20, 2026
36919c1
Move _linspace_step/_linspace_affine to dpctl_ext/tensor/libtensor
vlad-perevezentsev Feb 23, 2026
95ac4f7
Move ti.linspace() and reuse it in dpnp
vlad-perevezentsev Feb 23, 2026
1054e2d
Move ti.empty() and reuse it in dpctl_ext/tensor
vlad-perevezentsev Feb 23, 2026
d493454
Reuse dpctl_ext.tensor.empty() in dpnp
vlad-perevezentsev Feb 23, 2026
186ae3c
Move ti.empty_like() and reuse it in dpctl_ext/tensor
vlad-perevezentsev Feb 23, 2026
5503b9a
Reuse dpctl_ext.tensor.empty_like() in dpnp
vlad-perevezentsev Feb 23, 2026
748c5b5
Move ti.arange() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 23, 2026
a7370a8
Move ti.asarray() and reuse it in dpctl_ext/tensor
vlad-perevezentsev Feb 23, 2026
effcbe8
Reuse dpctl_ext.tensor.asarray() in dpnp
vlad-perevezentsev Feb 23, 2026
f9f547a
Move ti.full_like() to dpctl_ext/tensor
vlad-perevezentsev Feb 23, 2026
0d84d7b
Move ti.meshgrid() to dpctl_ext/tensor
vlad-perevezentsev Feb 23, 2026
8c15ddb
Move ti.ones() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 23, 2026
23d2229
Move ti.ones_like() to dpctl_ext/tensor
vlad-perevezentsev Feb 23, 2026
97dc7e1
Move ti.zeros() to dpctl_ext/tensor and reuse it in dpnp
vlad-perevezentsev Feb 23, 2026
a6c397e
Move ti.zeros_like() to dpctl_ext/tensor
vlad-perevezentsev Feb 23, 2026
b8c5390
Move ti.broadcast_to() to dpctl_ext/tensor and reuse it in dpctl_ext/…
vlad-perevezentsev Feb 23, 2026
a7cbfdc
Reuse dpctl_ext.tensor.broadcast_to() in dpnp
vlad-perevezentsev Feb 23, 2026
bd265da
Move ti.broadcast_arrays() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
080c7d8
Move ti.concat() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
ea7ea3c
Move ti.expand_dims() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
d2e9279
Move ti.flip() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
4e63cca
Move ti.permute_dims() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
9c88edb
Move ti.moveaxis() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
ba51636
Move ti.squeeze() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
bb16c19
Move ti.stack() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
ccad5f0
Move ti.swapaxes() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
b5e3541
Move ti.tile() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
325729b
Move ti.unstack() to dpctl_ext.tensor and reuse it
vlad-perevezentsev Feb 23, 2026
4552e78
Initialize _tensor_accumulation_impl extension and move _cumsum_over_…
vlad-perevezentsev Feb 27, 2026
6b81e7a
Move ti.cumulative_sum() and reuse it in dpnp
vlad-perevezentsev Feb 27, 2026
5af94c8
Move _cumprod_over_axis to dpctl_ext.tensor._tensor_accumulation_impl
vlad-perevezentsev Mar 2, 2026
91547cc
Add missing include
vlad-perevezentsev Mar 2, 2026
668f3fb
Move ti.cumulative_prod() and reuse it in dpnp
vlad-perevezentsev Mar 2, 2026
72d2109
Move _cumlogsumexp_over_axis to dpctl_ext.tensor._tensor_accumulation…
vlad-perevezentsev Mar 2, 2026
d8c3680
Move ti.cumulative_logsumexp() and reuse it in dpnp
vlad-perevezentsev Mar 2, 2026
a1d9b0a
Extend ignore-words-list codespell
vlad-perevezentsev Mar 2, 2026
8a87fea
Move utils rich_comparisons.hpp file
vlad-perevezentsev Mar 2, 2026
43a7a04
Initialize _tensor_sorting_impl extension and move _radix_sort and py…
vlad-perevezentsev Mar 2, 2026
1f018ec
Move _sort_ascending/descending to dpctl_ext.tensor._tensor_sorting_impl
vlad-perevezentsev Mar 2, 2026
b62d836
Move ti.sort() and reuse it in dpnp
vlad-perevezentsev Mar 2, 2026
82d202c
Move ti.unique_counts() and ti.unique_values() to dpctl_ext.tensor
vlad-perevezentsev Mar 2, 2026
893cdc3
Move _radix_argsort_ascending/descending to _tensor_sorting_impl
vlad-perevezentsev Mar 2, 2026
40c2b84
Move _argsort_ascending/descending to _tensor_sorting_impl
vlad-perevezentsev Mar 2, 2026
6912311
Move ti.argsort() to dpctl_ext.tensor and reuse it in dpnp
vlad-perevezentsev Mar 2, 2026
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
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
42a6ada
Merge include-dpctl-tensor into finalize_functional_migration
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
a9aadd9
Remove the warning suppress
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
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/build-sphinx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
name: Build and Deploy Docs

runs-on: ubuntu-22.04
timeout-minutes: 60
timeout-minutes: 90

permissions:
# Needed to cancel any previous runs that are not completed for a given workflow
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/generate_coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
name: Generate coverage and push to Coveralls.io

runs-on: ubuntu-latest
timeout-minutes: 120
timeout-minutes: 150

permissions:
# Needed to cancel any previous runs that are not completed for a given workflow
Expand Down Expand Up @@ -122,7 +122,7 @@ jobs:
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
shell: bash
timeout_minutes: 60
timeout_minutes: 120
max_attempts: 5
retry_on: error
command: |
Expand Down
5 changes: 1 addition & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,8 @@ dpnp_pytest.*
example3

*dpnp_backend*
dpnp/include/
dpnp/**/*.cpython*.so
dpnp/**/*.pyd
*~
core

# TODO: revert to `dpctl/`
# when dpnp fully migrates dpctl/tensor
dpctl_ext/**/*.cpython*.so
23 changes: 22 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,23 @@ project(
)

option(DPNP_GENERATE_COVERAGE "Enable build DPNP with coverage instrumentation" OFF)
option(
DPNP_TENSOR_GENERATE_COVERAGE_FOR_PYBIND11_EXTENSIONS
"Build dpnp tensor pybind11 offloading extensions with coverage instrumentation"
OFF
)
option(DPNP_BACKEND_TESTS "Enable building of DPNP backend test suite" OFF)
option(
DPNP_WITH_REDIST
"Build DPNP assuming DPC++ redistributable is installed into Python prefix"
OFF
)
option(
DPNP_TENSOR_OFFLOAD_COMPRESS
"Build using offload section compression feature of DPC++ to reduce \
size of shared object with offloading sections"
OFF
)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
Expand Down Expand Up @@ -344,5 +355,15 @@ if(DEFINED SKBUILD)
set(_ignore_me ${SKBUILD})
endif()

# DpnpTensorCAPI: Interface library for dpnp tensor C-API
# Provides access to:
# 1. Public C-API headers from dpnp/include
# 2. Generated Cython headers via per-target header interface libraries

add_library(DpnpTensorCAPI INTERFACE)
target_include_directories(
DpnpTensorCAPI
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/dpnp/include
)

add_subdirectory(dpnp)
add_subdirectory(dpctl_ext)
119 changes: 0 additions & 119 deletions dpctl_ext/CMakeLists.txt

This file was deleted.

96 changes: 96 additions & 0 deletions dpnp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,107 @@ function(build_dpnp_cython_ext _trgt _src _dest)
install(TARGETS ${_trgt} LIBRARY DESTINATION ${_dest})
endfunction()

function(build_dpnp_tensor_ext _trgt _src _dest)
set(options SYCL)
cmake_parse_arguments(BUILD_DPNP_TENSOR "${options}" "RELATIVE_PATH" "" ${ARGN})
add_cython_target(${_trgt} ${_src} CXX OUTPUT_VAR _generated_src)
set(_cythonize_trgt "${_trgt}_cythonize_pyx")
python_add_library(${_trgt} MODULE WITH_SOABI ${_generated_src})
if(BUILD_DPNP_SYCL)
add_sycl_to_target(TARGET ${_trgt} SOURCES ${_generated_src})
target_compile_options(${_trgt} PRIVATE -fno-sycl-id-queries-fit-in-int)
target_link_options(${_trgt} PRIVATE -fsycl-device-code-split=per_kernel)
if(DPNP_TENSOR_OFFLOAD_COMPRESS)
target_link_options(${_trgt} PRIVATE --offload-compress)
endif()
if(_dpnp_sycl_targets)
# make fat binary
target_compile_options(
${_trgt}
PRIVATE ${_dpnp_sycl_target_compile_options}
)
target_link_options(${_trgt} PRIVATE ${_dpnp_sycl_target_link_options})
endif()
endif()
target_link_libraries(${_trgt} PRIVATE Python::NumPy)
if(DPNP_GENERATE_COVERAGE)
target_compile_definitions(${_trgt} PRIVATE CYTHON_TRACE=1 CYTHON_TRACE_NOGIL=1)
if(BUILD_DPNP_TENSOR_SYCL)
target_compile_options(${_trgt} PRIVATE -fno-sycl-use-footer)
endif()
endif()
# Dpctl
target_include_directories(${_trgt} PRIVATE ${Dpctl_INCLUDE_DIR})
target_link_directories(${_trgt} PRIVATE ${Dpctl_INCLUDE_DIR}/..)
target_link_libraries(${_trgt} PRIVATE DPCTLSyclInterface)
set(_linker_options "LINKER:${DPNP_LDFLAGS}")
target_link_options(${_trgt} PRIVATE ${_linker_options})
get_filename_component(_name_wle ${_generated_src} NAME_WLE)
get_filename_component(_generated_src_dir ${_generated_src} DIRECTORY)
set(_generated_public_h "${_generated_src_dir}/${_name_wle}.h")
set(_generated_api_h "${_generated_src_dir}/${_name_wle}_api.h")

# TODO: create separate folder inside build folder that contains only
# headers related to this target and appropriate folder structure to
# eliminate shadow dependencies
# Go up two levels to build root for "dpnp/tensor/_usmarray.h" resolution
get_filename_component(_parent_dir ${_generated_src_dir} DIRECTORY)
get_filename_component(_build_root ${_parent_dir} DIRECTORY)
# TODO: do not set directory if we did not generate header
target_include_directories(${_trgt} INTERFACE ${_build_root})
set(_rpath_value "$ORIGIN")
if(BUILD_DPNP_TENSOR_RELATIVE_PATH)
set(_rpath_value "${_rpath_value}/${BUILD_DPNP_TENSOR_RELATIVE_PATH}")
endif()
if(DPNP_WITH_REDIST)
set(_rpath_value "${_rpath_value}:${_rpath_value}/../../..")
endif()
set_target_properties(${_trgt} PROPERTIES INSTALL_RPATH ${_rpath_value})

install(TARGETS ${_trgt} LIBRARY DESTINATION ${_dest})
install(
FILES ${_generated_api_h}
DESTINATION ${CMAKE_INSTALL_PREFIX}/dpnp/include/${_dest}
OPTIONAL
)
install(
FILES ${_generated_public_h}
DESTINATION ${CMAKE_INSTALL_PREFIX}/dpnp/include/${_dest}
OPTIONAL
)
if(DPNP_GENERATE_COVERAGE)
get_filename_component(_original_src_dir ${_src} DIRECTORY)
file(RELATIVE_PATH _rel_dir ${CMAKE_SOURCE_DIR} ${_original_src_dir})
install(FILES ${_generated_src} DESTINATION ${CMAKE_INSTALL_PREFIX}/${_rel_dir})
endif()

# Create target with headers only, because python is managing all the
# library imports at runtime
set(_trgt_headers ${_trgt}_headers)
add_library(${_trgt_headers} INTERFACE)
add_dependencies(${_trgt_headers} ${_trgt})
get_target_property(_trgt_headers_dir ${_trgt} INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories(${_trgt_headers} INTERFACE ${_trgt_headers_dir})
endfunction()

function(build_dpnp_cython_ext_with_backend _trgt _src _dest)
build_dpnp_cython_ext(${_trgt} ${_src} ${_dest})
target_link_libraries(${_trgt} PRIVATE dpnp_backend_library)
endfunction()

# Install dpnp C-API headers
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
DESTINATION ${CMAKE_INSTALL_PREFIX}/dpnp/include
FILES_MATCHING
REGEX "\\.h(pp)?$"
)

# Skip tensor build for coverage to reduce memory usage on Public CI
if(NOT DPNP_SKIP_TENSOR_BUILD)
add_subdirectory(tensor)
endif()

add_subdirectory(backend)
add_subdirectory(backend/extensions/blas)
add_subdirectory(backend/extensions/fft)
Expand Down
8 changes: 3 additions & 5 deletions dpnp/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@

import os
import sys
import warnings

mypath = os.path.dirname(os.path.realpath(__file__))

Expand Down Expand Up @@ -61,10 +60,9 @@
[os.getenv("PATH", ""), dll_path]
)

# Borrowed from DPCTL
with warnings.catch_warnings():
warnings.simplefilter("ignore", DeprecationWarning)
from dpctl.tensor import __array_api_version__, DLDeviceType
# TODO: revert to `from dpctl.tensor...`
# when dpnp fully migrates dpctl/tensor
from dpctl_ext.tensor import __array_api_version__, DLDeviceType

from .dpnp_array import dpnp_array as ndarray
from .dpnp_array_api_info import __array_namespace_info__
Expand Down
4 changes: 3 additions & 1 deletion dpnp/backend/extensions/blas/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ set(_module_src
pybind11_add_module(${python_module_name} MODULE ${_module_src})
add_sycl_to_target(TARGET ${python_module_name} SOURCES ${_module_src})

target_link_libraries(${python_module_name} PRIVATE DpnpTensorCAPI)

if(_dpnp_sycl_targets)
# make fat binary
target_compile_options(
Expand Down Expand Up @@ -68,7 +70,7 @@ target_include_directories(
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../common
${CMAKE_SOURCE_DIR}/dpnp/backend/include
${CMAKE_SOURCE_DIR}/dpctl_ext/tensor/libtensor/include
${CMAKE_SOURCE_DIR}/dpnp/tensor/libtensor/include
)

# treat below headers as system to suppress the warnings there during the build
Expand Down
4 changes: 3 additions & 1 deletion dpnp/backend/extensions/fft/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ set(_module_src ${CMAKE_CURRENT_SOURCE_DIR}/fft_py.cpp)
pybind11_add_module(${python_module_name} MODULE ${_module_src})
add_sycl_to_target(TARGET ${python_module_name} SOURCES ${_module_src})

target_link_libraries(${python_module_name} PRIVATE DpnpTensorCAPI)

if(_dpnp_sycl_targets)
# make fat binary
target_compile_options(
Expand Down Expand Up @@ -61,7 +63,7 @@ target_include_directories(
${python_module_name}
PRIVATE
${CMAKE_SOURCE_DIR}/dpnp/backend/include
${CMAKE_SOURCE_DIR}/dpctl_ext/tensor/libtensor/include
${CMAKE_SOURCE_DIR}/dpnp/tensor/libtensor/include
)

# treat below headers as system to suppress the warnings there during the build
Expand Down
4 changes: 3 additions & 1 deletion dpnp/backend/extensions/indexing/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ set(_module_src
pybind11_add_module(${python_module_name} MODULE ${_module_src})
add_sycl_to_target(TARGET ${python_module_name} SOURCES ${_module_src})

target_link_libraries(${python_module_name} PRIVATE DpnpTensorCAPI)

if(_dpnp_sycl_targets)
# make fat binary
target_compile_options(
Expand Down Expand Up @@ -65,7 +67,7 @@ target_include_directories(
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../common
${CMAKE_SOURCE_DIR}/dpnp/backend/include
${CMAKE_SOURCE_DIR}/dpctl_ext/tensor/libtensor/include
${CMAKE_SOURCE_DIR}/dpnp/tensor/libtensor/include
)

# treat below headers as system to suppress the warnings there during the build
Expand Down
Loading
Loading