Repository navigation
Releases: IntelPython/dpctl
Release list
v0.18.1
This is incremental release where only installation instructions in README were updated to reflect the change in location of index with Python packages built by Intel(R) relative to 0.18.0 release.
v0.18.0
This release reaches an important milestone of making offloading fully asynchronous.
Calls to dpctl.tensor submit tasks for execution to DPC++ runtime and return without waiting for execution of these tasks to finish.
The sequential semantics a user comes to expect from execution of Python script is preserved though.
The full list of changes that went into this release are:
Added
- Implement
tensor.take_along_axisper Python Array API specification gh-1778 - Implement
tensor.put_along_axisto complementtensor.take_along_axisgh-1798 - Support for 'device=tensor.kDLCPU' in
tensor.from_dlpackfunction andtensor.usm_ndarray.__dlpack__method gh-1781 - Support DLPack on Windows gh-1746
- Implement
tensor.nextafterfunction per Python Array API specification gh-1730 - Implement
tensor.count_nonzeroandtensor.difffunctions from Python array API specification gh-1732, gh-1780 - Add support for
order="K"to*_likearray creation functions, and change defaultorderkeyword value from'C'to'K'gh-1808 - Support for 'max dimensions' in Array API capabilities info data gh-1774
- Add support for device aspect 'emulated' gh-1691
dpctl::tensor::usm_memoryclass defined indpctl4pybind11.hppadds constructor to create Python USM memory objects viewing into existing USM allocations, which can be made by an external library gh-1782- Add support for COVERAGE build type in project's CMake script gh-1692
Change
- Change ownership of USM allocation by
dpctl.memoryobjects, make executions ofdpctl.tensoroperations asynchronous gh-1705 - Add support for Python scalars by
tensor.wherefunction gh-1719 - Optimize division by Python scalar in statistical functions
tensor.mean,tensor.std,tensor.vargh-1820 - Use transcendental functions from
syclnamespace instead ofstdnamespace gh-1707 - Changes for compatibility with recent NumPy in runtime environment gh-1735, gh-1772, gh-1804
- Array creation function
tensor.zerosto use asynchronousmemsetoperation gh-1806 - The setter of
tensor.usm_ndarray.shapeproperty now supports Python scalar value gh-1786 - Use 'pyproject.toml' instead of 'setup.py' aligning with current packaging best practices gh-1660
- No longer set SOVERSION property in DPCTLSyclInterface library on Linux gh-1773
- Update version of 'pybind11' used gh-1758, gh-1812
- Handle possible exceptions by
usm_host_allocatorused withstd::vectorgh-1791 - Use
dpctl::tensor::offset_utils::sycl_free_noexceptinstead ofsycl::freeinhost_tasktasks associated with life-time management of temporary USM allocations gh-1797 - Add
"same_kind"-style casting for in-place mathematical operators oftensor.usm_ndarraygh-1827, gh-1830
Fixed
- Fix setting of release variable Sphinx config file gh-1685
- Handle possible NULL return value from device aspect queries
DPCTLDevice_GetMaxWorkGroupSize1dandDPCTLDevice_GetMaxWorkGroupSize2dgh-1690 - Add license header to conda script files gh-1695
- Fix
tensor.roundbehavior on CUDA devices gh-1700 - Add missing
#include <sstream>gh-1701 - Fix for issue 1724 gh-1728
- Correct USM type for return array of
tensor.extractfunction gh-1727 - Fix for
tensor.unique_allandtensor.unique_inverseto always return index arrays with default indexing data type gh-1741 - Propagate read-only flag from
__sycl_usm_array_interface__intensor.asarrayfunction gh-1756 tensor.clipto handle Python scalars which are out of bound for the data type of integral array gh-1759- Avoid dead-locking by releasing GIL around blocking operations in libtensor gh-1753
- Element-wise
tensor.divideand comparison operations allow greater range of Python integer and integer array combinations gh-1771 - Fix for unexpected behavior when using floating point types for array indexing gh-1792
- Enable
pytest --pyargs dpctl.testsgh-1833
Maintenance
- Improve performance of
test_sort_complex_fp_nangh-1704 - Improve exception wording raised by
tensor.broadcast_arrays()gh-1720 - Remove
templatekeyword in method call ofsycl::kernel_bundlegh-1726 - Backport changelog edits from maintenance/0.17.x gh-1736
- Replace uses of 'intel' channels in docs and readme file gh-1737
- Update references to deprecated environment variable
SYCL_DEVICE_FILTERgh-1740 - Correction for installation instruction steps gh-1754
- Fix for crash during testing with open source SYCL bundle by updating CPU RT library used gh-1762
- Add missing include to fix build break with newer LLVM gh-1776
- Add
#include <utility>for definition ofstd::moveused gh-1787 - Change to CMake script to accomodate DPC++ transition from PI to UR architecture gh-1788
- Document
tensor._flags.Flagsclass gh-1794 - Fix for unreferenced unreleased bug in copy-and-cast code logic gh-1799
- Explicitly include headers used in C++ translation units implementing reduction operations gh-1802
- Clean-up uses of
Strided1DIndexerclass gh-1805 - Tweak to readability of C++ code implementing matrix-matrix multiplication gh-1810
- Do not add
sycl::eventassociated with compute task to vector of events representing execution ofhost_taskgh-1807 - Remove 'level-zero' conda package from run-time dependencies of 'dpctl' since Intel GPU driver stack now explicitly depends on
libze1package which provides Level-Zero loader library gh-1801, gh-1840 - Use dedicated type-support matrices for in-place element-wise binary operations gh-1816
- Remove recommendation to install wheels from Anaconda PyPI index gh-1819
- Removed use of post-link and pre-unlink conda scripts in
dpctlgh-1821 - Pin compiler used to build 0.18.0 version to 2025.0.0 gh-1822
- A varienty of changes to continuous integration/delivery (CI/CD) supporting scripts to keep CI running smoothly:
gh-1686, gh-1688, gh-1697, gh-1698, gh-1703, gh-1702, gh-1709, gh-1712, gh-1713, gh-1722, gh-1725, gh-1729, gh-1733, [gh-1721](https...
0.17.0
This release features updated documentation web-page https://intelpython.github.io/dpctl/latest/index.html, adds cumulative reductions,
and complies with revision 2023.12 of Python Array API specification.
Added
- Added pybind11 caster for
sycl::halfto map to/from Pythonfloatto"dpctl4pybind11.hpp"header: gh-1655 - Added support for DLPack data interchange per Python Array API 2023.12 specification: gh-1667
- Implemented
tensor.cumulative_sum,tensor.cumulative_prodandtensor.cumulative_logsumexp: gh-1602
Changed
- Expanded documentation for
dpctl: gh-1619 - Expanded
utils.intel_device_infofunctionality: gh-1656 - Improved performance of elementwise operations: gh-1651
- Efficiency improvement by avoiding unnecessary copying of
sycl::queue: gh-1645 dpctluses pybind11 2.12.0: gh-1640- Improved performance of
tensor.reshapeoperation withorder="F"when copying is needed, or requested: gh-1677
Fixed
- Fixed initialization of byte type constants in
dpctl_capiPython/C API loader class in"dpctl4pybind11.hpp": gh-1665 - Fixed crash in
tensor.sortreported for a CPU device and a CUDA device: gh-1676 - Fixed race condition in accumulation kernel for custom operations that caused test failures with AMD CPUs: gh-1624
- Fixed comparison operators for mixed signed and unsigned integral types: gh-1650
- Support use of index arrays of different integral types in indexing operations: gh-47
- Fixed source code to compile for NVidia(TM) GPUs with DPC++ 2024.1: gh-1630
- Corrected
tensor.tilefor scalar inputs and empty repetitions: gh-1628 - Fixed support for
outkeyword intensor.matmul: gh-1610 - Fixed bug in basic slicing of empty arrays: gh-1680
- Fixed bug in
tensor.bitwise_invertfor boolean input array: gh-1681 - Fixed bug in
tensor.repeaton zero-size input arrays: gh-1682
New Contributors
- @bdmoore1 made their first contribution in #1659
- @ekomarova made their first contribution in #1666
Full Changelog: https://github.com/IntelPython/dpctl/blob/master/CHANGELOG.md
v0.16.1
This release includes bug fixes and provides a change needed by numba_dpex project to support dispatching kernels
consuming instances of sycl::local_accessor template type.
Changed
- Changed behavior of
dpctl.tensor.usm_ndarray.__dlpack_device__method to return device id of the parent unpartitioned device if array is allocated on a sub-device instead of raising an exception: #1604
- Array creation functions and the
usm_ndarrayconstructor indpctl.tensorsubmodule now use cached default-selected device to improve performance: #1606 - Changed treatment of
axiskeyword fordpctl.tensor.tensordotanddpctl.tensor.vecdotto align with Python Array API 2023.12 specification: #1608 - Changed implementation of
DPCTLQueue_SubmitRange,DPCTLQueue_SubmitNDRangein DPCTLSyclInterface library to supportsycl::local_accessorarguments needed bynumba_dpex; the enumDPCTLKernelArgT\ ypeto correspond to C++ disjoint types: #1609, #1611, #1612
Fixed
- Fixed a crash on Windows platform during execution of getter of
dpctl.SyclPlatfom.default_contextproperty: : #1604 - Fixed kernel submission error on NVidia CUDA GPUs during
dpctl.tensor.matmuloperation: #1605 - Fixed corruption of context cache table entries: #1607
- Fixed incorrect result from
dpctl.tensor.tensordotreported in issue #1570: #1608 - Fixed output of
python -m dpctl --libraryto fix specified library name: #1615
v0.16.0
This release is virtually identical to 0.15.1 as far as features are concerned.
This release is meant to be built with DPC++ 2024.1.0, that no longer support older integrated Gen9 Intel GPUs, such as those that came with Intel Core 10th generation and older.
v0.15.1
Summary
This release reaches milestone of 100% compliance of dpctl.tensor functions with Python Array API 2022.12 standard for the main namespace.
Added
- Added reduction functions
dpctl.tensor.min,dpctl.tensor.max,dpctl.tensor.argmin,dpctl.tensor.argmax, anddpctl.tensor.prodper Python Array API specifications: #1399 - Added dedicated in-place operations for binary elementwise operations and deployed them in Python operators of
dpctl.tensor.usm_ndarraytype: #1431, #1447 - Added new elementwise functions
dpctl.tensor.cbrt,dpctl.tensor.rsqrt,dpctl.tensor.exp2,dpctl.tensor.copysign,dpctl.tensor.angle, anddpctl.tensor.reciprocal: #1443, #1474 - Added statistical functions
dpctl.tensor.mean,dpctl.tensor.std,dpctl.tensor.varper Python Array API specifications: #1465 - Added sorting functions
dpctl.tensor.sortanddpctl.tensor.argsort, and set functionsdpctl.tensor.unique_values,dpctl.tensor.unique_counts,dpctl.tensor.unique_inverse,dpctl.tensor.unique_all: #1483 - Added linear algebra functions from the Array API namespace
dpctl.tensor.matrix_transpose,dpctl.tensor.matmul,dpctl.tensor.vecdot, anddpctl.tensor.tensordot: #1490, #1525, #1541 - Added
dpctl.tensor.clipfunction: #1444, #1505 - Added custom reduction functions
dpt.logsumexp(reduction using binary functiondpctl.tensor.logaddexp),dpt.reduce_hypot(reduction using binary functiondpctl.tensor.hypot): #1446 - Added inspection API to query capabilities of Python Array API specification implementation: #1469
- Support for compilation for NVIDIA(R) sycl target with use of CodePlay oneAPI plug-in: #1411, #1124
- Added
dpctl.utils.intel_device_infofunction to query additional information about Intel(R) GPU devices: gh-1428 and gh-1445 - Added support for two new device descriptors,
dpctl.SyclDevice.max_mem_alloc_sizeanddpctl.SyclDevice.max_clock_frequency: #1530
Changed
- Functions
dpctl.tensor.result_typeanddpctl.tensor.can_castbecame device-aware: #1488, #1473 - Implementation of method
dpctl.SyclEvent.wait_forchanged to usesycl::event::waitinstead ofsycl::event::wait_and_throw: gh-1436 dpctl.tensor.astypewas changed to supportdevicekeyword as per Python Array API specification: #1511- C++ header files in
libtensor/include/kernelscontaining implementations of SYCL kernels no longer depends on "pybind11.h": #1516
Fixed
v0.15.0
Summary
The 0.15.0 represents a milestone in which dpctl.tensor.usm_ndarray object now implements all special Python operators, except __matmul__ and __rmatmul__.
The dpctl.tensor increases its array-API conformance test suite pass rate to 81.8%, (passed: 916, failed: 84, skipped: 119).
Details
Added
- Added
dpctl.tensor.floor,dpctl.tensor.ceil,dpctl.tensor.truncelementwise functions. - Added
dpctl.tensor.hypot,dpctl.tensor.logaddexpelementwise functions. - Added trigonometric (
dpctl.tensor.sin,dpctl.tensor.cos,dpctl.tensor.tan) and hyperbolic (dpctl.tensor.sinh,dpctl.tensor.cosh,dpctl.tensor.tanh) elementwise functions and their inverses (dpctl.tensor.asin,dpctl.tensor.asinh,dpctl.tensor.acos,dpctl.tensor.acosh,dpctl.tensor.atan,dpctl.tensor.atanh). - Added
dpctl.tensor.roundfunction. - Added
dpctl.tensor.signanddpctl.tensor.remainderelementwise functions. - Added bitwise elementwise functions
dpctl.tensor.bitwise_and,dpctl.tensor.bitwise_xor,dpctl.tensor.bitwise_or,dpctl.tensor.bitwise_invert - Added bitwise shift functions
dpctl.tensor.bitwise_left_shiftanddpctl.tensor.bitwise_right_shift. - Added
dpctl.tensor.atan2anddpctl.tensor.signbitelementwise functions. - Added
dpctl.tensor.minumumanddpctl.tensor.maximumbinary elementwise functions. - Supported equality checking and hashing for
dpctl.SyclPlatform. - Implemented
typesproperty for all unary and binary elementwise functions #1361 - Added
dpctl.tensor.repeatanddpctl.tensor.tilefunctions. - Added
dpctl.tensor.matrix_transposefunction.
Changed
- Enabled support for Python arithmetic, in-place arithmetic, reflexive arithmetic, comparison, and bitwise operators for
dpctl.tensor.usm_ndarraytype #1324. - Removed
dpctl.tensor.numpy_usm_sharedobsolete class and associated tests which were being skipped #1310 - Transitioned
dpctlcodebase to Cython 3. - Improved performance of boolean reduction functions
dpctl.tensor.allanddpctl.tensor.any. - Improved performance of summation function
dpctl.tensor.sum. - Improved in-place arithmetic operations for addition, subtraction and multiplication.
- Updated codebase per SYCL-2020 intel/llvm compiler deprecation warnings.
- Improved performance of advanced boolean indexing for arrays whose size fits in 32-bit signed integer type.
- Removed deprecated
DPCTLDevice_GetMaxWorkItemSizesfunction from the SyclInterface library. - Improved performance of
dpctl.tensor.reshapein the case when a copy is being made. - Improved performance of
dpctl.tensor.rollfunction.
Fixed
v0.14.5
This release builds on 0.14.3 and 0.14.4 releases and addresses some performance gaps as well as implements several new elementwise functions.
Added
- Added
dpctl.tensor.log2anddpctl.tensor.log10: #1267 - Added
dpctl.tensor.negative,dpctl.tensor.positive,dpctl.tensor.square#1268 - Added
dpctl.tensor.logical_not,dpctl.tensor.logical_and,dpctl.tensor.logical_or,dpctl.tensor.logical_xor#1270
Changed
dpctl.tensor.astypebehavior fornewdtype=Nonechanges #1261dpctl.tensor.usm_ndarayconstructor default value ofdtypekeyword argument changed toNone: #1265- Support for
outarguments that overlap with inputs for unary elementwise functions#1281 - Copying from one array to another a no-op if both arrays view into the same memory #1284
v0.14.4
This is hot-fix for 0.14.3 release.
Added
- Added
dpctl.tensor.less_equal,dpctl.tensor.greater,dpctl.tensor.greater_equal: #1239
Changed
- Optimized in-place arithmetic operations for updating matrix with rows/columns via broadcasting: #1244
Fixed
- Fixed handling of 0d arrays in
dpctl.tensor.sum: #1238
v0.14.3
Added
- Added support of
axis=Noneindpctl.tensor.concat#1125 - Added caching for
dpctl.SyclDevice.filter_stringproperty #1127 - Added
dpctl.tensor.isdtypefrom array API #1133 - Added
dpctl.tensor.unstack,dpctl.tensor.moveaxis,dpctl.tensor.swapaxes#1137, #1174 - Allow for mutation of
dpctl.tensor.usm_ndarray.flags.writable#1141 - Added
dpctl.tensor.wherefrom array API #1147 - Include libtensor headers in
dpctlinstallation layout #1185 - Added new properties of
dpctl.tensor.usm_ndarrayobject #1199 - Added a list of unary and binary elementwise functions from array API:
- #1203:
dpctl.tensor.add,dpctl.tensor.divide,dpctl.tensor.isnan,dpctl.tensor.isinf,dpctl.tensor.isfinite,dpctl.tensor.cos,dpctl.tensor.abs,dpctl.tensor.equal - #1205:
dpctl.tensor.sqrt - #1209: implements
outkeyword argument - #1211:
dpctl.tensor.multiply,dpctl.tensor.subtract - #1214:
dpctl.tensor.not_equal - #1216:
dpctl.tensor.exp,dpctl.tensor.sin - #1217:
dpctl.tensor.real,dpctl.tensor.imag,dpctl.tensor.proj - #1218:
dpctl.tensor.log,dpctl.tensor.log1p,dpctl.tensor.expm1 - #1221:
dpctl.tensor.floor_divide - #1235:
dpctl.tensor.less - #1237: in-place support for addition, multiplication and subtraction
- #1203:
- Added
dpctl.tensor.allanddpctl.tensor.any#1204 - Added
dpctl.tensor.sum#1210
Changed
- Updated examples of native Python extensions built using
dpctl#1108 - Used security flags to compile and link native extensions of
dpctl#1109 - Changed types of
dpctl.tensor.finfoanddpctl.tensor.iinfooutput structure per array API spec #1110 - Consolidated multiple USM temporaries life-time management
host_tasks to improve test suite stability #1111 - MAINT: Improved cmake target dependency tracking #1112
- MAINT: Improved docstrings for existing
dpctl.tensorfunctions #1123 - Changed default value of
modekeyword indpctl.tensor.takeanddpctl.take.putfromcliptowrap#1132 - Added support for (nested) sequence of
dpctl.tensor.usm_ndarrayobjects indpctl.tensor.asarray#1139 - Improved exception handling in
dpctl.tensor.usm_ndarray.__setitem__special method #1146 - Simplified implementation of copy-and-cast kernels and removed special casing for 2D arrays to conserve binary size #1165
- Improved speed of
dpctl.tensor.usm_ndarrayprinting functionality #1187 - Require DPC++ RT 2023.1 to build and run
dpctl#1195 - Compile offloading native extensions with
-fno-sycl-id-queries-fit-in-intfixing gh-1184, #1200 - Transition to conda-forge ecosystem #1213
Fixed
- Fix to add empty values check for
dpctl.tensor.place#1105, #1106 - Fixed gh-1089 by improving
dpctl.tensor.asarrayhandling of NumPy arrays viewing into host-accessible USM allocation objects. - MAINT: Fixed build break with newer GCC and SYCLOS #1118
- Fixed a bug in basic indexing of
dpctl.tensor.usm_ndarray#1136