Skip to content

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

New issue

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

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

Already on GitHub? # to your account

Merged
merged 2 commits into from
Mar 31, 2020
Merged
Changes from 1 commit
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
139 changes: 139 additions & 0 deletions sycl/ReleaseNotes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,142 @@
# February'20 release notes

Release notes for commit e8f1f29

## New features
- Added `__builtin_intel_fpga_mem` for the FPGA SYCL device. The builtin 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::uses_global_work_offset` attribute
[8bed533]
- 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 copiable. 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]
- Fixed output options behavior for `-fsycl-link` on Windows [67b24d46]
- Prevented duplication of error diagnostics for `-fsycl` [3a0b62e]
- Added diagnostic when attempting to use existing FPGA static library with
additional device code [6431be6]
- Renamed `intelfpga::uses_global_work_offset` attribute to
`intelfpga::no_global_work_offset` [5a9058b]
- 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 clean up finished command nodes of the execution graph in the
situations when the wait for a command to complete 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/SYCLCompilerUserManual.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]
- Also fixed link steps triggering for libraries specified using
`-foffload-static-lib` when no source or object file is provided [360b25b]

### 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 event not being retained when 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 macro with names 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. 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.
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
For MSVC version having the error the workaround is to use -std=c++17 switch.

## 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 recommended OpenCL CPU RT prerequisite for the SYCL compiler
Copy link
Contributor

@AGindinson AGindinson Mar 26, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
is recommended OpenCL CPU RT prerequisite for the SYCL compiler
is the recommended OpenCL CPU RT prerequisite for the DPC++ compiler

(the same applies to other prerequisites)
EDIT: The project renaming hasn't been done by that point, though... @pvchupin should be the best judge.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's merge as is. It's end of March already. These notes are coming quite late.

- 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 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 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 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/GetStartedWithSYCLCompiler.md#install-low-level-runtime)


# December'19 release notes

Release notes for commit 78d80a1cc628af76f09c53673ada906a3d2f0131
Expand Down