Tested Standard C++ APIs#
The basic functionality for several C++ standard APIs has been tested for use in SYCL* kernels.
These APIs can be employed in device kernels similarly to how they are employed in code for a typical CPU-based platform.
The Tested Standard C++ APIs are added to the namespace oneapi::dpl
. The corresponding headers have been added in the
oneAPI DPC++ Library (oneDPL) package. In order to use these APIs via the namespace oneapi::dpl
, the headers in
<oneapi/dpl/...>
must be included. Currently, Tested Standard C++ APIs can be used in two ways:
Via the namespace
std::
and standard headers (for example:<utility>...
)Via the namespace
oneapi::dpl
and oneDPL headers (for example:<oneapi/dpl/utility>...
)
Below is an example code that shows how to use oneapi::dpl::swap
in SYCL device code:
#include <oneapi/dpl/utility>
#include <sycl/sycl.hpp>
#include <iostream>
#include <cstdint>
int main()
{
sycl::queue queue;
constexpr std::uint32_t size = 2;
std::uint32_t data[size] = {4, 5};
std::cout << "Initial data: " << data[0] << ", " << data[1] << std::endl;
sycl::buffer<std::uint32_t> buffer(data, size);
queue.submit([&](sycl::handler& cgh) {
auto access = buffer.get_access(cgh, sycl::read_write);
cgh.single_task<class KernelSwap>([=]() {
oneapi::dpl::swap(access[0], access[1]);
});
}).wait();
auto host_access = buffer.get_host_access(sycl::read_only);
std::cout << "After swap: " << host_access[0] << ", " << host_access[1] << std::endl;
return 0;
}
Use the following command to build and run the program (assuming it resides in the kernel_swap.cpp file
):
icpx -fsycl kernel_swap.cpp -o kernel_swap && ./kernel_swap
The printed result is:
Initial data: 4, 5
After swap: 5, 4
Tested Standard C++ API Reference#
C++ Standard API |
libstdc++ |
libc++ |
MSVC |
---|---|---|---|
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
|
|
Tested |
Tested |
|
|
Tested |
Tested |
|
|
Tested |
Tested |
|
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
|
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
|
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
|
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
|
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
|
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
|
Tested |
Tested |
Tested |
The testing was conducted for the following versions of the C++ standard libraries, with the help of the listed compilers:
C++ Standard Library |
C++ Standard Library Version |
SYCL Compiler Used |
---|---|---|
libstdc++ (GNU) |
Provided with GCC* 8.4.0, GCC 9.3.0, GCC 11.4.0, GCC 13.2.0 |
Intel® oneAPI DPC++/C++ Compiler |
Microsoft Visual C++* (MSVC) Standard Library |
Provided with Microsoft Visual Studio 2019 and Microsoft Visual Studio 2022. |
Intel® oneAPI DPC++/C++ Compiler |
libc++ (LLVM) |
Provided with Clang* 18.1, Clang 19.1, Clang 20.1 |
AdaptiveCpp |