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 | 2024.0 |
New Accessor interfaces | 2024.0 |
Accessor reversible container constructor | 2024.0 |
Accessor const T and read_only behavior | 2024.0 |
Accessor meets C++ requirement of ReversibleContainer | 2024.0 |
Address space – inference, generics, decorated | 2023.0 |
Atomics | 2023.0 |
Deduction guides | 2021.1 |
Default async_handler | 2023.2 |
Device aspects | 2023.2 |
Device optional feature | 2024.0 |
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) | 2023.1 |
New Buffer constructor from shared_ptr<T[]> | 2021.3 |
New header file name | 2021.3 |
New property traits and classes that support properties | 2024.0 |
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 | 2023.0 |
group adjustments | 2023.0 |
New device selector interface | 2023.0 |
Default-constructed platform, device, and event | 2023.0 |
Add "any_device_has" and "all_devices_have" | 2024.0 |
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_device_architecture | Partial | |
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 | 2023.1 | |
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_memcpy2d | 2023.2 | |
sycl_ext_oneapi_weak_object | 2023.2 | |
sycl_ext_oneapi_use_pinned_host_memory_property | 2021.2 | |
sycl_ext_oneapi_user_defined_reductions | 2023.1 | |
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 | Yes |
Accessor related deprecations (names, targets, modes) | 2022.1 | No |
Constant address space | 2023.0 | 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 | Yes |
nd_item::barrier | No | No |
sycl::exception | 2021.4 | Yes |
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 | Yes |
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 | 2023.0 | Yes |
group methods | No | No |
SYCL1.2.1 atomic | No | No |
Some device::info queries | No | No |
get_native | 2022.0 | Yes |
get_id(), get_linear_id() and get_global_range() | 2022.0 | Yes |