SYCL* 2020 Specification Features and DPC++ Language Extensions Supported in Intel® oneAPI DPC++/C++ Compiler (dpcpp)

By Sravani Konda,

Published: 03/19/2021   Last Updated: 07/12/2021

The DPC++ Compiler compiles C++ and SYCL source files with code for both CPU and a wide range of compute accelerators such as GPU and FPGA. This article describes the status of support for SYCL 2020 specification features and DPC++ language extensions in the Intel® oneAPI DPC++/C++ Compiler releases.

SYCL 2020 Support

Following is the status of support for the SYCL 2020 Specification features in the dpcpp compiler:

Feature 2021.1 2021.2 2021.3 Comments
Accessor Simplifications No No No  
New Accessor interfaces No No No  
Accessor reversible container
constructor
No No No  
Accessor const T and
read_only behavior
No No No  
Accessor operator [] returns
const ref in read mode
Yes Yes Yes  
Address space – inference,
generics, decorated
Partial Partial Partial  
Atomics No Partial Partial  
Accessor meets C++ requirement of ReversibleContainer No No No  
Deduction guides Yes Yes Yes  
Default async_handler No No No  
Device aspects No Partial Partial  
Device optional feature
error handling
No No No  
Device specific
queries -  info::kernel_
device_specific
No Yes Yes  
Kernel_bundle No No Yes  
Exception derives from
std::exception
Yes Yes Yes  
Removal of exception
hierarchy and adding error
codes
No No No  
Extension
mechanism -  feature
test macros
No No No  
Extension namespaces No No No  
Group Algorithms (work-group) Partial Partial Partial  
Group algorithms (Sub-group) No No No  
Host Task Partial Partial Partial  
Images- sampled_image,
unsampled_image
No No No  
Immutable Kernels Yes Yes Yes  
In-order queues Yes Yes Yes  
Kernel Function type attributes Yes Yes Yes  
Math array No Yes Yes  
Multi_ptr (new
non-deprecated form)
No No No  
New Buffer constructor from
shared_ptr<T[]>
No No Yes  
New header file name No No Yes  
New property trains and
classes that support
properties
No No No  
New attribute style No No No  
Optional Lambda name Yes Yes Yes  
Parallel_for simplifications Yes Yes Yes  
Queue constructors taking
device + context
Yes Yes Yes  
Queue shortcuts Yes Yes Yes  
Reductions Partial Partial Partial  
Required work-group size Yes Yes Yes  
Specialization Constants No No No  
Standard layout relaxed Yes Yes Yes  
Sub-groups Partial Partial Partial  
Device_copyable No No No  
Sycl::bit_cast Partial Partial Partial Available as
sycl::detail::bit_cast
Sycl::vec_opeator[], +, -, …. Yes Yes Yes  
Unified Shared Memory Partial Partial Partial  

DPC++ Extensions

Following is the status of DPC++ language extensions in the dpcpp compiler:

Feature 2021.1 2021.2 2021.3 Comments
Accessor properties Partial Partial Partial  
CXX Standard Library Yes Yes Yes  
Data Flow pipes Yes Yes Yes FGPA only
Enqueued barriers Yes Yes Yes  
Explicit SIMD (ESIMD) Experimental Experimental Experimental  
Group mask No No No  
Local memory kernel-
scope allocation
No No Yes  
Non-uniform sub-groups No No No  
Pinned memory property No Yes Yes  
Reductions-multi-dimensional
reduction vars
No No No  
sg.invoke No No No  
free function queries Yes Yes Yes  
Restrict all arguments (SYCL_INTEL_kernel_restrict_all) Yes Yes Yes  

 

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.