Skip to content

[SYCL] Release notes for February'20 SYCL implementation update #1400

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 31, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 137 additions & 0 deletions sycl/ReleaseNotes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,140 @@
# February'20 release notes

Release notes for commit e8f1f29

## New features
- Added `__builtin_intel_fpga_mem` for the FPGA SYCL device. The built-in is
used to indicate the characteristics of the load-store unit (LSU) to be used
when de-referencing the pointer [1e33c01]
- Added support for the `intelfpga::no_global_work_offset` attribute
[8bed533] [5a9058b]
- Added basic xmethod implementation for `sycl::accessor::operator[]` to make
it callable from gdb command line [d6be8ff]
- Added device libraries for standard math like `std::cos` and `std::complex`
type [7abd9d5]

## Improvements
### SYCL Frontend and driver changes
- Added support for passing a non-type template parameter to the `loop_unroll`
attribute [8d7a32a]
- Relaxed the standard layout requirement for kernel arguments. Now by default
they should be trivially copyable. The `-sycl-std=1.2.1` driver option turns
standard layout requirement "on" [3adb4a5]
- Added diagnostic on using `__float128` type in the device code [659efdf]
- The `intelfpga::max_private_copies` has been renamed to
`intelfpga::private_copies` [97a199f]
- Prevented duplication of error diagnostics for `-fsycl` [3a0b62e]
- Added diagnostic when attempting to use existing FPGA static library with
additional device code [6431be6]
- Added support for non-type template parameters for FPGA memory attributes
[ffcad03]

### SYCL headers and runtime
- The `SYCL_DEVICE_WHITE_LIST` control was renamed to `SYCL_DEVICE_ALLOWLIST`
[4df18fa]
- Added a leaf limit to the execution graph to avoid leaf bloat in
applications that have an overwhelming number of command groups that can
be executed in parallel [7c293e2]
- Added `get_range()` method to the image and local accessors to align with
the SYCL specification [8ed5566]
- Added a diagnostic on attempt to create a context from devices that are
bound to different platforms [8f354f7]
- An ordered queue can now be created by passing
`sycl::property::queue::in_order` property to the `sycl::queue` constructor
[c855520]
- Added a diagnostic on attempt to create an accessor with an unsupported type
[306624e]
- Made host device return `nullptr` for bad USM allocation functions
(huge, 0, etc) [2a000d9]
- Added templated forms of USM allocation functions [42cf5bf]
- Added support for APIs that query properties of USM pointers [926e38e]
- Added cleanup of finished command nodes of the execution graph in the
situations when the `wait` for a command is called implicitly or explicitly
[438dc49]
- Added 2 `sycl::queue` constructors accepting `sycl::context` and
`sycl::device` arguments [c81c1c5]

### Documentation
- Added [documentation](doc/extensions/QueueShortcuts/QueueShortcuts.adoc) for
simplification of the `sycl::queue` functions [478b7c0]
- Added [documentation](doc/extensions/ReqdWorkGroupSize/SYCL_INTEL_reqd_work_group_size.asciidoc)
for `reqd_work_group_size` extension [c2c416a]
- The FAQ [document](doc/FAQ.md) was introduced [e42b40e]
- Added Ordered Queue Property
[proposal](doc/extensions/OrderedQueue/OrderedQueue_v2.adoc) [9fa878f]
- Added device code split options documentation to the
[user's manual](doc/UsersManual.md) [1355aa6]
- Added documentation for [ExtendedAtomics extension](doc/extensions/ExtendedAtomics/SYCL_INTEL_extended_atomics.asciidoc) [4445462]
- Removed old Ordered Queue proposal and make a note of deprecation [e8f1f29]

## Bug fixes
### SYCL Frontend and driver changes
- Fixed variable sharing passed by value to `parallel_for_work_group`
[d8ea63a]
- Do not produce an error if some restricted feature (e.g. exceptions) is used
by a function only referenced in unevaluated contexts [5eae571]
- Fixed problem with not cleaning up temporary files when device code split
feature is enabled [d86ee2f]
- Fixed issue with emitting wrong 'typename' keywords in the integration
header [c19372e]
- The SYCL target image registration functions have been renamed to avoid
conflicts with the OpenMP registration functions [82fd970]
- Avoid using `std::memcpy` in the device code [f39f47e]
- Fixed `-save-temps` option when used along with `-fsycl` [f7f4699]
- Fixed link steps triggering for libraries specified through
`-foffload-static-lib` when no source or object file is provided [360b25b]
- Fixed output options behavior for `-fsycl-link` on Windows [67b24d46]

### SYCL headers and runtime
- Fixed final result saturation in the host implementation of `sycl::mad_sat`
[54dddb4]
- Fixed a crash when a non-nullptr_t `0x0` value is passed to the
`sycl::buffer::set_final_data` method [6a0e279]
- Fixed an issue with copying sub-buffer between different contexts [0867a38]
- Resolved the problem when local accessor is a temporary object [1eed329]
- Fixed an issue with the event not being retained when a memory object is
constructed using interoperability constructors [0aabe7e]
- Fixed compilation of kernels which use `sycl::stream` for FPGA device
[c4dbaa2]
- Fixed execution graph cleanup on memory object destruction [7a75b54]

## Known issues
- [new] Defining a `SUCCESS` or `FAILED` can break SYCL headers because such
names are used internally
- [new] The format of the object files produced by the compiler can change
between versions. The workaround is to rebuild the application.
- [new] The SYCL library doesn't guarantee stable API/ABI, so applications
compiled with older version of the SYCL library may not work with new one.
The workaround is to rebuild the application.
- Using `cl::sycl::program` API to refer to a kernel defined in another
translation unit leads to undefined behaviour
- Linkage errors with the following message:
`error LNK2005: "bool const std::_Is_integral<bool>" (??$_Is_integral@_N@std@@3_NB) already defined`
can happen when a SYCL application is built using MS Visual Studio 2019
version below 16.3.0
The workaround is to enable `-std=c++17` for the failing MSVC version.

## Prerequisites
### Linux
- Experimental Intel(R) CPU Runtime for OpenCL(TM) Applications with SYCL
support version
[2020.10.3.0.04](https://github.com/intel/llvm/releases/download/2020-02/oclcpuexp-2020.10.3.0.04_rel.tar.gz)
is the recommended OpenCL CPU RT prerequisite for the SYCL compiler
- The Intel(R) Graphics Compute Runtime for OpenCL(TM) version
[20.06.15619](https://github.com/intel/compute-runtime/releases/tag/20.06.15619)
is the recommended OpenCL GPU RT prerequisite for the SYCL compiler.
<!--### Windows-->
- Experimental Intel(R) CPU Runtime for OpenCL(TM) Applications with SYCL
support version
[2020.10.3.0.04](https://github.com/intel/llvm/releases/download/2020-02/win-oclcpuexp-2020.10.3.0.04_rel.zip)
is the recommended OpenCL CPU RT prerequisite for the SYCL compiler
- The Intel(R) Graphics Compute Runtime for OpenCL(TM) version
[26.20.100.7870](https://downloadcenter.intel.com/download/29426/Intel-Graphics-Windows-10-DCH-Drivers)
is the recommended OpenCL GPU RT prerequisite for the SYCL compiler.

Please, see the runtime installation guide [here](https://github.com/intel/llvm/blob/sycl/sycl/doc/GetStartedGuide.md#install-low-level-runtime)


# December'19 release notes

Release notes for commit 78d80a1cc628af76f09c53673ada906a3d2f0131
Expand Down