This section describes the Data Parallel C++ (DPC++) interface.
Dense Linear Algebra#
This section contains information about dense linear algebra routines:
BLAS Routines provides vector, matrix-vector, and matrix-matrix routines for dense matrices and vector operations.
LAPACK Routines provides more complex dense linear algebra routines, e.g., matrix factorization, solving dense systems of linear equations, least square problems, eigenvalue and singular value problems, and performing a number of related computational tasks.
Sparse Linear Algebra#
The oneAPI Math Kernel Library provides a Data Parallel C++ interface to some of the Sparse Linear Algebra routines.
Sparse BLAS provides basic operations on sparse vectors and matrices, and separates them into two stages: analysis (also called inspector stage or optimize stage) and execution. For a given matrix, the analysis would typically be called one time and the execution may be called multiple times. During the analysis stage, the API inspects the matrix properties including size, sparsity pattern and available parallelism and can apply matrix format or structure changes to enable a more optimized algorithm. In the execution stage, multiple routine calls can take advantage of the analysis stage data in order to improve performance.
In order to save information in between calls to Sparse BLAS computation routines, the matrix_handle_t type is introduced, that is essentially an opaque pointer, used to store data related to initial sparse matrix and data obtained during analysis stage.
Discrete Fourier Transforms#
The Discrete Fourier Transform Functions offer several options for computing Discrete Fourier Transforms (DFTs).
Random Number Generators#
The oneAPI Math Kernel Library Random Number Generators provides a set of routines implementing commonly used pseudorandom, quasi-random, and non-deterministic generators with continuous and discrete distributions.
The oneMKL provides a set of Summary Statistics routines that compute basic statistical estimates for single and double precision multi-dimensional datasets.
oneMKL Vector Mathematics functions (VM) compute a mathematical function of each of the vector elements. VM includes a set of functions (arithmetic, power, trigonometric, exponential, hyperbolic, special, and rounding) that operate on vectors of real and complex numbers.
Application programs that improve performance with VM include nonlinear programming software, computation of integrals, financial calculations, computer graphics, and many others.
VM functions fall into the following groups according to the operations they perform:
VM Mathematical Functions compute values of mathematical functions, such as sine, cosine, exponential, or logarithm, on vectors stored contiguously in memory.
VM Service Functions set/get the accuracy modes and the error codes, and create error handlers for mathematical functions.
The VM mathematical functions take an input vector as an argument, compute values of the respective function element-wise, and return the results in an output vector. All the VM mathematical functions can perform in-place operations, where the input and output arrays are at the same memory locations.