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

Published: 03/19/2021  

Last Updated: 09/17/2021

By Sravani Konda

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 enabling support for the SYCL 2020 Specification features in the dpcpp compiler:

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

DPC++ Extensions

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

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

 

SYCL 1.2.1 Features Deprecation

Following is the availability of SYCL 1.2.1 features in the DPC++ Compiler and the status of their deprecation

Feature 2021.1 2021.2 2021.3 2021.4
cl:: namespace Available Available Available Available
CL/sycl.hpp header Available Available Available Available
OpenCL interoperability APIs Available Available Warnings Warnings
SYCL 1.2.1 image (incl sampler) Available Available Available Available
C++14 support Available Available Available Available
Accessor related deprecations (names, targets, modes) Available Available Available Available
Constant address space Available Available Available Available
Attribute propagation Available Available Available Warnings
vector_class, string_class, function_class, mutex_class, shared_ptr_class, weak_ptr_class, hash_class and exception_ptr_class aliases Available Available Available Partial warnings
Offsets to parallel_for, nd_range, nd_item and item Available Available Available Warnings
program class, some APIs of kernel class Available Available Partial warnings Warnings
nd_item::barrier && mem_fence Available Available Available Available
sycl::exception Available Available Available Warnings
parallel_for taking non0const lambdas Removed Removed Removed Removed
has_extension Available Available Available Warnings
multi_ptr API Available Available Available Available
cl::sycl::byte deprecation Available Available Available Warnings
get_count, get_size Available Available Available Warnings, stay supported in SYCL 2020
kernel::get_work_group_info Available Available Available Available
info::device::max_constant_buffer_size and info::device::max_constant_args Available Available Available Warnings
info::device::extensions and info::platform::extensions Available Available Available Warnings, stay supported in SYCL2020

 

Product and Performance Information

1

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