Visible to Intel only — GUID: GUID-0E548876-5F38-4E37-BBB2-FD24C34827A1
oneMKL Usage
When using the SYCL* interfaces, there are a few changes to consider:
oneMKL has a dependency on the Intel oneAPI DPC++/C++ Compiler and Intel oneAPI DPC++ Library. Applications must be built with the Intel oneAPI DPC++/C++ Compiler, the SYCL headers made available, and the application linked with oneMKL using the DPC++ linker.
SYCL interfaces in oneMKL use device-accessible Unified Shared Memory (USM) pointers for input data (vectors, matrices, etc.).
Many SYCL interfaces in oneMKL also support the use of sycl::buffer objects in place of the device-accessible USM pointers for input data.
SYCL interfaces in oneMKL are overloaded based on the floating point types. For example, there are several general matrix multiply APIs, accepting single precision real arguments (float), double precision real arguments (double), half precision real arguments (half), and complex arguments of different precision using the standard library types std::complex<float>, std::complex<double>.
A two-level namespace structure for oneMKL is added for SYCL interfaces:
Namespace |
Description |
---|---|
oneapi::mkl |
Contains common elements between various domains in oneMKL |
oneapi::mkl::blas |
Contains dense vector-vector, matrix-vector, and matrix-matrix low level operations |
oneapi::mkl::lapack |
Contains higher-level dense matrix operations like matrix factorizations and eigensolvers |
oneapi::mkl::rng |
Contains random number generators for various probability density functions |
oneapi::mkl::stats |
Contains basic statistical estimates for single and double precision multi-dimensional datasets |
oneapi::mkl::vm |
Contains vector math routines |
oneapi::mkl::dft |
Contains fast fourier transform operations |
oneapi::mkl::sparse |
Contains sparse matrix operations like sparse matrix-vector multiplication and sparse triangular solver |