Intel® oneAPI DPC++ Library (oneDPL) Release Notes

ID 763673
Updated 6/20/2023
Version Latest
Public

author-image

By

Where to Find the Release

Please follow the steps to download the toolkit from the Base Toolkit Download, and follow the installation instructions.

Overview

The Intel® oneAPI DPC++ Library (oneDPL) accompanies the Intel® oneAPI DPC++/C++ Compiler and provides high-productivity APIs aimed to minimize programming efforts of C++ developers creating efficient heterogeneous applications.

2022.2.0

New Features

  • Added sort_by_key algorithm for key-value sorting.
  • Improved performance of the reduce, min_element, max_element, minmax_elementis_partitioned, and lexicographical_compare algorithms with DPC++ execution policies.
  • Improved performance of the reduce_by_segment, inclusive_scan_by_segment, and exclusive_scan_by_segment algorithms for binary operators with known identities when using DPC++ execution policies.
  • Improved sort algorithm performance for the arithmetic data types with std::less or std::greater comparison operator and DPC++ execution policies.
  • Added value_type to all views in oneapi::dpl::__ranges
  • Extended oneapi::dpl::experimental::ranges::sort to support projections applied to the range elements prior to comparison.   

Fixed Issues

  • The minimally required CMake version is raised to 3.11 on Linux and 3.20 on Windows.
  • Added new CMake package oneDPLIntelLLVMConfig.cmake to resolve issues using CMake 3.20+ on Windows for icx and icx-cl.
  • Fixed an error in the sort and stable_sort algorithms when performing a descending sort on signed numeric types with negative values.
  • Fixed an error in reduce_by_segment algorithm when a non-commutative predicate is used.
  • Fixed an error in sort and stable_sort algorithms for integral types wider than 4 bytes.
  • Fixed an error for some compilers where OpenMP or SYCL backend was selected by CMake scripts without full compiler support.
  • Fixed an error that caused segmentation faults in transform_reduce, minmax_element, and related algorithms when ran on CPU devices. 
  • Fixed a compilation error in transform_reduce, minmax_element, and related algorithms on FPGAs.
  • Fixed a radix sort issue with 64-bit signed integer types.

Known Issues and Limitations

New in This Release

  • Incorrect results may be produced with in-place scans using unseq and par_unseq policies on CPUs with the Intel® C++ Compiler 2021.8.

Existing Issues

See oneDPL Guide for other restrictions and known limitations

  • std::tuple, std::pair cannot be used with SYCL buffers to transfer data between host and device.
  • std::array cannot be swapped in DPC++ kernels with std::swap function or swap member function in the Microsoft* Visual C++ standard library.
  • The oneapi::dpl::experimental::ranges::reverse algorithm is not available with -fno-sycl-unnamed-lambda option.
  • STL algorithm functions (such as std::for_each) used in DPC++ kernels do not compile with the debug version of the Microsoft* Visual C++ standard library.

2022.1.0

New Features

  • Added generate, generate_n, transform algorithms to Tested Standard C++ API.
  • Improved performance of inclusive_scan, exclusive_scan, reduce,  and max_element algorithms with DPC++ execution policies.    

Fixed Issues

  • Added a workaround for the "TBB headers not found" issue occurring with libstdc++ version 9 when oneTBB headers are not present in the environment. The workaround requires inclusion of the oneDPL headers before the libstdc++ headers.
  • When possible, oneDPL CMake scripts now enforce C++17 as the minimally required language version.
  • Fixed an error in the ``exclusive_scan`` algorithm when the output iterator is equal to the input iterator (in-place scan).

Known Issues and Limitations

New in This Release

  • None in this release.

Existing Issues

  • std::tuple, std::pair cannot be used with SYCL buffers to transfer data between host and device.
  • std::array cannot be swapped in DPC++ kernels with std::swap function or swap member function in the Microsoft* Visual C++ standard library.
  • The oneapi::dpl::experimental::ranges::reverse algorithm is not available with -fno-sycl-unnamed-lambda option.
  • STL algorithm functions (such as std::for_each) used in DPC++ kernels do not compile with the debug version of the Microsoft* Visual C++ standard library.

NOTE: See oneDPL Guide for other restrictions and known limitations. 

 

2022.0.0

New Features

  • ​Added ``<complex>`` header functionality as Tested Standard C++ API.
  • Improved performance of ``sort`` and ``stable_sort``  algorithms on GPU devices when using Radix sort. The sorting algorithms in oneDPL use Radix sort for arithmetic data types compared with ``std::less`` or ``std::greater``, otherwise Merge sort.   

Fixed Issues

  • Fixed error in ``oneapi::dpl::experimental::ranges::guard_view`` and ``oneapi::dpl::experimental::ranges::zip_view`` when using  ``operator[]`` with a very large index. 
  • Fixed permutation_iterator to work with C++ lambda functions for index permutation. 
  • Fixed an error in ``oneapi::dpl::experimental::ranges::guard_view`` and ``oneapi::dpl::experimental::ranges::zip_view`` when using ``operator[]`` with an index exceeding the limits of a 32 bit integer type. 
  • Fixed errors when data size is 0 in ``upper_bound``, ``lower_bound`` and ``binary_search`` algorithms.

Changes Affecting Backward Compatibility

  • Removed support of C++11 and C++14.
  • Changed the size and the layout of the ``discard_block_engine`` class template.

    For further details, please refer to 2022.0 Changes.

Known Issues and Limitations

New in This Release

  • None in this release.

Existing Issues

  • std::tuple, std::pair cannot be used with SYCL buffers to transfer data between host and device.
  • std::array cannot be swapped in DPC++ kernels with std::swap function or swap member function in the Microsoft* Visual C++ standard library.
  • The oneapi::dpl::experimental::ranges::reverse algorithm is not available with -fno-sycl-unnamed-lambda option.
  • STL algorithm functions (such as std::for_each) used in DPC++ kernels do not compile with the debug version of the Microsoft* Visual C++ standard library.

NOTE: See oneDPL Guide for other restrictions and known limitations. 

​​​​​

 

Additional Documentation

Previous oneDPL Releases

Notices and Disclaimers

Intel technologies may require enabled hardware, software or service activation.

No product or component can be absolutely secure.

Your costs and results may vary.

© Intel Corporation. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Other names and brands may be claimed as the property of others.

No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.

The products described may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.

Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.