From 5787b9a17d939c76dd507c3cf108e1bbdfc331e0 Mon Sep 17 00:00:00 2001 From: Vlad Romanov Date: Thu, 26 Mar 2020 18:21:42 +0300 Subject: [PATCH 1/2] [SYCL] Release notes for February'20 SYCL implementation update Signed-off-by: Vlad Romanov --- sycl/ReleaseNotes.md | 139 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/sycl/ReleaseNotes.md b/sycl/ReleaseNotes.md index 076fa0a08e048..722691c01d036 100644 --- a/sycl/ReleaseNotes.md +++ b/sycl/ReleaseNotes.md @@ -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" (??$_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 +- 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. + +- 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 From 2af568f0d360452fa4b6aa6e3b3d9c25067e3403 Mon Sep 17 00:00:00 2001 From: Vlad Romanov Date: Fri, 27 Mar 2020 16:40:11 +0300 Subject: [PATCH 2/2] apply comments Signed-off-by: Vlad Romanov --- sycl/ReleaseNotes.md | 48 +++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/sycl/ReleaseNotes.md b/sycl/ReleaseNotes.md index 722691c01d036..9d72356829eea 100644 --- a/sycl/ReleaseNotes.md +++ b/sycl/ReleaseNotes.md @@ -3,32 +3,29 @@ Release notes for commit e8f1f29 ## New features - - Added `__builtin_intel_fpga_mem` for the FPGA SYCL device. The builtin is + - 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::uses_global_work_offset` attribute - [8bed533] + - 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` + - 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` + - 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 + 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] - - 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] @@ -51,9 +48,9 @@ Release notes for commit e8f1f29 (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 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] @@ -66,7 +63,7 @@ Release notes for commit e8f1f29 - 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] + [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] @@ -84,8 +81,9 @@ Release notes for commit e8f1f29 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 + - 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` @@ -94,47 +92,47 @@ Release notes for commit e8f1f29 `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 + - 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 macro with names SUCCESS or FAILED can break SYCL headers - because such names are used internally + - [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. Workaround is to rebuild the application. + 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. - Workaround is to rebuild the application. + 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" (??$_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. + 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 recommended OpenCL CPU RT prerequisite for the SYCL compiler + 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 recommended OpenCL GPU RT prerequisite for the SYCL compiler. + is the recommended OpenCL GPU RT prerequisite for the SYCL compiler. - 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 + 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 recommended OpenCL GPU RT prerequisite for the SYCL compiler. + 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/GetStartedWithSYCLCompiler.md#install-low-level-runtime) +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