SYCL* Compiler and Runtimes 2019-08
Pre-release
Pre-release
Description
The SYCL* Compiler compiles C++-based SYCL source files with code for both CPU and a wide range of compute accelerators. The compiler uses Khronos* OpenCL™ API to offload computations to accelerators.
This update includes:
New features
- Support for
image accessorhas been landed. - Added support for unnamed lambda kernels, so
parallel_forworks without
specifying "Kernel Name" type. This can be enabled by passing
-fsycl-unnamed-lambdaoption. - Kernel to kernel blocking and non-blocking pipe feature is implemented.
- Added support for Unified Shared Memory (USM).
Improvements
- Now clCreateSampler sampler is used for all version of OpenCL implementation.
- Added Intel FPGA specific command line interfaces for ahead of time
compilation. - FPGA memory attributes are now supported for static variables.
- Hierarchical parallelism is improved to pass conformance tests.
private_memoryclass has been implemented.- sycl.lib is automatically linked with -fsycl switch on Windows.
- Added support for Windows getOSModuleHandle.
- Functions with variadic arguments doesn't trigger compiler diagnostic about
calling convention. - Added experimental support for building and linking SYCL runtime with libc++
library instead of libstdc++. - Adjusted array and vec classes so they are more efficient for FPGA devices.
- Exception will be thrown on attempt to create image accessor for the device
which doesn't support images. - Use
llvm-objcopyfor merging device and host objects instead of doing
partial linking. - Check if online compiler is available before building the program.
- clCreateProgramWithILKHR is used if OpenCL implementation supports
cl_khr_il_program extension. - Reuse the pointer provided by the user in the
bufferconstructor (even if
use_host_ptrproperty isn't specified) if its alignment is sufficient. -Ldirnow can be used to find libraries with-foffload-static-libmax_concurrencyFPGA loop attribute now accepts zero.- Ignore incorrectly used FPGA loop attribute emitting user friendly warning
instead of compiler error. - Added
depends_onmethods ofhandlerclass which can be used to provide
additional dependency for a command group. - SYCL implementation can now be built on Windows using Visual Studio 2017 or
higher.
Bug fixes
- Fixed assertion failure when use
-save-tempsoption along with-fsycl. - Cached JITed programs are now released during destruction of
contextthey
are bound to, earlier release happened during a process shutdown. - Fixed
get_linear_idmethod ofgroupclass, now it calculate according to
row-major ordering. - Removed printing of error messages to stderr before throwing an exception.
- Explicit copy API of the handler class is asynchronous again.
fillmethod ofhandlerclass now takes element size into account.- Fixed bug with ignored several FPGA loop attributes in case of argument is 1.
- Fixed bug which prevented FPGA loop attributes work with infinite loops.
- Fixed problem which caused invalid/redundant memory copy operations to be
generated. - The commands created by Scheduler now cleaned up on destruction of
correspondingSYCLmemory objects (buffer,image). - 1 dimensional sub buffer is passed as cl_mem obtained by calling
clCreateSubBuffer when kernel is built from OpenCL C source. - Now copy of entire memory is performed when data is needed in new context even
if user requests accesses to only part of the memory. - Fixed problem with one element
vecobjects relation/logical operation which
was working like scalar. - Type casting and conditional operator (ternary 'if') with pointers now working
correctly. - The problem with calling inlined kernel from multiple TUs is fixed.
- Fixed compiler warnings for Intel FPGA attributes on host compilation.
- [TODO] Fix implementation of vec class for half
- Fixed buffer constructor which takes host data as shared_ptr. Now it increments
shared_ptr reference counter and reuses provided memory if possible. - Fixed a bug with nd_item.barrier not respecting fence_space flag
Experimental Intel(R) CPU Runtime for OpenCL™ Applications with SYCL support version 2019.8.7.0.0725_rel
- Minor bugfixes.
GPU target prerequisite
- The Intel(R) Graphics Compute Runtime for OpenCL™ version 19.29.13530 is recommended for this update. Can be downloaded separately from https://github.com/intel/compute-runtime/releases/tag/19.29.13530
See Release notes for more details on previous releases.