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

Published: 03/19/2021  

Last Updated: 08/17/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
Default-constructed platform, device, and event No

DPC++ Extensions

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

Feature Available in DPC++ Compiler? Comments
C-CXX-StandardLibrary 2021.1  
sycl_ext_intel_bf16_conversion Experimental  
sycl_ext_intel_buffer_location 2021.1  
sycl_ext_intel_dataflow_pipes 2021.1 FGPA only
sycl_ext_intel_device_info 2021.1  
sycl_ext_intel_esimd 2022.2  
sycl_ext_intel_fpga_device_selector 2021.1  
sycl_ext_intel_fpga_lsu 2021.1  
sycl_ext_intel_fpga_reg 2021.1  
sycl_ext_intel_kernel_args_restrict 2021.1  
sycl_ext_intel_mem_channel_property 2021.1  
sycl_ext_intel_online_compiler Experimental  
sycl_ext_intel_usm_address_spaces 2021.1  
sycl_ext_oneapi_accessor_properties 2022.1  
sycl_ext_oneapi_assert Experimental  
sycl_ext_oneapi_backend_level_zero 2021.1  
sycl_ext_oneapi_complex_algorithms 2022.1  
sycl_ext_oneapi_default_context Experimental  
sycl_ext_oneapi_device_global No  
sycl_ext_oneapi_device_if No  
sycl_ext_oneapi_discard_queue_events 2022.1  
sycl_ext_oneapi_dot_accumulate 2021.1  
sycl_ext_oneapi_enqueue_barrier 2021.1  
sycl_ext_oneapi_extended_atomics 2021.1  
sycl_ext_oneapi_filter_selector 2021.1  
sycl_ext_oneapi_free_function_queries Experimental  
sycl_ext_oneapi_group_algorithms 2021.1  
sycl_ext_oneapi_group_load_store Experimental  
sycl_ext_oneapi_group_sort Experimental  
sycl_ext_oneapi_invoke_simd 2022.2  
sycl_ext_oneapi_kernel_properties No  
sycl_ext_oneapi_local_memory 2021.3  
sycl_ext_oneapi_local_static_mem_used No  
sycl_ext_oneapi_matrix Experimental  
sycl_ext_oneapi_max_work_group_query Experimental  
sycl_ext_oneapi_properties Experimental  
sycl_ext_oneapi_spec_constants 2021.1  
sycl_ext_oneapi_srgb 2021.2  
sycl_ext_oneapi_sub_group Partial  
sycl_ext_oneapi_sub_group_mask 2022.0  
sycl_ext_oneapi_uniform No  
sycl_ext_oneapi_use_pinned_host_memory_property 2021.2  
Non-uniform sub-groups No  
Reductions-multi-dimensional reduction vars No  
Sub-group memory No  
Unmasked No  
Graph API No  
Images API No  

 

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
mem_fence 2022.0 No
nd_item::barrier No 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
SYCL1.2.1 atomic No No
Some device::info queries No No
get_native 2022.0 No
get_id(), get_linear_id() and get_global_range() 2022.0 Yes

 

Product and Performance Information

1

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