|
| 1 | +# June'20 release notes |
| 2 | + |
| 3 | +Release notes for the commit range ba404be..24726df |
| 4 | + |
| 5 | +## New features |
| 6 | + - Added switch to assume that each amount of work-items in each ND-range |
| 7 | + dimension if less that 2G (fits in signed integer), which allows underlying |
| 8 | + BEs to perform additional optimizations [fdcaeae] [08f8656] |
| 9 | + - Added partial support for [Host task with interop capabilities extension](https://github.com/codeplaysoftware/standards-proposals/blob/master/host_task/host_task.md) [ae3fd5c] |
| 10 | + - Added support for [SYCL_INTEL_bitcast](doc/extensions/Bitcast/SYCL_INTEL_bitcast.asciidoc) |
| 11 | + as a `sycl::detail::bit_cast` [e3da4ef] |
| 12 | + - Introduced the Level Zero plugin which enables SYCL working on top of Level0 |
| 13 | + API. Interoperability is not supportet yet [d32da99] |
| 14 | + - Implemented [parallel_for simplification extension](doc/extensions/ParallelForSimpification) [13fe9fb] |
| 15 | + - Implemented [SYCL_INTEL_enqueue_barrier extension](doc/extensions/EnqueueBarrier/enqueue_barrier.asciidoc) [da6bfd0] |
| 16 | + - Implemented [SYCL_INTEL_accessor_simplification extension](https://github.com/intel/llvm/pull/1498) [1f76efc] |
| 17 | + - Implemented OpenCL interoperability API following [SYCL Generalization proposal](https://github.com/KhronosGroup/SYCL-Shared/blob/master/proposals/sycl_generalization.md) [bae0639] |
| 18 | + |
| 19 | +## Improvements |
| 20 | +### SYCL Compiler |
| 21 | + - Now when `-fintelfpga` option is passed, the dependency file is created in |
| 22 | + the temporary files location instead of input source file location [7df381a] |
| 23 | + - Made `-std=c++17` the default for DPC++ [3192ee7] |
| 24 | + - Added support for kernel name types templated using enumerations |
| 25 | + [e7020a1][f9226d2][125b05c][07e8d8f] |
| 26 | + - Added a diagnostic on attempt to use host built-in functions inside device |
| 27 | + code [2a4c1c8] |
| 28 | + - Added diagnostics on attempt to use `sycl::accessor` created for |
| 29 | + unsupported types in the device code [6da42a0] |
| 30 | + - Aligned `sizeof(long double)` between host and device code [87e6240] |
| 31 | + - The pragma spelling for SYCL-specific attributes except |
| 32 | + `cl::reqd_work_group_size` are rejected now [8fe2846] |
| 33 | + - Added template parameter support for `cl::intel_reqd_sub_group_size` |
| 34 | + attribute [0ae9729] |
| 35 | + - Added support for more math builtins for PTX target [9370549] |
| 36 | + - Added support for struct members and pointers in `intelfpga::ivdep` |
| 37 | + attribute [358ec04] |
| 38 | + - Added support for all builtins from integer and shared categories for PTX |
| 39 | + target [f0a4fe2] |
| 40 | + - Improved handling of linker inputs for static lib processing [ed2846f] |
| 41 | + - Dependency files are not generated by default when compiling using |
| 42 | + `-fsycl -fintelfpga` options now [24726df] |
| 43 | + |
| 44 | +### SYCL Library |
| 45 | + - Updated the implementation to align with changes in |
| 46 | + [SubGroup extension](doc/extensions/SubGroup/SYCL_INTEL_sub_group.asciidoc) [9d4c284] |
| 47 | + - `sycl::ordered_queue` class has been removed [875347a] |
| 48 | + - Added support of rounding modes for floating and integer types in |
| 49 | + `sycl::vec::convert` [096d0a0] |
| 50 | + - Added support for USM vars and placeholder accessors passed to reduction |
| 51 | + version of `sycl::handler::parallel_for` [94cb022][2e73da7] |
| 52 | + - Added support of `sycl::intel::sub_group::load/store` which take |
| 53 | + `sycl::multi_ptr` with `sycl::access::address_space::local_space` [0f5b55b] |
| 54 | + - Added a diagnostic on attempt to recompile an AOT compiled program using |
| 55 | + `sycl::program` API [b031186] |
| 56 | + - Started using custom CUDA context by default as it shows better performance |
| 57 | + results [9d45ead] |
| 58 | + - Prevented NVIDIA OpenCL platform to be selected by a SYCL application |
| 59 | + [7146426] |
| 60 | + - Adjusted the diagnostic message on attempt to use local size which is |
| 61 | + greater than global size to be more informative [894c10d] |
| 62 | + - Added a cache for PI plugins, so subsequent calls for `sycl::device` |
| 63 | + creation should be cheaper [03dd60d] |
| 64 | + - A SYCL program will be aborted now if program linking is requested when |
| 65 | + using L0 plugin. This is done because L0 doesn't support program linking |
| 66 | + [d4a5b71] |
| 67 | + - Added a diagnostic on attempt to use `sycl::program::set_spec_constant` when |
| 68 | + the program is already in compiled or linked state [e2e3d3d] |
| 69 | + - Improved `sycl::stream` class implementation on the device side in order to |
| 70 | + reduce local memory consumption [b838f0e] |
| 71 | + |
| 72 | +### Documentation |
| 73 | + - Added [a table](doc/extensions/README.md) with DPC++ extensions status |
| 74 | + [dbbc474] |
| 75 | + - OpenCL CPU runtime installation instructions in |
| 76 | + [GetStartedGuide](doc/GetStartedGuide.md) and the installation script have |
| 77 | + been improved [9aa5029] |
| 78 | + - The [SYCL_INTEL_sub_group extension document](doc/extensions/SubGroup/SYCL_INTEL_sub_group.asciidoc) |
| 79 | + has been updated [010f112] |
| 80 | + - Render user API classes on a dedicated page [98b6ee4] |
| 81 | + |
| 82 | +## Bug fixes |
| 83 | +### SYCL Compiler |
| 84 | + - Fixed device code compile options passing which could lead to |
| 85 | + `CL_INVALID_COMPILER_OPTIONS` error [57bad9e] |
| 86 | + - Fixed a problem with creating a queue for FPGA device as a global inline |
| 87 | + variable [357e9c8] |
| 88 | + - Fixed an issue with that functions which are marked with `SYCL_EXTERNAL` are |
| 89 | + not participate in attribute propogation and conflicting attributes checking |
| 90 | + [0098eab] |
| 91 | + - Fixed an issue which could lead to problems when a kernel name contains a |
| 92 | + CVR qualified type [62e2f3b] |
| 93 | + - Fixed file processing when using `-fsycl-link`, now the generated object |
| 94 | + file can be linked by a non-SYCL enabled compiler/linker [2623abe] |
| 95 | + |
| 96 | +### SYCL Library |
| 97 | + - Fixed an issue with map/unmap events which caused problems with read only |
| 98 | + buffer accessors in CUDA backend [bf1b5b6] |
| 99 | + - Fixed errors happened when using `sycl::handler::copy` with `const void*`, |
| 100 | + `void*` or a `sycl::accessor` for a type with const qualifier [ddc0c9d] |
| 101 | + - Fixed an issue with copying memory to itself during `sycl::buffer` copyback |
| 102 | + [4bf22cc] |
| 103 | + - Fixed a possible deadlock which could happen when simultaneously submitting |
| 104 | + and waiting for kernels from multiple threads on Windows [ebace77] |
| 105 | + - Fixed a problem which caused device with a negative score to be still |
| 106 | + selected [7146426][855d214] |
| 107 | + - Fixed memleak which happened when using `sycl::program::get_kernel` |
| 108 | + [ccefc93] |
| 109 | + - Fixed memory copy being wrongly asynchronous which could cause data races |
| 110 | + on CUDA backend [4f0a3df] |
| 111 | + - Fixed a race which could happen when waiting for the same event from |
| 112 | + multiple threads [5737ad9] |
| 113 | + - Fixed errors which happened when using `half` or `double` types in reduction |
| 114 | + version of `sycl::handler::parallel_for` |
| 115 | + - Fixed `sycl::device::get_info<sycl::info::device::mem_base_addr_align>` |
| 116 | + query which was returning incorrect result for CUDA plugin [a6d03f3] |
| 117 | + - Fixed incorrect behavior of a `sycl::buffer` created with non-writable host |
| 118 | + data(e.g. `const int *`) on CUDA backend [49b6223] |
| 119 | + - A bunch of fixes to reduction version of `sycl::handler::parallel_for`: |
| 120 | + - Enabled `operator*`, `operator+`, `operator|`, `operator&`, `operator^=` |
| 121 | + for corresponding transparent functors used in reduction |
| 122 | + - Fixed the case when reduction object is passed as an R-value |
| 123 | + - Allowed identity-less constructors for reductions with transparent |
| 124 | + functors |
| 125 | + - Replaced some `auto` declarations with Reduction::result_type and added |
| 126 | + intermediate assignments/casts to avoid type ambiguities caused by using |
| 127 | + `sycl::half` type, and which may also be caused by custom/user types as |
| 128 | + well |
| 129 | + - Fixed compile time known identity values for `MIN` and `MAX` reductions |
| 130 | + |
| 131 | +## API/ABI breakages |
| 132 | + - All functions related to `sycl::ordered_queue` have been removed |
| 133 | + - Removed symbols corresponding to |
| 134 | + `sycl::info::kernel_sub_group::max_sub_group_size_for_ndrange` and |
| 135 | + `sycl::info::kernel_sub_group::sub_group_count_for_ndrange` queries |
| 136 | + |
| 137 | +## Known issues |
| 138 | + - [new] If there is an attribute `cl::intel_reqd_sub_group_size` with the |
| 139 | + same value for kernel and function called from the kernel there still can be |
| 140 | + compilation error. |
| 141 | + - The format of the object files produced by the compiler can change between |
| 142 | + versions. The workaround is to rebuild the application. |
| 143 | + - The SYCL library doesn't guarantee stable API/ABI, so applications compiled |
| 144 | + with older version of the SYCL library may not work with new one. |
| 145 | + The workaround is to rebuild the application. |
| 146 | + [ABI policy guide](doc/ABIPolicyGuide.md) |
| 147 | + - Using `cl::sycl::program` API to refer to a kernel defined in another |
| 148 | + translation unit leads to undefined behavior |
| 149 | + - Linkage errors with the following message: |
| 150 | + `error LNK2005: "bool const std::_Is_integral<bool>" (??$_Is_integral@_N@std@@3_NB) already defined` |
| 151 | + can happen when a SYCL application is built using MS Visual Studio 2019 |
| 152 | + version below 16.3.0 |
| 153 | + The workaround is to enable `-std=c++17` for the failing MSVC version. |
| 154 | + |
1 | 155 | # May'20 release notes
|
2 | 156 |
|
3 | 157 | Release notes for the commit range ba404be..67d3d9e
|
|
0 commit comments