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

Published: 03/19/2021  

Last Updated: 03/10/2022

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 availability and version of DPC++ Compiler where support for the SYCL 2020 specification features or DPC++ language extensions was added. 

SYCL 2020 Support

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

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

DPC++ Extensions

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

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

 

SYCL 1.2.1 Features Deprecation

Following is the status of deprecation and removal of SYCL 1.2.1 features in dpcpp Compiler:

Feature Deprecated? Removed?
cl:: namespace 2022.1 No
CL/sycl.hpp header 2022.1 No
OpenCL interoperability APIs 2021.3  2022.0 
SYCL 1.2.1 image (incl sampler) No No
C++14 support 2022.0 No
Accessor related deprecations (names, targets, modes) 2022.1 No
Constant address space No No
Attribute propagation 2021.4 2022.0
vector_class, string_class, function_class, mutex_class, shared_ptr_class, weak_ptr_class, hash_class and exception_ptr_class aliases 2021.4 2022.0
Offsets to parallel_for, nd_range, nd_item and item 2021.4 No
program class, some APIs of kernel class 2021,3 2022.0
nd_item::barrier && mem_fence 2022.0 No
sycl::exception 2021.4 No
parallel_for taking non-const lambdas 2021.1 2021.1
has_extension 2021.4 No
multi_ptr API No No
cl::sycl::byte  2021.4 No
get_count, get_size 2021.4 No
kernel::get_work_group_info 2022.0 No
info::device::max_constant_buffer_size and info::device::max_constant_args 2021.4 No
info::device::extensions and info::platform::extensions 2021.4 No
non-template buffer_allocator No No
group methods No No

 

Product and Performance Information

1

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