SYCL#

Overview#

The oneAPI programming language is a combination of SYCL and a set of SYCL extensions that are listed below. The SYCL programming language is based on standard C++ and provides features to define data parallel functions and to launch them on accelerator devices. Unlike some other parallel languages, SYCL allows an application to mix both host code and device code together in the same source file, which provides a more intuitive parallel programming environment.

A conformant oneAPI implementation must implement the SYCL 2020 Specification, which is published by The Khronos Group.

A conformant oneAPI implementation must also implement the set of SYCL extensions listed in the Extensions Table. These extensions provide additional functionality beyond what is specified in the SYCL language. Some of these extensions are required only on certain devices types, as indicated in the table.

Table of SYCL Extensions#

Extension

CPU

GPU

FPGA

C-CXX-StandardLibrary

Required

Required

Not required 1

sycl_ext_oneapi_accessor_properties

Required

Required

Required

sycl_ext_oneapi_assert

Required

Required

Required

sycl_ext_oneapi_backend_level_zero

Required 2

Required 2

Required 2

sycl_ext_oneapi_default_context

Required

Required

Required

sycl_ext_oneapi_discard_queue_events

Required

Required

Required

sycl_ext_oneapi_dot_accumulate

Required

Required

Required

sycl_ext_oneapi_enqueue_barrier

Required

Required

Required

sycl_ext_oneapi_filter_selector

Required

Required

Required

sycl_ext_oneapi_local_memory

Required

Required

Required

sycl_ext_oneapi_srgb

Required

Required

Required

sycl_ext_oneapi_sub_group_mask

Required

Required

Required

sycl_ext_oneapi_use_pinned_host_memory_property

Required

Required

Required

sycl_ext_oneapi_usm_device_read_only

Required

Required

Required

sycl_ext_intel_buffer_location

Not required

Not required

Required

sycl_ext_intel_dataflow_pipes

Not required

Not required

Required

sycl_ext_intel_device_info

Required

Required

Required

sycl_ext_intel_fpga_device_selector

Required

Required

Required

sycl_ext_intel_fpga_lsu

Not required

Not required

Required

sycl_ext_intel_fpga_reg

Not required

Not required

Required

sycl_ext_intel_kernel_args_restrict

Required

Required

Required

sycl_ext_intel_mem_channel_property

Not required

Not required

Required

sycl_ext_intel_usm_address_spaces

Required

Required

Required

1

Likely to be required in the future

2(1,2,3)

Required if the device backend is Level Zero.