Skip to content

Releases: IntelPython/dpctl

0.10.0

28 Sep 13:41
Compare
Choose a tag to compare

Added

  • Added methods __bool__, __float__, __int__, __index__,
    and __complex__ to usm_ndarray (#578)
  • Added data-API required special methods to usm_ndarray class,
    as well as to_numpy/from_numpy, astype, reshape functions (#586)
  • Added methods to query dpctl.SyclDevice for size of global/local memory (#589)
  • Added tests for constructors with invalid capsules (#577)
  • Improved test coverage of dpctl.SyclQueue implementation (#574)
  • Added a test to exercise API exported function (get_event_ref). (#570)
  • Expanded tests in test_sycl_context to improve coverage (#571)
  • Tweaks to test_sycl_event to improve coverage (#567)
  • Improved coverage of dpctl.__init__ file and other service functions (#563)
  • Added test for repr and test for default argument to constructor (#565)
  • Added some tests to involve capsule (#564)
  • Added workflow for Public CI on Windows (#534)
  • DPCTLQueue_Memcpy, _Prefetch, _Memadvise become asynchronous (#557)
  • Added device aspect selector, dpctl.select_device_with_aspects (#558)
  • Added test based on example from #583

Changed

  • Parametrized tests for executing OpenCL kernels compiled from source in types of arguments (#581)
  • Temporary disabled self-hosted CI jobs runner (#559)
  • Changed static method SyclQueue._create_from_context_and_device (#579)
  • Transitioned all Python API to use pytest over unittest, improved coverage in dpctl/memory (#575)
  • Changed dpctl.SyclEvent.profiling_info_submit from method to a property (#573)
  • Simplified arg parsing in SyclDevice constructor (#572)
  • Used tag with alignment attribute set in README (#562)
  • Moved sycl timer into dpctl.SyclTimer (#555)
  • Used clang-format off, clang-format on to avoid include reordering in pybind11 example (#588)

Fixed

  • Implemented a workaround for running conda-build using Klocwork (#566)
  • Separated pipelines for Linux and Windows (#582)
  • Fixed inconsistency in __sycl_usm_array_interface__ of usm_ndarray instance (#584)
  • Fixed memory leak: Capsule deleters now free resources for renamed capsules too (#568)
  • Fixed version test to allow for semantic versioning (#569)
  • Improved coverage of _types.pxi (#556)
  • Fixed UnboundLocalError when default queue could not be created (#554)

0.9.0

16 Sep 09:45
Compare
Choose a tag to compare

Added

  • Improvements to logic for working with custom DPC++ toolchain (#481)
  • Add SyclContext unit test cases (#488)
  • Consolidate configurations of tools that support PEP 518 into pyproject.toml (#486)
  • Added C-API hash function, used them in Python interface (#491)
  • Add missing extra checks to ensure unwrapped pointer is not Null
  • Add error messages to L0 program creation routine
  • Improve test coverage for dpctl_sycl_queue_interface (#492)
  • Use pytest.warns in test_lsplatform3 (#495)
  • Added test class to test DRef=nullptr case (#496)
  • Extend parameterized test in test_sycl_queue_interface (#497)
  • Use Memcpy, memadvise in tests
  • Expanded types tests by TestQueueSubmitRange
  • Added a test that retrieved DPCPP compiled kernel and submits them via DPCTLQueue_SubmitRange (#499)
  • Add DPCTLEvent_Copy (#504), DPCTLEvent_GetBackend (#507), DPCTLEvent_GetCommandExecutionStatus (#516),
    DPCTLEvent_WaitAndThrow (#513), DPCTLEvent_GetWaitList (#510) functions
  • Propagate compile flags (#512)
  • Add conda package CI pipeline on GitHub Actions (#515)
  • Run tests on GPU (#518)
  • Add 3 wrapper func for event::get_profiling_info (#519)
  • Changes to build_backend.py to enable sycl-compiler-prefix on Windows
  • dtype keyword of usm_ndarray now supports np.double and other types (#526)
  • Implemented DPCTLQueue_SubmitBarrier, DPCTLQueue_SubmitBarrierForEvents,
    SyclQueue.submit_barrier (#524)
  • Added C-API DPCTLQueue_HasEnableProfiling
  • Added Python API SyclQueue.has_enable_profiling
  • Use public for data owning class definitions
  • Queue has enable profiling (#531)
  • Use public for data owning class definitions (#533)
  • Added logic to verify that all bits of property integer were recognized and used (#494)
  • Added support for some properties/methods of underluing device
  • A test for properties, method of q mirroring that of device
  • Conda build scripts should build wheels in the same setup invocation as install (#538)
  • Added install_requires keyword to setup call
  • Added requirements.txt files in dpctl/ and in dpctl/docs (#540)
  • Improved C-API for dpctl Cython classes, added example of using them in Pybind11 extension. (#550)
  • dpctl.SyclEvent acquired ability to get command status and get profiling information. (#553)

Changed

  • Moved DPCLSyclInterface library from MANIFEST.in (#482)
  • Refactored tests
  • Use dpcpp compiler package for Linux (#514)
  • Update conda-package.yml
  • Static methods _init_helper made into functions and removed from PXD files (#532)

Removed

  • Remove imports from future (#485)

Fixed

  • Fix sub devices (#479)
  • Fix addressof_ref function in SyclContext (#488)
  • Follow DPCTLDevice_CreateFromSelector which passes the check (#487)
  • Fix a typo in the pytest configuration (#490)
  • Fixed dbg_build.sh script for Linux to use L0
  • Reuse IntelSycl_LIBRARY_DIR variable in cmake
  • CXX, dpcpp used on Windows too
  • Update conda-recipe/bld.bat
  • Change to SyclQueue.repr to reflect properties (#531)
  • Static methods _init_helper made into functions and removed from PXD files (#532)
  • Fixed typo in pip installation instruction (#536)
  • Fixed dpctl_config.h, added dpctl_service.h, .cpp (#539)
  • Fixed __sycl_usm_array_interface__ output for 0d arrays (#547)

0.9.0dev1

22 Sep 20:03
58f78f5
Compare
Choose a tag to compare
0.9.0dev1 Pre-release
Pre-release
Added "part of oneAPI badge" (#549)

0.9.0dev0

22 Sep 20:03
3fc0bf4
Compare
Choose a tag to compare
0.9.0dev0 Pre-release
Pre-release
Add DPCTLEvent_WaitAndThrow func (#513)

0.8.0

27 May 01:05
48794f7
Compare
Choose a tag to compare

Added

Implemented support for constructing MemoryUSM* from object with sycl_usm_array_interface when array-info is not contiguous (#400)
Print the backend as part of SyclDevice.print_device_info function (#409)
Added dpctl/tensor/_usmarray submodule (#427)
Added arg checking to functions in dpctl_sycl_usm_interface.cpp (#430)
A static method of _Memory to create from external allocation (#430)
Added usm_ndarray accessors (#435)
Added Device class representing Data-API notion of device (#440)
Added free Python function as_usm_memory(obj) (#443) and associated unit tests (#449)
Dependency for numpy 1.17 (#445)
Add a flag to make doxygen HTML generation optional (#450)
Added a feature to get the filter string for a device from Python using the new dpctl.SyclDevice.get_filter_string method. Also added the corresponding DPCTLDeviceMgr_GetPositionInDevices(DRef, device_mask) C API function (#453)
New options to setup.py to specify which dpcpp compiler to use, if L0 program creation is to be supported, and to generate code coverage (#426)
Github action to check Python code quality (#422)
Github action to auto-publish Sphinx docs for master (#446)
Github action to generate coverage report and publish to coveralls.io (#459)

Changed

Rename dpctl.dptensor to dpctl.tensor (#407)
Changed repr for Memory objects (#442)
Used dpctl.SyclQueue instead of manager and get current queue in tests for SyclProgram (#448)

Fixed

Issue #189 dpctl.memory.MemoryUSMShared(np.int64(16)) should work (#392)
Use size_t instead of Py_ssize_t to fit device USM pointer (#405)
Various code quality issues identified by flake8 (#417, #419, #420, #422)
Fixed issues in slicing and array construction (#441)
Fixed an issue (#447) where dpctl.get_devices does not return devices in the same order as sycl::device::get_devices (#451)
L0 program creation support on Windows (#319)

Removed

Removing public keyword to get_current_queue Cython declaration (#437)

Changelog, sonversion on unix, docs updates

26 May 18:15
368911d
Compare
Choose a tag to compare

The 3rd RC tag of 0.8.0 has the following changes:

  • Soversion on linux was re-implemented using linker scripts to get around conda-build issues.
  • Docs have been updated for the latest API.
  • An unused function in dpctl.memory was removed.
  • Changelog was updated.

Hotfix to remove sonames from libDPCTLSyclInterface

25 May 19:17
414f0a6
Compare
Choose a tag to compare

Soname symlinks for libDPCTLSyclInterface are not getting properly copied in the conda package. We are removing soversions for the time being for 0.8.0.

First Release candidate for dpctl 0.8.0

25 May 04:44
27634ef
Compare
Choose a tag to compare
Pre-release
  1. First version of usm_ndarray and its companion libtensor C++ header-only library.
  2. Bug fixes.
  3. Major software quality improvements: flake8, isort, coveralls.
  4. Improvements to API docs.

0.7.0

04 May 15:02
f5cd7c7
Compare
Choose a tag to compare

Added

Complete support for sycl::ONEAPI::filter_selector in dpctl.
C API for sycl::queue (#323), syc::context (#331), and sycl::platform (#298) creation using opaque pointers.
A DPCTLDeviceMgr module in C API that caches a default context for root devices (#277).
DPCTLSyclBackendType and DPCTLSyclDeviceType have a new member ALL (#287).
C API now provides helper functions to convert between dpctl and SYCL enum values (#296).
Macros to help create opaque vector classes for opaque SYCL types (#297).
SyclDevice (#321), SyclContext (#334), SyclPlatform (#336, #298), SyclQueue (#323) have constructors that recognize filter selectors and closely follow DPC++ interface.
Add API to get a PyCapsule from SyclQueue, SyclContext instances (#350).
Added get_queue_ref_from_ptr_and_syclobj(ptr, syclobj) that creates DPCTLSyclQueueRef from a USM pointer and Python object syclobj from __sycl_usm_array_interface__ (#380).
Support for SYCL sub-devices, including sub-device creation, queue, and context creation using sub-devices (#343).
SyclDevice.parent_device property to indicate if an instance has a parent device (#366).
Several new getter functions for device info descriptors to device interface (#300, #335, #318, #315, #308).
Support for SYCL device aspects (#307).
Properties for every sycl::device info and aspect that we support in SyclDevice (#324).
Support handling async errors inside SylQueue instances (#346).
get_backend, get_platform, get_device_type to Python SyclDevice class (#300)
A _sycl_device_factory.pyx module providing SyclDevice constructors using standard sycl::device_selector classes (previously in _sycl_device.pyx) and a new get_devices (#277) function to enumerate all devices.
_sycl_device_factory.pyx implements get_num_devices and has_*_device(s) functions (#320).
Enable Python coverage in CI for Linux (#369).
Use public keyword in _sycl_*.pxd to generate header files allowing non-Cython centric native extensions to work with dpctl's Python objects (#218).
Documentation improvements (#341).

Changed

Rename dpCtl to dpctl in all comments, license headers, and docs. (#342)
dpctl.memory.MemoryUSM* constructors now use dpctl.SyclQueue() instead of dpctl.get_current_queue() when the queue keyword argument is None (default) (#382).
dpctl.set_default_queue has been renamed to dpctl.set_global_queue() (#323).
Changed dpctl.dump to dpctl.lsplatform (#336).
Various SyclDevice methods related to querying sycl::info::device were converted to properties (#324).
Various C API functions names were changed.

Fixed

Possible crashes when a SYCL platform is not available (#349).
Fix tests which fail if GPU is not available (only CPU is available) (#359).
Fix breaking C API tests (#358).
Bandit warning about "subprocess.check_call(shell=True)" for Windows (#306).

Removed

Removed get_num_platforms, has_cpu_queues, has_gpu_queues, get_num_queues, has_sycl_platforms (#320).

0.7.0rc1

19 Apr 22:43
f5cd7c7
Compare
Choose a tag to compare
0.7.0rc1 Pre-release
Pre-release

Added

Complete support for sycl::ONEAPI::filter_selector in dpctl.
C API for sycl::queue (#323), syc::context (#331), and sycl::platform (#298) creation using opaque pointers.
A DPCTLDeviceMgr module in C API that caches a default context for root devices (#277).
DPCTLSyclBackendType and DPCTLSyclDeviceType have a new member ALL (#287).
C API now provides helper functions to convert between dpctl and SYCL enum values (#296).
Macros to help create opaque vector classes for opaque SYCL types (#297).
SyclDevice (#321), SyclContext (#334), SyclPlatform (#336, #298), SyclQueue (#323) have constructors that recognize filter selectors and closely follow DPC++ interface.
Add API to get a PyCapsule from SyclQueue, SyclContext instances (#350).
Added get_queue_ref_from_ptr_and_syclobj(ptr, syclobj) that creates DPCTLSyclQueueRef from a USM pointer and Python object syclobj from __sycl_usm_array_interface__ (#380).
Support for SYCL sub-devices, including sub-device creation, queue, and context creation using sub-devices (#343).
SyclDevice.parent_device property to indicate if an instance has a parent device (#366).
Several new getter functions for device info descriptors to device interface (#300, #335, #318, #315, #308).
Support for SYCL device aspects (#307).
Properties for every sycl::device info and aspect that we support in SyclDevice (#324).
Support handling async errors inside SylQueue instances (#346).
get_backend, get_platform, get_device_type to Python SyclDevice class (#300)
A _sycl_device_factory.pyx module providing SyclDevice constructors using standard sycl::device_selector classes (previously in _sycl_device.pyx) and a new get_devices (#277) function to enumerate all devices.
_sycl_device_factory.pyx implements get_num_devices and has_*_device(s) functions (#320).
Enable Python coverage in CI for Linux (#369).
Use public keyword in _sycl_*.pxd to generate header files allowing non-Cython centric native extensions to work with dpctl's Python objects (#218).
Documentation improvements (#341).

Changed

Rename dpCtl to dpctl in all comments, license headers, and docs. (#342)
dpctl.memory.MemoryUSM* constructors now use dpctl.SyclQueue() instead of dpctl.get_current_queue() when the queue keyword argument is None (default) (#382).
dpctl.set_default_queue has been renamed to dpctl.set_global_queue() (#323).
Changed dpctl.dump to dpctl.lsplatform (#336).
Various SyclDevice methods related to querying sycl::info::device were converted to properties (#324).
Various C API functions names were changed.

Fixed

Possible crashes when a SYCL platform is not available (#349).
Fix tests which fail if GPU is not available (only CPU is available) (#359).
Fix breaking C API tests (#358).
Bandit warning about "subprocess.check_call(shell=True)" for Windows (#306).

Removed

Removed get_num_platforms, has_cpu_queues, has_gpu_queues, get_num_queues, has_sycl_platforms (#320).