Skip to content

Commit

Permalink
Release Notes update for 2021.4 (#272) (#289)
Browse files Browse the repository at this point in the history
* Update release_notes.rst

Signed-off-by: Valentina Kats [email protected]

* Update release_notes.rst

Signed-off-by: Valentina Kats [email protected]

* Address review feedback

Signed-off-by: Valentina Kats [email protected]

* Add new known issue about ``-fopenm-simd`` option 

Signed-off-by: Valentina Kats [email protected]

* Remove note about internal hetero patterns rework

Signed-off-by: Valentina Kats [email protected]

* Address review feedback

Singed-off-by: Valentina Kats [email protected]

* Address review feedback

Signed-off-by: Valentina Kats [email protected]
  • Loading branch information
ValentinaKats authored Jun 28, 2021
1 parent b2b72ce commit bfe94bd
Showing 1 changed file with 56 additions and 3 deletions.
59 changes: 56 additions & 3 deletions documentation/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,59 @@ The Intel® oneAPI DPC++ Library (oneDPL) accompanies the Intel® oneAPI DPC++/C
and provides high-productivity APIs aimed to minimize programming efforts of C++ developers
creating efficient heterogeneous applications.

New in 2021.4
=============

New Features
------------
- Added the range-based versions of the following algorithms: ``any_of``, ``adjacent_find``,
``copy_if``, ``none_of``, ``remove_copy_if``, ``remove_copy``, ``replace_copy``,
``replace_copy_if``, ``reverse``, ``reverse_copy``, ``rotate_copy``, ``swap_ranges``,
``unique``, ``unique_copy``.
- Added new asynchronous algorithms: ``inclusive_scan_async``, ``exclusive_scan_async``,
``transform_inclusive_scan_async``, ``transform_exclusive_scan_async``.
- Added structured binding support for ``zip_iterator::value_type``.

Fixed Issues
------------
- Fixed an issue with asynchronous algorithms returning ``future<ptr>`` with unified shared memory (USM).

Known Issues and Limitations
----------------------------

New in This Release
^^^^^^^^^^^^^^^^^^^
- With Intel® oneAPI DPC++/C++ Compiler, ``unseq`` and ``par_unseq`` execution policies do not use OpenMP SIMD pragmas
due to compilation issues with the ``-fopenm-simd`` option, possibly resulting in suboptimal performance.
- The ``oneapi::dpl::experimental::ranges::reverse`` algorithm does not compile with ``-fno-sycl-unnamed-lambda`` option.

Existing Issues
^^^^^^^^^^^^^^^
- ``exclusive_scan`` and ``transform_exclusive_scan`` algorithms may provide wrong results with vector execution policies
when building a program with GCC 10 and using -O0 option.
- Some algorithms may hang when a program is built with -O0 option, executed on GPU devices and large number of elements is to be processed.
- The use of oneDPL together with the GNU C++ standard library (libstdc++) version 9 or 10 may lead to
compilation errors (caused by oneTBB API changes).
To overcome these issues, include oneDPL header files before the standard C++ header files,
or disable parallel algorithms support in the standard library.
For more information, please see `Intel® oneAPI Threading Building Blocks (oneTBB) Release Notes`_.
- The ``using namespace oneapi;`` directive in a oneDPL program code may result in compilation errors
with some compilers including GCC 7 and earlier. Instead of this directive, explicitly use
``oneapi::dpl`` namespace, or create a namespace alias.
- The implementation does not yet provide ``namespace oneapi::std`` as defined in `the oneDPL Specification`_.
- The use of the range-based API requires C++17 and the C++ standard libraries coming with GCC 8.1 (or higher)
or Clang 7 (or higher).
- ``std::tuple``, ``std::pair`` cannot be used with SYCL buffers to transfer data between host and device.
- When used within DPC++ kernels or transferred to/from a device, ``std::array`` can only hold objects
whose type meets DPC++ requirements for use in kernels and for data transfer, respectively.
- ``std::array::at`` member function cannot be used in kernels because it may throw an exception;
use ``std::array::operator[]`` instead.
- ``std::array`` cannot be swapped in DPC++ kernels with ``std::swap`` function or ``swap`` member function
in the Microsoft* Visual C++ standard library.
- Due to specifics of Microsoft* Visual C++, some standard floating-point math functions
(including ``std::ldexp``, ``std::frexp``, ``std::sqrt(std::complex<float>)``) require device support
for double precision.

New in 2021.3
=============

Expand Down Expand Up @@ -72,9 +125,9 @@ New Features
------------
- Added support of parallel, vector and DPC++ execution policies for the following algorithms: ``shift_left``, ``shift_right``.
- Added the range-based versions of the following algorithms: ``sort``, ``stable_sort``, ``merge``.
- Added non-blocking versions of the following algorithms: ``copy``, ``fill``, ``for_each``, ``reduce``, ``sort``, ``transform``, ``transform_reduce``.
These algorithms are declared in ``oneapi::dpl::experimental`` namespace with suffix _async and implemented only for DPC++ policies.
In order to make these algorithms available the ``<oneapi/dpl/async>`` header should be included. Use of the non-blocking API requires C++11.
- Added experimental asynchronous algorithms: ``copy_async``, ``fill_async``, ``for_each_async``, ``reduce_async``, ``sort_async``, ``transform_async``, ``transform_reduce_async``.
These algorithms are declared in ``oneapi::dpl::experimental`` namespace and implemented only for DPC++ policies.
In order to make these algorithms available the ``<oneapi/dpl/async>`` header should be included. Use of the asynchronous API requires C++11.
- Utility function ``wait_for_all`` enables waiting for completion of an arbitrary number of events.
- Added the ``ONEDPL_USE_PREDEFINED_POLICIES`` macro, which enables predefined policy objects and
``make_device_policy``, ``make_fpga_policy`` functions without arguments. It is turned on by default.
Expand Down

0 comments on commit bfe94bd

Please sign in to comment.