From f121e8be6eb7141c18e0ad0992d628b345c495c1 Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Sun, 8 Mar 2020 10:19:25 -0400 Subject: [PATCH 01/31] add support for CI from forks (#77) --- .github/workflows/main.yml | 9 ++++++--- .gitignore | 1 + scripts/oneapi.py | 10 +++++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d646e7baa0..80776ffccd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,13 +4,11 @@ on: [push] jobs: build: - runs-on: ubuntu-latest - container: rscohn2/oneapi-spec:latest steps: - uses: actions/checkout@v2 - - name: build in container + - name: Build env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID}} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY}} @@ -18,3 +16,8 @@ jobs: python3 scripts/oneapi.py spec-venv . spec-venv/bin/activate python scripts/oneapi.py --branch $GITHUB_REF ci + - name: Archive site + uses: actions/upload-artifact@v1 + with: + name: oneapi-spec-artifacts + path: site.zip diff --git a/.gitignore b/.gitignore index 9ae0d868f4..4295c8f454 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,6 @@ build /.vscode /site /tarballs +/site.zip __pycache__ diff --git a/scripts/oneapi.py b/scripts/oneapi.py index 61ee1ec0ea..8a27257ffd 100644 --- a/scripts/oneapi.py +++ b/scripts/oneapi.py @@ -42,6 +42,7 @@ import subprocess import tarfile import venv +from zipfile import ZipFile sys.path.insert(0, os.path.abspath(join('source','conf'))) import common_conf @@ -203,9 +204,16 @@ def build(root, target): @action def ci_publish(root, target=None): root_only(root) + with ZipFile('site.zip', 'w') as site_zip: + for r, dirs, files in os.walk('site', topdown=True): + # Exclude DAL API because it is 1.7G + if os.path.basename(r) == 'oneDAL': + dirs = remove_elements(dirs, ['api', '_sources']) + for file in files: + site_zip.write(join(r, file)) if not args.branch: exit('Error: --branch is required') - if 'AWS_SECRET_ACCESS_KEY' in os.environ: + if 'AWS_SECRET_ACCESS_KEY' in os.environ and os.environ['AWS_SECRET_ACCESS_KEY'] != '': shell('aws s3 sync --only-show-errors --delete site s3://%s/exclude/ci/branches/%s' % (staging_host, args.branch)) log('published at http://staging.spec.oneapi.com.s3-website-us-west-2.amazonaws.com/exclude/ci/branches/%s/' % (args.branch)) From 9c39e6edccc8dbd76c832b5752506ca738c7328d Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Sun, 8 Mar 2020 22:49:57 -0400 Subject: [PATCH 02/31] run ci on pull requests --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 80776ffccd..a1c39970eb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,6 +1,6 @@ name: CI -on: [push] +on: [push, pull_request] jobs: build: From 2010562a5fec1b7eea66690b2bd3cb7d2c440bfc Mon Sep 17 00:00:00 2001 From: Roma Dubtsov Date: Mon, 9 Mar 2020 16:32:39 -0700 Subject: [PATCH 03/31] start restructuring oneDNN spec (#80) Co-authored-by: Ben Fitch --- source/elements/oneDNN/include/dnnl.hpp | 5460 ++++++++++++----- source/elements/oneDNN/source/api/engine.rst | 13 + source/elements/oneDNN/source/api/memory.rst | 69 + .../elements/oneDNN/source/api/primitives.rst | 70 + .../source/api/primitives/attributes.rst | 33 + .../api/primitives/batch_normalization.rst | 29 + .../oneDNN/source/api/primitives/binary.rst | 17 + .../oneDNN/source/api/primitives/common.rst | 192 + .../oneDNN/source/api/primitives/concat.rst | 17 + .../source/api/primitives/convolution.rst | 27 + .../source/api/primitives/deconvolution.rst | 27 + .../oneDNN/source/api/primitives/eltwise.rst | 35 + .../source/api/primitives/inner_product.rst | 25 + .../api/primitives/layer_normalization.rst | 31 + .../source/api/primitives/logsoftmax.rst | 21 + .../oneDNN/source/api/primitives/lrn.rst | 22 + .../oneDNN/source/api/primitives/pooling.rst | 21 + .../oneDNN/source/api/primitives/reorder.rst | 18 + .../source/api/primitives/resampling.rst | 22 + .../oneDNN/source/api/primitives/rnn.rst | 51 + .../oneDNN/source/api/primitives/shuffle.rst | 21 + .../oneDNN/source/api/primitives/softmax.rst | 21 + .../oneDNN/source/api/primitives/sum.rst | 17 + source/elements/oneDNN/source/api/stream.rst | 15 + .../elements/oneDNN/source/api/utilities.rst | 20 + source/elements/oneDNN/source/index.rst | 23 +- 26 files changed, 4871 insertions(+), 1446 deletions(-) create mode 100644 source/elements/oneDNN/source/api/engine.rst create mode 100644 source/elements/oneDNN/source/api/memory.rst create mode 100644 source/elements/oneDNN/source/api/primitives.rst create mode 100644 source/elements/oneDNN/source/api/primitives/attributes.rst create mode 100644 source/elements/oneDNN/source/api/primitives/batch_normalization.rst create mode 100644 source/elements/oneDNN/source/api/primitives/binary.rst create mode 100644 source/elements/oneDNN/source/api/primitives/common.rst create mode 100644 source/elements/oneDNN/source/api/primitives/concat.rst create mode 100644 source/elements/oneDNN/source/api/primitives/convolution.rst create mode 100644 source/elements/oneDNN/source/api/primitives/deconvolution.rst create mode 100644 source/elements/oneDNN/source/api/primitives/eltwise.rst create mode 100644 source/elements/oneDNN/source/api/primitives/inner_product.rst create mode 100644 source/elements/oneDNN/source/api/primitives/layer_normalization.rst create mode 100644 source/elements/oneDNN/source/api/primitives/logsoftmax.rst create mode 100644 source/elements/oneDNN/source/api/primitives/lrn.rst create mode 100644 source/elements/oneDNN/source/api/primitives/pooling.rst create mode 100644 source/elements/oneDNN/source/api/primitives/reorder.rst create mode 100644 source/elements/oneDNN/source/api/primitives/resampling.rst create mode 100644 source/elements/oneDNN/source/api/primitives/rnn.rst create mode 100644 source/elements/oneDNN/source/api/primitives/shuffle.rst create mode 100644 source/elements/oneDNN/source/api/primitives/softmax.rst create mode 100644 source/elements/oneDNN/source/api/primitives/sum.rst create mode 100644 source/elements/oneDNN/source/api/stream.rst create mode 100644 source/elements/oneDNN/source/api/utilities.rst diff --git a/source/elements/oneDNN/include/dnnl.hpp b/source/elements/oneDNN/include/dnnl.hpp index 6429617fac..c9d951b48e 100644 --- a/source/elements/oneDNN/include/dnnl.hpp +++ b/source/elements/oneDNN/include/dnnl.hpp @@ -17,36 +17,50 @@ /// @file dnnl.hpp /// oneDNN API -/// @addtogroup onednn_api oneDNN API -/// @{ - #ifndef DNNL_HPP #define DNNL_HPP /// @cond DO_NOT_DOCUMENT_THIS #include -#include #include #include #include #include #include -#include "CL/sycl.hpp" +#include /// @endcond +/// @addtogroup dnnl_api DNNL API +/// @{ + +/// DNNL namespace namespace dnnl { -/// Exception class. +/// @addtogroup dnnl_api_utils Utilities +/// Utility types and definitions. +/// @{ + +/// The exception class. struct error : public std::exception {}; +/// @} dnnl_api_utils + struct stream; struct memory; +struct primitive_desc_base; + +/// @addtogroup dnnl_api_primitives Primitives +/// Compute primitives +/// @{ + +/// @addtogroup dnnl_api_primitives_common Common +/// Common operations to create, destroy and inspect primitives +/// @{ /// Base class for all computational primitives. -class primitive { -public: - /// Kinds of primitives supported of oneDNN. +struct primitive { + /// Kinds of primitives supported by the library. enum class kind { /// Undefined primitive undef, @@ -80,27 +94,56 @@ class primitive { rnn, /// A binary primitive. binary, + /// A logsoftmax primitive. + logsoftmax, + /// A matmul (matrix multiplication) primitive. + matmul, + /// A resampling primitive. + resampling, }; + /// Default constructor. Constructs an empty object. + primitive(); + + /// Constructs a primitive from a primitive descriptor. + /// + /// @param pd Primitive descriptor. + primitive(const primitive_desc_base &pd); + + /// Returns the kind of the primitive. + /// + /// @returns The primitive kind. + inline kind get_kind() const; + /// Executes computations specified by the primitive in a specified stream. /// + /// Arguments are passed via an arguments map containing pairs. The index must be one of the `DNNL_ARG_*` values + /// such as `DNNL_ARG_SRC`, and the memory must have a memory descriptor + /// matching the one returned by + /// primitive_desc::query_md(#query::exec_arg_md, index) unless using + /// dynamic shapes (see #DNNL_RUNTIME_DIM_VAL). + /// /// @param stream Stream object. The stream must belong to the same engine - /// as the primitive. + /// as the primitive. /// @param args Arguments map. - /// void execute( stream &stream, const std::unordered_map &args) const; - /// Executes computations specified by the primitive in a specified stream - /// (SYCL-aware version). + /// Executes computations specified by the primitive in a specified stream. + /// + /// Arguments are passed via an arguments map containing pairs. The index must be one of the `DNNL_ARG_*` values + /// such as `DNNL_ARG_SRC`, and the memory must have a memory descriptor + /// matching the one returned by + /// primitive_desc::query_md(#query::exec_arg_md, index) unless using + /// dynamic shapes (see #DNNL_RUNTIME_DIM_VAL). /// /// @param stream Stream object. The stream must belong to the same engine - /// as the primitive. + /// as the primitive. /// @param args Arguments map. - /// @param deps Vector of SYCL events that the execution should depend on. + /// @param deps Optional vector with `cl::sycl::event` dependencies. /// - /// @returns SYCL event that corresponds to the SYCL queue underlying the - /// @p stream. cl::sycl::event execute_sycl(stream &stream, const std::unordered_map &args, const std::vector &deps = {}) const; @@ -109,11 +152,211 @@ class primitive { primitive &operator=(const primitive &rhs); }; +/// Source argument #0. +#define DNNL_ARG_SRC_0 1 +/// A special mnemonic for source argument for primitives that have a +/// single source. An alias for #DNNL_ARG_SRC_0. +#define DNNL_ARG_SRC DNNL_ARG_SRC_0 +/// A special mnemonic for RNN input vector. An alias for +/// #DNNL_ARG_SRC_0. +#define DNNL_ARG_SRC_LAYER DNNL_ARG_SRC_0 +/// A special mnemonic for reorder source argument. An alias for +/// #DNNL_ARG_SRC_0. +#define DNNL_ARG_FROM DNNL_ARG_SRC_0 + +/// Source argument #1. +#define DNNL_ARG_SRC_1 2 +/// A special mnemonic for RNN input recurrent hidden state vector. An alias +/// for #DNNL_ARG_SRC_1. +#define DNNL_ARG_SRC_ITER DNNL_ARG_SRC_1 + +/// Source argument #2. +#define DNNL_ARG_SRC_2 3 +/// A special mnemonic for RNN input recurrent cell state vector. An alias for +/// #DNNL_ARG_SRC_2. +#define DNNL_ARG_SRC_ITER_C DNNL_ARG_SRC_2 + +/// Destination argument #0. +#define DNNL_ARG_DST_0 17 +/// A special mnemonic for destination argument for primitives that have a +/// single destination. An alias for #DNNL_ARG_DST_0. +#define DNNL_ARG_DST DNNL_ARG_DST_0 +/// A special mnemonic for reorder destination argument. An alias for +/// #DNNL_ARG_DST_0. +#define DNNL_ARG_TO DNNL_ARG_DST_0 +/// A special mnemonic for RNN output vector. An alias for #DNNL_ARG_DST_0. +#define DNNL_ARG_DST_LAYER DNNL_ARG_DST_0 + +/// Destination argument #1. +#define DNNL_ARG_DST_1 18 +/// A special mnemonic for RNN input recurrent hidden state vector. An +/// alias for #DNNL_ARG_DST_1. +#define DNNL_ARG_DST_ITER DNNL_ARG_DST_1 + +/// Destination argument #2. +#define DNNL_ARG_DST_2 19 +/// A special mnemonic for LSTM output recurrent cell state vector. An +/// alias for #DNNL_ARG_DST_2. +#define DNNL_ARG_DST_ITER_C DNNL_ARG_DST_2 + +/// Weights argument #0. +#define DNNL_ARG_WEIGHTS_0 33 +/// A special mnemonic for primitives that have a single weights +/// argument. Alias for #DNNL_ARG_WEIGHTS_0. +#define DNNL_ARG_WEIGHTS DNNL_ARG_WEIGHTS_0 +/// A special mnemonic for scale and shift argument of normalization +/// primitives. Alias for #DNNL_ARG_WEIGHTS_0. +#define DNNL_ARG_SCALE_SHIFT DNNL_ARG_WEIGHTS_0 +/// A special mnemonic for RNN weights applied to the layer input. An +/// alias for #DNNL_ARG_WEIGHTS_0. +#define DNNL_ARG_WEIGHTS_LAYER DNNL_ARG_WEIGHTS_0 + +/// Weights argument #1. +#define DNNL_ARG_WEIGHTS_1 34 +/// A special mnemonic for RNN weights applied to the recurrent input. +/// An alias for #DNNL_ARG_WEIGHTS_1. +#define DNNL_ARG_WEIGHTS_ITER DNNL_ARG_WEIGHTS_1 + +/// Bias tensor argument. +#define DNNL_ARG_BIAS 41 + +/// Mean values tensor argument. +#define DNNL_ARG_MEAN 49 +/// Variance values tensor argument. +#define DNNL_ARG_VARIANCE 50 + +/// Workspace tensor argument. Workspace is used to pass information +/// from forward propagation to backward propagation computations. +#define DNNL_ARG_WORKSPACE 64 +/// Scratchpad (temporary storage) tensor argument. +#define DNNL_ARG_SCRATCHPAD 80 + +/// Gradient (diff) of the source argument #0. +#define DNNL_ARG_DIFF_SRC_0 129 +/// A special mnemonic for primitives that have a single diff source argument. +/// An alias for #DNNL_ARG_DIFF_SRC_0. +#define DNNL_ARG_DIFF_SRC DNNL_ARG_DIFF_SRC_0 +/// A special mnemonic for gradient (diff) of RNN input vector. An alias for +/// #DNNL_ARG_DIFF_SRC_0. +#define DNNL_ARG_DIFF_SRC_LAYER DNNL_ARG_DIFF_SRC_0 + +/// Gradient (diff) of the source argument #1. +#define DNNL_ARG_DIFF_SRC_1 130 +/// A special mnemonic for gradient (diff) of RNN input recurrent hidden state +/// vector. An alias for #DNNL_ARG_DIFF_SRC_1. +#define DNNL_ARG_DIFF_SRC_ITER DNNL_ARG_DIFF_SRC_1 + +/// Gradient (diff) of the source argument #2. +#define DNNL_ARG_DIFF_SRC_2 131 +/// A special mnemonic for gradient (diff) of RNN input recurrent cell state +/// vector. An alias for #DNNL_ARG_DIFF_SRC_1. +#define DNNL_ARG_DIFF_SRC_ITER_C DNNL_ARG_DIFF_SRC_2 + +/// Gradient (diff) of the destination argument #0. +#define DNNL_ARG_DIFF_DST_0 145 +/// A special mnemonic for primitives that have a single diff destination +/// argument. An alias for #DNNL_ARG_DIFF_DST_0. +#define DNNL_ARG_DIFF_DST DNNL_ARG_DIFF_DST_0 +/// A special mnemonic for gradient (diff) of RNN output vector. An alias for +/// #DNNL_ARG_DIFF_DST_0. +#define DNNL_ARG_DIFF_DST_LAYER DNNL_ARG_DIFF_DST_0 + +/// Gradient (diff) of the destination argument #1. +#define DNNL_ARG_DIFF_DST_1 146 +/// A special mnemonic for gradient (diff) of RNN input recurrent hidden state +/// vector. An alias for #DNNL_ARG_DIFF_DST_1. +#define DNNL_ARG_DIFF_DST_ITER DNNL_ARG_DIFF_DST_1 + +/// Gradient (diff) of the destination argument #2. +#define DNNL_ARG_DIFF_DST_2 147 +/// A special mnemonic for gradient (diff) of RNN input recurrent cell state +/// vector. An alias for #DNNL_ARG_DIFF_DST_2. +#define DNNL_ARG_DIFF_DST_ITER_C DNNL_ARG_DIFF_DST_2 + +/// Gradient (diff) of the weights argument #0. +#define DNNL_ARG_DIFF_WEIGHTS_0 161 +/// A special mnemonic for primitives that have a single diff weights +/// argument. Alias for #DNNL_ARG_DIFF_WEIGHTS_0. +#define DNNL_ARG_DIFF_WEIGHTS DNNL_ARG_DIFF_WEIGHTS_0 +/// A special mnemonic for diff of scale and shift argument of normalization +/// primitives. Alias for #DNNL_ARG_DIFF_WEIGHTS_0. +#define DNNL_ARG_DIFF_SCALE_SHIFT DNNL_ARG_DIFF_WEIGHTS_0 +/// A special mnemonic for diff of RNN weights applied to the layer input. An +/// alias for #DNNL_ARG_DIFF_WEIGHTS_0. +#define DNNL_ARG_DIFF_WEIGHTS_LAYER DNNL_ARG_DIFF_WEIGHTS_0 + +/// Gradient (diff) of the weights argument #1. +#define DNNL_ARG_DIFF_WEIGHTS_1 162 +/// A special mnemonic for diff of RNN weights applied to the recurrent input. +/// An alias for #DNNL_ARG_DIFF_WEIGHTS_1. +#define DNNL_ARG_DIFF_WEIGHTS_ITER DNNL_ARG_DIFF_WEIGHTS_1 + +/// Gradient (diff) of the bias tensor argument. +#define DNNL_ARG_DIFF_BIAS 169 + +/// Output scaling factors provided at execution time. +#define DNNL_ARG_ATTR_OUTPUT_SCALES 513 + +/// Starting index for source arguments for primitives that take a variable +/// number of source arguments. +#define DNNL_ARG_MULTIPLE_SRC 1024 +/// Starting index for destination arguments for primitives that produce a +/// variable number of destination arguments. +#define DNNL_ARG_MULTIPLE_DST 2048 + +/// Zero points provided at execution time. +#define DNNL_ARG_ATTR_ZERO_POINTS 4096 + +/// A wildcard value for dimensions that are unknown at a primitive creation +/// time. +#define DNNL_RUNTIME_DIM_VAL INT64_MIN + +/// A `size_t` counterpart of the #DNNL_RUNTIME_DIM_VAL. +/// For instance, this value is returned by #dnnl::memory::desc::get_size() if +/// either of the dimensions or strides equal to #DNNL_RUNTIME_DIM_VAL. +#define DNNL_RUNTIME_SIZE_VAL ((size_t)DNNL_RUNTIME_DIM_VAL) + +/// @cond DO_NOT_DOCUMENT_THIS +/// Hex representation for a **special** quiet NAN (!= NAN from math.h) +static const union { + unsigned u; + float f; +} DNNL_RUNTIME_F32_VAL_REP = {0x7fc000d0}; +/// @endcond + +/// A wildcard value for floating point values that are unknown at a primitive +/// creation time. +#define DNNL_RUNTIME_F32_VAL (DNNL_RUNTIME_F32_VAL_REP.f) + +/// @cond DO_NOT_DOCUMENT_THIS +static const int DNNL_RUNTIME_S32_VAL_REP = INT32_MIN; +/// @endcond + +/// A wildcard value for int32_t values that are unknown at a primitive creation +/// time. +#define DNNL_RUNTIME_S32_VAL DNNL_RUNTIME_S32_VAL_REP + +/// @} dnnl_api_primitives_common + +/// @addtogroup dnnl_api_attributes +/// +/// A container for parameters that extend primitives behavior. +/// +/// Attributes can also contain Post-ops, which are computations executed +/// after the primitive. +/// +/// @{ + /// Scratchpad mode. enum class scratchpad_mode { - /// The library manages scratchpad (default). + /// The library manages the scratchpad allocation. There may be multiple + /// implementation-specific policies that can be configured via mechanisms + /// that fall outside of the scope of this specification. library, - /// A user shall provide the scratchpad memory to primitives. + /// User manages the scratchpad allocation. They shall query and provide + /// the scratchpad memory to primitives This mode is thread-safe as long + /// as the scratchpad buffers are not used concurrently by two primitive + /// executions. user, }; @@ -144,10 +387,11 @@ enum class prop_kind { backward_bias }; -/// Algorithm kinds +/// Kinds of algorithms. enum class algorithm { + /// Undefined algorithm undef, - /// Convolution algorithm(either direct or Winograd) is chosen just in time + /// Convolution algorithm (either direct or Winograd) to be chosen just in time convolution_auto, /// Direct convolution convolution_direct, @@ -157,32 +401,50 @@ enum class algorithm { deconvolution_direct, /// Winograd deconvolution deconvolution_winograd, - /// Eltwise: ReLU + /// Elementwise: rectified linear unit (ReLU) eltwise_relu, - /// Eltwise: hyperbolic tangent non-linearity (tanh) + /// Elementwise: hyperbolic tangent non-linearity (tanh) eltwise_tanh, - /// Eltwise: parametric exponential linear unit (elu) + /// Elementwise: parametric exponential linear unit (ELU) eltwise_elu, - /// Eltwise: square + /// Elementwise: square eltwise_square, - /// Eltwise: abs + /// Elementwise: abs eltwise_abs, - /// Eltwise: square root + /// Elementwise: square root eltwise_sqrt, - /// Eltwise: x*sigmoid(a*x) + /// Elementwise: swish (\f$x \cdot sigmoid(a \cdot x)\f$) eltwise_swish, - /// Eltwise: linear + /// Elementwise: linear eltwise_linear, - /// Eltwise: bounded_relu + /// Elementwise: bounded_relu eltwise_bounded_relu, - /// Eltwise: soft_relu + /// Elementwise: soft_relu eltwise_soft_relu, - /// Eltwise: logistic + /// Elementwise: logistic eltwise_logistic, - /// Eltwise: exponent + /// Elementwise: exponent eltwise_exp, - /// Eltwise: gelu + /// Elementwise: gelu eltwise_gelu, + /// Elementwise: natural logarithm + eltwise_log, + /// Elementwise: clip + eltwise_clip, + /// Elementwise: pow + eltwise_pow, + /// Elementwise: rectified linar unit (ReLU) (dst for backward) + eltwise_relu_use_dst_for_bwd, + /// Elementwise: hyperbolic tangent non-linearity (tanh) (dst for backward) + eltwise_tanh_use_dst_for_bwd, + /// Elementwise: exponential linear unit (ELU) (dst for backward) + eltwise_elu_use_dst_for_bwd, + /// Elementwise: square root (dst for backward) + eltwise_sqrt_use_dst_for_bwd, + /// Elementwise: logistic (dst for backward) + eltwise_logistic_use_dst_for_bwd, + /// Elementwise: exponent (dst for backward) + eltwise_exp_use_dst_for_bwd, /// Local response normalization (LRN) across multiple channels lrn_across_channels, /// LRN within a single channel @@ -202,64 +464,62 @@ enum class algorithm { vanilla_lstm, /// GRU cell vanilla_gru, - /// GRU cell with linear before reset - /// - /// Modification of original GRU cell. Differs from - /// #dnnl::algorithm::vanilla_gru in how the new memory gate is - /// calculated: - /// \f[ c_t = tanh(W_c*x_t + b_{c_x} + r_t*(U_c*h_{t-1}+b_{c_h})) \f] - /// Primitive expects 4 biases on input: + /// GRU cell with linear before reset. Differs from original GRU + /// in how the new memory gate is calculated: + /// \f$c_t = tanh(W_c*x_t + b_{c_x} + r_t*(U_c*h_{t-1}+b_{c_h})) \f$ + /// LRB GRU expects 4 bias tensors on input: /// \f$[b_{u}, b_{r}, b_{c_x}, b_{c_h}]\f$ lbr_gru, /// Binary add binary_add, /// Binary mul binary_mul, + /// Binary max + binary_max, + /// Binary min + binary_min, + /// Nearest Neighbor resampling method + resampling_nearest, + /// Linear (Bilinear, Trilinear) resampling method + resampling_linear, }; -/// Flags for batch normalization primitive (can be combined via '|') -enum class normalization_flags : unsigned { - /// Use global statistics - /// - /// If specified - /// - on forward propagation use mean and variance provided by user (input) - /// - on backward propagation reduces the amount of computations, since - /// mean and variance are considered as constants - /// - /// If not specified: - /// - on forward propagation mean and variance are computed and stored in - /// output - /// - on backward propagation compute full derivative wrt to data - use_global_stats, +/// @} dnnl_api_attributes - /// Use scale and shift parameters - /// - /// If specified: - /// - on forward propagation use scale and shift (aka scale and bias) for - /// the batch normalization results - /// - on backward propagation - /// (for prop_kind == #dnnl::prop_kind::backward) compute - /// diff wrt to scale and shift (hence one extra output used) - /// - /// If not specified: - /// - on backward propagation - /// prop_kind == #dnnl::prop_kind::backward_data has the - /// same behavior as prop_kind == #dnnl::prop_kind::backward - use_scale_shift, +/// @addtogroup dnnl_api_primitives_common +/// @{ - /// Fuse with ReLU - /// - /// If specified: - /// - on inference this option behaves the same as if the primitive were - /// fused with ReLU via post ops API - /// - on training primitive requires workspace (required to be able to - /// perform backward propagation) - fuse_norm_relu +/// Flags for batch normalization primitive (can be combined via '|') +enum class normalization_flags : unsigned { + /// Use global statistics. If specified, the library uses mean and + /// variance provided by user as an input on forward propagation and does + /// not compute their derivatives on backward propagation. Otherwise, the + /// library computes and outputs mean and variance on forward propagation, + /// and their derivatives on backward propagation. + use_global_stats = 0x1u, + + /// Use scale and shift parameters. If specified, user is expected to pass + /// scale and shift as inputs on forward propagation. On backward + /// propagation of type #dnnl::prop_kind::backward, the library computes + /// their derivatives. If not specified, the scale and shift parameters + /// are not used by the library in any way. + use_scale_shift = 0x2u, + + /// Fuse normalization with ReLU. On training, normalization will require + /// workspace to implement backward propagation. On inference, the + /// workspace is not require and behavior is the same as when + /// normalization is fused with ReLU using the post-ops API. + fuse_norm_relu = 0x4u, }; /// Bitwise OR operation for batch normalization flags. normalization_flags operator|(normalization_flags lhs, normalization_flags rhs); +/// @} dnnl_api_primitives_common + +/// @addtogroup dnnl_api_rnn +/// @{ + /// RNN cell flags. enum class rnn_flags : unsigned { /// Undefined RNN flags @@ -285,6 +545,11 @@ enum class rnn_direction { unidirectional = unidirectional_left2right, }; +/// @} dnnl_api_rnn + +/// @addtogroup dnnl_api_primitives_common +/// @{ + /// Primitive descriptor query specification. enum class query { /// no query @@ -320,6 +585,9 @@ enum class query { /// implementation name impl_info_str, + /// propagation kind + prop_kind, + /// operation descriptor op_d, /// convolution descriptor @@ -346,6 +614,12 @@ enum class query { rnn_d, /// binary descriptor binary_d, + /// logsoftmax descriptor + logsoftmax_d, + /// matmul descriptor + matmul_d, + /// resampling descriptor + resampling_d, /// source memory desc src_md, @@ -363,85 +637,93 @@ enum class query { workspace_md, /// scratchpad memory desc scratchpad_md, + /// memory desc of an execute argument + exec_arg_md, }; +/// @} dnnl_api_primitives_common + +/// @addtogroup dnnl_api_attributes Attributes +/// +/// A container for parameters that extend primitives behavior. +/// +/// @{ + /// Post-ops. /// -/// Post-ops are performed after the computation specified by a primitive and -/// allow optimizing away bandwidth-bound operations. +/// Post-ops are computations executed after the main primitive computations +/// and are attached to the primitive via primitive attributes. +/// struct post_ops { - /// Constructs an empty sequence of post operations. + /// Constructs an empty sequence of post-ops. post_ops(); /// Returns the number of post-ops entries. int len() const; /// Returns the primitive kind of post-op at entry with a certain index. - /// /// @param index Index of the post-op to return the kind for. - /// - /// @returns primitive kind of the postop at the specified index. + /// @returns Primitive kind of the post-op at the specified index. primitive::kind kind(int index) const; - /// Appends an accumulation (sum) post operation. Prior to accumulating the + /// Appends an accumulation (sum) post-op. Prior to accumulating the /// result, the previous value would be multiplied by a scaling factor /// @p scale. /// - /// The kind of this post operation is #dnnl::primitive::kind::sum. + /// The kind of this post-op is #dnnl::primitive::kind::sum. /// - /// This feature might improve performance for cases like residual learning - /// blocks, where the result of convolution is accumulated to the previously - /// computed activations. The parameter @p scale might be extreme for the - /// integer-based computations when the result and previous activations have - /// different logical scaling factors. + /// This feature may improve performance for cases like residual learning + /// blocks, where the result of convolution is accumulated to the + /// previously computed activations. The parameter @p scale may be used + /// for the integer-based computations when the result and previous + /// activations have different logical scaling factors. /// - /// In the simplest case when the accumulation is the only post operation, - /// the computations would be: - /// - /// dst[] <- scale * dst[] + op(...) instead of dst[] <- op(...) + /// In the simplest case when the accumulation is the only post-op, + /// the computations would be `dst[:] := scale * dst[:] + op(...)` + /// instead of `dst[:] := op(...)`. /// /// @note - /// This post operation (as well as all the others) disregards the - /// original layout of the destination; that is, the layout of the - /// original destination is expected to be the same as the layout of the - /// stored destination. + /// This post-op executes in-place and does not change the + /// destination layout. /// /// @param scale Scaling factor. void append_sum(float scale = 1.); - /// Returns the parameters of a sum post-op. + /// Returns the parameters of an accumulation (sum) post-op. /// /// @param index Index of the sum post-op. /// @param scale Scaling factor of the sum post-op. void get_params_sum(int index, float &scale) const; - /// Appends an eltwise post operation. + /// Appends an elementwise post-op. + /// + /// The kind of this post-op is #dnnl::primitive::kind::eltwise. /// - /// The kind of this post operation is #dnnl::primitive::kind::eltwise. + /// In the simplest case when the elementwise is the only post-op, the + /// computations would be `dst[:] := scale * eltwise_op (op(...))` + /// instead of `dst[:] <- op(...)`. /// - /// In the simplest case when the eltwise is the only post operation, the - /// computations would be: - /// dst[] <- scale * eltwise_op ( op(...) ) instead of dst[] <- op(...) /// where eltwise_op is configured with the given parameters. /// /// @param scale Scaling factor. - /// @param alg Eltwise algorithm. - /// @param alpha Alpha parameter for the eltwise algorithm. - /// @param beta Beta parameter for the eltwise algorithm. - void append_eltwise(float scale, algorithm alg, float alpha, float beta); + /// @param algorithm Elementwise algorithm. + /// @param alpha Alpha parameter for the elementwise algorithm. + /// @param beta Beta parameter for the elementwise algorithm. + void append_eltwise( + float scale, algorithm algorithm, float alpha, float beta); - /// Returns the eltwise parameters of a post-up. + /// Returns parameters of an elementwise post-up. /// /// @param index Index of the post-op. - /// @param scale Scaling factor. - /// @param alg Eltwise algorithm. - /// @param alpha Alpha parameter for the eltwise algorithm. - /// @param beta Beta parameter for the eltwise algorithm. - void get_params_eltwise(int index, float &scale, algorithm &alg, + /// @param scale Output scaling factor. + /// @param algorithm Output elementwise algorithm kind. + /// @param alpha Output alpha parameter for the elementwise algorithm. + /// @param beta Output beta parameter for the elementwise algorithm. + void get_params_eltwise(int index, float &scale, algorithm &algorithm, float &alpha, float &beta) const; }; -/// Primitive attributes +/// Primitive attributes. struct primitive_attr { /// Constructs default (empty) primitive attributes. primitive_attr(); @@ -450,56 +732,173 @@ struct primitive_attr { scratchpad_mode get_scratchpad_mode() const; /// Sets scratchpad mode. + /// + /// @param mode Specified scratchpad mode. void set_scratchpad_mode(scratchpad_mode mode); - /// Returns the output scaling factors correspondence mask and vector. + /// Returns output scaling factors correspondence mask and values. /// /// @param mask Scaling factors correspondence mask that defines the - /// correspondence between the output tensor dimensions and - /// the @p scales vector. The set i-th bit indicates that a - /// dedicated scaling factor should be used for any dimension - /// j with j >= i. The mask value of 0 implies a common - /// scaling factor for the whole output tensor. + /// correspondence between the output tensor dimensions and the @p + /// scales vector. The set i-th bit indicates that a dedicated output + /// scaling factor is used for each index along that dimension. The + /// mask value of 0 implies a common output scaling factor for the + /// whole output tensor. /// @param scales Vector of output scaling factors. void get_output_scales(int &mask, std::vector &scales) const; - /// Sets the output scale correspondence mask and values. + /// Sets output scaling factors correspondence mask and values. /// - /// @param mask Scaling factors correspondence mask that defines the - /// correspondence between the output tensor dimensions and - /// the @p scales vector. The set i-th bit indicates that a - /// dedicated scaling factor should be used for any dimension - /// j with j >= i. Set the mask to 0 to use a common scaling - /// factor for the whole output tensor. - /// @param scales Vector of output scaling factors. + /// Example usage: + /// @code + /// int mb = 32, oc = 32, + /// oh = 14, ow = 14; // convolution output params + /// // unique output scales per output channel + /// vector scales = { ... }; + /// int oc_dim = 1; // mb_dim = 0, channel_dim = 1, height_dim = 2, ... + /// + /// // construct a convolution descriptor + /// dnnl::convolution::desc conv_d; + /// + /// dnnl::primitive_attr attr; + /// attr.set_output_scales(attr, oc, 1 << oc_dim, scales); + /// + /// dnnl::primitive_desc conv_pd(conv_d, attr, engine); + /// @endcode /// /// @note - /// The order of dimensions does not depend on how elements are laid - /// out in memory. For example: - /// - for a 2D CNN activations tensor the order is always (n, c) - /// - for a 4D CNN activations tensor the order is always (n, c, h, w) - /// - for a 5D CNN weights tensor the order is always - /// (g, oc, ic, kh, kw) + /// The order of dimensions does not depend on how elements are laid + /// out in memory. For example: + /// - for a 2D CNN activations tensor the order is always (n, c) + /// - for a 4D CNN activations tensor the order is always (n, c, h, w) + /// - for a 5D CNN weights tensor the order is always + /// (g, oc, ic, kh, kw) + /// + /// @param mask Defines the correspondence between the output tensor + /// dimensions and the @p scales vector. The set i-th bit indicates + /// that a dedicated scaling factor is used for each index along that + /// dimension. Set the mask to 0 to use a common output scaling factor + /// for the whole output tensor. + /// @param scales Constant vector of output scaling factors. If the + /// scaling factors are known at the time of this call, the following + /// equality must hold: + /// \f$scales.size() = \prod\limits_{d \in mask} output.dims[d].\f$ + /// Violations can only be detected when the attributes + /// are used to create a primitive descriptor. + /// If the scaling factors are not known at the time of the call, + /// this vector must contain a single #DNNL_RUNTIME_F32_VAL value and + /// the output scaling factors must be passed at execution time as an + /// argument with index #DNNL_ARG_ATTR_OUTPUT_SCALES. void set_output_scales(int mask, const std::vector &scales); - - /// @returns post-ops previously set via set_post_ops(). + /// Returns scaling factors correspondence mask and values for a given + /// memory argument. + /// + /// @param arg Parameter argument index as passed to the + /// primitive::execute() call. + /// @param mask Scaling factors correspondence mask that defines the + /// correspondence between the output tensor dimensions and the @p + /// scales vector. The set i-th bit indicates that a dedicated scaling + /// factor is used for each index along that dimension. Set the mask to + /// 0 to use a common scaling factor for the whole output tensor. + /// @param scales Output vector of scaling factors. + void get_scales(int arg, int &mask, std::vector &scales) const; + + /// Sets scaling factors for primitive operations for a given memory + /// argument. + /// + /// @sa dnnl::primitive_attr::set_output_scales + /// + /// @param arg Parameter argument index as passed to the + /// primitive::execute() call. + /// @param mask Scaling factors correspondence mask that defines the + /// correspondence between the tensor dimensions and the @p scales + /// vector. The set i-th bit indicates that a dedicated scaling factor + /// is used for each index along that dimension. Set the mask to 0 to + /// use a common scaling factor for the whole output tensor. + /// @param scales Constant vector of scaling factors. The following equality + /// must hold: + /// \f$scales.size() = \prod\limits_{d \in mask} argument.dims[d].\f$ + void set_scales(int arg, int mask, const std::vector &scales); + + /// Returns zero points correspondence mask and values. + /// + /// @param arg Parameter argument index as passed to the + /// primitive::execute() call. + /// @param mask Zero points correspondence mask that defines the + /// correspondence between the output tensor dimensions and the @p + /// zero_points vector. The set i-th bit indicates that a dedicated + /// zero point is used for each index along that dimension. Set the + /// mask to 0 to use a common zero point for the whole output tensor. + /// @param zero_points Output vector of zero points. + void get_zero_points( + int arg, int &mask, std::vector &zero_points) const; + + /// Sets zero points for primitive operations for a given memory argument. + /// + /// @sa dnnl::primitive_attr::set_output_scales + /// + /// @param arg Parameter argument index as passed to the + /// primitive::execute() call. + /// @param mask Zero point correspondence mask that defines the + /// correspondence between the tensor dimensions and the @p + /// zero_points vector. The set i-th bit indicates that a dedicated + /// zero point is used for each index along that dimension. Set the + /// mask to 0 to use a common zero point for the whole output tensor. + /// @param zero_points Constant vector of zero points. If the zero points + /// are known at the time of this call, the following equality must + /// hold: \f$zero\_points.size() = \prod\limits_{d \in mask} + /// argument.dims[d].\f$ If the zero points are not known at the time + /// of the call, this vector must contain a single + /// #DNNL_RUNTIME_F32_VAL value and the zero points must be passed at + /// execution time as an argument with index + /// #DNNL_ARG_ATTR_ZERO_POINTS. + void set_zero_points( + int arg, int mask, const std::vector &zero_points); + + /// Returns post-ops previously set via set_post_ops(). + /// + /// @returns Post-ops. const post_ops get_post_ops() const; /// Sets post-ops. /// + /// @note + /// There is no way to check whether the post-ops would be supported + /// by the target primitive. Any error will be reported + /// by the respective primitive descriptor constructor. + /// /// @param ops Post-ops object to copy post-ops from. void set_post_ops(const post_ops ops); /// Sets quantization scale and shift parameters for RNN data tensors. /// /// For performance reasons, the low-precision configuration of the RNN - /// primitive expects input activations to have the unsigned 8-bit integer + /// primitives expect input activations to have the unsigned 8-bit integer /// data type. The scale and shift parameters are used to quantize - /// floating-point data to unsigned integer must be passed to the RNN - /// primitive using attributes. The quantization formula is scale * (data - /// + shift). + /// floating-point data to unsigned integer and must be passed to the RNN + /// primitive using attributes. /// - /// @note Quantization scale and shift are common for src_layer, src_iter, + /// The quantization formula is `scale * (data + shift)`. + /// + /// Example usage: + /// @code + /// // RNN parameters + /// int l = 2, t = 2, mb = 32, sic = 32, slc = 32, dic = 32, dlc = 32; + /// // Activations quantization parameters + /// float scale = 2.0f, shift = 0.5f; + /// + /// primitive_attr attr; + /// + /// // Set scale and shift for int8 quantization of activation + /// attr.set_rnn_data_qparams(scale, shift); + /// + /// // Create and configure rnn op_desc + /// vanilla_rnn_forward::desc rnn_d(/* arguments */); + /// vanilla_rnn_forward::primitive_desc rnn_d(rnn_d, attr, engine); + /// @endcode + /// + /// @note + /// Quantization scale and shift are common for src_layer, src_iter, /// dst_iter, and dst_layer. /// /// @param scale The value to scale the data by. @@ -507,38 +906,47 @@ struct primitive_attr { void set_rnn_data_qparams(float scale, float shift); /// Sets quantization scaling factors for RNN weights tensors. The - /// low-precision configuration of the RNN primitive expects input weights - /// to have the signed int8 data type. The scaling factors are used to - /// quantize floating-point data to signed integer and need to be passed - /// to RNN primitives using attributes. - /// - /// @param mask Scaling factors correspondence mask that defines the - /// correspondence between the output tensor dimensions and - /// the @p scales vector. The set i-th bit indicates that a - /// dedicated scaling factor should be used for any dimension - /// j with j >= i. Set the mask to 0 to use a common scaling - /// factor for the whole output tensor. - /// @param scales Vector of output scaling factors. + /// low-precision configuration of the RNN primitives expect input weights + /// to use the signed 8-bit integer data type. The scaling factors are + /// used to quantize floating-point data to signed integer and must be + /// passed to RNN primitives using attributes. /// /// @note - /// The dimension order is always native and does not depend on the - /// actual layout used. For example, five-dimensional weights always - /// have (l, d, i, g, o) logical dimension ordering. + /// The dimension order is always native and does not depend on the + /// actual layout used. For example, five-dimensional weights always + /// have (l, d, i, g, o) logical dimension ordering. /// /// @note /// Quantization scales are common for weights_layer and /// weights_iteration /// - /// @note - /// There is no way to check whether @p count corresponds to @p mask - /// until an actual primitive descriptor is created, so it is the user's - /// responsibility to set proper values. The following formula must - /// hold: - /// - /// \f[count = \prod\limits_{d \in mask} output.dims[d]\f] + /// @param mask Scaling factors correspondence mask that defines the + /// correspondence between the output tensor dimensions and the @p + /// scales vector. The set i-th bit indicates that a dedicated scaling + /// factor should be used each index along that dimension. Set the + /// mask to 0 to use a common scaling factor for the whole output + /// tensor. + /// @param scales Constant vector of output scaling factors. The following + /// equality must hold: + /// \f$scales.size() = \prod\limits_{d \in mask} weights.dims[d].\f$ + /// Violations can only be detected when the attributes are used to + /// create a primitive descriptor. void set_rnn_weights_qparams(int mask, const std::vector &scales); }; +/// @} dnnl_api_attributes + +/// @} dnnl_api_primitives + +/// @addtogroup dnnl_api_engine Engine +/// +/// An abstraction of a computational device: a CPU, a specific GPU +/// card in the system, etc. Most primitives are created to execute +/// computations on one specific engine. The only exceptions are reorder +/// primitives that transfer data between two different engines. +/// +/// @{ + /// An execution engine. struct engine { /// Kinds of engines. @@ -558,14 +966,14 @@ struct engine { /// Returns the number of engines of a certain kind. /// /// @param kind The kind of engines to count. + /// @returns The number of engines of the specified kind. static size_t get_count(kind kind); /// Constructs an engine. /// /// @param kind The kind of engine to construct. /// @param index The index of the engine. Must be less than the value - /// returned by #get_count() for this particular kind - /// of engine. + /// returned by #get_count() for this particular kind of engine. engine(kind kind, size_t index); /// Constructs an engine from SYCL device and context objects. @@ -576,7 +984,8 @@ struct engine { engine(kind kind, const cl::sycl::device &dev, const cl::sycl::context &ctx); - /// @returns the kind of the engine. + /// Returns the kind of the engine. + /// @returns The kind of the engine. kind get_kind() const; /// Returns the underlying SYCL context object. @@ -586,6 +995,14 @@ struct engine { cl::sycl::device get_sycl_device() const; }; +/// @} dnnl_api_engine + +/// @addtogroup dnnl_api_stream Stream +/// +/// An encapsulation of execution context tied to a particular engine. +/// +/// @{ + /// An execution stream. struct stream { /// Stream flags. Can be combined using the bitwise OR operator. @@ -606,7 +1023,7 @@ struct stream { stream(); /// Constructs a stream for the specified engine and with behavior - /// controlled by the specified flags + /// controlled by the specified flags. /// /// @param engine Engine to create the stream on. /// @param flags Flags controlling stream behavior. @@ -614,17 +1031,81 @@ struct stream { /// Constructs a stream for the specified engine and the SYCL queue. /// - /// @param engine Engine to create the stream on. + /// @param engine Engine object to use for the stream. /// @param queue SYCL queue to use for the stream. stream(const engine &engine, cl::sycl::queue &queue); - /// @returns the underlying SYCL queue object. + /// Returns the underlying SYCL queue object. + /// @returns SYCL queue object. cl::sycl::queue get_sycl_queue() const; /// Waits for all primitives executing in the stream to finish. + /// @returns The stream itself. stream &wait(); }; +/// @} dnnl_api_stream + +/// @addtogroup dnnl_api_memory Memory +/// +/// A container that describes and stores data. Memory objects can contain +/// data of various data types and formats. There are two levels of +/// abstraction: +/// +/// 1. **Memory descriptor** -- engine-agnostic logical description of data +/// (number of dimensions, dimension sizes, and data type), and, +/// optionally, the information about the physical format of data in +/// memory. If this information is not known yet, a memory descriptor can +/// be created with #dnnl::memory::format_tag::any. This allows +/// compute-intensive primitives to chose the most appropriate format for +/// the computations. The user is then responsible for reordering their +/// data into the new format if the formats do not match. +/// +/// A memory descriptor can be initialized either by specifying +/// dimensions, and memory format tag or strides for each of them. +/// +/// User can query amount of memory required by a memory descriptor using +/// the #dnnl::memory::desc::get_size() function. The size of data in +/// general cannot be computed as the product of dimensions multiplied by +/// the size of the data type. So users are required to use this function +/// for better code portability. +/// +/// Two memory descriptors can be compared using the equality and +/// inequality operators. The comparison is especially useful when +/// checking whether it is necessary to reorder data from the user's data +/// format to a primitive's format. +/// +/// 2. **Memory object** -- an engine-specific object that handles the data +/// and its description (a memory descriptor). With USM, the data handle +/// is simply a pointer to @c void. The data handle can be queried using +/// #dnnl::memory::get_data_handle() and set using +/// #dnnl::memory::set_data_handle(). The underlying SYCL buffer, when +/// used, can be queried using #dnnl::memory::get_sycl_buffer and and set +/// using #dnnl::memory::set_sycl_buffer. A memory object can also be +/// queried for the underlying memory descriptor and for its engine using +/// #dnnl::memory::get_desc() and dnnl::memory::get_engine(). +/// +/// Along with ordinary memory descriptors with all dimensions being positive, +/// the library supports *zero-volume* (or just *zero*) memory descriptors +/// with one or more dimensions set to zero. This is used to support the +/// NumPy\* convention. If a zero memory is passed to a primitive, the +/// primitive typically does not perform any computations with this memory. +/// For example: +/// +/// - A concatenation primitive would ignore all memory object with zeroes in +/// the concat dimension / axis. +/// +/// - A forward convolution with a source memory object with zero in the +/// minibatch dimension would always produce a detination memory object with +/// a zero in the minibatch dimension and perform no computations. +/// +/// - However, a forward convolution with a zero in one of the weights +/// dimensions is ill-defined considered to be an error by the library +/// because there is no clear definition on what the output values should +/// be. +/// +/// @{ + /// Memory object. /// /// A memory object encapsulates a handle to a memory buffer allocated on a @@ -638,7 +1119,7 @@ struct memory { /// vector's length. using dims = std::vector; - /// Data type of elements stored in a memory object. + /// Data type specification. enum class data_type { /// Undefined data type (used for empty memory descriptors). undef, @@ -660,29 +1141,29 @@ struct memory { /// /// Memory format tags can be further divided into two categories: /// - /// - Domain-agnostic names, i.e. names the do not depend on the tensor + /// - Domain-agnostic names, i.e. names that do not depend on the tensor /// usage in the specific primitive. These names use letters from `a` /// to `l` to denote logical dimensions and form the order in which the /// dimensions are laid in memory. For example, - /// #dnnl::memory::format_tag::ab is used to denote 2D tensor where the - /// second logical dimension (aka `b`) is the innermost, i.e. has - /// stride = 1, and the first logical dimension (`a`) laid out in - /// memory with stride equal to the size of second dimension. On the + /// #dnnl::memory::format_tag::ab is used to denote a 2D tensor where the + /// second logical dimension (denoted as `b`) is the innermost, i.e. + /// has stride = 1, and the first logical dimension (`a`) is laid out in + /// memory with stride equal to the size of the second dimension. On the /// other hand, #dnnl::memory::format_tag::ba is the transposed version /// of the same tensor: the outermost dimension (`a`) becomes the /// innermost one. /// /// - Domain-specific names, i.e. names that make sense only in the - /// context of a certain domain, such as CNN. This names are + /// context of a certain domain, such as CNN. These names are /// aliases to the corresponding domain-agnostic tags and used mostly - /// for the convenience. For example, #dnnl::memory::format_tag::nc + /// for convenience. For example, #dnnl::memory::format_tag::nc /// is used to denote 2D CNN activations tensor memory format, where /// the channels dimension is the innermost one and the batch dimension /// is the outermost one. Moreover, #dnnl::memory::format_tag::nc is - /// an alias for #dnnl::memory::format_tag::ab, since for oneDNN + /// an alias for #dnnl::memory::format_tag::ab, because for /// CNN primitives the logical dimensions of activations tensors come /// in order: batch, channels, spatial. In other words, batch - /// corresponds to the first logical dimension (`a`), channels + /// corresponds to the first logical dimension (`a`), and channels /// correspond to the second one (`b`). /// /// The following domain-specific notation applies to memory format tags: @@ -691,6 +1172,7 @@ struct memory { /// - When there are multiple channel dimensions (for example, /// in convolution weights tensor), @c 'i' and @c 'o' denote dimensions /// of input and output channels + /// - @c 'g' denotes a groups dimension for convolution weights /// - @c 'd', @c 'h', and @c 'w' denote spatial depth, height, and width /// respectively /// @@ -747,6 +1229,10 @@ struct memory { decab, /// plain 6D tensor abcdef, + /// plain 6D tensor + acbdef, + /// plain 6D tensor + defcab, /// 1D tensor; an alias for #dnnl::memory::format_tag::a x = a, @@ -814,6 +1300,10 @@ struct memory { giohw = acbde, /// 6D CNN weights tensor with groups; an alias for #dnnl::memory::format_tag::abcdef goidhw = abcdef, + /// 6D CNN weights tensor with groups; an alias for #dnnl::memory::format_tag::abcdef + giodhw = acbdef, + /// 6D CNN weights tensor with groups; an alias for #dnnl::memory::format_tag::defcab + dhwigo = defcab, /// 3D RNN data tensor in the format (seq_length, batch, input channels). tnc = abc, @@ -847,64 +1337,175 @@ struct memory { /// A memory descriptor. struct desc { - /// Constructs a zero (empty) memory descriptor. Such memory - /// descriptor may be used to indicate absence of an argument. + /// Constructs a zero (empty) memory descriptor. Such a memory + /// descriptor can be used to indicate absence of an argument. desc(); /// Constructs a memory descriptor. /// + /// @note + /// The logical order of dimensions corresponds to the `abc...` + /// format tag, and the physical meaning of the dimensions depends + /// on both the primitive that consumes the memory and the context + /// of that consumption. + /// /// @param dims Tensor dimensions. /// @param data_type Data precision/type. /// @param format_tag Memory format tag. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case a + /// zero memory descriptor will be constructed. This flag is + /// optional and defaults to false. desc(const memory::dims &dims, data_type data_type, - format_tag format_tag); + format_tag format_tag, bool allow_empty = false); /// Constructs a memory descriptor by strides. /// + /// @note + /// The logical order of dimensions corresponds to the `abc...` + /// format tag, and the physical meaning of the dimensions depends + /// on both the primitive that consumes the memory and the context + /// of that consumption. + /// /// @param dims Tensor dimensions. /// @param data_type Data precision/type. - /// @param strides Strides for each of the dimensions. + /// @param strides Strides for each dimension. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case a + /// zero memory descriptor will be constructed. This flag is + /// optional and defaults to false. desc(const memory::dims &dims, data_type data_type, - const memory::dims &strides); - - /// Constructs a sub-memory descriptor. - // - /// @param dims Sizes of a sub-memory. - /// @param offsets Offsets of a sub-memory from the encompassing - /// memory object in each dimension - desc submemory_desc( - const memory::dims &dims, const memory::dims &offsets); + const memory::dims &strides, bool allow_empty = false); - /// Constructs a memory descriptor by reshaping existing one. + /// Constructs a memory descriptor for a region inside an area + /// described by this memory descriptor. // + /// @param dims Sizes of the region. + /// @param offsets Offsets to the region from the encompassing + /// memory object in each dimension. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case a + /// zero memory descriptor will be returned. This flag is optional + /// and defaults to false. + /// @returns A memory descriptor for the region. + desc submemory_desc(const memory::dims &dims, + const memory::dims &offsets, bool allow_empty = false) const; + + /// Constructs a memory descriptor by reshaping an existing one. The + /// new memory descriptor inherits the data type. + /// + /// The operation ensures that the transformation of the physical memory + /// format corresponds to the transformation of the logical dimensions. + /// If such transformation is impossible, the function either throws an + /// exception (default) or returns a zero memory descriptor depending on + /// the `allow_empty` flag. + /// + /// The reshape operation can be described as a combination of the + /// following basic operations: + /// 1. Add a dimension of size `1`. This is always possible. + /// 2. Remove a dimension of size `1`. This is possible only if the + /// dimension has no padding (i.e. + /// `padded_dims[dim] == dims[dim] && dims[dim] == 1`). + /// 3. Split a dimension into multiple ones. This is possible only if + /// the size of the dimension is exactly equal to the product of the + /// split ones and the dimension does not have padding (i.e. + /// `padded_dims[dim] = dims[dim]`). + /// 4. Joining multiple consecutive dimensions into a single one. As in + /// the cases above, this requires that the dimensions do not have + /// padding and that the memory format is such that in physical + /// memory these dimensions are dense and have the same order as + /// their logical counterparts. This also assumes that these + /// dimensions are not blocked. + /// - Here, dense means: + /// `stride for dim[i] == (stride for dim[i + 1]) * dim[i + 1]`; + /// - And same order means: + /// `i < j` if and only if `stride for dim[i] < stride for dim[j]`. + /// + /// @warning + /// Some combinations of physical memory layout and/or offsets or + /// dimensions may result in a failure to make a reshape. + /// /// @param dims New dimensions. The product of dimensions must - /// remain constant. - desc reshape(const memory::dims &dims); - - /// Returns the number of bytes required to allocate memory buffer for - /// the memory object described by this memory descriptor including - /// the padding area. + /// remain constant. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case a + /// zero memory descriptor will be returned. This flag is optional + /// and defaults to false. + /// @returns A new memory descriptor with new dimensions. + desc reshape(const memory::dims &dims, bool allow_empty = false) const; + + /// Constructs a memory descriptor by permuting axes in an existing + /// one. + /// + /// The physical memory layout representation is adjusted accordingly + /// to maintain the consistency between the logical and physical parts + /// of the memory descriptor. The new memory descriptor inherits the + /// data type. + /// + /// The logical axes will be permuted in the following manner: + /// @code + /// for (i = 0; i < ndims(); i++) + /// new_desc.dims()[permutation[i]] = dims()[i]; + /// @endcode + /// + /// Example: + /// @code + /// std::vector permutation = {1, 0}; // swap the first and + /// // the second axes + /// dnnl::memory::desc in_md( + /// {2, 3}, data_type, memory::format_tag::ab); + /// dnnl::memory::desc expect_out_md( + /// {3, 2}, data_type, memory::format_tag::ba); + /// + /// assert(in_md.permute_axes(permutation) == expect_out_md); + /// @endcode + /// + /// @param permutation Axes permutation. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case a + /// zero memory descriptor will be returned. This flag is optional + /// and defaults to false. + /// @returns A new memory descriptor with new dimensions. + desc permute_axes(const std::vector &permutation, + bool allow_empty = false) const; + + /// Returns dimensions of the memory descriptor. + /// + /// Potentially expensive due to the data copy involved. + /// @returns A copy of the dimensions vector. + memory::dims dims() const; + + /// Returns the data type of the memory descriptor. + /// @returns The data type. + memory::data_type data_type() const; + + /// Returns size of the memory descriptor in bytes. + /// @returns The number of bytes required to allocate a memory buffer + /// for the memory object described by this memory descriptor + /// including the padding area. size_t get_size() const; - /// Returns true if the memory descriptor describes an empty memory. + /// Checks whether the memory descriptor is zero (empty). + /// @returns @c true if the memory descriptor describes an empty + /// memory and @c false otherwise. bool is_zero() const; /// An equality operator. /// @param other Another memory descriptor. /// @returns Whether this and the other memory descriptors have - /// the same format tag, dimensions, strides, blocking, etc. + /// the same format tag, dimensions, strides, blocking, etc. bool operator==(const desc &other) const; /// An inequality operator. /// @param other Another memory descriptor. /// @returns Whether this and the other memory descriptors describe - /// different memory. + /// different memory. bool operator!=(const desc &other) const; }; // Default constructor. // - // Constructs an empty memory object which can be used to indicate absence + // Constructs an empty memory object, which can be used to indicate absence // of a parameter. memory(); @@ -913,20 +1514,19 @@ struct memory { /// @param md Memory descriptor. /// @param engine Engine to store the data on. /// @param handle Handle of the memory buffer to use as an underlying - /// storage. On CPU this is a pointer. + /// storage. On CPU this is a pointer. memory(const desc &md, const engine &engine, void *handle); - /// Constructs a memory object using a SYCL buffer as the underlying - /// storage. + /// Constructs a memory object from a SYCL buffer. /// /// @param md Memory descriptor. - /// @param engine Engine to store the data on. - /// @param buf SYCL buffer as the underlying store. + /// @param engine Engine. + /// @param buf SYCL buffer. template memory(const desc &md, const engine &engine, cl::sycl::buffer &buf); - /// Constructs a memory. + /// Constructs a memory object. /// /// The underlying storage for the memory will be allocated by the library. /// @@ -949,7 +1549,7 @@ struct memory { /// Sets memory buffer. /// /// @param handle Memory buffer to use as the underlying storage. It must - /// have at least get_desc().get_size() bytes allocated. + /// have at least get_desc().get_size() bytes allocated. void set_data_handle(void *handle) const; /// Returns the underlying SYCL buffer object. @@ -970,86 +1570,230 @@ struct memory { void set_sycl_buffer(cl::sycl::buffer &buf); }; +/// @} dnnl_api_memory + +/// @addtogroup dnnl_api_primitives +/// @{ + +/// @addtogroup dnnl_api_primitives_common +/// @{ + /// Base class for all primitive descriptors. struct primitive_desc_base { /// Default constructor. Produces an empty object. - /// - /// Constructs an empty primitive descriptor base. primitive_desc_base(); /// Returns the engine of the primitive descriptor. + /// @returns The engine of the primitive descriptor. engine get_engine() const; /// Returns implementation name. + /// @returns the implementation name. const char *impl_info_str() const; - /// Queries for an memory::dim value (same as int64_t). + /// Returns a memory::dim value (same as int64_t). + /// @param what The value to query. + /// @returns The result of the query. memory::dim query_s64(query what) const; - /// Queries for and returns requested memory descriptor. + /// Returns a memory descriptor. + /// + /// @note + /// There are convenience methods + /// #dnnl::primitive_desc_base::src_desc(), + /// #dnnl::primitive_desc_base::dst_desc(), and others. + /// + /// @param what The kind of parameter to query; can be + /// #dnnl::query::src_md, #dnnl::query::dst_md, etc. + /// @param idx Index of the parameter. For example, convolution bias can + /// be queried with what = #dnnl::query::weights_md and idx = 1. + /// @returns The requested memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// parameter of the specified kind or index. memory::desc query_md(query what, int idx = 0) const; + /// Returns a source memory descriptor. + /// @param idx Source index. + /// @returns Source memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// source parameter with index @p pdx. + memory::desc src_desc(int idx) const; + + /// Returns a destination memory descriptor. + /// @param idx Destination index. + /// @returns Destination memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// destination parameter with index @p pdx. + memory::desc dst_desc(int idx) const; + + /// Returns a weights memory descriptor. + /// @param idx Weights index. + /// @returns Weights memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// weights parameter with index @p pdx. + memory::desc weights_desc(int idx) const; + + /// Returns a diff source memory descriptor. + /// @param idx Diff source index. + /// @returns Diff source memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// diff source parameter with index @p pdx. + memory::desc diff_src_desc(int idx) const; + + /// Returns a diff destination memory descriptor. + /// @param idx Diff destination index. + /// @returns Diff destination memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// diff destination parameter with index @p pdx. + memory::desc diff_dst_desc(int idx) const; + + /// Returns a diff weights memory descriptor. + /// @param idx Diff weights index. + /// @returns Diff weights memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// diff weights parameter with index @p pdx. + memory::desc diff_weights_desc(int idx) const; + + // Separate versions without the index argument for documentation + // purposes. + + /// Returns a source memory descriptor. + /// @returns Source memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// source parameter. + memory::desc src_desc() const; + + /// Returns a destination memory descriptor. + /// @returns Destination memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// destination parameter. + memory::desc dst_desc() const; + + /// Returns a weights memory descriptor. + /// @returns Weights memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// weights parameter. + memory::desc weights_desc() const; + + /// Returns a diff source memory descriptor. + /// @returns Diff source memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// diff source memory with. + memory::desc diff_src_desc() const; + + /// Returns a diff destination memory descriptor. + /// @returns Diff destination memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// diff destination parameter. + memory::desc diff_dst_desc() const; + + /// Returns a diff weights memory descriptor. + /// @returns Diff weights memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// diff weights parameter. + memory::desc diff_weights_desc() const; + + /// Returns the workspace memory descriptor. + /// @returns Workspace memory descriptor. + /// @returns A zero memory descriptor if the primitive does not require + /// workspace parameter. + memory::desc workspace_desc() const; + /// Returns the scratchpad memory descriptor. /// @returns scratchpad memory descriptor. - /// - /// @returns a zero_md if no scratchpad is required by the primitive - /// descriptor. + /// @returns A zero memory descriptor if the primitive does not require + /// scratchpad parameter. memory::desc scratchpad_desc() const; - /// @returns the engine that owns the scratchpad memory. + /// Returns the engine on which the scratchpad memory is located. + /// @returns The engine on which the scratchpad memory is located. engine scratchpad_engine() const; /// Returns the primitive attributes. + /// @returns The primitive attributes. primitive_attr get_primitive_attr() const; }; +/// @} dnnl_api_primitives_common + +/// @addtogroup dnnl_api_reorder Reorder +/// +/// A primitive to copy data between two memory objects. This primitive is +/// typically used to change the way the data is laid out in memory. +/// +/// @{ + /// Reorder primitive. struct reorder : public primitive { - /// Primitive descriptor for reorder primitive. + /// Primitive descriptor for a reorder primitive. struct primitive_desc : public dnnl::primitive_desc_base { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a reorder primitive using the description of the source - /// (@p src_engine and @p src_md) and destination (@p dst_engine and - /// @p dst_md) memory, and an @p attr attributes. + /// Constructs a primitive descriptor for reorder primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// + /// @param src_engine Engine on which the source memory object will be + /// located. + /// @param src_md Source memory descriptor. + /// @param dst_engine Engine on which the destination memory object + /// will be located. + /// @param dst_md Destination memory descriptor. + /// @param attr Primitive attributes to use (optional). primitive_desc(const engine &src_engine, const memory::desc &src_md, const engine &dst_engine, const memory::desc &dst_md, const primitive_attr &attr = primitive_attr()); - /// Constructs a reorder primitive moving data between memory objects - /// @p src and @p dat with @p attr attributes. + /// Constructs a primitive descriptor for reorder primitive. /// - /// Note that the memory objects are used only to obtain information - /// about memory descriptors and engines. + /// @param src Source memory object. It is used to obtain the source + /// memory descriptor and engine. + /// @param dst Destination memory object. It is used to obtain the + /// destination memory descriptor and engine. + /// @param attr Primitive attributes to use (optional). primitive_desc(const memory &src, const memory &dst, const primitive_attr &attr = primitive_attr()); - /// @returns the engine on which the source memory is allocated. + /// Returns the engine on which the source memory is allocated. + /// @returns The engine on which the source memory is allocated. engine get_src_engine() const; - /// @returns the engine on which the destination memory is allocated. + /// Returns the engine on which the destination memory is allocated. + /// @returns The engine on which the destination memory is allocated. engine get_dst_engine() const; + + /// @copydoc dnnl::primitive_desc_base::src_desc()const + memory::desc src_desc() const; + + /// @copydoc dnnl::primitive_desc_base::dst_desc()const + memory::desc dst_desc() const; }; /// Default constructor. Produces an empty object. reorder(); - /// Constructs a reorder primitive from a primitive descriptor @p pd - /// of a corresponding type. + /// Constructs a reorder primitive. + /// @param pd Primitive descriptor for reorder primitive. reorder(const primitive_desc &pd); /// Constructs a reorder primitive that would reorder data between memory - /// objects having same memory descriptors as memory objects @p src and @p - /// dst. + /// objects having the same memory descriptors as memory objects @p src and + /// @p dst. /// /// @param src Source memory object. /// @param dst Destination memory object. - reorder(const memory &src, const memory &dst); + /// @param attr Primitive attributes to use (optional). + reorder(const memory &src, const memory &dst, + const primitive_attr &attr = primitive_attr()); /// Executes the reorder primitive. /// /// @param stream Stream object. The stream must belong to the same engine - /// as the primitive. + /// as the primitive. /// @param src Source memory object. /// @param dst Destination memory object. void execute(stream stream, memory &src, memory &dst); @@ -1068,21 +1812,38 @@ struct reorder : public primitive { const std::vector &deps = {}); }; +/// @} dnnl_api_reorder + +/// @addtogroup dnnl_api_concat Concat +/// +/// A primitive to concatenate data by arbitrary dimension. +/// +/// @{ + + /// Tensor concatenation (concat) primitive. struct concat : public primitive { - /// Primitive descriptor for concat primitive. + /// Primitive descriptor for a concat primitive. struct primitive_desc : public dnnl::primitive_desc_base { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for an out-of-place - /// concatenation primitive. + /// Constructs a primitive descriptor for an out-of-place concatenation + /// primitive. + /// + /// Inputs: + /// - `src[0]` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src[1]` (#dnnl::primitive_desc_base::src_desc (`1`)) + /// - ... + /// - `src[n - 1]` (#dnnl::primitive_desc_base::src_desc (`n - 1`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// - /// @param dst Destination memory descriptor + /// @param dst Destination memory descriptor. /// @param concat_dimension Source tensors will be concatenated over - /// dimension with this index. Note that order - /// of dimensions does not depend on memory - /// format. + /// dimension with this index. Note that order of dimensions does + /// not depend on memory format. /// @param srcs Vector of source memory descriptors. /// @param engine Engine to perform the operation on. /// @param attr Primitive attributes to use (optional). @@ -1090,16 +1851,15 @@ struct concat : public primitive { const std::vector &srcs, const engine &engine, const primitive_attr &attr = primitive_attr()); - /// Constructs a primitive descriptor for an out-of-place - /// concatenation primitive. + /// Constructs a primitive descriptor for an out-of-place concatenation + /// primitive. /// /// This version derives the destination memory descriptor /// automatically. /// /// @param concat_dimension Source tensors will be concatenated over - /// dimension with this index. Note that order - /// of dimensions does not depend on memory - /// format. + /// dimension with this index. Note that order of dimensions does + /// not depend on memory format. /// @param srcs Vector of source memory descriptors. /// @param engine Engine to perform the operation on. /// @param attr Primitive attributes to use (optional). @@ -1107,7 +1867,10 @@ struct concat : public primitive { const std::vector &srcs, const engine &engine, const primitive_attr &attr = primitive_attr()); - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc(int)const + memory::desc src_desc(int idx = 0) const; + + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; }; @@ -1119,19 +1882,35 @@ struct concat : public primitive { concat(const primitive_desc &pd); }; -/// Summation (sum) primitive. +/// @} dnnl_api_concat + +/// @addtogroup dnnl_api_sum Sum +/// +/// A primitive to sum multiple tensors. +/// +/// @{ + +/// Out-of-place summation (sum) primitive. struct sum : public primitive { - /// Primitive descriptor for sum primitive. + /// Primitive descriptor for a sum primitive. struct primitive_desc : public dnnl::primitive_desc_base { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs an out-of-place primitive descriptor for a sum - /// primitive. + /// Constructs a primitive descriptor for a sum primitive. + /// + /// Inputs: + /// - `src[0]` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src[1]` (#dnnl::primitive_desc_base::src_desc (`1`)) + /// - ... + /// - `src[n - 1]` (#dnnl::primitive_desc_base::src_desc (`n - 1`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @param dst Destination memory descriptor. /// @param scales Vector of scales to multiply data in each source - /// memory by. + /// memory by. /// @param srcs Vector of source memory descriptors. /// @param engine Engine to perform the operation on. /// @param attr Primitive attributes to use (optional). @@ -1140,54 +1919,93 @@ struct sum : public primitive { const std::vector &srcs, const engine &engine, const primitive_attr &attr = primitive_attr()); - /// Constructs an out-of-place primitive descriptor for a sum - /// primitive. + /// Constructs a primitive descriptor for a sum primitive. /// /// This version derives the destination memory descriptor /// automatically. /// - /// @param scales Vector of scales to multiply data in each source - /// memory by. + /// @param scales Vector of scales by which to multiply data in each + /// source memory object. /// @param srcs Vector of source memory descriptors. - /// @param engine Engine to perform the operation on. + /// @param engine Engine on which to perform the operation. /// @param attr Primitive attributes to use (optional). primitive_desc(const std::vector &scales, const std::vector &srcs, const engine &engine, const primitive_attr &attr = primitive_attr()); - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc(int)const + memory::desc src_desc(int idx = 0) const; + + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; }; /// Default constructor. Produces an empty object. sum(); - /// Constructs a sum primitive from a primitive descriptor @p pd of a - /// corresponding type. + /// Constructs a sum primitive. + /// @param pd Primitive descriptor for sum primitive. sum(const primitive_desc &pd); }; -/// A base class for primitive descriptors of all primitives that have an -/// operation descriptor and that support iteration over multiple -/// implementations. +/// @} dnnl_api_sum + +/// @addtogroup dnnl_api_primitives_common +/// @{ + +/// A base class for descriptors of all primitives that have an operation +/// descriptor and that support iteration over multiple implementations. struct primitive_desc : public dnnl::primitive_desc_base { /// Default constructor. Produces an empty object. primitive_desc(); }; +/// @} dnnl_api_primitives_common + +/// @addtogroup dnnl_api_convolution Convolution +/// +/// A primitive to perform 1D, 2D or 3D convolution. Supported variants are +/// forward propagation, backward propagation, and weights gradient with or +/// without bias. +/// +/// @{ + /// Convolution forward propagation primitive. struct convolution_forward : public primitive { - /// Descriptor for convolution forward propagation primitive. + /// Descriptor for a convolution forward propagation primitive. struct desc { /// Constructs a descriptor for a convolution forward propagation - /// primitive without bias using @p prop_kind (acceptable values are - /// #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), @p - /// algorithm, memory descriptors, @p strides, @p padding_l, and @p - /// padding_r. + /// primitive with bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param algorithm Convolution algorithm. Possible values are + /// #dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd, and + /// #dnnl::algorithm::convolution_auto. + /// @param src_desc Source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param bias_desc Bias memory descriptor. Passing zero memory + /// descriptor disables the bias term. + /// @param dst_desc Destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(prop_kind prop_kind, algorithm algorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, @@ -1195,43 +2013,110 @@ struct convolution_forward : public primitive { const memory::dims &padding_r); /// Constructs a descriptor for a convolution forward propagation - /// primitive with bias using @p prop_kind (acceptable values are - /// #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), @p - /// algorithm, memory descriptors, @p strides, @p padding_l, and @p - /// padding_r. + /// primitive without bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param algorithm Convolution algorithm. Possible values are + /// #dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd, and + /// #dnnl::algorithm::convolution_auto. + /// @param src_desc Source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param dst_desc Destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(prop_kind prop_kind, algorithm algorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs a descriptor for dilated convolution forward - /// propagation primitive without bias using @p prop_kind (possible - /// values are #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), - /// @p algorithm, memory descriptors, @p strides, @p dilates, @p - /// padding_l, and @p padding_r. + /// Constructs a descriptor for a dilated convolution forward + /// propagation primitive with bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param algorithm Convolution algorithm. Possible values are + /// #dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd, and + /// #dnnl::algorithm::convolution_auto. + /// @param src_desc Source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param bias_desc Bias memory descriptor. Passing zero memory + /// descriptor disables the bias term. + /// @param dst_desc Destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param dilates Dilations for each spatial dimension. A zero value + /// means no dilation in the corresponding dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(prop_kind prop_kind, algorithm algorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs a descriptor for dilated convolution forward - /// propagation primitive with bias using @p prop_kind (possible - /// values are #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), - /// @p algorithm, memory descriptors, @p strides, @p dilates, @p - /// padding_l, and @p padding_r. + /// Constructs a descriptor for a dilated convolution forward + /// propagation primitive without bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param algorithm Convolution algorithm. Possible values are + /// #dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd, and + /// #dnnl::algorithm::convolution_auto. + /// @param src_desc Source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param dst_desc Destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param dilates Dilations for each spatial dimension. A zero value + /// means no dilation in the corresponding dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(prop_kind prop_kind, algorithm algorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, @@ -1247,78 +2132,119 @@ struct convolution_forward : public primitive { /// Constructs a primitive descriptor for a convolution forward /// propagation primitive. /// - /// @param desc Descriptor for convolution forward propagation - /// primitive. + /// @param desc Descriptor for a convolution forward propagation + /// primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case + /// an empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); /// Constructs a primitive descriptor for a convolution forward /// propagation primitive. /// - /// @param desc Descriptor for convolution forward propagation - /// primitive. + /// @param desc Descriptor for a convolution forward propagation + /// primitive. /// @param engine Engine to use. /// @param attr Primitive attributes to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case + /// an empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the weights memory descriptor. + /// @copydoc dnnl::primitive_desc_base::weights_desc()const memory::desc weights_desc() const; + /// @copydoc dnnl::primitive_desc_base::dst_desc()const + memory::desc dst_desc() const; + /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc creation - /// time. + /// @returns The bias memory descriptor. + /// @returns A zero memory descriptor of the primitive does not have a + /// bias parameter. memory::desc bias_desc() const; - - /// Returns the destination memory descriptor. - memory::desc dst_desc() const; }; /// Default constructor. Produces an empty object. convolution_forward(); - /// Constructs a convolution forward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a convolution forward propagation primitive. + /// @param pd Primitive descriptor for a convolution forward propagation + /// primitive. convolution_forward(const primitive_desc &pd); }; /// Convolution backward propagation primitive. struct convolution_backward_data : public primitive { - /// Descriptor for convolution backward propagation primitive. + /// Descriptor for a convolution backward propagation primitive. struct desc { /// Constructs a descriptor for a convolution backward propagation - /// primitive using @p algorithm, memory descriptors, @p strides, @p - /// padding_l, and @p padding_r. + /// primitive. + /// + /// Inputs: + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Convolution algorithm. Possible values are + /// #dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd, and + /// #dnnl::algorithm::convolution_auto. + /// @param diff_src_desc Diff source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r); /// Constructs a descriptor for dilated convolution backward - /// propagation using @p algorithm, memory descriptors, @p strides, @p - /// padding_l, and @p padding_r. + /// propagation primitive. + /// + /// Inputs: + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Convolution algorithm. Possible values are + /// #dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd, and + /// #dnnl::algorithm::convolution_auto. + /// @param diff_src_desc Diff source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param dilates Dilations for each spatial dimension. A zero value + /// means no dilation in the corresponding dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, @@ -1334,16 +2260,16 @@ struct convolution_backward_data : public primitive { /// Constructs a primitive descriptor for a convolution backward /// propagation primitive. /// - /// @param desc Descriptor for convolution backward propagation - /// primitive. + /// @param desc Descriptor for a convolution backward propagation + /// primitive. /// @param engine Engine to perform the operation on. - /// @param hint_fwd_pd Primitive descriptor for convolution forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a convolution forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case + /// an empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); @@ -1351,76 +2277,142 @@ struct convolution_backward_data : public primitive { /// Constructs a primitive descriptor for a convolution backward /// propagation primitive. /// - /// @param desc Descriptor for convolution backward propagation - /// primitive. + /// @param desc Descriptor for a convolution backward propagation + /// primitive. /// @param engine Engine to perform the operation on. /// @param attr Primitive attributes to use. - /// @param hint_fwd_pd Primitive descriptor for convolution forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a convolution forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case + /// an empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the diff source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_src_desc()const memory::desc diff_src_desc() const; - /// Returns the weights memory descriptor. + /// @copydoc dnnl::primitive_desc_base::weights_desc()const memory::desc weights_desc() const; - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const memory::desc diff_dst_desc() const; }; /// Default constructor. Produces an empty object. convolution_backward_data(); - /// Constructs a convolution backward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a convolution backward propagation primitive. + /// @param pd Primitive descriptor for a convolution backward propagation + /// primitive. convolution_backward_data(const primitive_desc &pd); }; -/// Convolution weights update primitive. +/// Convolution weights gradient primitive. struct convolution_backward_weights : public primitive { - /// Descriptor for convolution weights update primitive. + /// Descriptor for a convolution weights gradient primitive. struct desc { - /// Constructs a descriptor for a convolution weights update primitive - /// with bias using @p algorithm, memory descriptors, @p strides, @p - /// padding_l, and @p padding_r. + /// Constructs a descriptor for a convolution weights gradient primitive + /// with bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_weights` (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) + /// - `diff_bias` (#dnnl::primitive_desc_base::diff_weights_desc (`1`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Convolution algorithm. Possible values are + /// #dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd, and + /// #dnnl::algorithm::convolution_auto. + /// @param src_desc Source memory descriptor. + /// @param diff_weights_desc Diff weights memory descriptor. + /// @param diff_bias_desc Diff bias memory descriptor. Passing zero + /// memory descriptor disables the bias term. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs a descriptor for a convolution weights update primitive - /// without bias using @p algorithm, memory descriptors, @p strides, - /// @p padding_l, and @p padding_r. + /// Constructs a descriptor for a convolution weights gradient primitive + /// without bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_weights` (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Convolution algorithm. Possible values are + /// #dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd, and + /// #dnnl::algorithm::convolution_auto. + /// @param src_desc Source memory descriptor. + /// @param diff_weights_desc Diff weights memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs a descriptor for dilated convolution weights update - /// primitive with bias using @p algorithm, memory descriptors, @p - /// strides, @p dilates @p padding_l, and @p padding_r. + /// Constructs a descriptor for a dilated convolution weights gradient + /// primitive with bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_weights` (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) + /// - `diff_bias` (#dnnl::primitive_desc_base::diff_weights_desc (`1`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Convolution algorithm. Possible values are + /// #dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd, and + /// #dnnl::algorithm::convolution_auto. + /// @param src_desc Source memory descriptor. + /// @param diff_weights_desc Diff weights memory descriptor. + /// @param diff_bias_desc Diff bias memory descriptor. Passing zero + /// memory descriptor disables the bias term. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param dilates Dilations for each spatial dimension. A zero value + /// means no dilation in the corresponding dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, @@ -1428,13 +2420,34 @@ struct convolution_backward_weights : public primitive { const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs a descriptor for dilated convolution weights update - /// primitive without bias using @p algorithm, memory descriptors, @p - /// strides, @p dilates @p padding_l, and @p padding_r. + /// Constructs a descriptor for a dilated convolution weights gradient + /// primitive without bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_weights` (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Convolution algorithm. Possible values are + /// #dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd, and + /// #dnnl::algorithm::convolution_auto. + /// @param src_desc Source memory descriptor. + /// @param diff_weights_desc Diff weights memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param dilates Dilations for each spatial dimension. A zero value + /// means no dilation in the corresponding dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, @@ -1442,79 +2455,114 @@ struct convolution_backward_weights : public primitive { const memory::dims &padding_r); }; - /// Primitive descriptor for a convolution weights update primitive. + /// Primitive descriptor for a convolution weights gradient primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for a convolution weights update + /// Constructs a primitive descriptor for a convolution weights gradient /// primitive. /// - /// @param desc Descriptor for convolution weights update primitive. + /// @param desc Descriptor for a convolution weights gradient primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for convolution forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a convolution forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case + /// an empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for a convolution weights update + /// Constructs a primitive descriptor for a convolution weights gradient /// primitive. /// - /// @param desc Descriptor for convolution weights update primitive. + /// @param desc Descriptor for a convolution weights gradient primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for convolution forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a convolution forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case + /// an empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the diff weights memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_weights_desc()const memory::desc diff_weights_desc() const; + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const + memory::desc diff_dst_desc() const; + /// Returns the diff bias memory descriptor. + /// @returns The diff bias memory descriptor. + /// @returns A zero memory descriptor of the primitive does not have a + /// diff bias parameter. memory::desc diff_bias_desc() const; - - /// Returns the diff destination memory descriptor. - memory::desc diff_dst_desc() const; }; /// Default constructor. Produces an empty object. convolution_backward_weights(); - /// Constructs a convolution weights update primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs a convolution weights gradient primitive. + /// @param pd Primitive descriptor for a convolution weights gradient + /// primitive. convolution_backward_weights(const primitive_desc &pd); }; +/// @} dnnl_api_convolution +// +/// @addtogroup dnnl_api_deconvolution Deconvolution +/// +/// A primitive to perform 1D, 2D or 3D deconvolution. Supported variants are +/// forward propagation, backward propagation, and weights gradient with or +/// without bias. +/// +/// @{ + /// Deconvolution forward propagation primitive. struct deconvolution_forward : public primitive { - /// Descriptor for convolution forward propagation primitive. + /// Descriptor for a deconvolution forward propagation primitive. struct desc { /// Constructs a descriptor for a deconvolution forward propagation - /// primitive with bias using @p prop_kind (acceptable values are - /// #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), @p - /// algorithm, memory descriptors, @p strides, @p padding_l, and @p - /// padding_r. + /// primitive with bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and #dnnl::prop_kind::forward_inference. + /// @param algorithm Deconvolution algorithm: + /// #dnnl::algorithm::deconvolution_direct, and + /// #dnnl::algorithm::deconvolution_winograd. + /// @param src_desc Source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param bias_desc Bias memory descriptor. Passing zero memory + /// descriptor disables the bias term. + /// @param dst_desc Destination memory descriptor. + /// @param strides Vector of strides for spatial dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(prop_kind prop_kind, algorithm algorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, @@ -1522,43 +2570,104 @@ struct deconvolution_forward : public primitive { const memory::dims &padding_r); /// Constructs a descriptor for a deconvolution forward propagation - /// primitive without bias using @p prop_kind (acceptable values are - /// #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), @p - /// algorithm, memory descriptors, @p strides, @p padding_l, and @p - /// padding_r. + /// primitive without bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and #dnnl::prop_kind::forward_inference. + /// @param algorithm Deconvolution algorithm: + /// #dnnl::algorithm::deconvolution_direct, and + /// #dnnl::algorithm::deconvolution_winograd. + /// @param src_desc Source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param dst_desc Destination memory descriptor. + /// @param strides Vector of strides for spatial dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(prop_kind prop_kind, algorithm algorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs a descriptor for dilated deconvolution forward - /// propagation primitive with bias using @p prop_kind (possible - /// values are #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), - /// @p algorithm memory descriptors, @p strides, @p dilates, @p - /// padding_l, and @p padding_r. + /// Constructs a descriptor for a dilated deconvolution forward + /// propagation primitive with bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and #dnnl::prop_kind::forward_inference. + /// @param algorithm Deconvolution algorithm: + /// #dnnl::algorithm::deconvolution_direct, and + /// #dnnl::algorithm::deconvolution_winograd. + /// @param src_desc Source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param bias_desc Bias memory descriptor. Passing zero memory + /// descriptor disables the bias term. + /// @param dst_desc Destination memory descriptor. + /// @param strides Vector of strides for spatial dimension. + /// @param dilates Dilations for each spatial dimension. A zero value + /// means no dilation in the corresponding dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(prop_kind prop_kind, algorithm algorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs a descriptor for dilated deconvolution forward - /// propagation primitive without bias using @p prop_kind (possible - /// values are #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), - /// @p algorithm, memory descriptors, @p strides, @p dilates, @p - /// padding_l, and @p padding_r. + /// Constructs a descriptor for a dilated deconvolution forward + /// propagation primitive without bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and #dnnl::prop_kind::forward_inference. + /// @param algorithm Deconvolution algorithm: + /// #dnnl::algorithm::deconvolution_direct, and + /// #dnnl::algorithm::deconvolution_winograd. + /// @param src_desc Source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param dst_desc Destination memory descriptor. + /// @param strides Vector of strides for spatial dimension. + /// @param dilates Dilations for each spatial dimension. A zero value + /// means no dilation in the corresponding dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(prop_kind prop_kind, algorithm algorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, @@ -1574,77 +2683,113 @@ struct deconvolution_forward : public primitive { /// Constructs a primitive descriptor for a deconvolution forward /// propagation primitive. /// - /// @param desc Descriptor for deconvolution forward propagation - /// primitive. + /// @param desc Descriptor for a deconvolution forward propagation + /// primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); /// Constructs a primitive descriptor for a deconvolution forward /// propagation primitive. /// - /// @param desc Descriptor for deconvolution forward propagation - /// primitive. + /// @param desc Descriptor for a deconvolution forward propagation + /// primitive. /// @param engine Engine to use. /// @param attr Primitive attributes to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the weights memory descriptor. + /// @copydoc dnnl::primitive_desc_base::weights_desc()const memory::desc weights_desc() const; - /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc - /// creation time. - memory::desc bias_desc() const; - - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; + + /// @copydoc dnnl::convolution_forward::primitive_desc::bias_desc()const + memory::desc bias_desc() const; }; /// Default constructor. Produces an empty object. deconvolution_forward(); - /// Constructs a deconvolution forward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a deconvolution forward propagation primitive. + /// @param pd Primitive descriptor for a deconvolution forward propagation + /// primitive. deconvolution_forward(const primitive_desc &pd); }; /// Deconvolution backward propagation primitive. struct deconvolution_backward_data : public primitive { - /// Descriptor for deconvolution backward propagation primitive. + /// Descriptor for a deconvolution backward propagation primitive. struct desc { /// Constructs a descriptor for a deconvolution backward propagation - /// primitive using @p algorithm, memory descriptors, @p strides, @p - /// padding_l, and @p padding_r. + /// primitive. + /// + /// Inputs: + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Deconvolution algorithm + /// (#dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd). + /// @param diff_src_desc Diff source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs descriptor for dilated deconvolution backward - /// propagation primitive using @p algorithm, memory descriptors, @p - /// strides, @p padding_l, and @p padding_r. + /// Constructs a descriptor for a dilated deconvolution backward + /// propagation primitive. + /// + /// Inputs: + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Deconvolution algorithm + /// (#dnnl::algorithm::convolution_direct, + /// #dnnl::algorithm::convolution_winograd). + /// @param diff_src_desc Diff source memory descriptor. + /// @param weights_desc Weights memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param dilates Dilations for each spatial dimension. A zero value + /// means no dilation in the corresponding dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, @@ -1660,16 +2805,16 @@ struct deconvolution_backward_data : public primitive { /// Constructs a primitive descriptor for a deconvolution backward /// propagation primitive. /// - /// @param desc Descriptor for deconvolution backward propagation - /// primitive. + /// @param desc Descriptor for a deconvolution backward propagation + /// primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for deconvolution forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a deconvolution forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); @@ -1677,76 +2822,139 @@ struct deconvolution_backward_data : public primitive { /// Constructs a primitive descriptor for a deconvolution backward /// propagation primitive. /// - /// @param desc Descriptor for deconvolution backward propagation - /// primitive. + /// @param desc Descriptor for a deconvolution backward propagation + /// primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for deconvolution forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a deconvolution forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the diff source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_src_desc()const memory::desc diff_src_desc() const; - /// Returns the weights memory descriptor. + /// @copydoc dnnl::primitive_desc_base::weights_desc()const memory::desc weights_desc() const; - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const memory::desc diff_dst_desc() const; }; /// Default constructor. Produces an empty object. deconvolution_backward_data(); - /// Constructs a deconvolution backward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a deconvolution backward propagation primitive. + /// @param pd Primitive descriptor for a deconvolution backward propagation + /// primitive. deconvolution_backward_data(const primitive_desc &pd); }; -/// Deconvolution weights update primitive. +/// Deconvolution weights gradient primitive. struct deconvolution_backward_weights : public primitive { - /// Descriptor for deconvolution weights update primitive. + /// Descriptor for a deconvolution weights gradient primitive. struct desc { - /// Constructs a descriptor for a deconvolution weights primitive update - /// with bias using @p algorithm, memory descriptors, @p strides, @p - /// padding_l, and @p padding_r. + /// Constructs a descriptor for a deconvolution weights gradient primitive + /// with bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_weights` (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) + /// - `diff_bias` (#dnnl::primitive_desc_base::diff_weights_desc (`1`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Deconvolution algorithm. Possible values are + /// #dnnl::algorithm::deconvolution_direct, and + /// #dnnl::algorithm::deconvolution_winograd. + /// @param src_desc Source memory descriptor. + /// @param diff_weights_desc Diff weights memory descriptor. + /// @param diff_bias_desc Diff bias memory descriptor. Passing zero + /// memory descriptor disables the bias term. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs a descriptor for a deconvolution weights update primitive - /// without bias using @p algorithm, memory descriptors, @p strides, - /// @p padding_l, and @p padding_r. + /// Constructs a descriptor for a deconvolution weights gradient primitive + /// without bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_weights` (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Deconvolution algorithm. Possible values are + /// #dnnl::algorithm::deconvolution_direct, and + /// #dnnl::algorithm::deconvolution_winograd. + /// @param src_desc Source memory descriptor. + /// @param diff_weights_desc Diff weights memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs a descriptor for dilated deconvolution weights update - /// primitive with bias using @p algorithm, memory descriptors, @p - /// strides, @p dilates @p padding_l, and @p padding_r. + /// Constructs a descriptor for a dilated deconvolution weights gradient + /// primitive with bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_weights` (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) + /// - `diff_bias` (#dnnl::primitive_desc_base::diff_weights_desc (`1`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Deconvolution algorithm. Possible values are + /// #dnnl::algorithm::deconvolution_direct, and + /// #dnnl::algorithm::deconvolution_winograd. + /// @param src_desc Source memory descriptor. + /// @param diff_weights_desc Diff weights memory descriptor. + /// @param diff_bias_desc Diff bias memory descriptor. Passing zero + /// memory descriptor disables the bias term. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param dilates Dilations for each spatial dimension. A zero value + /// means no dilation in the corresponding dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, @@ -1754,13 +2962,33 @@ struct deconvolution_backward_weights : public primitive { const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r); - /// Constructs a descriptor for dilated deconvolution weights update - /// primitive without bias using @p algorithm, memory descriptors, @p - /// strides, @p dilates @p padding_l, and @p padding_r. + /// Constructs a descriptor for a dilated deconvolution weights gradient + /// primitive without bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_weights` (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param algorithm Deconvolution algorithm. Possible values are + /// #dnnl::algorithm::deconvolution_direct, and + /// #dnnl::algorithm::deconvolution_winograd. + /// @param src_desc Source memory descriptor. + /// @param diff_weights_desc Diff weights memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Strides for each spatial dimension. + /// @param dilates Dilations for each spatial dimension. A zero value + /// means no dilation in the corresponding dimension. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, @@ -1768,7 +2996,7 @@ struct deconvolution_backward_weights : public primitive { const memory::dims &padding_r); }; - /// Primitive descriptor for a deconvolution weights update primitive. + /// Primitive descriptor for a deconvolution weights gradient primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); @@ -1776,15 +3004,15 @@ struct deconvolution_backward_weights : public primitive { /// Constructs a primitive descriptor for a deconvolution weights /// update primitive. /// - /// @param desc Descriptor for deconvolution weights update primitive. + /// @param desc Descriptor for a deconvolution weights gradient primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for deconvolution forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a deconvolution forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case + /// an empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); @@ -1792,194 +3020,271 @@ struct deconvolution_backward_weights : public primitive { /// Constructs a primitive descriptor for a deconvolution weights /// update primitive. /// - /// @param desc Descriptor for deconvolution weights update primitive. + /// @param desc Descriptor for a deconvolution weights gradient primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for deconvolution forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a deconvolution forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the diff weights memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_weights_desc()const memory::desc diff_weights_desc() const; - /// Returns the diff bias memory descriptor. - memory::desc diff_bias_desc() const; - - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const memory::desc diff_dst_desc() const; + + /// @copydoc dnnl::convolution_backward_weights::primitive_desc::diff_bias_desc()const + memory::desc diff_bias_desc() const; }; /// Default constructor. Produces an empty object. deconvolution_backward_weights(); - /// Constructs a deconvolution weights update primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs a deconvolution weights gradient primitive. + /// @param pd Primitive descriptor for a deconvolution weights gradient + /// primitive. deconvolution_backward_weights(const primitive_desc &pd); }; +/// @} dnnl_api_deconvolution + +/// @addtogroup dnnl_api_lrn LRN +/// +/// A primitive to perform local response normalization (LRN) across or within +/// channels. +/// +/// @{ + /// Local response normalization (LRN) forward propagation primitive. struct lrn_forward : public primitive { - /// Descriptor for LRN forward propagation primitive. + /// Descriptor for an LRN forward propagation primitive. struct desc { - /// Constructs a descriptor for LRN forward propagation primitive - /// using @p prop_kind (acceptable values are #dnnl::prop_kind::forward_training - /// and #dnnl::prop_kind::forward_inference), @p algorithm, memory descriptor @p - /// data_desc, and regularization parameters @p local_size, @p alpha, - /// @p beta, and @p k. + /// Constructs a descriptor for a LRN forward propagation primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)), + /// if @p alg_kind = #dnnl::algorithm::pooling_max and @p + /// prop_kind = #dnnl::prop_kind::forward_training; must be + /// queried for using @ref dnnl::primitive_desc_base::query_md() + /// after a corresponding primitive descriptor is created + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param algorithm LRN algorithm kind: either + /// #dnnl::algorithm::lrn_across_channels, or + /// #dnnl::algorithm::lrn_within_channel. + /// @param data_desc Source and destination memory descriptors. + /// @param local_size Regularization local size. + /// @param alpha The alpha regularization parameter. + /// @param beta The beta regularization parameter. + /// @param k The k regularization parameter. desc(prop_kind prop_kind, algorithm algorithm, - const memory::desc &src_desc, memory::dim local_size, + const memory::desc &data_desc, memory::dim local_size, float alpha, float beta, float k = 1.f); }; - /// Primitive descriptor for LRN forward propagation primitive. + /// Primitive descriptor for an LRN forward propagation primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for LRN forward propagation + /// Constructs a primitive descriptor for an LRN forward propagation /// primitive. /// - /// @param desc Descriptor for LRN forward propagation primitive. + /// @param desc Descriptor for an LRN forward propagation primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for LRN forward propagation + /// Constructs a primitive descriptor for an LRN forward propagation /// primitive. /// - /// @param desc Descriptor for LRN forward propagation primitive. + /// @param desc Descriptor for an LRN forward propagation primitive. /// @param engine Engine to use. /// @param attr Primitive attributes to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. lrn_forward(); - /// Constructs an LRN forward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs an LRN forward propagation primitive. + /// @param pd Primitive descriptor for an LRN forward propagation + /// primitive. lrn_forward(const primitive_desc &pd); }; /// Local response normalization (LRN) backward propagation primitive. struct lrn_backward : public primitive { - /// Descriptor for LRN backward propagation primitive. + /// Descriptor for an LRN backward propagation primitive. struct desc { - /// Constructs a descriptor for LRN backward propagation primitive - /// using @p algorithm, memory descriptors @p data_desc and @p - /// diff_data_desc, and regularization parameters @p local_size, @p - /// alpha, @p beta, and @p k. + /// Constructs a descriptor for an LRN backward propagation primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)), + /// if the underlying implementation requires it; must be queried + /// for using @ref dnnl::primitive_desc_base::query_md() after a + /// corresponding primitive descriptor is created + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// + /// @param algorithm LRN algorithm kind: either + /// #dnnl::algorithm::lrn_across_channels, or + /// #dnnl::algorithm::lrn_within_channel. + /// @param diff_data_desc Diff source and diff destination memory descriptor. + /// @param data_desc Source memory descriptor. + /// @param local_size Regularization local size. + /// @param alpha The alpha regularization parameter. + /// @param beta The beta regularization parameter. + /// @param k The k regularization parameter. desc(algorithm algorithm, const memory::desc &data_desc, const memory::desc &diff_data_desc, memory::dim local_size, float alpha, float beta, float k = 1.f); }; - /// Primitive descriptor for LRN backward propagation primitive. + /// Primitive descriptor for an LRN backward propagation primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for LRN backward propagation + /// Constructs a primitive descriptor for an LRN backward propagation /// primitive. /// - /// @param desc Descriptor for LRN backward propagation primitive. + /// @param desc Descriptor for an LRN backward propagation primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for LRN forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for an LRN forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const lrn_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for LRN backward propagation + /// Constructs a primitive descriptor for an LRN backward propagation /// primitive. /// - /// @param desc Descriptor for LRN backward propagation primitive. + /// @param desc Descriptor for an LRN backward propagation primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for LRN forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for an LRN forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const lrn_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the diff source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc diff_src_desc() const; - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const memory::desc diff_dst_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. lrn_backward(); - /// Constructs an LRN backward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs an LRN backward propagation primitive. + /// @param pd Primitive descriptor for an LRN backward propagation + /// primitive. lrn_backward(const primitive_desc &pd); }; +/// @} dnnl_api_lrn + +/// @addtogroup dnnl_api_pooling Pooling +/// +/// A primitive to perform max or average pooling. +/// +/// @{ + /// Pooling forward propagation primitive. struct pooling_forward : public primitive { - /// Descriptor for pooling forward propagation primitive. + /// Descriptor for a pooling forward propagation primitive. struct desc { - /// Constructs a descriptor for pooling forward propagation primitive - /// using @p prop_kind (acceptable values are #dnnl::prop_kind::forward_training - /// and #dnnl::prop_kind::forward_inference), @p algorithm, memory descriptors, - /// and pooling parameters in the spatial domain: @p strides, @p - /// kernel sizes, @p padding_l, and @p padding_r. + /// Constructs a descriptor for pooling forward propagation primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)), + /// if @p alg_kind = #dnnl::algorithm::pooling_max and @p + /// prop_kind = #dnnl::prop_kind::forward_training; must be + /// queried for using @ref dnnl::primitive_desc_base::query_md() + /// after a corresponding primitive descriptor is created + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param algorithm Pooling algorithm kind: either + /// #dnnl::algorithm::pooling_max, + /// #dnnl::algorithm::pooling_avg_include_padding, or + /// #dnnl::algorithm::pooling_avg (same as + /// #dnnl::algorithm::pooling_avg_exclude_padding). + /// @param src_desc Source memory descriptor. + /// @param dst_desc Destination memory descriptor. + /// @param strides Vector of strides for spatial dimension. + /// @param kernel Vector of kernel spatial dimensions. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(prop_kind prop_kind, algorithm algorithm, const memory::desc &src_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &kernel, const memory::dims &padding_l, const memory::dims &padding_r); }; - /// Primitive descriptor for pooling forward propagation primitive. + /// Primitive descriptor for a pooling forward propagation primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); @@ -1987,187 +3292,234 @@ struct pooling_forward : public primitive { /// Constructs a primitive descriptor for a pooling forward /// propagation primitive. /// - /// @param desc Descriptor for pooling forward propagation primitive. + /// @param desc Descriptor for a pooling forward propagation primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); /// Constructs a primitive descriptor for a pooling forward /// propagation primitive. /// - /// @param desc Descriptor for pooling forward propagation primitive. + /// @param desc Descriptor for a pooling forward propagation primitive. /// @param engine Engine to use. /// @param attr Primitive attributes to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. pooling_forward(); - /// Constructs an pooling forward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs a pooling forward propagation primitive. + /// @param pd Primitive descriptor for a pooling forward propagation + /// primitive. pooling_forward(const primitive_desc &pd); }; /// Pooling backward propagation primitive. struct pooling_backward : public primitive { - /// Descriptor for pooling backward propagation primitive. + /// Descriptor for a pooling backward propagation primitive. struct desc { - /// Constructs a pooling descriptor for pooling backward propagation - /// primitive using @p algorithm, memory descriptors, and pooling - /// parameters in the spatial domain: @p strides, @p kernel sizes, @p - /// padding_l, and @p padding_r. + /// Constructs a descriptor for pooling backward propagation primitive. + /// + /// Inputs: + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)), + /// if @p alg_kind = #dnnl::algorithm::pooling_max; must be + /// queried for using @ref dnnl::primitive_desc_base::query_md() + /// after a corresponding primitive descriptor is created + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// + /// @param algorithm Pooling algorithm kind: either + /// #dnnl::algorithm::pooling_max, + /// #dnnl::algorithm::pooling_avg_include_padding, or + /// #dnnl::algorithm::pooling_avg (same as + /// #dnnl::algorithm::pooling_avg_exclude_padding). + /// @param diff_src_desc Diff source memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + /// @param strides Vector of strides for spatial dimension. + /// @param kernel Vector of kernel spatial dimensions. + /// @param padding_l Vector of padding values for low indices for each + /// spatial dimension (front, top, left). + /// @param padding_r Vector of padding values for high indices for + /// each spatial dimension (back, bottom, right). desc(algorithm algorithm, const memory::desc &diff_src_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &kernel, const memory::dims &padding_l, const memory::dims &padding_r); }; - /// Primitive descriptor for pooling backward propagation primitive. + /// Primitive descriptor for a pooling backward propagation primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for a pooling forward + /// Constructs a primitive descriptor for a pooling backward /// propagation primitive. /// - /// @param desc Descriptor for pooling forward propagation primitive. + /// @param desc Descriptor for a pooling backward propagation primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for pooling forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a pooling forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const pooling_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for a pooling forward + /// Constructs a primitive descriptor for a pooling backward /// propagation primitive. /// - /// @param desc Descriptor for pooling forward propagation primitive. + /// @param desc Descriptor for a pooling backward propagation primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for pooling forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a pooling forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const pooling_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the diff source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc diff_src_desc() const; - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const memory::desc diff_dst_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. pooling_backward(); - /// Constructs an pooling backward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs a pooling backward propagation primitive. + /// @param pd Primitive descriptor for a pooling backward propagation + /// primitive. pooling_backward(const primitive_desc &pd); }; -/// Elementwise unary operation forward propagation primitive. +/// @} dnnl_api_pooling + +/// @addtogroup dnnl_api_eltwise Eltwise /// -/// This primitive computes unary elementwise operations such as rectified -/// linear unit (ReLU), Sigmoid, tanh or others for each element of the -/// source. +/// A primitive to perform elementwise operations such as the +/// rectifier linear unit (ReLU). /// /// Both forward and backward propagation primitives support in-place -/// operation; that is, src and dst can point to the same memory for forward -/// propagation, and diff_dst and diff_src can point to the same memory for +/// operation; that is, src and dst can refer to the same memory for forward +/// propagation, and diff_dst and diff_src can refer to the same memory for /// backward propagation. +/// +/// @warning +/// Because the original source data is required for backward propagation, +/// in-place forward propagation is not generally supported in the +/// training mode. However, for namely ReLU with the alpha parameter set +/// to 0, either dst or src can be used for the backward propagation, +/// which makes it possible to get performance benefit even in the +/// training mode. +/// +/// @{ + +/// Elementwise unary operation forward propagation primitive. struct eltwise_forward : public primitive { - /// Descriptor for elementwise forward propagation primitive. + /// Descriptor for an elementwise forward propagation primitive. struct desc { - /// Constructs a descriptor for elementwise forward propagation - /// primitive using @p prop_kind (acceptable values are - /// #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), @p - /// algorithm algorithm, memory descriptor @p data_desc, @p alpha, and - /// @p beta parameters. + /// Constructs a descriptor for an elementwise forward propagation + /// primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param algorithm Elementwise algorithm kind. + /// @param data_desc Source and destination memory descriptors. + /// @param alpha The alpha parameter for the elementwise operation. + /// Specific meaning depends on the algorithm. + /// @param beta The beta parameter for the elementwise operation. + /// Specific meaning depends on the algorithm. desc(prop_kind prop_kind, algorithm algorithm, - const memory::desc &src_desc, float alpha = 0, float beta = 0); + const memory::desc &data_desc, float alpha = 0, + float beta = 0); }; - /// Primitive descriptor for elementwise forward propagation primitive. + /// Primitive descriptor for an elementwise forward propagation primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for elementwise forward + /// Constructs a primitive descriptor for an elementwise forward /// propagation primitive. /// - /// @param desc Descriptor for elementwise forward propagation - /// primitive. + /// @param desc Descriptor for an elementwise forward propagation + /// primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for elementwise forward + /// Constructs a primitive descriptor for an elementwise forward /// propagation primitive. /// - /// @param desc Descriptor for elementwise forward propagation - /// primitive. + /// @param desc Descriptor for an elementwise forward propagation + /// primitive. /// @param engine Engine to use. /// @param attr Primitive attributes to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; }; /// Default constructor. Produces an empty object. eltwise_forward(); - /// Constructs an elementwise forward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs an eltwise forward propagation primitive. + /// @param pd Primitive descriptor for an eltwise forward propagation + /// primitive. eltwise_forward(const primitive_desc &pd); }; @@ -2175,808 +3527,1292 @@ struct eltwise_forward : public primitive { /// /// @sa eltwise_forward struct eltwise_backward : public primitive { - /// Descriptor for elementwise backward propagation primitive. + /// Descriptor for an elementwise backward propagation primitive. struct desc { - /// Constructs an eltwise descriptor for backward propagation using @p - /// algorithm algorithm memory descriptors @p diff_data_desc and @p - /// data_desc, and the @p alpha and @p beta parameters. + /// Constructs a descriptor for an elementwise backward propagation + /// primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// + /// @param algorithm Elementwise algorithm kind. + /// @param diff_data_desc Diff source and destination memory + /// descriptors. + /// @param data_desc Source memory descriptor. + /// @param alpha The alpha parameter for the elementwise operation. + /// Specific meaning depends on the algorithm. + /// @param beta The beta parameter for the elementwise operation. + /// Specific meaning depends on the algorithm. desc(algorithm algorithm, const memory::desc &diff_data_desc, - const memory::desc &data_desc, float alpha = 0, float beta = 0); + const memory::desc &data_desc, float alpha = 0, + float beta = 0); }; - /// Primitive descriptor for eltwise backward propagation primitive. + /// Primitive descriptor for eltwise backward propagation. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for elementwise backward + /// Constructs a primitive descriptor for an elementwise backward /// propagation primitive. /// - /// @param desc Descriptor for elementwise backward propagation - /// primitive. + /// @param desc Descriptor for an elementwise backward propagation + /// primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for elementwise forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for an elementwise forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const eltwise_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for elementwise backward + /// Constructs a primitive descriptor for an elementwise backward /// propagation primitive. /// - /// @param desc Descriptor for elementwise backward propagation - /// primitive. + /// @param desc Descriptor for an elementwise backward propagation + /// primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for elementwise forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for an elementwise forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const eltwise_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the diff source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_src_desc()const memory::desc diff_src_desc() const; - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const memory::desc diff_dst_desc() const; }; /// Default constructor. Produces an empty object. eltwise_backward(); - /// Constructs an elementwise backward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs an eltwise backward propagation primitive. + /// @param pd Primitive descriptor for an eltwise backward propagation + /// primitive. eltwise_backward(const primitive_desc &pd); }; +/// @} dnnl_api_eltwise + +/// @addtogroup dnnl_api_softmax Softmax +/// +/// A primitive to perform softmax. +/// +/// @{ + /// Softmax forward propagation primitive. struct softmax_forward : public primitive { - /// Descriptor for softmax forward propagation primitive. + /// Descriptor for a softmax forward propagation primitive. struct desc { - /// Constructs a softmax descriptor for forward propagation using @p - /// prop_kind (acceptable values are #dnnl::prop_kind::forward_training and - /// #dnnl::prop_kind::forward_inference) and memory descriptor @p data_desc. + /// Default constructor. Produces an empty object. + desc(); + + /// Constructs a descriptor for a softmax forward propagation + /// primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param data_desc Source and destination memory descriptor. + /// @param softmax_axis Axis over which softmax is computed. desc(prop_kind prop_kind, const memory::desc &data_desc, int softmax_axis); }; - /// Primitive descriptor for softmax forward propagation primitive. + /// Primitive descriptor for a softmax forward propagation primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for softmax forward + /// Constructs a primitive descriptor for a softmax forward /// propagation primitive. /// - /// @param desc Descriptor for softmax forward propagation - /// primitive. + /// @param desc descriptor for a softmax forward propagation + /// primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for softmax forward + /// Constructs a primitive descriptor for a softmax forward /// propagation primitive. /// - /// @param desc Descriptor for softmax forward propagation - /// primitive. + /// @param desc Descriptor for a softmax forward propagation + /// primitive. /// @param engine Engine to use. /// @param attr Primitive attributes to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; }; /// Default constructor. Produces an empty object. softmax_forward(); - /// Constructs an softmax forward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs a softmax forward propagation primitive. + /// @param pd Primitive descriptor for a softmax forward propagation + /// primitive. softmax_forward(const primitive_desc &pd); }; /// Softmax backward propagation primitive. struct softmax_backward : public primitive { - /// Descriptor for softmax backward propagation primitive. + /// Descriptor for a softmax backward propagation primitive. struct desc { - /// Constructs a softmax descriptor for backward propagation using - /// memory descriptors @p diff_desc and @p data_desc. - desc(const memory::desc &diff_desc, const memory::desc &data_desc, + /// Default constructor. Produces an empty object. + desc(); + + /// Constructs a descriptor for a softmax backward propagation + /// primitive. + /// + /// Inputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// + /// @param diff_data_desc Diff source and diff destination memory descriptor. + /// @param data_desc Destination memory descriptor. + /// @param softmax_axis Axis over which softmax is computed. + desc(const memory::desc &diff_data_desc, const memory::desc &data_desc, int softmax_axis); }; - /// Primitive descriptor for softmax backward propagation primitive. + /// Primitive descriptor for a softmax backward propagation primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for softmax backward + /// Constructs a primitive descriptor for a softmax backward /// propagation primitive. /// - /// @param desc Descriptor for softmax backward propagation - /// primitive. + /// @param desc Descriptor for a softmax backward propagation + /// primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for softmax forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a softmax forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const softmax_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for softmax backward + /// Constructs a primitive descriptor for a softmax backward /// propagation primitive. /// - /// @param desc Descriptor for softmax backward propagation - /// primitive. + /// @param desc Descriptor for a softmax backward propagation + /// primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for softmax forward - /// propagation primitive. It is used as a hint - /// when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a softmax forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const softmax_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; - /// Returns the diff source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_src_desc()const memory::desc diff_src_desc() const; - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc diff_dst_desc() const; }; /// Default constructor. Produces an empty object. softmax_backward(); - /// Constructs an softmax backward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs a softmax backward propagation primitive. + /// @param pd Primitive descriptor for a softmax backward propagation + /// primitive. softmax_backward(const primitive_desc &pd); }; +/// @} dnnl_api_softmax + +/// @addtogroup dnnl_api_logsoftmax LogSoftmax +/// +/// A primitive to perform logsoftmax. +/// +/// @{ + +/// Logsoftmax forward propagation primitive. +struct logsoftmax_forward : public primitive { + /// Descriptor for a logsoftmax forward propagation primitive. + struct desc { + /// Default constructor. Produces an empty object. + desc(); + + /// Constructs a descriptor for a logsoftmax forward propagation + /// primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param data_desc Source and destination memory descriptor. + /// @param logsoftmax_axis Axis over which softmax is computed. + desc(prop_kind prop_kind, const memory::desc &data_desc, + int logsoftmax_axis); + }; + + /// Primitive descriptor for a logsoftmax forward propagation primitive. + struct primitive_desc : public dnnl::primitive_desc { + /// Default constructor. Produces an empty object. + primitive_desc(); + + /// Constructs a primitive descriptor for a logsoftmax forward + /// propagation primitive. + /// + /// @param desc descriptor for a logsoftmax forward propagation + /// primitive. + /// @param engine Engine to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. + primitive_desc(const desc &desc, const engine &engine, + bool allow_empty = false); + + /// Constructs a primitive descriptor for a logsoftmax forward + /// propagation primitive. + /// + /// @param desc Descriptor for a logsoftmax forward propagation + /// primitive. + /// @param engine Engine to use. + /// @param attr Primitive attributes to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. + primitive_desc(const desc &desc, const primitive_attr &attr, + const engine &engine, bool allow_empty = false); + + /// @copydoc dnnl::primitive_desc_base::src_desc()const + memory::desc src_desc() const; + + /// @copydoc dnnl::primitive_desc_base::dst_desc()const + memory::desc dst_desc() const; + }; + + /// Default constructor. Produces an empty object. + logsoftmax_forward(); + + /// Constructs a logsoftmax forward propagation primitive. + /// @param pd Primitive descriptor for a logsoftmax forward propagation + /// primitive. + logsoftmax_forward(const primitive_desc &pd); +}; + +/// Logsoftmax backward propagation primitive. +struct logsoftmax_backward : public primitive { + /// Descriptor for a logsoftmax backward propagation primitive. + struct desc { + /// Default constructor. Produces an empty object. + desc(); + + /// Constructs a descriptor for a logsoftmax backward propagation + /// primitive. + /// + /// Inputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// + /// @param diff_data_desc Diff source and diff destination memory + /// descriptors. + /// @param data_desc Destination memory descriptor. + /// @param logsoftmax_axis Axis over which softmax is computed. + desc(const memory::desc &diff_data_desc, const memory::desc &data_desc, + int logsoftmax_axis); + }; + + /// Primitive descriptor for a logsoftmax backward propagation primitive. + struct primitive_desc : public dnnl::primitive_desc { + /// Default constructor. Produces an empty object. + primitive_desc(); + + /// Constructs a primitive descriptor for a logsoftmax backward + /// propagation primitive. + /// + /// @param desc Descriptor for a logsoftmax backward propagation + /// primitive. + /// @param engine Engine to use. + /// @param hint_fwd_pd Primitive descriptor for a logsoftmax forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. + primitive_desc(const desc &desc, const engine &engine, + const logsoftmax_forward::primitive_desc &hint_fwd_pd, + bool allow_empty = false); + + /// Constructs a primitive descriptor for a logsoftmax backward + /// propagation primitive. + /// + /// @param desc Descriptor for a logsoftmax backward propagation + /// primitive. + /// @param attr Primitive attributes to use. + /// @param engine Engine to use. + /// @param hint_fwd_pd Primitive descriptor for a logsoftmax forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. + primitive_desc(const desc &desc, const primitive_attr &attr, + const engine &engine, + const logsoftmax_forward::primitive_desc &hint_fwd_pd, + bool allow_empty = false); + + /// @copydoc dnnl::primitive_desc_base::dst_desc()const + memory::desc dst_desc() const; + + /// @copydoc dnnl::primitive_desc_base::diff_src_desc()const + memory::desc diff_src_desc() const; + + /// @copydoc dnnl::primitive_desc_base::dst_desc()const + memory::desc diff_dst_desc() const; + }; + + /// Default constructor. Produces an empty object. + logsoftmax_backward(); + + /// Constructs a logsoftmax backward propagation primitive. + /// @param pd Primitive descriptor for a logsoftmax backward propagation + /// primitive. + logsoftmax_backward(const primitive_desc &pd); +}; + +/// @} dnnl_api_logsoftmax + +/// @addtogroup dnnl_api_batch_normalization Batch Normalization +/// +/// A primitive to perform batch normalization. +/// +/// Both forward and backward propagation primitives support in-place +/// operation; that is, src and dst can refer to the same memory for forward +/// propagation, and diff_dst and diff_src can refer to the same memory for +/// backward propagation. +/// +/// The batch normalization primitives computations can be controlled by +/// specifying different @ref dnnl::normalization_flags values. For example, +/// batch normalization can compute the mean and variance on its own or take +/// them as inputs. It can either perform scaling and shifting using gamma +/// and beta parameters or not. Optionally, it can also perform a fused ReLU, +/// which in case of training would also require a workspace. +/// +/// @{ + /// Batch normalization forward propagation primitive. struct batch_normalization_forward : public primitive { - /// Descriptor for batch normalization forward propagation primitive. + /// Descriptor for a batch normalization forward propagation primitive. struct desc { /// Constructs a batch normalization descriptor for forward - /// propagation using @p prop_kind (acceptable values are - /// #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), memory - /// descriptor @p data_desc, normalization parameter @p epsilon, and - /// flags set using bit @p flags. - desc(prop_kind prop_kind, const memory::desc &src_desc, float epsilon, + /// propagation. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `mean` (#dnnl::primitive_desc_base::src_desc (`1`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// set in @p flags + /// - `variance` (#dnnl::primitive_desc_base::src_desc (`2`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// set in @p flags + /// - `scale_and_shift` (#dnnl::primitive_desc_base::weights_desc (`0`)), + /// if #dnnl::normalization_flags::use_scale_shift bit-flag is set + /// in @p flags + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `mean` (#dnnl::primitive_desc_base::dst_desc (`1`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// not set in @p flags @p prop_kind = + /// #dnnl::prop_kind::forward_training + /// - `variance` (#dnnl::primitive_desc_base::dst_desc (`2`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// not set in @p flags and @p prop_kind = + /// #dnnl::prop_kind::forward_training + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)), + /// if #dnnl::normalization_flags::fuse_norm_relu bit-flag is set + /// in @p flags and @p prop_kind = + /// #dnnl::prop_kind::forward_training; must be queried + /// for using @ref primitive_desc_base::query_md() after a + /// corresponding primitive descriptor is created + /// + /// @note + /// In-place operation is supported: the dst can refer to the same + /// memory as the src. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training and + /// #dnnl::prop_kind::forward_inference. + /// @param data_desc Source and destination memory descriptors. + /// @param epsilon Batch normalization epsilon parameter. + /// @param flags Batch normalization flags (@ref + /// dnnl::normalization_flags). + desc(prop_kind prop_kind, const memory::desc &data_desc, float epsilon, normalization_flags flags); }; - /// Primitive descriptor for batch normalization forward propagation + /// Primitive descriptor for a batch normalization forward propagation /// primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for batch normalization forward + /// Constructs a primitive descriptor for a batch normalization forward /// propagation primitive. /// - /// @param desc Descriptor for batch normalization forward propagation - /// primitive. + /// @param desc Descriptor for a batch normalization forward propagation + /// primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for batch normalization forward + /// Constructs a primitive descriptor for a batch normalization forward /// propagation primitive. /// - /// @param desc Descriptor for batch normalization forward propagation - /// primitive. + /// @param desc Descriptor for a batch normalization forward propagation + /// primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the weights (scale and shift) memory descriptor. - memory::desc weights_desc() const; - - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::primitive_desc_base::weights_desc()const + memory::desc weights_desc() const; + + /// @copydoc dnnl::primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; - /// Returns the mean memory descriptor. + /// Returns memory descriptor for mean. + /// @returns Memory descriptor for mean. memory::desc mean_desc() const; - /// Returns the variance memory descriptor. + /// Returns memory descriptor for variance. + /// @returns Memory descriptor for variance. memory::desc variance_desc() const; }; /// Default constructor. Produces an empty object. batch_normalization_forward(); - /// Constructs an batch normalization forward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a batch normalization forward propagation primitive. + /// @param pd Primitive descriptor for a batch normalization forward + /// propagation primitive. batch_normalization_forward(const primitive_desc &pd); }; /// Batch normalization backward propagation primitive. struct batch_normalization_backward : public primitive { - /// Descriptor for batch normalization backward propagation primitive. + /// Descriptor for a batch normalization backward propagation primitive. struct desc { /// Constructs a batch normalization descriptor for backward - /// propagation with respect to data and scale-shift parameters using - /// memory descriptors @p data_desc and @p diff_data_desc, - /// normalization parameter @p epsilon, and flags set using bit @p - /// flags. + /// propagation. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `mean` (#dnnl::primitive_desc_base::src_desc (`1`)) + /// - `variance` (#dnnl::primitive_desc_base::src_desc (`2`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - `scale_and_shift` (#dnnl::primitive_desc_base::weights_desc (`0`)), + /// if #dnnl::normalization_flags::use_scale_shift bit-flag is + /// set in @p flags + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)), + /// if #dnnl::normalization_flags::fuse_norm_relu bit-flag is set + /// in @p flags + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// - diff_scale_and_shift + /// (#dnnl::primitive_desc_base::diff_weights_desc (`0`)), + /// if #dnnl::normalization_flags::use_scale_shift bitflags is + /// set in @p flags and @p prop_kind = #dnnl::prop_kind::backward + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::backward_data and #dnnl::prop_kind::backward + /// (diffs for all parameters are computed in this case). + /// @param diff_data_desc Diff source and diff destination memory + /// descriptor. + /// @param data_desc Source memory descriptor. + /// @param epsilon Batch normalization epsilon parameter. + /// @param flags Batch normalization flags (@ref + /// dnnl::normalization_flags). desc(prop_kind prop_kind, const memory::desc &diff_data_desc, const memory::desc &data_desc, float epsilon, normalization_flags flags); }; - /// Primitive descriptor for batch normalization backward propagation + /// Primitive descriptor for a batch normalization backward propagation /// primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for batch normalization backward + /// Constructs a primitive descriptor for a batch normalization backward /// propagation primitive. /// - /// @param desc Descriptor for batch normalization backward propagation - /// primitive. + /// @param desc Descriptor for a batch normalization backward + /// propagation primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for batch normalization - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a batch normalization + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const batch_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for batch normalization backward + /// Constructs a primitive descriptor for a batch normalization backward /// propagation primitive. /// - /// @param desc Descriptor for batch normalization backward propagation - /// primitive. + /// @param desc Descriptor for a batch normalization backward + /// propagation primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for batch normalization - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a batch normalization + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const batch_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the mean memory descriptor. - memory::desc mean_desc() const; - - /// Returns the variance memory descriptor. - memory::desc variance_desc() const; - - /// Returns the weights (scale and shift) memory descriptor. + /// @copydoc dnnl::primitive_desc_base::weights_desc()const memory::desc weights_desc() const; - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_src_desc()const + memory::desc diff_src_desc() const; + + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const memory::desc diff_dst_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. - memory::desc workspace_desc() const; + /// @copydoc dnnl::primitive_desc_base::diff_weights_desc()const + memory::desc diff_weights_desc() const; - /// Returns the diff source memory descriptor. - memory::desc diff_src_desc() const; + /// @copydoc dnnl::batch_normalization_forward::primitive_desc::mean_desc()const + memory::desc mean_desc() const; - /// Returns the diff weights (scale and shift) memory descriptor. - memory::desc diff_weights_desc() const; + /// @copydoc dnnl::batch_normalization_forward::primitive_desc::variance_desc()const + memory::desc variance_desc() const; + + /// @copydoc dnnl::primitive_desc_base::workspace_desc()const + memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. batch_normalization_backward(); - /// Constructs an batch normalization backward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a batch normalization backward propagation primitive. + /// @param pd Primitive descriptor for a batch normalization backward + /// propagation primitive. batch_normalization_backward(const primitive_desc &pd); }; +/// @} dnnl_api_batch_normalization + +/// @addtogroup dnnl_api_layer_normalization Layer Normalization +/// +/// A primitive to perform layer normalization. Normalization is performed +/// within the last logical dimension of data tensor. +/// +/// Both forward and backward propagation primitives support in-place +/// operation; that is, src and dst can refer to the same memory for forward +/// propagation, and diff_dst and diff_src can refer to the same memory for +/// backward propagation. +/// +/// The layer normalization primitives computations can be controlled by +/// specifying different dnnl::normalization_flags values. For example, +/// layer normalization forward propagation can be configured to either +/// compute the mean and variance or take them as arguments. It can either +/// perform scaling and shifting using gamma and beta parameters or not. +/// Optionally, it can also perform a fused ReLU, which in case of training +/// would also require a workspace. +/// +/// @{ + /// Layer normalization forward propagation primitive. struct layer_normalization_forward : public primitive { - /// Descriptor for layer normalization forward propagation primitive. + /// Descriptor for a layer normalization forward propagation primitive. struct desc { - /// Constructs a layer normalization descriptor for forward - /// propagation using @p prop_kind (acceptable values are - /// #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), data memory - /// descriptor @p data_desc, statistics memory descriptor @p - /// stat_desc, normalization parameter @p epsilon, and flags set - /// using bit @p flags. + /// Constructs a descriptor for layer normalization forward + /// propagation primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `mean` (#dnnl::primitive_desc_base::src_desc (`1`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// set in @p flags + /// - `variance` (#dnnl::primitive_desc_base::src_desc (`2`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// set in @p flags + /// - `scale_and_shift` (#dnnl::primitive_desc_base::weights_desc (`0`)), + /// if #dnnl::normalization_flags::use_scale_shift bit-flag is set + /// in @p flags + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `mean` (#dnnl::primitive_desc_base::dst_desc (`1`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// not set in @p flags @p prop_kind = + /// #dnnl::prop_kind::forward_training + /// - `variance` (#dnnl::primitive_desc_base::dst_desc (`2`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// not set in @p flags and @p prop_kind = + /// #dnnl::prop_kind::forward_training + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param data_desc Source and destination memory descriptor. + /// @param stat_desc Statistics memory descriptors. + /// @param epsilon Layer normalization epsilon parameter. + /// @param flags Layer normalization flags (@ref + /// dnnl::normalization_flags). desc(prop_kind prop_kind, const memory::desc &data_desc, const memory::desc &stat_desc, float epsilon, normalization_flags flags); - /// Constructs a layer normalization descriptor for forward - /// propagation using @p prop_kind (acceptable values are - /// #dnnl::prop_kind::forward_training and #dnnl::prop_kind::forward_inference), data memory - /// descriptor @p data_desc, statistics memory descriptor @p - /// stat_desc, normalization parameter @p epsilon, and flags set - /// using bit @p flags. - desc(prop_kind prop_kind, const memory::desc &src_desc, float epsilon, + /// Constructs a descriptor for layer normalization forward + /// propagation primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `mean` (#dnnl::primitive_desc_base::src_desc (`1`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// set in @p flags + /// - `variance` (#dnnl::primitive_desc_base::src_desc (`2`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// set in @p flags + /// - `scale_and_shift` (#dnnl::primitive_desc_base::weights_desc (`0`)), + /// if #dnnl::normalization_flags::use_scale_shift bit-flag is set + /// in @p flags + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `mean` (#dnnl::primitive_desc_base::dst_desc (`1`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// not set in @p flags @p prop_kind = + /// #dnnl::prop_kind::forward_training + /// - `variance` (#dnnl::primitive_desc_base::dst_desc (`2`)), + /// if #dnnl::normalization_flags::use_global_stats bit-flag is + /// not set in @p flags and @p prop_kind = + /// #dnnl::prop_kind::forward_training + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param data_desc Source and destination memory descriptor. + /// @param epsilon Layer normalization epsilon parameter. + /// @param flags Layer normalization flags (@ref + /// dnnl::normalization_flags). + desc(prop_kind prop_kind, const memory::desc &data_desc, float epsilon, normalization_flags flags); }; - /// Primitive descriptor for layer normalization forward propagation + /// Primitive descriptor for a layer normalization forward propagation /// primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for layer normalization forward + /// Constructs a primitive descriptor for a layer normalization forward /// propagation primitive. /// - /// @param desc Descriptor for layer normalization forward propagation - /// primitive. + /// @param desc Descriptor for a layer normalization forward propagation + /// primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for layer normalization forward + /// Constructs a primitive descriptor for a layer normalization forward /// propagation primitive. /// - /// @param desc Descriptor for layer normalization forward propagation - /// primitive. + /// @param desc Descriptor for a layer normalization forward propagation + /// primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the weights (scale and shift) memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const + memory::desc dst_desc() const; + + /// @copydoc dnnl::primitive_desc_base::weights_desc()const memory::desc weights_desc() const; - /// Returns the destination memory descriptor. - memory::desc dst_desc() const; + /// @copydoc dnnl::primitive_desc_base::workspace_desc()const + memory::desc workspace_desc() const; - /// Returns the mean memory descriptor. + /// @copydoc dnnl::batch_normalization_forward::primitive_desc::mean_desc()const memory::desc mean_desc() const; - /// Returns the variance memory descriptor. + /// @copydoc dnnl::batch_normalization_forward::primitive_desc::variance_desc()const memory::desc variance_desc() const; - - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. - memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. layer_normalization_forward(); - /// Constructs an layer normalization forward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a layer normalization forward propagation primitive. + /// @param pd Primitive descriptor for a layer normalization forward + /// propagation primitive. layer_normalization_forward(const primitive_desc &pd); }; /// Layer normalization backward propagation primitive. struct layer_normalization_backward : public primitive { - /// Descriptor for layer normalization backward propagation primitive. + /// Descriptor for a layer normalization backward propagation primitive. struct desc { - /// Constructs a layer normalization descriptor for backward - /// propagation with respect to data and scale-shift parameters using - /// memory descriptors @p diff_data_desc, @p data_desc and @p - /// stat_desc, normalization parameter @p epsilon, and p flags set - /// using bit @p flags. + /// Constructs a descriptor for layer normalization backward + /// propagation primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `mean` (#dnnl::primitive_desc_base::src_desc (`1`)) + /// - `variance` (#dnnl::primitive_desc_base::src_desc (`2`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - `scale_and_shift` (#dnnl::primitive_desc_base::weights_desc (`0`)), + /// if #dnnl::normalization_flags::use_scale_shift bit-flag is + /// set in @p flags + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// - diff_scale_and_shift + /// (#dnnl::primitive_desc_base::diff_weights_desc (`0`)), if + /// #dnnl::normalization_flags::use_scale_shift bit-flag is set + /// in @p flags and @p prop_kind = #dnnl::prop_kind::backward + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::backward_data and #dnnl::prop_kind::backward + /// (diffs for all parameters are computed in this case). + /// @param diff_data_desc Diff source and diff destination memory + /// descriptor. + /// @param data_desc Source memory descriptor. + /// @param stat_desc Statistics memory descriptors. + /// @param epsilon Layer normalization epsilon parameter. + /// @param flags Layer normalization flags (@ref + /// dnnl::normalization_flags). desc(prop_kind prop_kind, const memory::desc &diff_data_desc, const memory::desc &data_desc, const memory::desc &stat_desc, float epsilon, normalization_flags flags); - /// Constructs a layer normalization descriptor for backward - /// propagation with respect to data and scale-shift parameters using - /// memory descriptors @p diff_data_desc and @p data_desc - /// normalization parameter @p epsilon, and flags set using bit - /// @p flags. + /// Constructs a descriptor for layer normalization backward + /// propagation primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `mean` (#dnnl::primitive_desc_base::src_desc (`1`)) + /// - `variance` (#dnnl::primitive_desc_base::src_desc (`2`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - `scale_and_shift` (#dnnl::primitive_desc_base::weights_desc (`0`)), + /// if #dnnl::normalization_flags::use_scale_shift bit-flag is + /// set in @p flags + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// - diff_scale_and_shift + /// (#dnnl::primitive_desc_base::diff_weights_desc (`0`)), if + /// #dnnl::normalization_flags::use_scale_shift bit-flag is set + /// in @p flags and @p prop_kind = #dnnl::prop_kind::backward + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::backward_data and #dnnl::prop_kind::backward + /// (diffs for all parameters are computed in this case). + /// @param diff_data_desc Diff source and diff destination memory + /// descriptor. + /// @param data_desc Source memory descriptor. + /// @param epsilon Layer normalization epsilon parameter. + /// @param flags Layer normalization flags (@ref + /// dnnl::normalization_flags). desc(prop_kind prop_kind, const memory::desc &diff_data_desc, const memory::desc &data_desc, float epsilon, normalization_flags flags); }; - /// Primitive descriptor for layer normalization backward propagation + /// Primitive descriptor for a layer normalization backward propagation /// primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for layer normalization backward + /// Constructs a primitive descriptor for a layer normalization backward /// propagation primitive. /// - /// @param desc Descriptor for layer normalization backward propagation - /// primitive. + /// @param desc Descriptor for a layer normalization backward + /// propagation primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for layer normalization - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a layer normalization + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const layer_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for layer normalization backward + /// Constructs a primitive descriptor for a layer normalization backward /// propagation primitive. /// - /// @param desc Descriptor for layer normalization backward propagation - /// primitive. + /// @param desc Descriptor for a layer normalization backward + /// propagation primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for layer normalization - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a layer normalization + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const layer_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the mean memory descriptor. - memory::desc mean_desc() const; + /// @copydoc dnnl::primitive_desc_base::weights_desc()const + memory::desc weights_desc() const; - /// Returns the variance memory descriptor. - memory::desc variance_desc() const; - - /// Returns the weights (scale and shift) memory descriptor. - memory::desc weights_desc() const; - - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; - /// Returns the diff destination memory descriptor. - memory::desc diff_dst_desc() const; - - /// Returns the diff source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_src_desc()const memory::desc diff_src_desc() const; - /// Returns the diff weights (scale and shift) memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const + memory::desc diff_dst_desc() const; + + /// @copydoc dnnl::primitive_desc_base::diff_weights_desc()const memory::desc diff_weights_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::batch_normalization_forward::primitive_desc::mean_desc()const + memory::desc mean_desc() const; + + /// @copydoc dnnl::batch_normalization_forward::primitive_desc::variance_desc()const + memory::desc variance_desc() const; + + /// @copydoc dnnl::primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. layer_normalization_backward(); - /// Constructs an layer normalization backward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a layer normalization backward propagation primitive. + /// @param pd Primitive descriptor for a layer normalization backward + /// propagation primitive. layer_normalization_backward(const primitive_desc &pd); }; +/// @} dnnl_api_layer_normalization + +/// @addtogroup dnnl_api_inner_product Inner Product +/// +/// A primitive to compute an inner product. +/// +/// @{ + /// Inner product forward propagation primitive. struct inner_product_forward : public primitive { - /// Descriptor for inner product forward propagation primitive. + /// Descriptor for an inner product forward propagation primitive. struct desc { - /// Constructs a descriptor for inner product forward propagation - /// primitive using @p prop_kind (acceptable values are - /// #dnnl::prop_kind::forward_training and - /// #dnnl::prop_kind::forward_inference) and memory descriptors. In - /// order to create an inner product without bias, the @p bias_desc - /// should be initialized with a zero memory descriptor. + /// Constructs a descriptor for an inner product forward propagation + /// primitive with bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param src_desc Memory descriptor for src. + /// @param weights_desc Memory descriptor for diff weights. + /// @param bias_desc Memory descriptor for diff bias. + /// @param dst_desc Memory descriptor for diff dst. desc(prop_kind prop_kind, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc); - /// Constructs an descriptor for inner product forward propagation - /// primitive using @p prop_kind (acceptable values are - /// #dnnl::prop_kind::forward_training and - /// #dnnl::prop_kind::forward_inference) and memory descriptors. + /// Constructs a descriptor for an inner product forward propagation + /// primitive without bias. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param src_desc Memory descriptor for src. + /// @param weights_desc Memory descriptor for diff weights. + /// @param dst_desc Memory descriptor for dst. desc(prop_kind prop_kind, const memory::desc &src_desc, - const memory::desc &weights_desc, const memory::desc &dst_desc); + const memory::desc &weights_desc, + const memory::desc &dst_desc); }; - /// Primitive descriptor for inner product forward propagation primitive. + /// Primitive descriptor for an inner product forward propagation primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for inner product forward + /// Constructs a primitive descriptor for an inner product forward /// propagation primitive. /// - /// @param desc Descriptor for inner product forward propagation - /// primitive. + /// @param desc Descriptor for an inner product forward propagation + /// primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for inner product forward + /// Constructs a primitive descriptor for an inner product forward /// propagation primitive. /// - /// @param desc Descriptor for inner product forward propagation - /// primitive. + /// @param desc Descriptor for an inner product forward propagation + /// primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the weights memory descriptor. + /// @copydoc dnnl::primitive_desc_base::weights_desc()const memory::desc weights_desc() const; - /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc - /// creation time. - memory::desc bias_desc() const; - - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; + + /// @copydoc dnnl::convolution_forward::primitive_desc::bias_desc()const + memory::desc bias_desc() const; }; /// Default constructor. Produces an empty object. inner_product_forward(); - /// Constructs an inner product forward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs an inner product forward propagation primitive. + /// @param pd Primitive descriptor for an inner product forward + /// propagation primitive. inner_product_forward(const primitive_desc &pd); }; /// Inner product backward propagation primitive. struct inner_product_backward_data : public primitive { - /// Descriptor for inner product backward propagation primitive. + /// Descriptor for an inner product backward propagation primitive. struct desc { - /// Constructs a descriptor for inner product backward propagation + /// Constructs a descriptor for an inner product backward propagation /// primitive. /// - /// @param diff_src_desc Memory descriptor for diff src. - /// @param weights_desc Memory descriptor for weights. - /// @param diff_dst_desc Memory descriptor for diff dst. + /// Inputs: + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param diff_src_desc Memory descriptor for diff src. + /// @param weights_desc Memory descriptor for weights. + /// @param diff_dst_desc Memory descriptor for diff dst. desc(const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc); }; - /// Primitive descriptor for inner product backward propagation primitive. + /// Primitive descriptor for an inner product backward propagation + /// primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for inner product backward + /// Constructs a primitive descriptor for an inner product backward /// propagation primitive. /// - /// @param desc Descriptor for inner product backward propagation - /// primitive. + /// @param desc Descriptor for an inner product backward propagation + /// primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for inner product - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for an inner product + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for inner product backward + /// Constructs a primitive descriptor for an inner product backward /// propagation primitive. /// - /// @param desc Descriptor for inner product backward propagation - /// primitive. + /// @param desc Descriptor for an inner product backward propagation + /// primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for inner product - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for an inner product + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the diff source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_src_desc()const memory::desc diff_src_desc() const; - /// Returns the weights memory descriptor. + /// @copydoc dnnl::primitive_desc_base::weights_desc()const memory::desc weights_desc() const; - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const memory::desc diff_dst_desc() const; }; /// Default constructor. Produces an empty object. inner_product_backward_data(); - /// Constructs an inner product backward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs an inner product backward propagation primitive. + /// @param pd Primitive descriptor for an inner product backward + /// propagation primitive. inner_product_backward_data(const primitive_desc &pd); }; -/// Inner product weights update primitive. +/// Inner product weights gradient primitive. struct inner_product_backward_weights : public primitive { - /// Descriptor for inner product weights update primitive. + /// Descriptor for an inner product weights gradient primitive. struct desc { - /// Constructs a descriptor for inner product descriptor weights - /// update primitive. + /// Constructs a descriptor for an inner product descriptor weights + /// update primitive with bias. /// - /// @param src_desc Memory descriptor for src. - /// @param diff_weights_desc Memory descriptor for diff weights. - /// @param diff_bias_desc Memory descriptor for diff bias. - /// @param diff_dst_desc Memory descriptor for diff dst. + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_weights` (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) + /// - `diff_bias` (#dnnl::primitive_desc_base::diff_weights_desc (`1`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param src_desc Memory descriptor for src. + /// @param diff_weights_desc Memory descriptor for diff weights. + /// @param diff_bias_desc Memory descriptor for diff bias. + /// @param diff_dst_desc Memory descriptor for diff dst. desc(const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc); - /// Constructs a descriptor for inner product descriptor weights - /// update primitive. + /// Constructs a descriptor for an inner product descriptor weights + /// update primitive without bias. /// - /// @param src_desc Memory descriptor for src. - /// @param diff_weights_desc Memory descriptor for diff weights. - /// @param diff_dst_desc Memory descriptor for diff dst. + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_weights` (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) /// /// @note /// Memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param src_desc Memory descriptor for src. + /// @param diff_weights_desc Memory descriptor for diff weights. + /// @param diff_dst_desc Memory descriptor for diff dst. desc(const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc); }; - /// Primitive descriptor for inner product weights update primitive. + /// Primitive descriptor for an inner product weights gradient primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for inner product weights update - /// primitive. + /// Constructs a primitive descriptor for an inner product weights + /// update primitive. /// - /// @param desc Descriptor for inner product weights update primitive. + /// @param desc Descriptor for an inner product weights gradient + /// primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for inner product - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for an inner product + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for inner product weights update - /// primitive. + /// Constructs a primitive descriptor for an inner product weights + /// update primitive. /// - /// @param desc Descriptor for inner product weights update primitive. + /// @param desc Descriptor for an inner product weights gradient + /// primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for inner product - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for an inner product + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the diff weights memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_weights_desc()const memory::desc diff_weights_desc() const; - /// Returns the diff bias memory descriptor. - memory::desc diff_bias_desc() const; - - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const memory::desc diff_dst_desc() const; + + /// @copydoc dnnl::convolution_backward_weights::primitive_desc::diff_bias_desc()const + memory::desc diff_bias_desc() const; }; /// Default constructor. Produces an empty object. @@ -2987,36 +4823,160 @@ struct inner_product_backward_weights : public primitive { inner_product_backward_weights(const primitive_desc &pd); }; +/// @} dnnl_api_inner_product + +/// @addtogroup dnnl_api_rnn RNN +/// +/// A primitive to compute recurrent neural network layers. +/// +/// @{ + /// Base class for primitive descriptors for RNN primitives. struct rnn_primitive_desc_base : public primitive_desc { /// Default constructor. Produces an empty object. rnn_primitive_desc_base(); + + /// Returns source layer memory descriptor. + /// @returns Source layer memory descriptor. + memory::desc src_layer_desc() const; + + /// Returns source iteration memory descriptor. + /// @returns Source iteration memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// source iteration parameter. + memory::desc src_iter_desc() const; + + /// Returns source recurrent cell state memory descriptor. + /// @returns Source recurrent cell state memory descriptor. + memory::desc src_iter_c_desc() const; + + /// Returns weights layer memory descriptor. + /// @returns Weights layer memory descriptor. + memory::desc weights_layer_desc() const; + + /// Returns weights iteration memory descriptor. + /// @returns Weights iteration memory descriptor. + memory::desc weights_iter_desc() const; + + /// Returns bias memory descriptor. + /// @returns Bias memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// bias parameter. + memory::desc bias_desc() const; + + /// Returns destination layer memory descriptor. + /// @returns Destination layer memory descriptor. + memory::desc dst_layer_desc() const; + + /// Returns destination iteration memory descriptor. + /// @returns Destination iteration memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// destination iteration parameter. + memory::desc dst_iter_desc() const; + + /// Returns destination recurrent cell state memory descriptor. + /// @returns Destination recurrent cell state memory descriptor. + memory::desc dst_iter_c_desc() const; + + /// Returns diff source layer memory descriptor. + /// @returns Diff source layer memory descriptor. + memory::desc diff_src_layer_desc() const; + + /// Returns diff source iteration memory descriptor. + /// @returns Diff source iteration memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// diff source iteration parameter. + memory::desc diff_src_iter_desc() const; + + /// Returns diff source recurrent cell state memory descriptor. + /// @returns Diff source recurrent cell state memory descriptor. + memory::desc diff_src_iter_c_desc() const; + + /// Returns diff weights layer memory descriptor. + /// @returns Diff weights layer memory descriptor. + memory::desc diff_weights_layer_desc() const; + + /// Returns diff weights iteration memory descriptor. + /// @returns Diff weights iteration memory descriptor. + memory::desc diff_weights_iter_desc() const; + + /// Returns diff bias memory descriptor. + /// @returns Diff bias memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// diff bias parameter. + memory::desc diff_bias_desc() const; + + /// Returns diff destination layer memory descriptor. + /// @returns Diff destination layer memory descriptor. + memory::desc diff_dst_layer_desc() const; + + /// Returns diff destination iteration memory descriptor. + /// @returns Diff destination iteration memory descriptor. + /// @returns A zero memory descriptor if the primitive does not have a + /// diff destination iteration parameter. + memory::desc diff_dst_iter_desc() const; + + /// Returns diff destination recurrent cell state memory descriptor. + /// @returns Diff destination recurrent cell state memory descriptor. + memory::desc diff_dst_iter_c_desc() const; }; /// Vanilla RNN forward propagation primitive. struct vanilla_rnn_forward : public primitive { - /// Descriptor for vanilla RNN forward propagation primitive. + /// Descriptor for a vanilla RNN forward propagation primitive. struct desc { - /// Constructs a descriptor for vanilla RNN forward propagation - /// primitive using @p prop_kind, @p activation, @p direction, and - /// memory descriptors. - /// - /// If @p activation is #algorithm::eltwise_relu, @p alpha represents the - /// negative slope. The @p beta and @p flags are currently ignored. - /// - /// The @p src_iter_desc, @p bias_desc, and @p dst_iter_desc are - /// allowed to point to a zero memory descriptor, which would indicate - /// that the primitive should not use them. + /// Constructs a descriptor for a vanilla RNN forward propagation + /// primitive. /// - /// @note - /// If @p prop_kind equals #dnnl::prop_kind::forward_training, you must - /// query for workspace memory descriptor before creating the - /// primitive. + /// The @p src_iter_desc, @p bias_desc, and @p dst_iter_desc may point + /// to a zero memory descriptor. This would then indicate that the RNN + /// forward propagation primitive should not use them and should + /// default to zero values instead. + /// + /// Inputs: + /// - `src_layer` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src_iter` (#dnnl::primitive_desc_base::src_desc (`1`)), if used + /// - `weights_layer` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `weights_iter` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`2`)), if used + /// + /// Outputs: + /// - `dst_layer` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `dst_iter` (#dnnl::primitive_desc_base::dst_desc (`1`)), if used + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)), + /// if @p prop_kind equals #dnnl::prop_kind::forward_training; must be + /// queried for using @ref dnnl::primitive_desc_base::query_md() after a + /// corresponding primitive descriptor is created /// /// @note /// All memory descriptors except @p src_iter_desc can be /// initialized with an #dnnl::memory::format_tag::any value of @p /// format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param activation Activation kind. Possible values are + /// #dnnl::algorithm::eltwise_relu, + /// #dnnl::algorithm::eltwise_tanh, or + /// #dnnl::algorithm::eltwise_logistic. + /// @param direction RNN direction. See @ref dnnl::rnn_direction for + /// more info. + /// @param src_layer_desc Memory descriptor for the input vector. + /// @param src_iter_desc Memory descriptor for the input recurrent + /// hidden state vector. + /// @param weights_layer_desc Memory descriptor for the weights + /// applied to the layer input. + /// @param weights_iter_desc Memory descriptor for the weights applied + /// to the recurrent input. + /// @param bias_desc Bias memory descriptor. + /// @param dst_layer_desc Memory descriptor for the output vector. + /// @param dst_iter_desc Memory descriptor for the output recurrent + /// hidden state vector. + /// @param flags Unused. + /// @param alpha Negative slope if activation is + /// #dnnl::algorithm::eltwise_relu. + /// @param beta Unused. desc(prop_kind prop_kind, algorithm activation, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, @@ -3029,79 +4989,69 @@ struct vanilla_rnn_forward : public primitive { float beta = 0.0f); }; - /// Primitive descriptor for vanilla RNN forward propagation primitive. + /// Primitive descriptor for a vanilla RNN forward propagation primitive. struct primitive_desc : public rnn_primitive_desc_base { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for vanilla RNN forward + /// Constructs a primitive descriptor for a vanilla RNN forward /// propagation primitive. /// - /// @param desc Descriptor for vanilla RNN forward propagation - /// primitive. + /// @param desc Descriptor for a vanilla RNN forward propagation + /// primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for vanilla RNN forward + /// Constructs a primitive descriptor for a vanilla RNN forward /// propagation primitive. /// - /// @param desc Descriptor for vanilla RNN forward propagation - /// primitive. + /// @param desc Descriptor for a vanilla RNN forward propagation + /// primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_layer_desc()const memory::desc src_layer_desc() const; - /// Returns the source iteration memory descriptor. - /// - /// Returns a zero_md if no src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc src_iter_desc() const; - /// Returns the weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_layer_desc()const memory::desc weights_layer_desc() const; - /// Returns the weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_iter_desc()const memory::desc weights_iter_desc() const; - /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::bias_desc()const memory::desc bias_desc() const; - /// Returns the destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_layer_desc()const memory::desc dst_layer_desc() const; - /// Returns the destination iteration memory descriptor. - /// - /// Returns a zero_md if no dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_iter_desc()const memory::desc dst_iter_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::rnn_primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. vanilla_rnn_forward(); - /// Constructs a vanilla RNN forward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a vanilla RNN forward propagation primitive. + /// @param pd Primitive descriptor for a vanilla RNN forward + /// propagation primitive. vanilla_rnn_forward(const primitive_desc &pd); }; @@ -3109,23 +5059,81 @@ struct vanilla_rnn_forward : public primitive { struct vanilla_rnn_backward : public primitive { /// Vanilla RNN descriptor backward propagation primitive. struct desc { - /// Constructs a descriptor for vanilla RNN backward propagation - /// primitive using @p prop_kind, @p activation, @p direction, and - /// memory descriptors. - /// - /// If @p activation is #algorithm::eltwise_relu, @p alpha represents the - /// negative slope. The @p beta and @p flags are currently ignored. + /// Constructs a descriptor for a vanilla RNN backward propagation + /// primitive. /// - /// The @p src_iter_desc (simultaneously with @p diff_src_iter_desc), - /// @p bias_desc (simultaneously with @p diff_bias_desc), and @p - /// dst_iter_desc (simultaneously with @p diff_src_iter_desc) are - /// allowed point to a zero memory descriptor, which would indicate - /// that the primitive should not use them and consider them to be - /// zero values. + /// The @p src_iter_desc together with @p diff_src_iter_desc, @p + /// bias_desc together with @p diff_bias_desc, and @p dst_iter_desc + /// together with @p diff_src_iter_desc, may point to a zero memory + /// descriptor. This would then indicate that the RNN backward + /// propagation primitive should not use the respective data and + /// should use zero values instead. + /// + /// Inputs: + /// - `src_layer` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src_iter` (#dnnl::primitive_desc_base::src_desc (`1`)), if used + /// - `weights_layer` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `weights_iter` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`2`)), if used + /// - `dst_layer` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `dst_iter` (#dnnl::primitive_desc_base::dst_desc (`1`)), if used + /// - `diff_dst_layer` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - diff_dst_iter + /// (#dnnl::primitive_desc_base::diff_dst_desc (`1`)), if used + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)) + /// + /// Outputs: + /// - diff_src_layer + /// (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// - diff_src_iter + /// (#dnnl::primitive_desc_base::diff_src_desc (`1`)), if used + /// - diff_weights_layer + /// (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) + /// - diff_weights_iter + /// (#dnnl::primitive_desc_base::diff_weights_desc (`1`)) + /// - diff_bias + /// (#dnnl::primitive_desc_base::diff_weights_desc (`2`)), if used /// /// @note /// All memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Must be + /// #dnnl::prop_kind::backward. + /// @param activation Activation kind. Possible values are + /// #dnnl::algorithm::eltwise_relu, + /// #dnnl::algorithm::eltwise_tanh, or + /// #dnnl::algorithm::eltwise_logistic. + /// @param direction RNN direction. See @ref dnnl::rnn_direction for + /// more info. + /// @param src_layer_desc Memory descriptor for the input vector. + /// @param src_iter_desc Memory descriptor for the input recurrent + /// hidden state vector. + /// @param weights_layer_desc Memory descriptor for the weights + /// applied to the layer input. + /// @param weights_iter_desc Memory descriptor for the weights applied + /// to the recurrent input. + /// @param bias_desc Bias memory descriptor. + /// @param dst_layer_desc Memory descriptor for the output vector. + /// @param dst_iter_desc Memory descriptor for the output recurrent + /// hidden state vector. + /// @param diff_src_layer_desc Memory descriptor for the diff of input + /// vector. + /// @param diff_src_iter_desc Memory descriptor for the diff of input + /// recurrent hidden state vector. + /// @param diff_weights_layer_desc Memory descriptor for the diff of + /// weights applied to the layer input. + /// @param diff_weights_iter_desc Memory descriptor for the diff of + /// weights applied to the recurrent input. + /// @param diff_bias_desc Diff bias memory descriptor. + /// @param diff_dst_layer_desc Memory descriptor for the diff of + /// output vector. + /// @param diff_dst_iter_desc Memory descriptor for the diff of output + /// recurrent hidden state vector. + /// @param flags Unused. + /// @param alpha Negative slope if activation is + /// #dnnl::algorithm::eltwise_relu. + /// @param beta Unused. desc(prop_kind prop_kind, algorithm activation, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, @@ -3145,141 +5153,157 @@ struct vanilla_rnn_backward : public primitive { float beta = 0.0f); }; - /// Primitive descriptor for RNN backward propagation primitive. + /// Primitive descriptor for a RNN backward propagation primitive. struct primitive_desc : public rnn_primitive_desc_base { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for vanilla RNN backward + /// Constructs a primitive descriptor for a vanilla RNN backward /// propagation primitive. /// - /// @param desc Descriptor for vanilla RNN backward propagation - /// primitive. + /// @param desc Descriptor for a vanilla RNN backward propagation + /// primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for vanilla RNN - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a vanilla RNN + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const vanilla_rnn_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for vanilla RNN backward + /// Constructs a primitive descriptor for a vanilla RNN backward /// propagation primitive. /// - /// @param desc Descriptor for vanilla RNN backward propagation - /// primitive. + /// @param desc Descriptor for a vanilla RNN backward propagation + /// primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for vanilla RNN - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a vanilla RNN + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const vanilla_rnn_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_layer_desc()const memory::desc src_layer_desc() const; - /// Returns the source iteration memory descriptor. - /// - /// Returns a zero_md if no src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc src_iter_desc() const; - /// Returns the weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_layer_desc()const memory::desc weights_layer_desc() const; - /// Returns the weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_iter_desc()const memory::desc weights_iter_desc() const; - /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::bias_desc()const memory::desc bias_desc() const; - /// Returns the destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_layer_desc()const memory::desc dst_layer_desc() const; - /// Returns the destination iteration memory descriptor. - /// - /// Returns a zero_md if no dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_iter_desc()const memory::desc dst_iter_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::rnn_primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; - /// Returns the diff source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_src_layer_desc()const memory::desc diff_src_layer_desc() const; - /// Returns the diff source iteration memory descriptor. - /// - /// Returns a zero_md if no diff_src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_src_iter_desc()const memory::desc diff_src_iter_desc() const; - /// Returns the diff weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_weights_layer_desc()const memory::desc diff_weights_layer_desc() const; - /// Returns the diff weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_weights_iter_desc()const memory::desc diff_weights_iter_desc() const; - /// Returns the diff bias memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_bias_desc()const memory::desc diff_bias_desc() const; - /// Returns the diff destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_dst_layer_desc()const memory::desc diff_dst_layer_desc() const; - /// Returns the diff destination iteration memory descriptor. - /// - /// Returns a zero_md if no diff_dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_dst_iter_desc()const memory::desc diff_dst_iter_desc() const; }; /// Default constructor. Produces an empty object. vanilla_rnn_backward(); - /// Constructs a vanilla RNN backward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a vanilla RNN backward propagation primitive. + /// @param pd Primitive descriptor for a vanilla RNN backward + /// propagation primitive. vanilla_rnn_backward(const primitive_desc &pd); }; /// LSTM forward propagation primitive. struct lstm_forward : public primitive { - /// Descriptor for LSTM forward propagation primitive. + /// Descriptor for an LSTM forward propagation primitive. struct desc { - /// Constructs a descriptor for LSTM forward propagation primitive - /// using @p prop_kind, @p direction, and memory descriptors. - /// - /// The @p flags parameter is currently ignored. + /// Constructs a descriptor for an LSTM forward propagation primitive. /// /// The @p src_iter_desc, @p src_iter_c_desc, @p bias_desc, @p - /// dst_iter_desc and @p dst_iter_c_desc are allowed to point - /// to a zero memory descriptor, which would indicate that the - /// LSTM forward propagation primitive should not use them. + /// dst_iter_desc, and @p dst_iter_c_desc may point to a zero memory + /// descriptor. This would then indicate that the LSTM forward + /// propagation primitive should not use them and should default to + /// zero values instead. + /// + /// Inputs: + /// - `src_layer` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src_iter` (#dnnl::primitive_desc_base::src_desc (`1`)), if used + /// - `src_iter_c` (#dnnl::primitive_desc_base::src_desc (`2`)), if used + /// - `weights_layer` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `weights_iter` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`2`)), if used + /// + /// Outputs: + /// - `dst_layer` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `dst_iter` (#dnnl::primitive_desc_base::dst_desc (`1`)), if used + /// - `dst_iter_c` (#dnnl::primitive_desc_base::dst_desc (`2`)), if used + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)), + /// if @p prop_kind equals #dnnl::prop_kind::forward_training; must be + /// queried for using @ref dnnl::primitive_desc_base::query_md() after a + /// corresponding primitive descriptor is created /// /// @note /// All memory descriptors except @p src_iter_desc can be /// initialized with an #dnnl::memory::format_tag::any value of @p /// format_tag. /// - /// @note - /// If @p prop_kind equals #dnnl::prop_kind::forward_training, you must query - /// for workspace memory descriptor before creating the primitive. - /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param direction RNN direction. See @ref dnnl::rnn_direction for + /// more info. + /// @param src_layer_desc Memory descriptor for the input vector. + /// @param src_iter_desc Memory descriptor for the input recurrent + /// hidden state vector. + /// @param src_iter_c_desc Memory descriptor for the input recurrent + /// cell state vector. + /// @param weights_layer_desc Memory descriptor for the weights + /// applied to the layer input. + /// @param weights_iter_desc Memory descriptor for the weights applied + /// to the recurrent input. + /// @param bias_desc Bias memory descriptor. + /// @param dst_layer_desc Memory descriptor for the output vector. + /// @param dst_iter_desc Memory descriptor for the output recurrent + /// hidden state vector. + /// @param dst_iter_c_desc Memory descriptor for the output recurrent + /// cell state vector. + /// @param flags Unused. desc(prop_kind prop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, @@ -3293,108 +5317,162 @@ struct lstm_forward : public primitive { rnn_flags flags = rnn_flags::undef); }; - /// Primitive descriptor for LSTM forward propagation primitive. + /// Primitive descriptor for an LSTM forward propagation primitive. struct primitive_desc : public rnn_primitive_desc_base { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for LSTM forward propagation + /// Constructs a primitive descriptor for an LSTM forward propagation /// primitive. /// - /// @param desc Descriptor for LSTM forward propagation primitive. + /// @param desc Descriptor for an LSTM forward propagation primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for LSTM forward propagation + /// Constructs a primitive descriptor for an LSTM forward propagation /// primitive. /// - /// @param desc Descriptor for LSTM forward propagation primitive. + /// @param desc Descriptor for an LSTM forward propagation primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_layer_desc()const memory::desc src_layer_desc() const; - /// Returns the source recurrent hidden state memory descriptor. - /// - /// Returns a zero_md if no src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc src_iter_desc() const; - /// Returns the source recurrent cell state memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc src_iter_c_desc() const; - /// Returns the weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_layer_desc()const memory::desc weights_layer_desc() const; - /// Returns the weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_iter_desc()const memory::desc weights_iter_desc() const; - /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::bias_desc()const memory::desc bias_desc() const; - /// Returns the destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_layer_desc()const memory::desc dst_layer_desc() const; - /// Returns the destination recurrent hidden state memory descriptor. - /// - /// Returns a zero_md if no dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_iter_desc()const memory::desc dst_iter_desc() const; - /// Returns the destination recurrent cell state memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc dst_iter_c_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::rnn_primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. lstm_forward(); - /// Constructs an LSTM forward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs an LSTM forward propagation primitive. + /// @param pd Primitive descriptor for an LSTM forward propagation + /// primitive. lstm_forward(const primitive_desc &pd); }; /// LSTM backward propagation primitive. struct lstm_backward : public primitive { - /// Descriptor for LSTM backward propagation primitive. + /// Descriptor for an LSTM backward propagation primitive. struct desc { /// Constructs an LSTM descriptor for backward propagation using @p /// prop_kind, @p direction, and memory descriptors. /// - /// The @p flags parameter is currently ignored. - /// - /// The @p src_iter_desc (simultaneously with @p diff_src_iter_desc), - /// @p src_iter_c_desc (simultaneously with @p diff_src_iter_c_desc), - /// @p bias_desc (simultaneously with @p diff_bias_desc), @p - /// dst_iter_desc (simultaneously with @p diff_src_iter_desc) and @p - /// dst_iter_c_desc (simultaneously with @p diff_src_iter_c_desc) are - /// allowed point to a zero memory descriptor, which would indicate - /// that the LSTM primitive should not use them and consider them to - /// be zero values. + /// The @p src_iter_desc together with @p diff_iter_desc, @p + /// src_iter_c_desc together with @p src_iter_c_desc, @p bias_desc + /// together with @p diff_bias_desc, @p dst_iter_desc together with @p + /// diff_dst_iter_desc, and @p dst_iter_c_desc together with @p + /// diff_dst_iter_c_desc, may point to a zero memory descriptor. This + /// would then indicate that the LSTM backward propagation primitive + /// should not use them and should default to zero values instead. + /// + /// Inputs: + /// - `src_layer` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src_iter` (#dnnl::primitive_desc_base::src_desc (`1`)), if used + /// - `src_iter_c` (#dnnl::primitive_desc_base::src_desc (`2`)), if used + /// - `weights_layer` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `weights_iter` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`2`)), if used + /// - `dst_layer` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `dst_iter` (#dnnl::primitive_desc_base::dst_desc (`1`)), if used + /// - `dst_iter_c` (#dnnl::primitive_desc_base::dst_desc (`2`)), if used + /// - `diff_dst_layer` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - diff_dst_iter + /// (#dnnl::primitive_desc_base::diff_dst_desc (`1`)), if used + /// - diff_dst_iter_c + /// (#dnnl::primitive_desc_base::diff_dst_desc (`2`)), if used + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)) + /// + /// Outputs: + /// - `diff_src_layer` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// - diff_src_iter + /// (#dnnl::primitive_desc_base::diff_src_desc (`1`)), if used + /// - diff_src_iter_c + /// (#dnnl::primitive_desc_base::diff_src_desc (`2`)), if used + /// - diff_weights_layer + /// (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) + /// - diff_weights_iter + /// (#dnnl::primitive_desc_base::diff_weights_desc (`1`)) + /// - diff_bias + /// (#dnnl::primitive_desc_base::diff_weights_desc (`2`)), if used /// /// @note /// All memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. /// + /// @param prop_kind Propagation kind. Must be + /// #dnnl::prop_kind::backward. + /// @param direction RNN direction. See @ref dnnl::rnn_direction for + /// more info. + /// @param src_layer_desc Memory descriptor for the input vector. + /// @param src_iter_desc Memory descriptor for the input recurrent + /// hidden state vector. + /// @param src_iter_c_desc Memory descriptor for the input recurrent + /// cell state vector. + /// @param weights_layer_desc Memory descriptor for the weights + /// applied to the layer input. + /// @param weights_iter_desc Memory descriptor for the weights applied + /// to the recurrent input. + /// @param bias_desc Bias memory descriptor. + /// @param dst_layer_desc Memory descriptor for the output vector. + /// @param dst_iter_desc Memory descriptor for the output recurrent + /// hidden state vector. + /// @param dst_iter_c_desc Memory descriptor for the output recurrent + /// cell state vector. + /// @param diff_src_layer_desc Memory descriptor for the diff of input + /// vector. + /// @param diff_src_iter_desc Memory descriptor for the diff of input + /// recurrent hidden state vector. + /// @param diff_src_iter_c_desc Memory descriptor for the diff of + /// input recurrent cell state vector. + /// @param diff_weights_layer_desc Memory descriptor for the diff of + /// weights applied to the layer input. + /// @param diff_weights_iter_desc Memory descriptor for the diff of + /// weights applied to the recurrent input. + /// @param diff_bias_desc Diff bias memory descriptor. + /// @param diff_dst_layer_desc Memory descriptor for the diff of + /// output vector. + /// @param diff_dst_iter_desc Memory descriptor for the diff of output + /// recurrent hidden state vector. + /// @param diff_dst_iter_c_desc Memory descriptor for the diff of + /// output recurrent cell state vector. + /// @param flags Unused. desc(prop_kind prop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, @@ -3417,151 +5495,160 @@ struct lstm_backward : public primitive { rnn_flags flags = rnn_flags::undef); }; - /// Primitive descriptor for LSTM backward propagation primitive. + /// Primitive descriptor for LSTM backward propagation. struct primitive_desc : public rnn_primitive_desc_base { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for LSTM forward propagation + /// Constructs a primitive descriptor for an LSTM backward propagation /// primitive. /// - /// @param desc Descriptor for LSTM forward propagation primitive. + /// @param desc Descriptor for LSTM backward propagation primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for LSTM - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for an LSTM + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const lstm_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for LSTM forward propagation + /// Constructs a primitive descriptor for an LSTM backward propagation /// primitive. /// - /// @param desc Descriptor for LSTM forward propagation primitive. + /// @param desc Descriptor for an LSTM backward propagation primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for LSTM - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for an LSTM + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const lstm_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_layer_desc()const memory::desc src_layer_desc() const; - /// Returns the source recurrent hidden state memory descriptor. - /// - /// Returns a zero_md if no src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc src_iter_desc() const; - /// Returns the source recurrent cell state memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc src_iter_c_desc() const; - /// Returns the weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_layer_desc()const memory::desc weights_layer_desc() const; - /// Returns the weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_iter_desc()const memory::desc weights_iter_desc() const; - /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::bias_desc()const memory::desc bias_desc() const; - /// Returns the destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_layer_desc()const memory::desc dst_layer_desc() const; - /// Returns the destination recurrent hidden state memory descriptor. - /// - /// Returns a zero_md if no dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_iter_desc()const memory::desc dst_iter_desc() const; - /// Returns the destination recurrent cell state memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc dst_iter_c_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::rnn_primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; - /// Returns the diff source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_src_layer_desc()const memory::desc diff_src_layer_desc() const; - /// Returns the diff source recurrent hidden state memory descriptor. - /// - /// Returns a zero_md if no diff_src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_src_iter_desc()const memory::desc diff_src_iter_desc() const; - /// Returns the diff source recurrent cell state memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_src_iter_c_desc()const memory::desc diff_src_iter_c_desc() const; - /// Returns the diff weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_weights_layer_desc()const memory::desc diff_weights_layer_desc() const; - /// Returns the diff weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_weights_iter_desc()const memory::desc diff_weights_iter_desc() const; - /// Returns the diff bias memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_bias_desc()const memory::desc diff_bias_desc() const; - /// Returns the diff destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_dst_layer_desc()const memory::desc diff_dst_layer_desc() const; - /// Returns the diff destination recurrent hidden state memory descriptor. - /// - /// Returns a zero_md if no diff_dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_dst_iter_desc()const memory::desc diff_dst_iter_desc() const; - /// Returns the diff destination recurrent cell state memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_dst_iter_c_desc()const memory::desc diff_dst_iter_c_desc() const; }; /// Default constructor. Produces an empty object. lstm_backward(); - /// Constructs a vanilla RNN backward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs an LSTM backward propagation primitive. + /// @param pd Primitive descriptor for an LSTM backward propagation + /// primitive. lstm_backward(const primitive_desc &pd); }; /// GRU forward propagation primitive. struct gru_forward : public primitive { - /// Descriptor for GRU forward propagation primitive. + /// Descriptor for a GRU forward propagation primitive. struct desc { - /// Constructs a descriptor for GRU forward propagation primitive - /// using @p prop_kind, @p direction, and memory descriptors. - /// - /// The @p flags parameter is currently ignored. - /// - /// The @p src_iter_desc, @p bias_desc, and @p dst_iter_desc are allowed - /// to point to a zero memory descriptor, which would indicate that - /// the GRU primitive should not use them and will default to zero - /// values. + /// Constructs a descriptor for a GRU forward propagation primitive. + /// + /// The @p src_iter_desc, @p bias_desc, and @p dst_iter, may point to + /// a zero memory descriptor. This would then indicate that the GRU + /// forward propagation primitive should not use them and should + /// default to zero values instead. + /// + /// Inputs: + /// - `src_layer` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src_iter` (#dnnl::primitive_desc_base::src_desc (`1`)), if used + /// - `weights_layer` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `weights_iter` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`2`)), if used + /// + /// Outputs: + /// - `dst_layer` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `dst_iter` (#dnnl::primitive_desc_base::dst_desc (`1`)), if used + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)), + /// if @p prop_kind equals #dnnl::prop_kind::forward_training; must be + /// queried for using @ref dnnl::primitive_desc_base::query_md() after a + /// corresponding primitive descriptor is created /// /// @note /// All memory descriptors except @p src_iter_desc can be /// initialized with an #dnnl::memory::format_tag::any value of @p /// format_tag. /// - /// @note - /// If @p prop_kind equals #dnnl::prop_kind::forward_training, you must query - /// a workspace memory descriptor before creating the primitive. - /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param direction RNN direction. See @ref dnnl::rnn_direction for + /// more info. + /// @param src_layer_desc Memory descriptor for the input vector. + /// @param src_iter_desc Memory descriptor for the input recurrent + /// hidden state vector. + /// @param weights_layer_desc Memory descriptor for the weights + /// applied to the layer input. + /// @param weights_iter_desc Memory descriptor for the weights applied + /// to the recurrent input. + /// @param bias_desc Bias memory descriptor. + /// @param dst_layer_desc Memory descriptor for the output vector. + /// @param dst_iter_desc Memory descriptor for the output recurrent + /// hidden state vector. + /// @param flags Unused. desc(prop_kind prop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, @@ -3578,94 +5665,135 @@ struct gru_forward : public primitive { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for GRU forward propagation + /// Constructs a primitive descriptor for a GRU forward propagation /// primitive. /// - /// @param desc Descriptor for GRU forward propagation primitive. + /// @param desc Descriptor for a GRU forward propagation primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for GRU forward propagation + /// Constructs a primitive descriptor for a GRU forward propagation /// primitive. /// - /// @param desc Descriptor for GRU forward propagation primitive. + /// @param desc Descriptor for a GRU forward propagation primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_layer_desc()const memory::desc src_layer_desc() const; - /// Returns the source iteration memory descriptor. - /// - /// Returns a zero_md if no src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc src_iter_desc() const; - /// Returns the weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_layer_desc()const memory::desc weights_layer_desc() const; - /// Returns the weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_iter_desc()const memory::desc weights_iter_desc() const; - /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::bias_desc()const memory::desc bias_desc() const; - /// Returns the destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_layer_desc()const memory::desc dst_layer_desc() const; - /// Returns the destination iteration memory descriptor. - /// - /// Returns a zero_md if no dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_iter_desc()const memory::desc dst_iter_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::rnn_primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. gru_forward(); - /// Constructs a GRU forward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs a GRU forward propagation primitive. + /// @param pd Primitive descriptor for a GRU forward propagation + /// primitive. gru_forward(const primitive_desc &pd); }; /// GRU backward propagation primitive. struct gru_backward : public primitive { - /// Descriptor for GRU backward propagation primitive. + /// Descriptor for a GRU backward propagation primitive. struct desc { - /// Constructs a descriptor for GRU backward propagation primitive - /// using @p prop_kind, @p direction, and memory descriptors. - /// - /// The @p flags parameter is ignored. - /// - /// The @p src_iter_desc (simultaneously with @p diff_src_iter_desc), - /// @p bias_desc (simultaneously with @p diff_bias_desc), and @p - /// dst_iter_desc (simultaneously with @p diff_src_iter_desc) are - /// allowed point to a zero memory descriptor, which would indicate - /// that the GRU primitive should not use them and consider them to be - /// zero values. + /// Constructs a descriptor for a GRU backward propagation primitive. + /// + /// The @p src_iter_desc together with @p diff_src_iter_desc, @p + /// bias_desc together with @p diff_bias_desc, and @p dst_iter + /// together with @p diff_dst_iter, may point to a zero memory + /// descriptor. This would then indicate that the GRU backward + /// propagation primitive should not use them and should default to + /// zero values instead. + /// + /// Inputs: + /// - `src_layer` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src_iter` (#dnnl::primitive_desc_base::src_desc (`1`)), if used + /// - `weights_layer` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `weights_iter` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`2`)), if used + /// - `dst_layer` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `dst_iter` (#dnnl::primitive_desc_base::dst_desc (`1`)), if used + /// - `diff_dst_layer` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - diff_dst_iter + /// (#dnnl::primitive_desc_base::diff_dst_desc (`1`)), if used + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)) + /// + /// Outputs: + /// - `diff_src_layer` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// - diff_src_iter + /// (#dnnl::primitive_desc_base::diff_src_desc (`1`)), if used + /// - diff_weights_layer + /// (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) + /// - diff_weights_iter + /// (#dnnl::primitive_desc_base::diff_weights_desc (`1`)) + /// - diff_bias + /// (#dnnl::primitive_desc_base::diff_weights_desc (`2`)), if used /// /// @note /// All memory descriptors are allowed to be initialized with /// #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Must be + /// #dnnl::prop_kind::backward. + /// @param direction RNN direction. See @ref dnnl::rnn_direction for + /// more info. + /// @param src_layer_desc Memory descriptor for the input vector. + /// @param src_iter_desc Memory descriptor for the input recurrent + /// hidden state vector. + /// @param weights_layer_desc Memory descriptor for the weights + /// applied to the layer input. + /// @param weights_iter_desc Memory descriptor for the weights applied + /// to the recurrent input. + /// @param bias_desc Bias memory descriptor. + /// @param dst_layer_desc Memory descriptor for the output vector. + /// @param dst_iter_desc Memory descriptor for the output recurrent + /// hidden state vector. + /// @param diff_src_layer_desc Memory descriptor for the diff of input + /// vector. + /// @param diff_src_iter_desc Memory descriptor for the diff of input + /// recurrent hidden state vector. + /// @param diff_weights_layer_desc Memory descriptor for the diff of + /// weights applied to the layer input. + /// @param diff_weights_iter_desc Memory descriptor for the diff of + /// weights applied to the recurrent input. + /// @param diff_bias_desc Diff bias memory descriptor. + /// @param diff_dst_layer_desc Memory descriptor for the diff of + /// output vector. + /// @param diff_dst_iter_desc Memory descriptor for the diff of output + /// recurrent hidden state vector. + /// @param flags Unused. desc(prop_kind prop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, @@ -3684,139 +5812,149 @@ struct gru_backward : public primitive { rnn_flags flags = rnn_flags::undef); }; - /// Primitive descriptor for GRU backward propagation primitive. + /// Primitive descriptor for a GRU backward propagation primitive. struct primitive_desc : public rnn_primitive_desc_base { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for GRU forward propagation + /// Constructs a primitive descriptor for a GRU backward propagation /// primitive. /// - /// @param desc Descriptor for GRU forward propagation primitive. + /// @param desc Descriptor for a GRU backward propagation primitive. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for GRU - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a GRU + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for GRU forward propagation + /// Constructs a primitive descriptor for a GRU backward propagation /// primitive. /// - /// @param desc Descriptor for GRU forward propagation primitive. + /// @param desc Descriptor for a GRU backward propagation primitive. /// @param attr Primitive attributes to use. /// @param engine Engine to use. - /// @param hint_fwd_pd Primitive descriptor for GRU - /// forward propagation primitive. It is used as a - /// hint when deciding which memory format to use. + /// @param hint_fwd_pd Primitive descriptor for a GRU + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_layer_desc()const memory::desc src_layer_desc() const; - /// Returns the source iter memory descriptor. - /// - /// Returns a zero_md if no src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc src_iter_desc() const; - /// Returns the weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_layer_desc()const memory::desc weights_layer_desc() const; - /// Returns the weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_iter_desc()const memory::desc weights_iter_desc() const; - /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::bias_desc()const memory::desc bias_desc() const; - /// Returns the destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_layer_desc()const memory::desc dst_layer_desc() const; - /// Returns the destination iteration memory descriptor. - /// - /// Returns a zero_md if no dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_iter_desc()const memory::desc dst_iter_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::rnn_primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; - /// Returns the diff source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_src_layer_desc()const memory::desc diff_src_layer_desc() const; - /// Returns the diff source iteration memory descriptor. - /// - /// Returns a zero_md if no diff_src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_src_iter_desc()const memory::desc diff_src_iter_desc() const; - /// Returns the diff weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_weights_layer_desc()const memory::desc diff_weights_layer_desc() const; - /// Returns the diff weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_weights_iter_desc()const memory::desc diff_weights_iter_desc() const; - /// Returns the diff bias memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_bias_desc()const memory::desc diff_bias_desc() const; - /// Returns the diff destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_dst_layer_desc()const memory::desc diff_dst_layer_desc() const; - /// Returns the diff destination iteration memory descriptor. - /// - /// Returns a zero_md if no diff_dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_dst_iter_desc()const memory::desc diff_dst_iter_desc() const; }; /// Default constructor. Produces an empty object. gru_backward(); - /// Constructs a vanilla RNN backward propagation primitive from a - /// primitive descriptor @p pd of a corresponding type. + /// Constructs a GRU backward propagation primitive. + /// @param pd Primitive descriptor for a GRU backward propagation + /// primitive. gru_backward(const primitive_desc &pd); }; /// LBR GRU forward propagation primitive. struct lbr_gru_forward : public primitive { - /// Descriptor for LBR GRU forward propagation primitive. + /// Descriptor for an LBR GRU forward propagation primitive. struct desc { - /// Constructs an LBR GRU descriptor for forward propagation using @p - /// prop_kind, @p direction, and memory descriptors. - /// - /// The @p flags parameter is currently ignored. - /// - /// The @p src_iter_desc, @p bias_desc, and @p dst_iter_desc are allowed - /// to point to a zero memory descriptor, which would indicate that - /// the LBR GRU primitive should not use them and will default to zero - /// values. + /// Constructs a descriptor for LBR GRU forward propagation primitive. + /// + /// The @p src_iter_desc, @p bias_desc, and @p dst_iter, may point to + /// a zero memory descriptor. This would then indicate that the LBR + /// GRU forward propagation primitive should not use them and should + /// default to zero values instead. + /// + /// Inputs: + /// - `src_layer` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src_iter` (#dnnl::primitive_desc_base::src_desc (`1`)), if used + /// - `weights_layer` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `weights_iter` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`2`)), if used + /// + /// Outputs: + /// - `dst_layer` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `dst_iter` (#dnnl::primitive_desc_base::dst_desc (`1`)), if used + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)), + /// if @p prop_kind equals #dnnl::prop_kind::forward_training; + /// must be queried for using @ref + /// dnnl::primitive_desc_base::query_md() after a corresponding + /// primitive descriptor is created /// /// @note /// All memory descriptors except @p src_iter_desc can be /// initialized with an #dnnl::memory::format_tag::any value of @p /// format_tag. /// - /// @note - /// If @p prop_kind equals #dnnl::prop_kind::forward_training, you must query - /// a workspace memory descriptor before creating the primitive. - /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param direction RNN direction. See @ref dnnl::rnn_direction for + /// more info. + /// @param src_layer_desc Memory descriptor for the input vector. + /// @param src_iter_desc Memory descriptor for the input recurrent + /// hidden state vector. + /// @param weights_layer_desc Memory descriptor for the weights + /// applied to the layer input. + /// @param weights_iter_desc Memory descriptor for the weights applied + /// to the recurrent input. + /// @param bias_desc Bias memory descriptor. + /// @param dst_layer_desc Memory descriptor for the output vector. + /// @param dst_iter_desc Memory descriptor for the output recurrent + /// hidden state vector. + /// @param flags Unused. desc(prop_kind prop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, @@ -3828,90 +5966,144 @@ struct lbr_gru_forward : public primitive { rnn_flags flags = rnn_flags::undef); }; - /// Primitive descriptor for LBR GRU forward propagation primitive. + /// Primitive descriptor for an LBR GRU forward propagation primitive. struct primitive_desc : public rnn_primitive_desc_base { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for LBR GRU forward propagation - /// primitive from a corresponding operation descriptor @p desc using - /// engine @p engine. The @p allow_empty flag signifies whether - /// construction is allowed to fail, in which case an empty primitive - /// would be produced. + /// Constructs a primitive descriptor for a LBR GRU forward + /// propagation primitive. + /// + /// @param desc Descriptor for a LBR GRU forward propagation + /// primitive. + /// @param engine Engine to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for LBR GRU forward propagation - /// primitive from a corresponding operation descriptor @p desc using - /// engine @p engine, and primitive attributes @p attr. The @p - /// allow_empty flag signifies whether construction is allowed to - /// fail, in which case an empty primitive would be produced. + /// Constructs a primitive descriptor for a LBR GRU forward + /// propagation primitive. + /// + /// @param desc Descriptor for a LBR GRU forward propagation + /// primitive. + /// @param attr Primitive attributes to use. + /// @param engine Engine to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); - /// Returns the source layer memory descriptor. + + /// @copydoc dnnl::rnn_primitive_desc_base::src_layer_desc()const memory::desc src_layer_desc() const; - /// Returns the source iteration memory descriptor. - /// - /// Returns a zero_md if no src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc src_iter_desc() const; - /// Returns the weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_layer_desc()const memory::desc weights_layer_desc() const; - /// Returns the weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_iter_desc()const memory::desc weights_iter_desc() const; - /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::bias_desc()const memory::desc bias_desc() const; - /// Returns the destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_layer_desc()const memory::desc dst_layer_desc() const; - /// Returns the destination iteration memory descriptor. - /// - /// Returns a zero_md if no dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_iter_desc()const memory::desc dst_iter_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::rnn_primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; }; /// Default constructor. Produces an empty object. lbr_gru_forward(); - /// Constructs a LBR GRU forward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs an LBR GRU forward propagation primitive. + /// @param pd Primitive descriptor for an LBR GRU forward propagation + /// primitive. lbr_gru_forward(const primitive_desc &pd); }; /// LBR GRU backward propagation primitive. struct lbr_gru_backward : public primitive { - /// LBR_GRU descriptor for backward propagation primitive. + /// Descriptor for a LBR GRU backward propagation primitive. struct desc { - /// Constructs a descriptor LBR_GRU backward propagation primitive - /// using @p prop_kind, @p direction, and memory descriptors. - /// - /// The @p flags parameter is currently ignored. + /// Constructs a descriptor for LBR GRU backward propagation + /// primitive. /// - /// The @p src_iter_desc (simultaneously with @p diff_src_iter_desc), - /// @p bias_desc (simultaneously with @p diff_bias_desc), and @p - /// dst_iter_desc (simultaneously with @p diff_src_iter_desc) are - /// allowed point to a zero memory descriptor, which would indicate - /// that the LBR GRU primitive should not use them and consider them - /// to be zero values. + /// The @p src_iter_desc together with @p diff_src_iter_desc, @p + /// bias_desc together with @p diff_bias_desc, and @p dst_iter + /// together with @p diff_dst_iter, may point to a zero memory + /// descriptor. This would then indicate that the LBR GRU backward + /// propagation primitive should not use them and should default to + /// zero values instead. + /// + /// Inputs: + /// - `src_layer` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src_iter` (#dnnl::primitive_desc_base::src_desc (`1`)), if used + /// - `weights_layer` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `weights_iter` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`2`)), if used + /// - `dst_layer` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// - `dst_iter` (#dnnl::primitive_desc_base::dst_desc (`1`)), if used + /// - `diff_dst_layer` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// - diff_dst_iter + /// (#dnnl::primitive_desc_base::diff_dst_desc (`1`)), if used + /// - `workspace` (#dnnl::primitive_desc_base::workspace_desc (`0`)) + /// + /// Outputs: + /// - `diff_src_layer` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// - diff_src_iter + /// (#dnnl::primitive_desc_base::diff_src_desc (`1`)), if used + /// - diff_weights_layer + /// (#dnnl::primitive_desc_base::diff_weights_desc (`0`)) + /// - diff_weights_iter + /// (#dnnl::primitive_desc_base::diff_weights_desc (`1`)) + /// - diff_bias + /// (#dnnl::primitive_desc_base::diff_weights_desc (`2`)), if used /// - /// @note All memory descriptors are allowed to be initialized with - /// #dnnl::memory::format_tag::any value of @p format_tag. + /// @note + /// All memory descriptors are allowed to be initialized with + /// #dnnl::memory::format_tag::any value of @p format_tag. /// + /// @param prop_kind Propagation kind. Must be + /// #dnnl::prop_kind::backward. + /// @param direction RNN direction. See @ref dnnl::rnn_direction for + /// more info. + /// @param src_layer_desc Memory descriptor for the input vector. + /// @param src_iter_desc Memory descriptor for the input recurrent + /// hidden state vector. + /// @param weights_layer_desc Memory descriptor for the weights + /// applied to the layer input. + /// @param weights_iter_desc Memory descriptor for the weights applied + /// to the recurrent input. + /// @param bias_desc Bias memory descriptor. + /// @param dst_layer_desc Memory descriptor for the output vector. + /// @param dst_iter_desc Memory descriptor for the output recurrent + /// hidden state vector. + /// @param diff_src_layer_desc Memory descriptor for the diff of input + /// vector. + /// @param diff_src_iter_desc Memory descriptor for the diff of input + /// recurrent hidden state vector. + /// @param diff_weights_layer_desc Memory descriptor for the diff of + /// weights applied to the layer input. + /// @param diff_weights_iter_desc Memory descriptor for the diff of + /// weights applied to the recurrent input. + /// @param diff_bias_desc Diff bias memory descriptor. + /// @param diff_dst_layer_desc Memory descriptor for the diff of + /// output vector. + /// @param diff_dst_iter_desc Memory descriptor for the diff of output + /// recurrent hidden state vector. + /// @param flags Unused. desc(prop_kind prop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, @@ -3930,190 +6122,251 @@ struct lbr_gru_backward : public primitive { rnn_flags flags = rnn_flags::undef); }; - /// Primitive descriptor for LBR GRU backward propagation primitive. + /// Primitive descriptor for an LBR GRU backward propagation primitive. struct primitive_desc : public rnn_primitive_desc_base { /// Default constructor. Produces an empty object. - primitive_desc(); + primitive_desc() = default; - /// Constructs a primitive descriptor for LBR GRU backward propagation - /// primitive from a corresponding operation descriptor @p desc using - /// engine @p engine, and LBR GRU forward propagation primitive - /// descriptor hint @p hint_fwd_pd. The @p allow_empty flag signifies - /// whether construction is allowed to fail, in which case an empty - /// primitive would be produced.. + /// Constructs a primitive descriptor for an LBR GRU backward + /// propagation primitive. + /// + /// @param desc Descriptor for an LBR GRU backward propagation + /// primitive. + /// @param engine Engine to use. + /// @param hint_fwd_pd Primitive descriptor for an LBR GRU + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const lbr_gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Constructs a primitive descriptor for LBR GRU backward propagation - /// primitive from a corresponding operation descriptor @p desc using - /// engine @p engine, LBR GRU forward propagation primitive descriptor - /// hint @p hint_fwd_pd, and primitive attributes @p attr. The @p - /// allow_empty flag signifies whether construction is allowed to - /// fail, in which case an empty primitive would be produced. + /// Constructs a primitive descriptor for an LBR GRU backward + /// propagation primitive. + /// + /// @param desc Descriptor for an LBR GRU backward propagation + /// primitive. + /// @param attr Primitive attributes to use. + /// @param engine Engine to use. + /// @param hint_fwd_pd Primitive descriptor for an LBR GRU + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, const lbr_gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty = false); - /// Returns the source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::src_layer_desc()const memory::desc src_layer_desc() const; - /// Returns the source iteration memory descriptor. - /// - /// Returns a zero_md if no src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::src_iter_desc()const memory::desc src_iter_desc() const; - /// Returns the weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_layer_desc()const memory::desc weights_layer_desc() const; - /// Returns the weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::weights_iter_desc()const memory::desc weights_iter_desc() const; - /// Returns the bias memory descriptor. - /// - /// Returns a zero_md if no bias was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::bias_desc()const memory::desc bias_desc() const; - /// Returns the destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_layer_desc()const memory::desc dst_layer_desc() const; - /// Returns the destination iteration memory descriptor. - /// - /// Returns a zero_md if no dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::dst_iter_desc()const memory::desc dst_iter_desc() const; - /// Returns the workspace memory descriptor. - /// - /// Returns a zero_md if no workspace is required. + /// @copydoc dnnl::rnn_primitive_desc_base::workspace_desc()const memory::desc workspace_desc() const; - /// Returns the diff source layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_src_layer_desc()const memory::desc diff_src_layer_desc() const; - /// Returns the diff source iteration memory descriptor. - /// - /// Returns a zero_md if no diff_src_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_src_iter_desc()const memory::desc diff_src_iter_desc() const; - /// Returns the diff weights layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_weights_layer_desc()const memory::desc diff_weights_layer_desc() const; - /// Returns the diff weights iteration memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_weights_iter_desc()const memory::desc diff_weights_iter_desc() const; - /// Returns the diff bias memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_bias_desc()const memory::desc diff_bias_desc() const; - /// Returns the diff destination layer memory descriptor. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_dst_layer_desc()const memory::desc diff_dst_layer_desc() const; - /// Returns the diff destination iteration memory descriptor. - /// - /// Returns a zero_md if no diff_dst_iter was specified at op_desc - /// creation time. + /// @copydoc dnnl::rnn_primitive_desc_base::diff_dst_iter_desc()const memory::desc diff_dst_iter_desc() const; }; /// Default constructor. Produces an empty object. lbr_gru_backward(); - /// Constructs a LBR GRU backward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs an LBR GRU backward propagation primitive. + /// @param pd Primitive descriptor for an LBR GRU backward propagation + /// primitive. lbr_gru_backward(const primitive_desc &pd); }; +/// @} dnnl_api_rnn + +/// @addtogroup dnnl_api_shuffle Shuffle +/// +/// A primitive to shuffle tensor data along an axis. +/// +/// @{ + /// Shuffle forward propagation primitive. struct shuffle_forward : public primitive { - /// Descriptor for shuffle forward propagation primitive. + /// Descriptor for a shuffle forward propagation primitive. struct desc { - /// Constructs a descriptor shuffle forward propagation primitive - /// using @p prop_kind, memory descriptor @p data_desc, @p axis, and - /// @p group_size. + /// Constructs a descriptor for a shuffle forward propagation + /// primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param data_desc Source and destination memory descriptor. + /// @param axis The axis along which the data is shuffled. + /// @param group_size Shuffle group size. desc(prop_kind prop_kind, const memory::desc &data_desc, int axis, int group_size); }; - /// Primitive descriptor for shuffle forward propagation primitive. + /// Primitive descriptor for a shuffle forward propagation primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for shuffle forward propagation - /// primitive from a corresponding operation descriptor @p desc using - /// engine @p engine, and primitive attributes @p attr. The @p - /// allow_empty flag signifies whether construction is allowed to - /// fail, in which case an empty primitive would be produced. + /// Constructs a primitive descriptor for a shuffle forward + /// propagation primitive. + /// + /// @param desc Descriptor for a shuffle forward propagation + /// primitive. + /// @param engine Engine to use. + /// @param attr Primitive attributes to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const primitive_attr &attr = primitive_attr(), bool allow_empty = false); - /// Returns the source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::src_desc()const memory::desc src_desc() const; - /// Returns the destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; }; /// Default constructor. Produces an empty object. shuffle_forward(); - /// Constructs a shuffle forward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs a shuffle forward propagation primitive. + /// @param pd Primitive descriptor for a shuffle forward propagation + /// primitive. shuffle_forward(const primitive_desc &pd); }; /// Shuffle backward propagation primitive. struct shuffle_backward : public primitive { - /// Descriptor for shuffle primitive backward propagation + /// Descriptor for a shuffle primitive backward propagation /// primitive. struct desc { - /// Constructs a primitive descriptor for a shuffle backward - /// propagation primitive using a memory descriptor @p diff_data_desc, - /// @p axis, and @p group_size. + /// Constructs a descriptor for a shuffle backward propagation + /// primitive. + /// + /// Inputs: + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// + /// @param diff_data_desc Diff source and diff destination memory + /// descriptor. + /// @param axis The axis along which the data is shuffled. + /// @param group_size Shuffle group size. desc(const memory::desc &diff_data_desc, int axis, int group_size); }; - /// Primitive descriptor for shuffle backward propagation primitive. + /// Primitive descriptor for a shuffle backward propagation primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for shuffle backward propagation - /// primitive from a corresponding operation descriptor @p desc using - /// engine @p engine, shuffle forward propagation primitive descriptor - /// hint @p hint_fwd_pd, and primitive attributes @p attr. The @p - /// allow_empty flag signifies whether construction is allowed to - /// fail, in which case an empty primitive would be produced. + /// Constructs a primitive descriptor for a shuffle backward + /// propagation primitive. + /// + /// @param desc Descriptor for a shuffle backward propagation + /// primitive. + /// @param engine Engine to use. + /// @param attr Primitive attributes to use. + /// @param hint_fwd_pd Primitive descriptor for a shuffle + /// forward propagation primitive. It is used as a hint for + /// deciding which memory format to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, const shuffle_forward::primitive_desc &hint_fwd_pd, const primitive_attr &attr = primitive_attr(), bool allow_empty = false); - /// Returns the diff source memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_src_desc()const memory::desc diff_src_desc() const; - /// Returns the diff destination memory descriptor. + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const memory::desc diff_dst_desc() const; }; /// Default constructor. Produces an empty object. shuffle_backward(); - /// Constructs a shuffle backward propagation primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs a shuffle backward propagation primitive. + /// @param pd Primitive descriptor for a shuffle backward propagation + /// primitive. shuffle_backward(const primitive_desc &pd); }; +/// @} dnnl_api_shuffle + +/// @addtogroup dnnl_api_binary Binary +/// +/// A primitive to perform tensor operations over two tensors. +/// +/// @{ + /// Elementwise binary operator primitive. struct binary : public primitive { - /// Descriptor for a elementwise binary operator primitive. + /// Descriptor for an elementwise binary operator primitive. struct desc { - /// Constructs a descriptor for elementwise binary operator primitive. + /// Constructs a descriptor for an elementwise binary operator + /// primitive. + /// + /// Inputs: + /// - `src0` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `src1` (#dnnl::primitive_desc_base::src_desc (`1`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) /// /// @param algorithm Elementwise algorithm. /// @param src0 Memory descriptor for source tensor #0. @@ -4123,56 +6376,385 @@ struct binary : public primitive { const memory::desc &src1, const memory::desc &dst); }; - /// Primitive descriptor for elementwise binary operator primitive. + /// Primitive descriptor for an elementwise binary operator primitive. struct primitive_desc : public dnnl::primitive_desc { /// Default constructor. Produces an empty object. primitive_desc(); - /// Constructs a primitive descriptor for elementwise binary operator + /// Constructs a primitive descriptor for an elementwise binary operator /// primitive. /// - /// @param desc Descriptor for elementwise binary operator primitive. + /// @param desc Descriptor for an elementwise binary operator primitive. /// @param engine Engine to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const engine &engine, bool allow_empty = false); - /// Constructs a primitive descriptor for elementwise binary operator + /// Constructs a primitive descriptor for an elementwise binary operator /// primitive. /// - /// @param desc Descriptor for elementwise binary operator primitive. + /// @param desc Descriptor for an elementwise binary operator primitive. /// @param engine Engine to use. /// @param attr Primitive attributes to use. /// @param allow_empty A flag signifying whether construction is - /// allowed to fail without throwing an exception. - /// In this case an empty object will be produced. - /// This flag is optional and defaults to false. + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty = false); + /// @copydoc dnnl::primitive_desc_base::src_desc(int)const + memory::desc src_desc(int idx = 0) const; + /// Returns the memory descriptor for source #0. memory::desc src0_desc() const; /// Returns the memory descriptor for source #1. memory::desc src1_desc() const; - /// Returns the memory descriptor for destination. + /// @copydoc dnnl::primitive_desc_base::dst_desc()const memory::desc dst_desc() const; }; /// Default constructor. Produces an empty object. binary(); - /// Constructs a elementwise binary operator primitive from a primitive - /// descriptor @p pd of a corresponding type. + /// Constructs an elementwise binary operation primitive. + /// @param pd Primitive descriptor for an elementwise binary operation + /// primitive. binary(const primitive_desc &pd); }; +/// @} dnnl_api_binary + +/// @addtogroup dnnl_api_matmul Matrix Multiplication +/// +/// A primitive to perform matrix-matrix multiplication. The batched mode +/// is supported with 3D tensors. +/// +/// @{ + +/// Matrix multiplication (matmul) primitive. +struct matmul : public primitive { + /// Descriptor for a matmul primitive. + struct desc { + /// Constructs a descriptor for a matmul primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// + /// @param src_desc Memory descriptor for source (matrix A). + /// @param weights_desc Memory descriptor for weights (matrix B). + /// @param dst_desc Memory descriptor for destination (matrix C). + desc(const memory::desc &src_desc, const memory::desc &weights_desc, + const memory::desc &dst_desc); + + /// Constructs a descriptor for a matmul primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// - `weights` (#dnnl::primitive_desc_base::weights_desc (`0`)) + /// - `bias` (#dnnl::primitive_desc_base::weights_desc (`1`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// + /// @param src_desc Memory descriptor for source (matrix A). + /// @param weights_desc Memory descriptor for weights (matrix B). + /// @param dst_desc Memory descriptor for destination (matrix C). + /// @param bias_desc Memory descriptor for bias. + desc(const memory::desc &src_desc, const memory::desc &weights_desc, + const memory::desc &bias_desc, const memory::desc &dst_desc); + }; + + /// Primitive descriptor for a matmul primitive. + struct primitive_desc : public dnnl::primitive_desc { + /// Default constructor. Produces an empty object. + primitive_desc(); + + /// Constructs a primitive descriptor for a matmul primitive. + /// + /// @param desc Descriptor for a matmul primitive. + /// @param engine Engine to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. + primitive_desc(const desc &desc, const engine &engine, + bool allow_empty = false); + + /// Constructs a primitive descriptor for a matmul primitive. + /// + /// @param desc Descriptor for a matmul primitive. + /// @param attr Primitive attributes to use. + /// @param engine Engine to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. + primitive_desc(const desc &desc, const primitive_attr &attr, + const engine &engine, bool allow_empty = false); + + /// @copydoc dnnl::primitive_desc_base::src_desc()const + memory::desc src_desc() const; + + /// @copydoc dnnl::primitive_desc_base::weights_desc()const + memory::desc weights_desc() const; + + /// @copydoc dnnl::convolution_forward::primitive_desc::bias_desc()const + memory::desc bias_desc() const; + + /// @copydoc dnnl::primitive_desc_base::dst_desc()const + memory::desc dst_desc() const; + }; + + /// Default constructor. Produces an empty object. + matmul(); + + /// Constructs a matmul primitive. + /// @param pd Primitive descriptor for a matmul primitive. + matmul(const primitive_desc &pd); +}; + +/// @} dnnl_api_matmul + +/// @addtogroup dnnl_api_resampling Resampling +/// +/// A primitive to compute resampling operation on 1D, 2D or 3D data tensor +/// using Nearest Neighbor, or Linear (Bilinear, Trilinear) interpolation +/// method. +/// +/// @{ + +/// Resampling forward propagation. +struct resampling_forward : public primitive { + /// Descriptor for resampling forward propagation. + struct desc { + /// Constructs a descriptor for a resampling forward propagation + /// primitive using source and destination memory descriptors. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// + /// @note + /// The destination memory descriptor is allowed to be initialized + /// with #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param algorithm resampling algorithm kind: either + /// #dnnl::algorithm::resampling_nearest, or + /// #dnnl::algorithm::resampling_linear + /// @param src_desc Source memory descriptor. + /// @param dst_desc Destination memory descriptor. + desc(prop_kind prop_kind, algorithm algorithm, + const memory::desc &src_desc, const memory::desc &dst_desc); + + /// Constructs a descriptor for a resampling forward propagation + /// primitive using source memory descriptor and factors. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param algorithm resampling algorithm kind: either + /// #dnnl::algorithm::resampling_nearest, or + /// #dnnl::algorithm::resampling_linear + /// @param factors Vector of scaling factors for spatial dimension. + /// @param src_desc Source memory descriptor. + desc(prop_kind prop_kind, algorithm algorithm, + const std::vector &factors, + const memory::desc &src_desc); + + /// Constructs a descriptor for a resampling forward propagation + /// primitive. + /// + /// Inputs: + /// - `src` (#dnnl::primitive_desc_base::src_desc (`0`)) + /// + /// Outputs: + /// - `dst` (#dnnl::primitive_desc_base::dst_desc (`0`)) + /// + /// @note + /// The destination memory descriptor is allowed to be initialized + /// with #dnnl::memory::format_tag::any value of @p format_tag. + /// + /// @param prop_kind Propagation kind. Possible values are + /// #dnnl::prop_kind::forward_training, and + /// #dnnl::prop_kind::forward_inference. + /// @param algorithm resampling algorithm kind: either + /// #dnnl::algorithm::resampling_nearest, or + /// #dnnl::algorithm::resampling_linear + /// @param factors Vector of scaling factors for spatial dimension. + /// @param src_desc Source memory descriptor. + /// @param dst_desc Destination memory descriptor. + desc(prop_kind prop_kind, algorithm algorithm, + const std::vector &factors, const memory::desc &src_desc, + const memory::desc &dst_desc); + }; + + /// Primitive descriptor for a resampling forward propagation primitive. + struct primitive_desc : public dnnl::primitive_desc { + /// Default constructor. Produces an empty object. + primitive_desc(); + + /// Constructs a primitive descriptor for a resampling forward + /// propagation primitive. + /// + /// @param desc Descriptor for a resampling forward propagation + /// primitive. + /// @param engine Engine to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. + primitive_desc(const desc &desc, const engine &engine, + bool allow_empty = false); + + /// Constructs a primitive descriptor for a resampling forward + /// propagation primitive. + /// + /// @param desc Descriptor for a resampling forward propagation primitive. + /// @param engine Engine to use. + /// @param attr Primitive attributes to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. + primitive_desc(const desc &desc, const primitive_attr &attr, + const engine &engine, bool allow_empty = false); + + /// @copydoc dnnl::primitive_desc_base::src_desc()const + memory::desc src_desc() const; + + /// @copydoc dnnl::primitive_desc_base::dst_desc()const + memory::desc dst_desc() const; + }; + + /// Default constructor. Produces an empty object. + resampling_forward(); + + /// Constructs a resampling forward propagation primitive. + /// @param pd Primitive descriptor for a resampling forward propagation + /// primitive. + resampling_forward(const primitive_desc &pd); +}; + +/// Resampling backward propagation primitive. +struct resampling_backward : public primitive { + /// Descriptor for a resampling backward propagation primitive. + struct desc { + /// Constructs a descriptor for a resampling backward propagation + /// primitive using source and destination memory descriptors. + /// + /// Inputs: + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// + /// @param algorithm resampling algorithm kind: either + /// #dnnl::algorithm::resampling_nearest, or + /// #dnnl::algorithm::resampling_linear + /// @param diff_src_desc Diff source memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + desc(algorithm algorithm, const memory::desc &diff_src_desc, + const memory::desc &diff_dst_desc); + + /// Constructs a descriptor for resampling backward propagation + /// primitive. + /// + /// Inputs: + /// - `diff_dst` (#dnnl::primitive_desc_base::diff_dst_desc (`0`)) + /// + /// Outputs: + /// - `diff_src` (#dnnl::primitive_desc_base::diff_src_desc (`0`)) + /// + /// @param algorithm resampling algorithm kind: either + /// #dnnl::algorithm::resampling_nearest, or + /// #dnnl::algorithm::resampling_linear + /// @param factors Vector of scaling factors for spatial dimension. + /// @param diff_src_desc Diff source memory descriptor. + /// @param diff_dst_desc Diff destination memory descriptor. + desc(algorithm algorithm, std::vector factors, + const memory::desc &diff_src_desc, + const memory::desc &diff_dst_desc); + }; + + /// Primitive descriptor for resampling backward propagation primitive. + struct primitive_desc : public dnnl::primitive_desc { + /// Default constructor. Produces an empty object. + primitive_desc(); + + /// Constructs a primitive descriptor for a resampling backward + /// propagation primitive. + /// + /// @param desc Descriptor for a resampling backward propagation primitive. + /// @param engine Engine to use. + /// @param hint_fwd_pd Primitive descriptor for a resampling forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. + primitive_desc(const desc &desc, const engine &engine, + const resampling_forward::primitive_desc &hint_fwd_pd, + bool allow_empty = false); + + /// Constructs a primitive descriptor for a resampling backward + /// propagation primitive. + /// + /// @param desc Descriptor for a resampling backward propagation primitive. + /// @param attr Primitive attributes to use. + /// @param engine Engine to use. + /// @param hint_fwd_pd Primitive descriptor for a resampling forward + /// propagation primitive. It is used as a hint for deciding which + /// memory format to use. + /// @param allow_empty A flag signifying whether construction is + /// allowed to fail without throwing an exception. In this case an + /// empty object will be produced. This flag is optional and + /// defaults to false. + primitive_desc(const desc &desc, const primitive_attr &attr, + const engine &engine, + const resampling_forward::primitive_desc &hint_fwd_pd, + bool allow_empty = false); + + /// @copydoc dnnl::primitive_desc_base::diff_src_desc()const + memory::desc diff_src_desc() const; + + /// @copydoc dnnl::primitive_desc_base::diff_dst_desc()const + memory::desc diff_dst_desc() const; + }; + + /// Default constructor. Produces an empty object. + resampling_backward(); + + /// Constructs a resampling backward propagation primitive. + /// @param pd Primitive descriptor for a resampling backward propagation + /// primitive. + resampling_backward(const primitive_desc &pd); +}; + +/// @} dnnl_api_resampling + +/// @} dnnl_api_primitives + } // namespace dnnl -/// @} +/// @} dnnl_api #endif diff --git a/source/elements/oneDNN/source/api/engine.rst b/source/elements/oneDNN/source/api/engine.rst new file mode 100644 index 0000000000..47487007a5 --- /dev/null +++ b/source/elements/oneDNN/source/api/engine.rst @@ -0,0 +1,13 @@ +Engine +------ + +*Engine* is abstraction of a computational device: a CPU, a specific GPU card in +the system, etc. Most primitives are created to execute computations on one +specific engine. The only exceptions are reorder primitives that transfer data +between two different engines. + +.. doxygenstruct:: dnnl::engine + :project: oneDNN + :members: + + diff --git a/source/elements/oneDNN/source/api/memory.rst b/source/elements/oneDNN/source/api/memory.rst new file mode 100644 index 0000000000..3bd4387654 --- /dev/null +++ b/source/elements/oneDNN/source/api/memory.rst @@ -0,0 +1,69 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Memory +------ + +Memory object is container that describes and stores data. Memory objects can +contain data of various data types and formats. There are two levels of +abstraction: + +1. *Memory descriptor* -- engine-agnostic logical description of data (number + of dimensions, dimension sizes, and data type), and, optionally, the + information about the physical format of data in memory. If this + information is not known yet, a memory descriptor can be created with + :enum:`dnnl::memory::format_tag::any`. This allows compute-intensive + primitives to chose the most appropriate format for the computations. The + user is then responsible for reordering their data into the new format if + the formats do not match. + + A memory descriptor can be initialized either by specifying dimensions, and + memory format tag or strides for each of them. + + User can query amount of memory required by a memory descriptor using the + :func:`dnnl::memory::desc::get_size` function. The size of data in + general cannot be computed as the product of dimensions multiplied by the + size of the data type. So users are required to use this function for + better code portability. + + Two memory descriptors can be compared using the equality and inequality + operators. The comparison is especially useful when checking whether it is + necessary to reorder data from the user's data format to a primitive's + format. + +2. *Memory object* -- an engine-specific object that handles the data and its + description (a memory descriptor). With USM, the data handle is simply a + pointer to ``void``. The data handle can be queried using + :func:`dnnl::memory::get_data_handle` and set using + :func:`dnnl::memory::set_data_handle`. The underlying SYCL buffer, when + used, can be queried using :func:`dnnl::memory::get_sycl_buffer` and + and set using :func:`dnnl::memory::set_sycl_buffer`. A memory object + can also be queried for the underlying memory descriptor and for its engine + using :func:`dnnl::memory::get_desc` and + :func:`dnnl::memory::get_engine`. + +Along with ordinary memory descriptors with all dimensions being positive, the +library supports *zero-volume* memory descriptors with one or more dimensions +set to zero. This is used to support the NumPy\* convention. If a zero-volume +memory is passed to a primitive, the primitive typically does not perform any +computations with this memory. For example: + +* A concatenation primitive would ignore all memory object with zeroes in the + concat dimension / axis. + +* A forward convolution with a source memory object with zero in the minibatch + dimension would always produce a detination memory object with a zero in the + minibatch dimension and perform no computations. + +* However, a forward convolution with a zero in one of the weights dimensions + is ill-defined and is considered to be an error by the library because there + is no clear definition on what the output values should be. + +Data handle of a zero-volume memory is never accessed. + +.. doxygenstruct:: dnnl::memory + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives.rst b/source/elements/oneDNN/source/api/primitives.rst new file mode 100644 index 0000000000..9eed82ed9e --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives.rst @@ -0,0 +1,70 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Primitives +---------- + +The library has multiple levels of abstractions for primitives and memory +objects in order to expose maximum flexibility to its users. + +On the logical level, the library provides the following abstractions: + +* *Operation descriptors* (one for each supported primitive) describe an + operation's most basic properties without specifying, for example, which + engine will be used to compute them. For example, convolution descriptor + describes shapes of source, destination, and weights tensors, propagation + kind (forward, backward with respect to data or weights), and other + implementation-independent parameters. + +* *Primitive descriptors* (one for each supported primitive) are at an + abstraction level in between operation descriptors and primitives and can be + used to inspect details of a specific primitive implementation like expected + memory formats via queries to implement memory format propagation (see + Memory format propagation) without having to fully instantiate a primitive. + +* *Primitives* are functor objects that encapsulates a particular computation + such as forward convolution, backward LSTM computations, or a data + transformation operation. A single primitive can sometimes represent more + complex fused computations such as a forward convolution followed by a ReLU. + + The most important difference between a primitive and a pure function is + that a primitive can store state. + + One part of the primitive’s state is immutable. For example, convolution + primitives store parameters like tensor shapes and can pre-compute other + dependent parameters like cache blocking. This approach allows DNNL primitives + to pre-generate code specifically tailored for the operation to be performed. + The DNNL programming model assumes that the time it takes to perform the + pre-computations is amortized by reusing the same primitive to perform + computations multiple times. + + The mutable part of the primitive’s state is referred to as a scratchpad. It + is a memory buffer that a primitive may use for temporary storage only + during computations. The scratchpad can either be owned by a primitive + object (which makes that object non-thread safe) or be an execution-time + parameter. + +.. toctree:: + :maxdepth: 1 + + primitives/common.rst + primitives/attributes.rst + primitives/convolution.rst + primitives/deconvolution.rst + primitives/inner_product.rst + primitives/rnn.rst + primitives/batch_normalization.rst + primitives/binary.rst + primitives/concat.rst + primitives/eltwise.rst + primitives/layer_normalization.rst + primitives/lrn.rst + primitives/logsoftmax.rst + primitives/pooling.rst + primitives/resampling.rst + primitives/softmax.rst + primitives/shuffle.rst + primitives/sum.rst + primitives/reorder.rst diff --git a/source/elements/oneDNN/source/api/primitives/attributes.rst b/source/elements/oneDNN/source/api/primitives/attributes.rst new file mode 100644 index 0000000000..df7fe7ccce --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/attributes.rst @@ -0,0 +1,33 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Attributes +~~~~~~~~~~ + +Attributes are parameters that extend a primitive's behavior. + +Attributes can also contain *post-ops*, which are computations executed after +the primitive. + +API ++++ + +.. doxygenenum:: dnnl::scratchpad_mode + :project: oneDNN + +.. doxygenenum:: dnnl::prop_kind + :project: oneDNN + +.. doxygenenum:: dnnl::algorithm + :project: oneDNN + +.. doxygenstruct:: dnnl::post_ops + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::primitive_attr + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/batch_normalization.rst b/source/elements/oneDNN/source/api/primitives/batch_normalization.rst new file mode 100644 index 0000000000..e56537bbba --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/batch_normalization.rst @@ -0,0 +1,29 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Batch Normalization +~~~~~~~~~~~~~~~~~~~ + +Both forward and backward propagation primitives support in-place operation; +that is, ``src`` and ``dst`` can refer to the same memory for forward +propagation, and ``diff_dst`` and ``diff_src`` can refer to the same memory for +backward propagation. You can control the batch normalization primitives' +computations by specifying different ``dnnl::normalization_flags`` values. +For example, batch normalization can compute the mean and variance on its own +or take them as inputs. It can either perform scaling and shifting using gamma +and beta parameters or not. Optionally, it can also perform a fused ReLU, which +in case of training would also require a workspace. + +API ++++ + +.. doxygenstruct:: dnnl::batch_normalization_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::batch_normalization_backward + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/binary.rst b/source/elements/oneDNN/source/api/primitives/binary.rst new file mode 100644 index 0000000000..95d6471f28 --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/binary.rst @@ -0,0 +1,17 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Binary +~~~~~~ + +A primitive to perform tensor operations over two tensors. + +API ++++ + +.. doxygenstruct:: dnnl::binary + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/common.rst b/source/elements/oneDNN/source/api/primitives/common.rst new file mode 100644 index 0000000000..adc00d2dd1 --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/common.rst @@ -0,0 +1,192 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Common +~~~~~~ + +Base class for primitives ++++++++++++++++++++++++++ + +.. doxygenstruct:: dnnl::primitive + :project: oneDNN + :members: + +Normalization primitives flags +++++++++++++++++++++++++++++++ + +.. doxygenenum:: dnnl::normalization_flags + :project: oneDNN + +Execution argument indices +++++++++++++++++++++++++++ + +.. doxygendefine:: DNNL_ARG_SRC_0 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_SRC + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_SRC_LAYER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_FROM + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_SRC_1 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_SRC_ITER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_SRC_2 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_SRC_ITER_C + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DST_0 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DST + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_TO + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DST_LAYER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DST_1 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DST_ITER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DST_2 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DST_ITER_C + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_WEIGHTS_0 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_WEIGHTS + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_SCALE_SHIFT + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_WEIGHTS_LAYER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_WEIGHTS_1 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_WEIGHTS_ITER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_BIAS + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_MEAN + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_VARIANCE + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_WORKSPACE + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_SCRATCHPAD + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_SRC_0 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_SRC + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_SRC_LAYER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_SRC_1 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_SRC_ITER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_SRC_2 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_SRC_ITER_C + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_DST_0 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_DST + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_DST_LAYER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_DST_1 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_DST_ITER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_DST_2 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_DST_ITER_C + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_WEIGHTS_0 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_WEIGHTS + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_SCALE_SHIFT + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_WEIGHTS_LAYER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_WEIGHTS_1 + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_WEIGHTS_ITER + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_DIFF_BIAS + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_ATTR_OUTPUT_SCALES + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_MULTIPLE_SRC + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_MULTIPLE_DST + :project: oneDNN + +.. doxygendefine:: DNNL_ARG_ATTR_ZERO_POINTS + :project: oneDNN + +.. doxygendefine:: DNNL_RUNTIME_DIM_VAL + :project: oneDNN + +.. doxygendefine:: DNNL_RUNTIME_SIZE_VAL + :project: oneDNN + +.. doxygendefine:: DNNL_RUNTIME_F32_VAL + :project: oneDNN + +.. doxygendefine:: DNNL_RUNTIME_S32_VAL + :project: oneDNN + diff --git a/source/elements/oneDNN/source/api/primitives/concat.rst b/source/elements/oneDNN/source/api/primitives/concat.rst new file mode 100644 index 0000000000..7807c0d79d --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/concat.rst @@ -0,0 +1,17 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Concat +~~~~~~ + +A primitive to concatenate data by arbitrary dimension. + +API ++++ + +.. doxygenstruct:: dnnl::concat + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/convolution.rst b/source/elements/oneDNN/source/api/primitives/convolution.rst new file mode 100644 index 0000000000..40ed2398fd --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/convolution.rst @@ -0,0 +1,27 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Convolution +~~~~~~~~~~~ + +A convolution primitive performs 1D, 2D or 3D convolution. Supported variants +are forward propagation, backward propagation, and weights gradient with or +without bias. + +API ++++ + +.. doxygenstruct:: dnnl::convolution_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::convolution_backward_data + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::convolution_backward_weights + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/deconvolution.rst b/source/elements/oneDNN/source/api/primitives/deconvolution.rst new file mode 100644 index 0000000000..1e5bd44e9d --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/deconvolution.rst @@ -0,0 +1,27 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Deconvolution +~~~~~~~~~~~~~ + +A deconvolution primitive performs 1D, 2D, or 3D deconvolution. Supported +variants are forward propagation, backward propagation, and weights gradient +with or without bias. + +API ++++ + +.. doxygenstruct:: dnnl::deconvolution_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::deconvolution_backward_data + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::deconvolution_backward_weights + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/eltwise.rst b/source/elements/oneDNN/source/api/primitives/eltwise.rst new file mode 100644 index 0000000000..79c7f05771 --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/eltwise.rst @@ -0,0 +1,35 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Element-wise +~~~~~~~~~~~~ + +A primitive to perform element-wise operations such as the rectifier linear unit +(ReLU). + +Both forward and backward propagation primitives support in-place operation; +that is, ``src`` and ``dst`` can refer to the same memory for forward +propagation, and ``diff_dst`` and ``diff_src`` can refer to the same memory for +backward propagation. + +.. warning:: + + Because the original source data is required for backward propagation, + in-place forward propagation is not generally supported in the training mode. + However, for ReLU with the alpha parameter set to 0, either ``dst`` or + ``src`` can be used for the backward propagation, which makes possible a + performance benefit even in the training mode. + +API ++++ + +.. doxygenstruct:: dnnl::eltwise_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::eltwise_backward + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/inner_product.rst b/source/elements/oneDNN/source/api/primitives/inner_product.rst new file mode 100644 index 0000000000..dd1d3b5018 --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/inner_product.rst @@ -0,0 +1,25 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Inner Product +~~~~~~~~~~~~~ + +A primitive to compute an inner product. + +API ++++ + +.. doxygenstruct:: dnnl::inner_product_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::inner_product_backward_data + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::inner_product_backward_weights + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/layer_normalization.rst b/source/elements/oneDNN/source/api/primitives/layer_normalization.rst new file mode 100644 index 0000000000..1a07161310 --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/layer_normalization.rst @@ -0,0 +1,31 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Layer Normalization +~~~~~~~~~~~~~~~~~~~ + +A primitive to perform layer normalization. Normalization is performed within +the last logical dimension of data tensor. Both forward and backward propagation +primitives support in-place operation; that is, ``src`` and ``dst`` can refer to +the same memory for forward propagation, and ``diff_dst`` and ``diff_src`` can +refer to the same memory for backward propagation. You can control the layer +normalization primitives' computations by specifying different +``dnnl::normalization_flags`` values. For example, you can configure layer +normalization forward propagation to either compute the mean and variance or +take them as arguments. Layer normalization can either perform scaling and +shifting using gamma and beta parameters or not. Optionally, it can also perform +a fused ReLU, which in case of training would also require a workspace. + +API ++++ + +.. doxygenstruct:: dnnl::layer_normalization_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::layer_normalization_backward + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/logsoftmax.rst b/source/elements/oneDNN/source/api/primitives/logsoftmax.rst new file mode 100644 index 0000000000..d274ef8986 --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/logsoftmax.rst @@ -0,0 +1,21 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +LogSoftmax +~~~~~~~~~~ + +A primitive to perform logsoftmax. + +API ++++ + +.. doxygenstruct:: dnnl::logsoftmax_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::logsoftmax_backward + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/lrn.rst b/source/elements/oneDNN/source/api/primitives/lrn.rst new file mode 100644 index 0000000000..4f9783c2da --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/lrn.rst @@ -0,0 +1,22 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Local Response Normalization +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A primitive to perform local response normalization (LRN) across or within +channels. + +API ++++ + +.. doxygenstruct:: dnnl::lrn_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::lrn_backward + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/pooling.rst b/source/elements/oneDNN/source/api/primitives/pooling.rst new file mode 100644 index 0000000000..90299d918c --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/pooling.rst @@ -0,0 +1,21 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Pooling +~~~~~~~ + +A primitive to perform max or average pooling. + +API ++++ + +.. doxygenstruct:: dnnl::pooling_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::pooling_backward + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/reorder.rst b/source/elements/oneDNN/source/api/primitives/reorder.rst new file mode 100644 index 0000000000..9f7832ec39 --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/reorder.rst @@ -0,0 +1,18 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Reorder +~~~~~~~ + +A primitive to copy data between two memory objects. This primitive is typically +used to change the way that the data is laid out in memory. + +API ++++ + +.. doxygenstruct:: dnnl::reorder + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/resampling.rst b/source/elements/oneDNN/source/api/primitives/resampling.rst new file mode 100644 index 0000000000..5d8e60defd --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/resampling.rst @@ -0,0 +1,22 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Resampling +~~~~~~~~~~ + +A primitive to compute resampling operation on 1D, 2D, or 3D data tensor using +the Nearest Neighbor, or Linear (Bilinear, Trilinear), interpolation method. + +API ++++ + +.. doxygenstruct:: dnnl::resampling_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::resampling_backward + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/rnn.rst b/source/elements/oneDNN/source/api/primitives/rnn.rst new file mode 100644 index 0000000000..2a7a38b6f1 --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/rnn.rst @@ -0,0 +1,51 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +RNN +~~~ + +A primitive to compute recurrent neural network layers. + +API ++++ + +.. doxygenenum:: dnnl::rnn_flags + :project: oneDNN + +.. doxygenenum:: dnnl::rnn_direction + :project: oneDNN + +.. doxygenstruct:: dnnl::vanilla_rnn_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::vanilla_rnn_backward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::lstm_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::lstm_backward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::gru_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::gru_backward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::lbr_gru_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::lbr_gru_backward + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/shuffle.rst b/source/elements/oneDNN/source/api/primitives/shuffle.rst new file mode 100644 index 0000000000..aad4ab3dfc --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/shuffle.rst @@ -0,0 +1,21 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Shuffle +~~~~~~~ + +A primitive to shuffle tensor data along an axis. + +API ++++ + +.. doxygenstruct:: dnnl::shuffle_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::shuffle_backward + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/softmax.rst b/source/elements/oneDNN/source/api/primitives/softmax.rst new file mode 100644 index 0000000000..c003836ec1 --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/softmax.rst @@ -0,0 +1,21 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Softmax +~~~~~~~ + +A primitive to perform softmax. + +API ++++ + +.. doxygenstruct:: dnnl::softmax_forward + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::softmax_backward + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/primitives/sum.rst b/source/elements/oneDNN/source/api/primitives/sum.rst new file mode 100644 index 0000000000..e63e79ba2a --- /dev/null +++ b/source/elements/oneDNN/source/api/primitives/sum.rst @@ -0,0 +1,17 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Sum +~~~ + +A primitive to sum multiple tensors. + +API ++++ + +.. doxygenstruct:: dnnl::sum + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/stream.rst b/source/elements/oneDNN/source/api/stream.rst new file mode 100644 index 0000000000..4cb38f949a --- /dev/null +++ b/source/elements/oneDNN/source/api/stream.rst @@ -0,0 +1,15 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Stream +------ + +A *stream* is an encapsulation of execution context tied to a particular +engine. + +.. doxygenstruct:: dnnl::stream + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/api/utilities.rst b/source/elements/oneDNN/source/api/utilities.rst new file mode 100644 index 0000000000..c877549496 --- /dev/null +++ b/source/elements/oneDNN/source/api/utilities.rst @@ -0,0 +1,20 @@ +.. + Copyright 2019 Intel Corporation + +.. default-domain:: cpp + +Utility Types and Definitions +----------------------------- + +.. doxygenstruct:: dnnl::error + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::primitive_desc_base + :project: oneDNN + :members: + +.. doxygenstruct:: dnnl::rnn_primitive_desc_base + :project: oneDNN + :members: + diff --git a/source/elements/oneDNN/source/index.rst b/source/elements/oneDNN/source/index.rst index 43551264e7..9255a1dbe1 100644 --- a/source/elements/oneDNN/source/index.rst +++ b/source/elements/oneDNN/source/index.rst @@ -1,6 +1,8 @@ .. Copyright 2019 Intel Corporation +.. default-domain:: cpp + .. _oneDNN-section: ======================== @@ -83,6 +85,19 @@ Open Source Implementation Intel has published an `open source implementation`_ with the Apache license. +--- +API +--- + +.. toctree:: + :maxdepth: 2 + + api/engine.rst + api/stream.rst + api/memory.rst + api/primitives.rst + api/utilities.rst + ------- Testing ------- @@ -93,13 +108,7 @@ can be used to test library functionality. The `open source implementation`_ includes a comprehensive test suite. Consult the `README`_ for directions. ---- -API ---- - -.. doxygenindex:: - :project: oneDNN - .. _`open source implementation`: https://github.com/intel/mkl-dnn .. _`README`: https://github.com/intel/mkl-dnn/blob/master/README.md +.. vim: ts=3 sw=3 et From da1de43cb8fe29e677fac6b0b74821df1a19992c Mon Sep 17 00:00:00 2001 From: Nikolay Petrov Date: Tue, 10 Mar 2020 02:41:30 +0300 Subject: [PATCH 04/31] Initial oneDAL spec structure (#75) Co-authored-by: Robert Cohn --- requirements.txt | 3 + scripts/oneapi.py | 5 +- source/conf.py | 13 -- source/conf/common_conf.py | 23 +++ source/conf/element_conf.py | 14 -- .../oneDAL/source/_templates/layout.html | 4 + .../algorithms/algorithm_descriptor.rst | 4 + .../source/algorithms/algorithm_inputs.rst | 4 + .../source/algorithms/algorithm_outputs.rst | 4 + .../algorithms/algorithm_processing.rst | 10 ++ .../oneDAL/source/algorithms/analysis.rst | 10 ++ .../source/algorithms/analysis/covariance.rst | 4 + .../analysis/moments_of_low_order.rst | 4 + .../oneDAL/source/algorithms/index.rst | 14 ++ .../oneDAL/source/algorithms/modes.rst | 11 ++ .../oneDAL/source/algorithms/modes/batch.rst | 4 + .../source/algorithms/modes/distributed.rst | 4 + .../oneDAL/source/algorithms/modes/online.rst | 4 + .../source/algorithms/processing/predict.rst | 4 + .../source/algorithms/processing/train.rst | 4 + .../source/algorithms/supervised_learning.rst | 11 ++ .../supervised_learning/classification.rst | 9 ++ .../classification/logistic_regression.rst | 84 +++++++++++ .../supervised_learning/regression.rst | 4 + .../algorithms/unsupervised_learning.rst | 4 + .../elements/oneDAL/source/bibliography.rst | 6 + source/elements/oneDAL/source/data/index.rst | 8 + .../oneDAL/source/data/numeric_tables.rst | 4 + .../oneDAL/source/data/structures.rst | 4 + source/elements/oneDAL/source/index.rst | 140 +++--------------- .../source/introduction/building-blocks.rst | 4 + .../oneDAL/source/introduction/classes.rst | 4 + .../source/introduction/classical-ml.rst | 4 + .../oneDAL/source/introduction/index.rst | 9 ++ .../oneDAL/source/programming/algoritmics.rst | 4 + .../oneDAL/source/programming/index.rst | 8 + .../oneDAL/source/programming/model.rst | 112 ++++++++++++++ source/elements/oneDAL/source/services.rst | 6 + 38 files changed, 424 insertions(+), 148 deletions(-) create mode 100644 source/elements/oneDAL/source/_templates/layout.html create mode 100644 source/elements/oneDAL/source/algorithms/algorithm_descriptor.rst create mode 100644 source/elements/oneDAL/source/algorithms/algorithm_inputs.rst create mode 100644 source/elements/oneDAL/source/algorithms/algorithm_outputs.rst create mode 100644 source/elements/oneDAL/source/algorithms/algorithm_processing.rst create mode 100644 source/elements/oneDAL/source/algorithms/analysis.rst create mode 100644 source/elements/oneDAL/source/algorithms/analysis/covariance.rst create mode 100644 source/elements/oneDAL/source/algorithms/analysis/moments_of_low_order.rst create mode 100644 source/elements/oneDAL/source/algorithms/index.rst create mode 100644 source/elements/oneDAL/source/algorithms/modes.rst create mode 100644 source/elements/oneDAL/source/algorithms/modes/batch.rst create mode 100644 source/elements/oneDAL/source/algorithms/modes/distributed.rst create mode 100644 source/elements/oneDAL/source/algorithms/modes/online.rst create mode 100644 source/elements/oneDAL/source/algorithms/processing/predict.rst create mode 100644 source/elements/oneDAL/source/algorithms/processing/train.rst create mode 100644 source/elements/oneDAL/source/algorithms/supervised_learning.rst create mode 100644 source/elements/oneDAL/source/algorithms/supervised_learning/classification.rst create mode 100644 source/elements/oneDAL/source/algorithms/supervised_learning/classification/logistic_regression.rst create mode 100644 source/elements/oneDAL/source/algorithms/supervised_learning/regression.rst create mode 100644 source/elements/oneDAL/source/algorithms/unsupervised_learning.rst create mode 100644 source/elements/oneDAL/source/bibliography.rst create mode 100644 source/elements/oneDAL/source/data/index.rst create mode 100644 source/elements/oneDAL/source/data/numeric_tables.rst create mode 100644 source/elements/oneDAL/source/data/structures.rst create mode 100644 source/elements/oneDAL/source/introduction/building-blocks.rst create mode 100644 source/elements/oneDAL/source/introduction/classes.rst create mode 100644 source/elements/oneDAL/source/introduction/classical-ml.rst create mode 100644 source/elements/oneDAL/source/introduction/index.rst create mode 100644 source/elements/oneDAL/source/programming/algoritmics.rst create mode 100644 source/elements/oneDAL/source/programming/index.rst create mode 100644 source/elements/oneDAL/source/programming/model.rst create mode 100644 source/elements/oneDAL/source/services.rst diff --git a/requirements.txt b/requirements.txt index 52073e0cf4..279bfded17 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,6 @@ gitpython Sphinx>=2.4.0 sphinx-notfound-page sphinx-rtd-theme +sphinx-prompt +sphinx_substitution_extensions +sphinx_tabs diff --git a/scripts/oneapi.py b/scripts/oneapi.py index 8a27257ffd..6d62881e71 100644 --- a/scripts/oneapi.py +++ b/scripts/oneapi.py @@ -319,7 +319,7 @@ def purge(root, target=None): root_only(root) for (r,dirs,files) in os.walk('site', topdown=True): r = r.replace('site/','') - dirs = remove_elements(dirs,['oneDAL', 'oneL0', 'oneMKL']) + dirs = remove_elements(dirs,['oneL0', 'oneMKL']) for file in files: print('http://spec.oneapi.com/%s/%s' % (r, file)) @@ -361,8 +361,7 @@ def ci(root, target=None): 'oneDNN'] tarballs = ['oneMKL', - 'oneL0', - 'oneDAL'] + 'oneL0'] def main(): global args diff --git a/source/conf.py b/source/conf.py index 3a0830ede1..5b2c1dae70 100644 --- a/source/conf.py +++ b/source/conf.py @@ -41,19 +41,6 @@ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = [ - 'notfound.extension', - 'sphinx.ext.autodoc', - 'sphinx.ext.doctest', -# 'sphinx.ext.intersphinx', - 'sphinx.ext.todo', - 'sphinx.ext.coverage', - 'sphinx.ext.mathjax', - 'sphinx.ext.ifconfig', - 'sphinx.ext.viewcode', - 'sphinx.ext.githubpages', - 'breathe', -] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/source/conf/common_conf.py b/source/conf/common_conf.py index fb6be6f7e0..0ba74bdfa5 100644 --- a/source/conf/common_conf.py +++ b/source/conf/common_conf.py @@ -1,6 +1,23 @@ +extensions = [ + 'notfound.extension', + 'sphinx.ext.autodoc', + 'sphinx.ext.doctest', +# 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.ifconfig', + 'sphinx.ext.viewcode', + 'sphinx.ext.githubpages', + 'sphinx_substitution_extensions', + 'breathe', +] + rst_prolog = """ .. |ccl_full_name| replace:: Collective Communications Library .. |dal_full_name| replace:: Data Analytics Library +.. |dal_short_name| replace:: oneDAL +.. |dal_namespace| replace:: daal .. |dnn_full_name| replace:: Deep Neural Network Library .. |dpl_full_name| replace:: DPC++ Library .. |dpcpp_full_name| replace:: DPC++ @@ -10,4 +27,10 @@ .. |vpl_full_name| replace:: Video Processing Library """ +# for substitutions in code blocks and sphinx-prompts: +substitutions = [ + ('|dal_short_name|', 'oneDAL'), + ('|daal_in_code|', 'daal') + ] + oneapi_spec_version = '0.6.0' diff --git a/source/conf/element_conf.py b/source/conf/element_conf.py index a0ddf1a49a..6dcf22b16e 100644 --- a/source/conf/element_conf.py +++ b/source/conf/element_conf.py @@ -33,20 +33,6 @@ # # needs_sphinx = '1.0' -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.doctest', - 'sphinx.ext.todo', - 'sphinx.ext.coverage', - 'sphinx.ext.mathjax', - 'sphinx.ext.ifconfig', - 'sphinx.ext.viewcode', - 'sphinx.ext.githubpages', - 'breathe' -] # Add any paths that contain templates here, relative to this directory. templates_path = ['../../../_templates'] diff --git a/source/elements/oneDAL/source/_templates/layout.html b/source/elements/oneDAL/source/_templates/layout.html new file mode 100644 index 0000000000..b0a4480600 --- /dev/null +++ b/source/elements/oneDAL/source/_templates/layout.html @@ -0,0 +1,4 @@ +{% extends "!layout.html" %} +{% block extrahead %} + +{% endblock %} \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/algorithm_descriptor.rst b/source/elements/oneDAL/source/algorithms/algorithm_descriptor.rst new file mode 100644 index 0000000000..82168d1857 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/algorithm_descriptor.rst @@ -0,0 +1,4 @@ +Algorithm decriptor +========================= + +This section explains... diff --git a/source/elements/oneDAL/source/algorithms/algorithm_inputs.rst b/source/elements/oneDAL/source/algorithms/algorithm_inputs.rst new file mode 100644 index 0000000000..cf6219e6b7 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/algorithm_inputs.rst @@ -0,0 +1,4 @@ +Algorithm inputs +========================= + +This section explains.. \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/algorithm_outputs.rst b/source/elements/oneDAL/source/algorithms/algorithm_outputs.rst new file mode 100644 index 0000000000..b3ce4a32b2 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/algorithm_outputs.rst @@ -0,0 +1,4 @@ +Algorithm outputs +========================= + +This section explains \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/algorithm_processing.rst b/source/elements/oneDAL/source/algorithms/algorithm_processing.rst new file mode 100644 index 0000000000..ef679aec3a --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/algorithm_processing.rst @@ -0,0 +1,10 @@ +Algorithm processing +========================= + +This section explains different Algorithm processing blocks + +.. toctree:: + :maxdepth: 2 + + processing/train.rst + processing/predict.rst \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/analysis.rst b/source/elements/oneDAL/source/algorithms/analysis.rst new file mode 100644 index 0000000000..88d972492f --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/analysis.rst @@ -0,0 +1,10 @@ +Analysis +========================= + +This section explains + +.. toctree:: + :maxdepth: 2 + + analysis/moments_of_low_order.rst + analysis/covariance.rst \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/analysis/covariance.rst b/source/elements/oneDAL/source/algorithms/analysis/covariance.rst new file mode 100644 index 0000000000..6633352f00 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/analysis/covariance.rst @@ -0,0 +1,4 @@ +Covariance +========================= + +This section explains covariance algorithm \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/analysis/moments_of_low_order.rst b/source/elements/oneDAL/source/algorithms/analysis/moments_of_low_order.rst new file mode 100644 index 0000000000..f526083672 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/analysis/moments_of_low_order.rst @@ -0,0 +1,4 @@ +Moments of low order +========================= + +This section explains Moments of low order diff --git a/source/elements/oneDAL/source/algorithms/index.rst b/source/elements/oneDAL/source/algorithms/index.rst new file mode 100644 index 0000000000..ce91f49f43 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/index.rst @@ -0,0 +1,14 @@ +============ + Algorithms +============ + +.. toctree:: + + modes.rst + algorithm_inputs.rst + algorithm_outputs.rst + algorithm_descriptor.rst + algorithm_processing.rst + analysis.rst + unsupervised_learning.rst + supervised_learning.rst diff --git a/source/elements/oneDAL/source/algorithms/modes.rst b/source/elements/oneDAL/source/algorithms/modes.rst new file mode 100644 index 0000000000..73535b9187 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/modes.rst @@ -0,0 +1,11 @@ +Computation modes +========================= + +The library algorithms support the following computation modes: + +.. toctree:: + :maxdepth: 3 + + modes/batch.rst + modes/online.rst + modes/distributed.rst \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/modes/batch.rst b/source/elements/oneDAL/source/algorithms/modes/batch.rst new file mode 100644 index 0000000000..b7174a1aff --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/modes/batch.rst @@ -0,0 +1,4 @@ +Batch mode +========================= + +This section explains Batch compute mode \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/modes/distributed.rst b/source/elements/oneDAL/source/algorithms/modes/distributed.rst new file mode 100644 index 0000000000..d6017684c4 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/modes/distributed.rst @@ -0,0 +1,4 @@ +Distributed mode +========================= + +This section explains Distributed compute mode diff --git a/source/elements/oneDAL/source/algorithms/modes/online.rst b/source/elements/oneDAL/source/algorithms/modes/online.rst new file mode 100644 index 0000000000..34dd467c1b --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/modes/online.rst @@ -0,0 +1,4 @@ +Online mode +========================= + +In this section we explains online compute mode \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/processing/predict.rst b/source/elements/oneDAL/source/algorithms/processing/predict.rst new file mode 100644 index 0000000000..8b2e0ad3af --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/processing/predict.rst @@ -0,0 +1,4 @@ +Distributed mode +========================= + +This sectiction explains Distributed compute mode diff --git a/source/elements/oneDAL/source/algorithms/processing/train.rst b/source/elements/oneDAL/source/algorithms/processing/train.rst new file mode 100644 index 0000000000..b7174a1aff --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/processing/train.rst @@ -0,0 +1,4 @@ +Batch mode +========================= + +This section explains Batch compute mode \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/supervised_learning.rst b/source/elements/oneDAL/source/algorithms/supervised_learning.rst new file mode 100644 index 0000000000..816db68f66 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/supervised_learning.rst @@ -0,0 +1,11 @@ +Supervised learning +========================= + +This section explains algrithms of Supervised learning class + + +.. toctree:: + :maxdepth: 2 + + supervised_learning/classification.rst + supervised_learning/regression.rst diff --git a/source/elements/oneDAL/source/algorithms/supervised_learning/classification.rst b/source/elements/oneDAL/source/algorithms/supervised_learning/classification.rst new file mode 100644 index 0000000000..4f7850a18b --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/supervised_learning/classification.rst @@ -0,0 +1,9 @@ +Classification +========================= + +This section explains Classification + +.. toctree:: + :maxdepth: 2 + + classification/logistic_regression.rst diff --git a/source/elements/oneDAL/source/algorithms/supervised_learning/classification/logistic_regression.rst b/source/elements/oneDAL/source/algorithms/supervised_learning/classification/logistic_regression.rst new file mode 100644 index 0000000000..ce0e091bb6 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/supervised_learning/classification/logistic_regression.rst @@ -0,0 +1,84 @@ +Logistic Regression +=================== + +.. toctree:: + :glob: + :maxdepth: 4 + + +Logistic regression is a method for modeling the relationships +between one or more explanatory variables and a categorical variable +by expressing the posterior statistical distribution of the +categorical variable via linear functions on observed data. If the +categorical variable is binary, taking only two values, "0" and "1", +the logistic regression is simple, otherwise, it is multinomial. + + +Details +******* + +Given n feature vectors of n p-dimensional feature vectors a vector +of class labels :math:`y = (y_1,\ldots{},y_n )`, where :math:`y_i \in \{0, 1, \ldots, K-1\}` and :math:`K` is the number of classes, describes the +class to which the feature vector :math:`x_i` belongs, the problem is to +train a logistic regression model. + +The logistic regression model is the set of vectors :math:`\beta =\left\{ {\beta }_{0}=\left({\beta }_{00}\dots {\beta }_{0p}\right), {..\beta }_{K-1}=\left({\beta }_{K-10}\dots {\beta }_{K-1p}\right)\right\}` that gives the posterior probability + + .. math:: + {P\left\{y=k|x\right\}= p}_{k}\left(x, \beta \right)=\mathrm{ }\frac{{e}^{{f}_{k}\left(x, \beta \right)}}{\sum _{i=0}^{K-1}{e}^{{f}_{i}\left(x, \beta \right)}}, \text{where} {f}_{k}\left(x, \beta \right)= {\beta }_{k0}+ \sum _{j=1}^{p}{\beta }_{kj}*{x}_{j} + +for a given feature vector :math:`x = (x_1, \ldots, x_p)` and class +label :math:`y \in \{0, 1, \ldots, K - 1\}` for each :math:`k = 0, \ldots, K-1`. + +If the categorical variable is binary, the model is defined as a single vector :math:`{\beta }_{0}=\left({\beta }_{00}\dots {\beta }_{0p}\right)` that determines the posterior probability + +.. math:: + + P\left\{y=1|x\right\}= \mathrm{\sigma }\left(x,\mathrm{ }\mathrm{\beta }\right)=\frac{1}{1+ {e}^{-f\left(x, \beta \right)}} + + P\left\{y=0|x\right\}=1- P\left\{y=1|x\right\} + + +Parameters +**************** + +.. list-table:: + :widths: 25 25 25 + :header-rows: 1 + :align: left + + * - Parameter + - Default Value + - Description + * - algorithmFPType + - float + - The floating-point type that the algorithm uses for intermediate computations. Can be float or double. + * - method + - defaultDense + - The computation method used by the logistic regression. The only + training method supported so far is the default dense method. + * - nClasses + - Not applicable. + - The number of classes. A required parameter. + * - interceptFlag + - True + - A flag that indicates a need to compute :math:`\theta_j` + * - penaltyL1 + - :math:`0` + - L1 regularization coefficient + * - penaltyL2 + - :math:`0` + - L2 regularization coefficient + * - optimizationSolver + - SGD solver + - All iterative solvers are available as optimization procedures to use at + the training stage: + - SGD (Stochastic Gradient Descent Algorithm) + - ADAGRAD (Adaptive Subgradient Method) + - LBFGS (Limited-Memory Broyden-Fletcher-Goldfarb-Shanno Algorithm) + - SAGA (Stochastic Average Gradient Accelerated Method) + +APIs +******* + +APIs description \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/supervised_learning/regression.rst b/source/elements/oneDAL/source/algorithms/supervised_learning/regression.rst new file mode 100644 index 0000000000..a8e5bcb135 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/supervised_learning/regression.rst @@ -0,0 +1,4 @@ +Regression +========================= + +This section explains regression topic \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/unsupervised_learning.rst b/source/elements/oneDAL/source/algorithms/unsupervised_learning.rst new file mode 100644 index 0000000000..db7cf2ec49 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/unsupervised_learning.rst @@ -0,0 +1,4 @@ +Unsupervised learning +========================= + +This section explains algorithms of unsupervised learning class \ No newline at end of file diff --git a/source/elements/oneDAL/source/bibliography.rst b/source/elements/oneDAL/source/bibliography.rst new file mode 100644 index 0000000000..9104f8dd17 --- /dev/null +++ b/source/elements/oneDAL/source/bibliography.rst @@ -0,0 +1,6 @@ +.. _bibliography: + +Bibliography +============ + +For more information about algorithms implemented in |dal_short_name|, refer to the following publications: diff --git a/source/elements/oneDAL/source/data/index.rst b/source/elements/oneDAL/source/data/index.rst new file mode 100644 index 0000000000..c2444e2320 --- /dev/null +++ b/source/elements/oneDAL/source/data/index.rst @@ -0,0 +1,8 @@ +================= + Data management +================= + +.. toctree:: + + numeric_tables.rst + structures.rst diff --git a/source/elements/oneDAL/source/data/numeric_tables.rst b/source/elements/oneDAL/source/data/numeric_tables.rst new file mode 100644 index 0000000000..5ccab25ccb --- /dev/null +++ b/source/elements/oneDAL/source/data/numeric_tables.rst @@ -0,0 +1,4 @@ +Numeric Tables +========================= + +This section explains Numeric Tables diff --git a/source/elements/oneDAL/source/data/structures.rst b/source/elements/oneDAL/source/data/structures.rst new file mode 100644 index 0000000000..469c3f0919 --- /dev/null +++ b/source/elements/oneDAL/source/data/structures.rst @@ -0,0 +1,4 @@ +Data Structures +========================= + +This section explains Data structures for machine learning algorithms \ No newline at end of file diff --git a/source/elements/oneDAL/source/index.rst b/source/elements/oneDAL/source/index.rst index 27e7a93927..1a18db8fa9 100644 --- a/source/elements/oneDAL/source/index.rst +++ b/source/elements/oneDAL/source/index.rst @@ -1,128 +1,32 @@ .. - Copyright 2019 Intel Corporation + Copyright 2020 Intel Corporation .. _oneDAL-section: -======================== -|dal_full_name| (oneDAL) -======================== +========================== + |dal_full_name| (oneDAL) +========================== -oneAPI Data Analytics Library (oneDAL) is a library of building blocks covering all -stages of data analytics: data acquisition from a data source, preprocessing, -transformation, data mining, modeling, validation, and decision-making. +.. |github| replace:: oneDAL GitHub\* page +.. _github: https://github.com/intel/daal -The library consists of the following components: +This document specifies requirements for implementations of Intel oneAPI Data Analytics Library (oneDAL). -- Data Management provides interfaces for data acquisition, initial - preprocessing, data and model representation. -- Algorithms provide interfaces for data analysis and data modeling, - and support batch, online and distributed computation modes. -- Services include interfaces used across the library by Data - Management and Algorithms components: memory allocation, error - handling and interaction with underlying hardware. The programmer - can provide a queue specify the target device for algorithm - execution. +oneDAL is a library +that helps speed up big data analysis by providing highly optimized +algorithmic building blocks for all stages of data analytics +(preprocessing, transformation, analysis, modeling, validation, and +decision making) in batch, online, and distributed processing modes of +computation. The current version of oneDAL provides +Data Parallel C++ (DPC++) API extensions to the traditional C++ interface. -.. Much of oneDAL is defined only for the host processor. The features are -.. enabled to run on oneAPI devices. +For general information, visit |github|. -.. 1. **Data Management**: DPC++ numeric table -.. 2. **Algorithms**: K-means, Covariance, Principal Component Analysis, -.. Stochastic Gradient Descent, and Logistic Regression -.. 3. **Services**: DPC++ execution context - - -.. code:: cpp - - #include "daal_sycl.h" - - // Common oneDAL namespaces - using namespace daal::services; - using namespace daal::algorithms; - using namespace daal::data_management; - - int main(int argc, char *argv[]) { - // Create a DPC++ queue with the desired device selector - cl::sycl::queue queue{cl::sycl::gpu_selector()}; - - // Create an execution context from the DPC++ queue and set up as the - // default for all algorithms - Environment::getInstance()-> - setDefaultExecutionContext(SyclExecutionContext{queue}); - - // Create a DPC++ buffer from the data allocated on host - const size_t nRows = 10; - const size_t nCols = 5; - const float dataHost[] = { - 0.42, -0.88, 0.46, 0.04, -0.86, - -0.74, -0.59, 0.42, -1.44, -0.40, - ... - }; - cl::sycl::buffer dataBuffer{dataHost, nCols * nRows); - - // Create a DPC++ numeric table from the DPC++ buffer - auto data = SyclHomogenNumericTable::create(dataBuffer, nCols, nRows); - - // Create an algorithm object, for instance, a PCA algorithm - pca::Batch pca; - - // Set up PCA parameters - pca.parameter.nComponents = 3; - pca.parameter.resultsToCompute = pca::mean | - pca::variance | - pca::eigenvalue; - // Set up input data - pca.input.set(pca::data, data); - - // Run the computations - pca.compute(); - - // Get the algorithm result - pca::ResultPtr result = pca.getResult(); - NumericTablePtr eigenvalues = result->get(pca::eigenvalues); - NumericTablePtr eigenvectors = result->get(pca::eigenvectors); - - // Define a block descriptor for accessing numeric table - BlockDescriptor block; - - // Read block from the numeric table into the block descriptor - const size_t startRowIndex = 0; - const size_t numberOfRows = eigenvectors->getNumberOfRows(); - eigenvectors->getBlockOfRows(startRowIndex, numberOfRows, readOnly, block); - - // Get the raw data as DPC++ buffer from the numeric table - cl::sycl::buffer eigenvectorsBuffer = block.getBuffer().toSycl(); - - // Release resources associated with the block descriptor - eigenvectors->releaseBlockOfRows(block); - } - - --------------------------- -Open Source Implementation --------------------------- - -An `open source implementation`_ is available under an Apache -license. - -------- -Testing -------- - -Intel's binary distribution of oneDAL contains example code that can -be used to test library functionality. - -The `open source implementation`_ includes a comprehensive test suite. -Consult the `README`_ for directions. - -------------------------- -Detailed API Descriptions -------------------------- - -The detailed specification for oneDAL is available `online`_. - - -.. _`open source implementation`: https://github.com/intel/daal -.. _`README`: https://github.com/intel/daal/blob/master/README.md -.. _`online`: https://spec.oneapi.com/versions/0.6.0/oneDAL/index.html +.. toctree:: + introduction/index.rst + programming/index.rst + data/index.rst + algorithms/index.rst + services.rst + bibliography.rst diff --git a/source/elements/oneDAL/source/introduction/building-blocks.rst b/source/elements/oneDAL/source/introduction/building-blocks.rst new file mode 100644 index 0000000000..5eadefc427 --- /dev/null +++ b/source/elements/oneDAL/source/introduction/building-blocks.rst @@ -0,0 +1,4 @@ +Building blocks +================================ + +This section will cover basic building blocks for machine learing algorithms, definition of model and overall flow \ No newline at end of file diff --git a/source/elements/oneDAL/source/introduction/classes.rst b/source/elements/oneDAL/source/introduction/classes.rst new file mode 100644 index 0000000000..7350a573a5 --- /dev/null +++ b/source/elements/oneDAL/source/introduction/classes.rst @@ -0,0 +1,4 @@ +Classes of Machine Learning algorithms +====================================== + +This section explains classes of machine learning algorithms diff --git a/source/elements/oneDAL/source/introduction/classical-ml.rst b/source/elements/oneDAL/source/introduction/classical-ml.rst new file mode 100644 index 0000000000..a385a4d184 --- /dev/null +++ b/source/elements/oneDAL/source/introduction/classical-ml.rst @@ -0,0 +1,4 @@ +Classical Machine Learning +=========================== + +This section includes an introduction to ML and the Data Analytic Library. diff --git a/source/elements/oneDAL/source/introduction/index.rst b/source/elements/oneDAL/source/introduction/index.rst new file mode 100644 index 0000000000..c3cb8e3676 --- /dev/null +++ b/source/elements/oneDAL/source/introduction/index.rst @@ -0,0 +1,9 @@ +============== + Introduction +============== + +.. toctree:: + + classical-ml.rst + classes.rst + building-blocks.rst diff --git a/source/elements/oneDAL/source/programming/algoritmics.rst b/source/elements/oneDAL/source/programming/algoritmics.rst new file mode 100644 index 0000000000..a697c53745 --- /dev/null +++ b/source/elements/oneDAL/source/programming/algoritmics.rst @@ -0,0 +1,4 @@ +Algoritmics +========================= + +This section explains algoritmics for Classical Machine Learning diff --git a/source/elements/oneDAL/source/programming/index.rst b/source/elements/oneDAL/source/programming/index.rst new file mode 100644 index 0000000000..cfae8f6914 --- /dev/null +++ b/source/elements/oneDAL/source/programming/index.rst @@ -0,0 +1,8 @@ +=================== + Programming model +=================== + +.. toctree:: + + model.rst + algoritmics.rst diff --git a/source/elements/oneDAL/source/programming/model.rst b/source/elements/oneDAL/source/programming/model.rst new file mode 100644 index 0000000000..c118d76982 --- /dev/null +++ b/source/elements/oneDAL/source/programming/model.rst @@ -0,0 +1,112 @@ +Programming Model +========================= + +Basic Usage Scenario +~~~~~~~~~~~~~~~~~~~~~ + +Below you can find a typical workflow of using |dal_short_name| algorithm on GPU. +The example is provided for Principal Component Analysis algorithm (PCA). + +The following steps depict how to: + +- Pass the data +- Initialize the algorithm +- Request statistics to be calculated (means, variances, eigenvalues) +- Compute results +- Get calculated eigenvalues and eigenvectors + +#. Include the following header file to enable the DPC++ interface for + |dal_short_name|: + + .. substitution-code-block:: + + #include "|daal_in_code|_sycl.h" + +#. Create a DPC++ queue with the desired device selector. In this case, + GPU selector is used: + + .. parsed-literal:: + + cl::sycl::queue queue { cl::sycl::gpu_selector() }; + +#. Create an execution context from the DPC++ queue and set up as the + default for all algorithms. The execution context is the |dal_short_name| + concept that is intended for delivering queue and device information + to the algorithm kernel: + + .. parsed-literal:: + + |dal_namespace|::services::Environment::getInstance()->setDefaultExecutionContext( + |dal_namespace|::services::SyclExecutionContext(queue) ); + +#. Create a DPC++ buffer from the data allocated on host: + + .. parsed-literal:: + + constexpr size_t nRows = 10; + constexpr size_t nCols = 5; + const float dataHost[] = { + 0.42, -0.88, 0.46, 0.04, -0.86, + -0.74, -0.59, 0.42, -1.44, -0.40, + -1.45, 1.07, -1.00, -0.29, 0.35, + -0.67, 0.20, 0.47, -1.07, 0.71, + -1.19, 0.20, 0.84, -0.26, 1.47, + -1.87, -0.94, -1.16, -0.64, -2.10, + -0.65, -0.40, -1.88, -0.48, 0.70, + -0.52, -0.34, -1.48, -0.63, -0.87, + -0.74, -0.46, 1.07, 0.65, -1.68, + 0.94, 1.88, -0.73, -1.16, 0.10 + }; + auto dataBuffer = cl::sycl::buffer(dataHost, nCols * nRows); + +#. Create a DPC++ numeric table from a DPC++ buffer. DPC++ numeric table is a new concept + introduced as a part of DPC++ interfaces to work with data stored in DPC++ buffer. + It implements an interface of a classical numeric table acting as an adapter between DPC++ + and |dal_short_name| APIs for data representation. + + .. parsed-literal:: + + auto data = |dal_namespace|::data_management::SyclHomogenNumericTable::create( + dataBuffer, nCols, nRows); + + +#. Create an algorithm object, configure its parameters, set up input + data, and run the computations. + + .. parsed-literal:: + + |dal_namespace|::algorithms::pca::Batch pca; + + pca.parameter.nComponents = 3; + pca.parameter.resultsToCompute = |dal_namespace|::algorithms::pca::mean | + |dal_namespace|::algorithms::pca::variance | + |dal_namespace|::algorithms::pca::eigenvalue; + pca.input.set(|dal_namespace|::algorithms::pca::data, data); + + pca.compute(); + +#. Get the algorithm result: + + .. parsed-literal:: + + auto result = pca.getResult(); + NumericTablePtr eigenvalues = result->get(|dal_namespace|::algorithms::pca::eigenvalues); + NumericTablePtr eigenvectors = result->get(|dal_namespace|::algorithms::pca::eigenvectors); + +#. Get the raw data as DPC++ buffer from the resulting numeric tables: + + .. parsed-literal:: + + const size_t startRowIndex = 0; + const size_t numberOfRows = eigenvectors->getNumberOfRows(); + + BlockDescriptor block; + eigenvectors->getBlockOfRows(startRowIndex, numberOfRows, readOnly, block); + + cl::sycl::buffer buffer = block.getBuffer().toSycl(); + + eigenvectors->releaseBlockOfRows(block); + +At the end of the stage, the resulting numeric tables can be used as an input for another algorithm, +or the buffer can be passed to the user-defined kernel. + diff --git a/source/elements/oneDAL/source/services.rst b/source/elements/oneDAL/source/services.rst new file mode 100644 index 0000000000..5da1bc5c0b --- /dev/null +++ b/source/elements/oneDAL/source/services.rst @@ -0,0 +1,6 @@ +.. _Services: + +Services +============ + +This module contains information about service functionality in library From 6d51dbb1b6306e4b0219e3e9c7287cdfd4b92782 Mon Sep 17 00:00:00 2001 From: Ruslan Israfilov Date: Thu, 12 Mar 2020 13:40:54 +0300 Subject: [PATCH 05/31] Update oneDAL spec structure --- .../algorithms/algorithm_descriptor.rst | 4 - .../source/algorithms/algorithm_inputs.rst | 4 - .../source/algorithms/algorithm_outputs.rst | 4 - .../algorithms/algorithm_processing.rst | 10 --- .../oneDAL/source/algorithms/analysis.rst | 10 --- .../source/algorithms/analysis/covariance.rst | 4 - .../analysis/moments_of_low_order.rst | 4 - .../source/algorithms/clustering/index.rst | 5 ++ .../source/algorithms/clustering/kmeans.rst | 2 + .../source/algorithms/decomposition/index.rst | 5 ++ .../source/algorithms/decomposition/pca.rst | 2 + .../oneDAL/source/algorithms/index.rst | 17 ++-- .../oneDAL/source/algorithms/modes.rst | 11 --- .../oneDAL/source/algorithms/modes/batch.rst | 4 - .../source/algorithms/modes/distributed.rst | 4 - .../oneDAL/source/algorithms/modes/online.rst | 4 - .../algorithms/nearest_neighbors/index.rst | 5 ++ .../nearest_neighbors/knn_classification.rst | 2 + .../source/algorithms/processing/predict.rst | 4 - .../source/algorithms/processing/train.rst | 4 - .../source/algorithms/supervised_learning.rst | 11 --- .../supervised_learning/classification.rst | 9 -- .../classification/logistic_regression.rst | 84 ------------------- .../supervised_learning/regression.rst | 4 - .../algorithms/unsupervised_learning.rst | 4 - .../common_interface/error_handling.rst | 2 + .../header_files_and_namespaces.rst | 2 + .../oneDAL/source/common_interface/index.rst | 7 ++ .../managing_object_lifetimes.rst | 2 + source/elements/oneDAL/source/data/index.rst | 8 -- .../oneDAL/source/data/structures.rst | 4 - .../source/data_management/accessors.rst | 2 + .../oneDAL/source/data_management/index.rst | 7 ++ .../tables.rst} | 0 source/elements/oneDAL/source/index.rst | 9 +- .../elements/oneDAL/source/introduction.rst | 2 + .../source/introduction/building-blocks.rst | 4 - .../oneDAL/source/introduction/classes.rst | 4 - .../source/introduction/classical-ml.rst | 4 - .../oneDAL/source/introduction/index.rst | 9 -- .../oneDAL/source/programming/algoritmics.rst | 4 - .../oneDAL/source/programming/index.rst | 8 -- .../programming_model/algorithm_anatomy.rst | 15 ++++ .../basic_usage_scenario.rst} | 7 +- .../programming_model/computational_modes.rst | 11 +++ .../oneDAL/source/programming_model/index.rst | 9 ++ .../managing_execution_context.rst | 2 + .../programming_model/memory_objects.rst | 2 + source/elements/oneDAL/source/services.rst | 6 -- 49 files changed, 95 insertions(+), 256 deletions(-) delete mode 100644 source/elements/oneDAL/source/algorithms/algorithm_descriptor.rst delete mode 100644 source/elements/oneDAL/source/algorithms/algorithm_inputs.rst delete mode 100644 source/elements/oneDAL/source/algorithms/algorithm_outputs.rst delete mode 100644 source/elements/oneDAL/source/algorithms/algorithm_processing.rst delete mode 100644 source/elements/oneDAL/source/algorithms/analysis.rst delete mode 100644 source/elements/oneDAL/source/algorithms/analysis/covariance.rst delete mode 100644 source/elements/oneDAL/source/algorithms/analysis/moments_of_low_order.rst create mode 100644 source/elements/oneDAL/source/algorithms/clustering/index.rst create mode 100644 source/elements/oneDAL/source/algorithms/clustering/kmeans.rst create mode 100644 source/elements/oneDAL/source/algorithms/decomposition/index.rst create mode 100644 source/elements/oneDAL/source/algorithms/decomposition/pca.rst delete mode 100644 source/elements/oneDAL/source/algorithms/modes.rst delete mode 100644 source/elements/oneDAL/source/algorithms/modes/batch.rst delete mode 100644 source/elements/oneDAL/source/algorithms/modes/distributed.rst delete mode 100644 source/elements/oneDAL/source/algorithms/modes/online.rst create mode 100644 source/elements/oneDAL/source/algorithms/nearest_neighbors/index.rst create mode 100644 source/elements/oneDAL/source/algorithms/nearest_neighbors/knn_classification.rst delete mode 100644 source/elements/oneDAL/source/algorithms/processing/predict.rst delete mode 100644 source/elements/oneDAL/source/algorithms/processing/train.rst delete mode 100644 source/elements/oneDAL/source/algorithms/supervised_learning.rst delete mode 100644 source/elements/oneDAL/source/algorithms/supervised_learning/classification.rst delete mode 100644 source/elements/oneDAL/source/algorithms/supervised_learning/classification/logistic_regression.rst delete mode 100644 source/elements/oneDAL/source/algorithms/supervised_learning/regression.rst delete mode 100644 source/elements/oneDAL/source/algorithms/unsupervised_learning.rst create mode 100644 source/elements/oneDAL/source/common_interface/error_handling.rst create mode 100644 source/elements/oneDAL/source/common_interface/header_files_and_namespaces.rst create mode 100644 source/elements/oneDAL/source/common_interface/index.rst create mode 100644 source/elements/oneDAL/source/common_interface/managing_object_lifetimes.rst delete mode 100644 source/elements/oneDAL/source/data/index.rst delete mode 100644 source/elements/oneDAL/source/data/structures.rst create mode 100644 source/elements/oneDAL/source/data_management/accessors.rst create mode 100644 source/elements/oneDAL/source/data_management/index.rst rename source/elements/oneDAL/source/{data/numeric_tables.rst => data_management/tables.rst} (100%) create mode 100644 source/elements/oneDAL/source/introduction.rst delete mode 100644 source/elements/oneDAL/source/introduction/building-blocks.rst delete mode 100644 source/elements/oneDAL/source/introduction/classes.rst delete mode 100644 source/elements/oneDAL/source/introduction/classical-ml.rst delete mode 100644 source/elements/oneDAL/source/introduction/index.rst delete mode 100644 source/elements/oneDAL/source/programming/algoritmics.rst delete mode 100644 source/elements/oneDAL/source/programming/index.rst create mode 100644 source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst rename source/elements/oneDAL/source/{programming/model.rst => programming_model/basic_usage_scenario.rst} (97%) create mode 100644 source/elements/oneDAL/source/programming_model/computational_modes.rst create mode 100644 source/elements/oneDAL/source/programming_model/index.rst create mode 100644 source/elements/oneDAL/source/programming_model/managing_execution_context.rst create mode 100644 source/elements/oneDAL/source/programming_model/memory_objects.rst delete mode 100644 source/elements/oneDAL/source/services.rst diff --git a/source/elements/oneDAL/source/algorithms/algorithm_descriptor.rst b/source/elements/oneDAL/source/algorithms/algorithm_descriptor.rst deleted file mode 100644 index 82168d1857..0000000000 --- a/source/elements/oneDAL/source/algorithms/algorithm_descriptor.rst +++ /dev/null @@ -1,4 +0,0 @@ -Algorithm decriptor -========================= - -This section explains... diff --git a/source/elements/oneDAL/source/algorithms/algorithm_inputs.rst b/source/elements/oneDAL/source/algorithms/algorithm_inputs.rst deleted file mode 100644 index cf6219e6b7..0000000000 --- a/source/elements/oneDAL/source/algorithms/algorithm_inputs.rst +++ /dev/null @@ -1,4 +0,0 @@ -Algorithm inputs -========================= - -This section explains.. \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/algorithm_outputs.rst b/source/elements/oneDAL/source/algorithms/algorithm_outputs.rst deleted file mode 100644 index b3ce4a32b2..0000000000 --- a/source/elements/oneDAL/source/algorithms/algorithm_outputs.rst +++ /dev/null @@ -1,4 +0,0 @@ -Algorithm outputs -========================= - -This section explains \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/algorithm_processing.rst b/source/elements/oneDAL/source/algorithms/algorithm_processing.rst deleted file mode 100644 index ef679aec3a..0000000000 --- a/source/elements/oneDAL/source/algorithms/algorithm_processing.rst +++ /dev/null @@ -1,10 +0,0 @@ -Algorithm processing -========================= - -This section explains different Algorithm processing blocks - -.. toctree:: - :maxdepth: 2 - - processing/train.rst - processing/predict.rst \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/analysis.rst b/source/elements/oneDAL/source/algorithms/analysis.rst deleted file mode 100644 index 88d972492f..0000000000 --- a/source/elements/oneDAL/source/algorithms/analysis.rst +++ /dev/null @@ -1,10 +0,0 @@ -Analysis -========================= - -This section explains - -.. toctree:: - :maxdepth: 2 - - analysis/moments_of_low_order.rst - analysis/covariance.rst \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/analysis/covariance.rst b/source/elements/oneDAL/source/algorithms/analysis/covariance.rst deleted file mode 100644 index 6633352f00..0000000000 --- a/source/elements/oneDAL/source/algorithms/analysis/covariance.rst +++ /dev/null @@ -1,4 +0,0 @@ -Covariance -========================= - -This section explains covariance algorithm \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/analysis/moments_of_low_order.rst b/source/elements/oneDAL/source/algorithms/analysis/moments_of_low_order.rst deleted file mode 100644 index f526083672..0000000000 --- a/source/elements/oneDAL/source/algorithms/analysis/moments_of_low_order.rst +++ /dev/null @@ -1,4 +0,0 @@ -Moments of low order -========================= - -This section explains Moments of low order diff --git a/source/elements/oneDAL/source/algorithms/clustering/index.rst b/source/elements/oneDAL/source/algorithms/clustering/index.rst new file mode 100644 index 0000000000..7df1219745 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/clustering/index.rst @@ -0,0 +1,5 @@ +Clustering +========== + +.. toctree:: + kmeans.rst diff --git a/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst b/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst new file mode 100644 index 0000000000..7757acf776 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst @@ -0,0 +1,2 @@ +K-means +======= diff --git a/source/elements/oneDAL/source/algorithms/decomposition/index.rst b/source/elements/oneDAL/source/algorithms/decomposition/index.rst new file mode 100644 index 0000000000..9e257bd425 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/decomposition/index.rst @@ -0,0 +1,5 @@ +Decomposition +============= + +.. toctree:: + pca.rst diff --git a/source/elements/oneDAL/source/algorithms/decomposition/pca.rst b/source/elements/oneDAL/source/algorithms/decomposition/pca.rst new file mode 100644 index 0000000000..8f7ec10e5b --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/decomposition/pca.rst @@ -0,0 +1,2 @@ +Principal Components Analysis (PCA) +=================================== diff --git a/source/elements/oneDAL/source/algorithms/index.rst b/source/elements/oneDAL/source/algorithms/index.rst index ce91f49f43..518b09cf73 100644 --- a/source/elements/oneDAL/source/algorithms/index.rst +++ b/source/elements/oneDAL/source/algorithms/index.rst @@ -1,14 +1,7 @@ -============ - Algorithms -============ +Algorithms +========== .. toctree:: - - modes.rst - algorithm_inputs.rst - algorithm_outputs.rst - algorithm_descriptor.rst - algorithm_processing.rst - analysis.rst - unsupervised_learning.rst - supervised_learning.rst + clustering/index.rst + nearest_neighbors/index.rst + decomposition/index.rst diff --git a/source/elements/oneDAL/source/algorithms/modes.rst b/source/elements/oneDAL/source/algorithms/modes.rst deleted file mode 100644 index 73535b9187..0000000000 --- a/source/elements/oneDAL/source/algorithms/modes.rst +++ /dev/null @@ -1,11 +0,0 @@ -Computation modes -========================= - -The library algorithms support the following computation modes: - -.. toctree:: - :maxdepth: 3 - - modes/batch.rst - modes/online.rst - modes/distributed.rst \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/modes/batch.rst b/source/elements/oneDAL/source/algorithms/modes/batch.rst deleted file mode 100644 index b7174a1aff..0000000000 --- a/source/elements/oneDAL/source/algorithms/modes/batch.rst +++ /dev/null @@ -1,4 +0,0 @@ -Batch mode -========================= - -This section explains Batch compute mode \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/modes/distributed.rst b/source/elements/oneDAL/source/algorithms/modes/distributed.rst deleted file mode 100644 index d6017684c4..0000000000 --- a/source/elements/oneDAL/source/algorithms/modes/distributed.rst +++ /dev/null @@ -1,4 +0,0 @@ -Distributed mode -========================= - -This section explains Distributed compute mode diff --git a/source/elements/oneDAL/source/algorithms/modes/online.rst b/source/elements/oneDAL/source/algorithms/modes/online.rst deleted file mode 100644 index 34dd467c1b..0000000000 --- a/source/elements/oneDAL/source/algorithms/modes/online.rst +++ /dev/null @@ -1,4 +0,0 @@ -Online mode -========================= - -In this section we explains online compute mode \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/nearest_neighbors/index.rst b/source/elements/oneDAL/source/algorithms/nearest_neighbors/index.rst new file mode 100644 index 0000000000..13f9462932 --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/nearest_neighbors/index.rst @@ -0,0 +1,5 @@ +Nearest Neighbors (kNN) +======================= + +.. toctree:: + knn_classification.rst diff --git a/source/elements/oneDAL/source/algorithms/nearest_neighbors/knn_classification.rst b/source/elements/oneDAL/source/algorithms/nearest_neighbors/knn_classification.rst new file mode 100644 index 0000000000..ac443af30b --- /dev/null +++ b/source/elements/oneDAL/source/algorithms/nearest_neighbors/knn_classification.rst @@ -0,0 +1,2 @@ +kNN classification +================== diff --git a/source/elements/oneDAL/source/algorithms/processing/predict.rst b/source/elements/oneDAL/source/algorithms/processing/predict.rst deleted file mode 100644 index 8b2e0ad3af..0000000000 --- a/source/elements/oneDAL/source/algorithms/processing/predict.rst +++ /dev/null @@ -1,4 +0,0 @@ -Distributed mode -========================= - -This sectiction explains Distributed compute mode diff --git a/source/elements/oneDAL/source/algorithms/processing/train.rst b/source/elements/oneDAL/source/algorithms/processing/train.rst deleted file mode 100644 index b7174a1aff..0000000000 --- a/source/elements/oneDAL/source/algorithms/processing/train.rst +++ /dev/null @@ -1,4 +0,0 @@ -Batch mode -========================= - -This section explains Batch compute mode \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/supervised_learning.rst b/source/elements/oneDAL/source/algorithms/supervised_learning.rst deleted file mode 100644 index 816db68f66..0000000000 --- a/source/elements/oneDAL/source/algorithms/supervised_learning.rst +++ /dev/null @@ -1,11 +0,0 @@ -Supervised learning -========================= - -This section explains algrithms of Supervised learning class - - -.. toctree:: - :maxdepth: 2 - - supervised_learning/classification.rst - supervised_learning/regression.rst diff --git a/source/elements/oneDAL/source/algorithms/supervised_learning/classification.rst b/source/elements/oneDAL/source/algorithms/supervised_learning/classification.rst deleted file mode 100644 index 4f7850a18b..0000000000 --- a/source/elements/oneDAL/source/algorithms/supervised_learning/classification.rst +++ /dev/null @@ -1,9 +0,0 @@ -Classification -========================= - -This section explains Classification - -.. toctree:: - :maxdepth: 2 - - classification/logistic_regression.rst diff --git a/source/elements/oneDAL/source/algorithms/supervised_learning/classification/logistic_regression.rst b/source/elements/oneDAL/source/algorithms/supervised_learning/classification/logistic_regression.rst deleted file mode 100644 index ce0e091bb6..0000000000 --- a/source/elements/oneDAL/source/algorithms/supervised_learning/classification/logistic_regression.rst +++ /dev/null @@ -1,84 +0,0 @@ -Logistic Regression -=================== - -.. toctree:: - :glob: - :maxdepth: 4 - - -Logistic regression is a method for modeling the relationships -between one or more explanatory variables and a categorical variable -by expressing the posterior statistical distribution of the -categorical variable via linear functions on observed data. If the -categorical variable is binary, taking only two values, "0" and "1", -the logistic regression is simple, otherwise, it is multinomial. - - -Details -******* - -Given n feature vectors of n p-dimensional feature vectors a vector -of class labels :math:`y = (y_1,\ldots{},y_n )`, where :math:`y_i \in \{0, 1, \ldots, K-1\}` and :math:`K` is the number of classes, describes the -class to which the feature vector :math:`x_i` belongs, the problem is to -train a logistic regression model. - -The logistic regression model is the set of vectors :math:`\beta =\left\{ {\beta }_{0}=\left({\beta }_{00}\dots {\beta }_{0p}\right), {..\beta }_{K-1}=\left({\beta }_{K-10}\dots {\beta }_{K-1p}\right)\right\}` that gives the posterior probability - - .. math:: - {P\left\{y=k|x\right\}= p}_{k}\left(x, \beta \right)=\mathrm{ }\frac{{e}^{{f}_{k}\left(x, \beta \right)}}{\sum _{i=0}^{K-1}{e}^{{f}_{i}\left(x, \beta \right)}}, \text{where} {f}_{k}\left(x, \beta \right)= {\beta }_{k0}+ \sum _{j=1}^{p}{\beta }_{kj}*{x}_{j} - -for a given feature vector :math:`x = (x_1, \ldots, x_p)` and class -label :math:`y \in \{0, 1, \ldots, K - 1\}` for each :math:`k = 0, \ldots, K-1`. - -If the categorical variable is binary, the model is defined as a single vector :math:`{\beta }_{0}=\left({\beta }_{00}\dots {\beta }_{0p}\right)` that determines the posterior probability - -.. math:: - - P\left\{y=1|x\right\}= \mathrm{\sigma }\left(x,\mathrm{ }\mathrm{\beta }\right)=\frac{1}{1+ {e}^{-f\left(x, \beta \right)}} - - P\left\{y=0|x\right\}=1- P\left\{y=1|x\right\} - - -Parameters -**************** - -.. list-table:: - :widths: 25 25 25 - :header-rows: 1 - :align: left - - * - Parameter - - Default Value - - Description - * - algorithmFPType - - float - - The floating-point type that the algorithm uses for intermediate computations. Can be float or double. - * - method - - defaultDense - - The computation method used by the logistic regression. The only - training method supported so far is the default dense method. - * - nClasses - - Not applicable. - - The number of classes. A required parameter. - * - interceptFlag - - True - - A flag that indicates a need to compute :math:`\theta_j` - * - penaltyL1 - - :math:`0` - - L1 regularization coefficient - * - penaltyL2 - - :math:`0` - - L2 regularization coefficient - * - optimizationSolver - - SGD solver - - All iterative solvers are available as optimization procedures to use at - the training stage: - - SGD (Stochastic Gradient Descent Algorithm) - - ADAGRAD (Adaptive Subgradient Method) - - LBFGS (Limited-Memory Broyden-Fletcher-Goldfarb-Shanno Algorithm) - - SAGA (Stochastic Average Gradient Accelerated Method) - -APIs -******* - -APIs description \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/supervised_learning/regression.rst b/source/elements/oneDAL/source/algorithms/supervised_learning/regression.rst deleted file mode 100644 index a8e5bcb135..0000000000 --- a/source/elements/oneDAL/source/algorithms/supervised_learning/regression.rst +++ /dev/null @@ -1,4 +0,0 @@ -Regression -========================= - -This section explains regression topic \ No newline at end of file diff --git a/source/elements/oneDAL/source/algorithms/unsupervised_learning.rst b/source/elements/oneDAL/source/algorithms/unsupervised_learning.rst deleted file mode 100644 index db7cf2ec49..0000000000 --- a/source/elements/oneDAL/source/algorithms/unsupervised_learning.rst +++ /dev/null @@ -1,4 +0,0 @@ -Unsupervised learning -========================= - -This section explains algorithms of unsupervised learning class \ No newline at end of file diff --git a/source/elements/oneDAL/source/common_interface/error_handling.rst b/source/elements/oneDAL/source/common_interface/error_handling.rst new file mode 100644 index 0000000000..63312d01ad --- /dev/null +++ b/source/elements/oneDAL/source/common_interface/error_handling.rst @@ -0,0 +1,2 @@ +Error handling +============== diff --git a/source/elements/oneDAL/source/common_interface/header_files_and_namespaces.rst b/source/elements/oneDAL/source/common_interface/header_files_and_namespaces.rst new file mode 100644 index 0000000000..ef45f9d6b2 --- /dev/null +++ b/source/elements/oneDAL/source/common_interface/header_files_and_namespaces.rst @@ -0,0 +1,2 @@ +Header files and namespaces +=========================== diff --git a/source/elements/oneDAL/source/common_interface/index.rst b/source/elements/oneDAL/source/common_interface/index.rst new file mode 100644 index 0000000000..65ff87d438 --- /dev/null +++ b/source/elements/oneDAL/source/common_interface/index.rst @@ -0,0 +1,7 @@ +Common Interface +================ + +.. toctree:: + header_files_and_namespaces.rst + managing_object_lifetimes.rst + error_handling.rst diff --git a/source/elements/oneDAL/source/common_interface/managing_object_lifetimes.rst b/source/elements/oneDAL/source/common_interface/managing_object_lifetimes.rst new file mode 100644 index 0000000000..801b7545eb --- /dev/null +++ b/source/elements/oneDAL/source/common_interface/managing_object_lifetimes.rst @@ -0,0 +1,2 @@ +Managing object lifetimes +========================= diff --git a/source/elements/oneDAL/source/data/index.rst b/source/elements/oneDAL/source/data/index.rst deleted file mode 100644 index c2444e2320..0000000000 --- a/source/elements/oneDAL/source/data/index.rst +++ /dev/null @@ -1,8 +0,0 @@ -================= - Data management -================= - -.. toctree:: - - numeric_tables.rst - structures.rst diff --git a/source/elements/oneDAL/source/data/structures.rst b/source/elements/oneDAL/source/data/structures.rst deleted file mode 100644 index 469c3f0919..0000000000 --- a/source/elements/oneDAL/source/data/structures.rst +++ /dev/null @@ -1,4 +0,0 @@ -Data Structures -========================= - -This section explains Data structures for machine learning algorithms \ No newline at end of file diff --git a/source/elements/oneDAL/source/data_management/accessors.rst b/source/elements/oneDAL/source/data_management/accessors.rst new file mode 100644 index 0000000000..bd4df8a866 --- /dev/null +++ b/source/elements/oneDAL/source/data_management/accessors.rst @@ -0,0 +1,2 @@ +Accessors +========= diff --git a/source/elements/oneDAL/source/data_management/index.rst b/source/elements/oneDAL/source/data_management/index.rst new file mode 100644 index 0000000000..783320229b --- /dev/null +++ b/source/elements/oneDAL/source/data_management/index.rst @@ -0,0 +1,7 @@ +Data management +=============== + +.. toctree:: + + tables.rst + accessors.rst diff --git a/source/elements/oneDAL/source/data/numeric_tables.rst b/source/elements/oneDAL/source/data_management/tables.rst similarity index 100% rename from source/elements/oneDAL/source/data/numeric_tables.rst rename to source/elements/oneDAL/source/data_management/tables.rst diff --git a/source/elements/oneDAL/source/index.rst b/source/elements/oneDAL/source/index.rst index 1a18db8fa9..889166b390 100644 --- a/source/elements/oneDAL/source/index.rst +++ b/source/elements/oneDAL/source/index.rst @@ -23,10 +23,9 @@ Data Parallel C++ (DPC++) API extensions to the traditional C++ interface. For general information, visit |github|. .. toctree:: - - introduction/index.rst - programming/index.rst - data/index.rst + introduction.rst + programming_model/index.rst + common_interface/index.rst + data_management/index.rst algorithms/index.rst - services.rst bibliography.rst diff --git a/source/elements/oneDAL/source/introduction.rst b/source/elements/oneDAL/source/introduction.rst new file mode 100644 index 0000000000..c516b33174 --- /dev/null +++ b/source/elements/oneDAL/source/introduction.rst @@ -0,0 +1,2 @@ +Introduction +============ diff --git a/source/elements/oneDAL/source/introduction/building-blocks.rst b/source/elements/oneDAL/source/introduction/building-blocks.rst deleted file mode 100644 index 5eadefc427..0000000000 --- a/source/elements/oneDAL/source/introduction/building-blocks.rst +++ /dev/null @@ -1,4 +0,0 @@ -Building blocks -================================ - -This section will cover basic building blocks for machine learing algorithms, definition of model and overall flow \ No newline at end of file diff --git a/source/elements/oneDAL/source/introduction/classes.rst b/source/elements/oneDAL/source/introduction/classes.rst deleted file mode 100644 index 7350a573a5..0000000000 --- a/source/elements/oneDAL/source/introduction/classes.rst +++ /dev/null @@ -1,4 +0,0 @@ -Classes of Machine Learning algorithms -====================================== - -This section explains classes of machine learning algorithms diff --git a/source/elements/oneDAL/source/introduction/classical-ml.rst b/source/elements/oneDAL/source/introduction/classical-ml.rst deleted file mode 100644 index a385a4d184..0000000000 --- a/source/elements/oneDAL/source/introduction/classical-ml.rst +++ /dev/null @@ -1,4 +0,0 @@ -Classical Machine Learning -=========================== - -This section includes an introduction to ML and the Data Analytic Library. diff --git a/source/elements/oneDAL/source/introduction/index.rst b/source/elements/oneDAL/source/introduction/index.rst deleted file mode 100644 index c3cb8e3676..0000000000 --- a/source/elements/oneDAL/source/introduction/index.rst +++ /dev/null @@ -1,9 +0,0 @@ -============== - Introduction -============== - -.. toctree:: - - classical-ml.rst - classes.rst - building-blocks.rst diff --git a/source/elements/oneDAL/source/programming/algoritmics.rst b/source/elements/oneDAL/source/programming/algoritmics.rst deleted file mode 100644 index a697c53745..0000000000 --- a/source/elements/oneDAL/source/programming/algoritmics.rst +++ /dev/null @@ -1,4 +0,0 @@ -Algoritmics -========================= - -This section explains algoritmics for Classical Machine Learning diff --git a/source/elements/oneDAL/source/programming/index.rst b/source/elements/oneDAL/source/programming/index.rst deleted file mode 100644 index cfae8f6914..0000000000 --- a/source/elements/oneDAL/source/programming/index.rst +++ /dev/null @@ -1,8 +0,0 @@ -=================== - Programming model -=================== - -.. toctree:: - - model.rst - algoritmics.rst diff --git a/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst b/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst new file mode 100644 index 0000000000..cfdbc1adea --- /dev/null +++ b/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst @@ -0,0 +1,15 @@ +Algorithm anatomy +================= + +Descriptor +---------- + +Operations +---------- + +Input +~~~~~ + +Result +~~~~~~ + diff --git a/source/elements/oneDAL/source/programming/model.rst b/source/elements/oneDAL/source/programming_model/basic_usage_scenario.rst similarity index 97% rename from source/elements/oneDAL/source/programming/model.rst rename to source/elements/oneDAL/source/programming_model/basic_usage_scenario.rst index c118d76982..010e90802c 100644 --- a/source/elements/oneDAL/source/programming/model.rst +++ b/source/elements/oneDAL/source/programming_model/basic_usage_scenario.rst @@ -1,8 +1,5 @@ -Programming Model -========================= - -Basic Usage Scenario -~~~~~~~~~~~~~~~~~~~~~ +Basic usage scenario +==================== Below you can find a typical workflow of using |dal_short_name| algorithm on GPU. The example is provided for Principal Component Analysis algorithm (PCA). diff --git a/source/elements/oneDAL/source/programming_model/computational_modes.rst b/source/elements/oneDAL/source/programming_model/computational_modes.rst new file mode 100644 index 0000000000..3eea5776d8 --- /dev/null +++ b/source/elements/oneDAL/source/programming_model/computational_modes.rst @@ -0,0 +1,11 @@ +Computational modes +=================== + +Batch +----- + +Online +------ + +Distributed +----------- diff --git a/source/elements/oneDAL/source/programming_model/index.rst b/source/elements/oneDAL/source/programming_model/index.rst new file mode 100644 index 0000000000..ef123e4e80 --- /dev/null +++ b/source/elements/oneDAL/source/programming_model/index.rst @@ -0,0 +1,9 @@ +Programming model +================= + +.. toctree:: + basic_usage_scenario.rst + memory_objects.rst + algorithm_anatomy.rst + managing_execution_context.rst + computational_modes.rst diff --git a/source/elements/oneDAL/source/programming_model/managing_execution_context.rst b/source/elements/oneDAL/source/programming_model/managing_execution_context.rst new file mode 100644 index 0000000000..af45bb1f29 --- /dev/null +++ b/source/elements/oneDAL/source/programming_model/managing_execution_context.rst @@ -0,0 +1,2 @@ +Managing execution context +========================== diff --git a/source/elements/oneDAL/source/programming_model/memory_objects.rst b/source/elements/oneDAL/source/programming_model/memory_objects.rst new file mode 100644 index 0000000000..ab6b8a835b --- /dev/null +++ b/source/elements/oneDAL/source/programming_model/memory_objects.rst @@ -0,0 +1,2 @@ +Memory objects +============== diff --git a/source/elements/oneDAL/source/services.rst b/source/elements/oneDAL/source/services.rst deleted file mode 100644 index 5da1bc5c0b..0000000000 --- a/source/elements/oneDAL/source/services.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. _Services: - -Services -============ - -This module contains information about service functionality in library From 74303fff379fd7c5bb72294962826e8a7139620a Mon Sep 17 00:00:00 2001 From: rlnx Date: Mon, 16 Mar 2020 17:22:11 +0300 Subject: [PATCH 06/31] Initial version of K-Means spec --- .gitignore | 1 + .../source/algorithms/clustering/kmeans.rst | 152 +++++++++++++++++- 2 files changed, 152 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4295c8f454..4ed66614b9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ doxygen build +_build *~ /docker/requirements.txt diff --git a/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst b/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst index 7757acf776..4627b51089 100644 --- a/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst +++ b/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst @@ -1,2 +1,152 @@ -K-means +K-Means ======= + +K-Means is a clustering algorithm that partitions :math:`n` observations into +:math:`k` clusters minimizing some criterion within each cluster. Each cluster +is characterized by a representative point, called *a centroid*, and a cluster +radius. + +Given the set :math:`X = \{ x_1, \ldots, x_n \}` of :math:`p`-dimensional +feature vectors and a positive integer :math:`k`, the problem is to find a set +:math:`C = \{ c_1, \ldots, c_k \}` of :math:`p`-dimensional vectors that +minimize the objective function + +.. math:: + \Phi_{X}(C)=\sum_{x_i \in X}d(x_i, C), + +where :math:`d(x_i, C)` is the distance from :math:`x_i` to the closest center +in :math:`C`. + + +API +--- + +Descriptor +++++++++++ +.. code-block:: c++ + + namespace onedal::kmeans { + + namespace method { + struct lloyd {}; + using by_default = lloyd; + } // namespace method + + template + class desc { + public: + double get_gamma() const; + double get_accuracy_threshold() const; + std::int64_t get_cluster_count() const; + std::int64_t get_max_iteration_count() const; + + desc& set_gamma(double); + desc& set_accuracy_threshold(double); + desc& set_cluster_count(std::int64_t); + desc& set_max_iteration_count(std::int64_t); + }; + + } // namespace onedal::kmeans + + +Model ++++++ +.. code-block:: c++ + + class model { + public: + const table& get_centroids() const; + }; + + +Training +++++++++ + +Input +~~~~~ +.. code-block:: c++ + + namespace onedal::kmeans { + + class train_input { + public: + train_input(); + train_input(const table& data); + train_input(const table& data, const table& initial_centroids); + + train_input& set_data(const table&); + train_input& set_initial_centroids(const table&); + }; + + } // namespace onedal::kmeans + + +Result +~~~~~~ +.. code-block:: c++ + + namespace onedal::kmeans { + + class train_result { + public: + const model& get_model() const; + const table& get_labels() const; + std::int64_t get_iteration_count() const; + double get_objective_function_value() const; + }; + + } // namespace onedal::kmeans + + +Usage example +~~~~~~~~~~~~~ + +.. code-block:: c++ + + int main() { + auto kmeans_desc = onedal::kmeans::desc{} + .set_cluster_count(10); + + onedal::train(kmeans_desc, x_train, x_train_centroids); + } + + +Inference ++++++++++ + +Input +~~~~~ +.. code-block:: c++ + + namespace onedal::kmeans { + + class infer_input { + public: + infer_input(); + infer_input(const model& m); + infer_input(const model& m, const table& data); + + infer_input& set_model(const model&); + infer_input& set_data(const table&); + }; + + } // namespace onedal::kmeans + + +Result +~~~~~~ +.. code-block:: c++ + + namespace onedal::kmeans { + + class infer_result { + public: + const table& get_labels() const; + }; + + } // namespace onedal::kmeans + + + + From 8ccb642e15e17abacb1d8faa996885d8c2e48360 Mon Sep 17 00:00:00 2001 From: rlnx Date: Mon, 16 Mar 2020 18:13:02 +0300 Subject: [PATCH 07/31] Fix code style --- .../oneDAL/source/algorithms/clustering/index.rst | 1 + .../oneDAL/source/algorithms/clustering/kmeans.rst | 11 ++++++----- .../oneDAL/source/algorithms/decomposition/index.rst | 1 + .../oneDAL/source/algorithms/decomposition/pca.rst | 1 + source/elements/oneDAL/source/algorithms/index.rst | 1 + .../source/algorithms/nearest_neighbors/index.rst | 1 + .../nearest_neighbors/knn_classification.rst | 1 + source/elements/oneDAL/source/bibliography.rst | 1 + .../oneDAL/source/common_interface/error_handling.rst | 1 + .../common_interface/header_files_and_namespaces.rst | 1 + .../elements/oneDAL/source/common_interface/index.rst | 1 + .../common_interface/managing_object_lifetimes.rst | 1 + .../oneDAL/source/data_management/accessors.rst | 1 + .../elements/oneDAL/source/data_management/index.rst | 1 + .../elements/oneDAL/source/data_management/tables.rst | 7 +++---- source/elements/oneDAL/source/introduction.rst | 1 + .../source/programming_model/algorithm_anatomy.rst | 7 +++++-- .../source/programming_model/basic_usage_scenario.rst | 1 + .../source/programming_model/computational_modes.rst | 4 ++++ .../oneDAL/source/programming_model/index.rst | 1 + .../programming_model/managing_execution_context.rst | 1 + .../source/programming_model/memory_objects.rst | 1 + 22 files changed, 36 insertions(+), 11 deletions(-) diff --git a/source/elements/oneDAL/source/algorithms/clustering/index.rst b/source/elements/oneDAL/source/algorithms/clustering/index.rst index 7df1219745..7c11e12602 100644 --- a/source/elements/oneDAL/source/algorithms/clustering/index.rst +++ b/source/elements/oneDAL/source/algorithms/clustering/index.rst @@ -1,3 +1,4 @@ +========== Clustering ========== diff --git a/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst b/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst index 4627b51089..02bb85ddb5 100644 --- a/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst +++ b/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst @@ -1,3 +1,4 @@ +======= K-Means ======= @@ -17,12 +18,12 @@ minimize the objective function where :math:`d(x_i, C)` is the distance from :math:`x_i` to the closest center in :math:`C`. - +--- API --- Descriptor -++++++++++ +---------- .. code-block:: c++ namespace onedal::kmeans { @@ -51,7 +52,7 @@ Descriptor Model -+++++ +----- .. code-block:: c++ class model { @@ -61,7 +62,7 @@ Model Training -++++++++ +-------- Input ~~~~~ @@ -113,7 +114,7 @@ Usage example Inference -+++++++++ +--------- Input ~~~~~ diff --git a/source/elements/oneDAL/source/algorithms/decomposition/index.rst b/source/elements/oneDAL/source/algorithms/decomposition/index.rst index 9e257bd425..91bb5f8153 100644 --- a/source/elements/oneDAL/source/algorithms/decomposition/index.rst +++ b/source/elements/oneDAL/source/algorithms/decomposition/index.rst @@ -1,3 +1,4 @@ +============= Decomposition ============= diff --git a/source/elements/oneDAL/source/algorithms/decomposition/pca.rst b/source/elements/oneDAL/source/algorithms/decomposition/pca.rst index 8f7ec10e5b..bf1d2f6d6d 100644 --- a/source/elements/oneDAL/source/algorithms/decomposition/pca.rst +++ b/source/elements/oneDAL/source/algorithms/decomposition/pca.rst @@ -1,2 +1,3 @@ +=================================== Principal Components Analysis (PCA) =================================== diff --git a/source/elements/oneDAL/source/algorithms/index.rst b/source/elements/oneDAL/source/algorithms/index.rst index 518b09cf73..81ccb98b32 100644 --- a/source/elements/oneDAL/source/algorithms/index.rst +++ b/source/elements/oneDAL/source/algorithms/index.rst @@ -1,3 +1,4 @@ +========== Algorithms ========== diff --git a/source/elements/oneDAL/source/algorithms/nearest_neighbors/index.rst b/source/elements/oneDAL/source/algorithms/nearest_neighbors/index.rst index 13f9462932..5cbac9daf1 100644 --- a/source/elements/oneDAL/source/algorithms/nearest_neighbors/index.rst +++ b/source/elements/oneDAL/source/algorithms/nearest_neighbors/index.rst @@ -1,3 +1,4 @@ +======================= Nearest Neighbors (kNN) ======================= diff --git a/source/elements/oneDAL/source/algorithms/nearest_neighbors/knn_classification.rst b/source/elements/oneDAL/source/algorithms/nearest_neighbors/knn_classification.rst index ac443af30b..506dca7608 100644 --- a/source/elements/oneDAL/source/algorithms/nearest_neighbors/knn_classification.rst +++ b/source/elements/oneDAL/source/algorithms/nearest_neighbors/knn_classification.rst @@ -1,2 +1,3 @@ +================== kNN classification ================== diff --git a/source/elements/oneDAL/source/bibliography.rst b/source/elements/oneDAL/source/bibliography.rst index 9104f8dd17..88cb6a6d29 100644 --- a/source/elements/oneDAL/source/bibliography.rst +++ b/source/elements/oneDAL/source/bibliography.rst @@ -1,5 +1,6 @@ .. _bibliography: +============ Bibliography ============ diff --git a/source/elements/oneDAL/source/common_interface/error_handling.rst b/source/elements/oneDAL/source/common_interface/error_handling.rst index 63312d01ad..345a9c365c 100644 --- a/source/elements/oneDAL/source/common_interface/error_handling.rst +++ b/source/elements/oneDAL/source/common_interface/error_handling.rst @@ -1,2 +1,3 @@ +============== Error handling ============== diff --git a/source/elements/oneDAL/source/common_interface/header_files_and_namespaces.rst b/source/elements/oneDAL/source/common_interface/header_files_and_namespaces.rst index ef45f9d6b2..298d027cf6 100644 --- a/source/elements/oneDAL/source/common_interface/header_files_and_namespaces.rst +++ b/source/elements/oneDAL/source/common_interface/header_files_and_namespaces.rst @@ -1,2 +1,3 @@ +=========================== Header files and namespaces =========================== diff --git a/source/elements/oneDAL/source/common_interface/index.rst b/source/elements/oneDAL/source/common_interface/index.rst index 65ff87d438..6385d19eeb 100644 --- a/source/elements/oneDAL/source/common_interface/index.rst +++ b/source/elements/oneDAL/source/common_interface/index.rst @@ -1,3 +1,4 @@ +================ Common Interface ================ diff --git a/source/elements/oneDAL/source/common_interface/managing_object_lifetimes.rst b/source/elements/oneDAL/source/common_interface/managing_object_lifetimes.rst index 801b7545eb..ae4f365e87 100644 --- a/source/elements/oneDAL/source/common_interface/managing_object_lifetimes.rst +++ b/source/elements/oneDAL/source/common_interface/managing_object_lifetimes.rst @@ -1,2 +1,3 @@ +========================= Managing object lifetimes ========================= diff --git a/source/elements/oneDAL/source/data_management/accessors.rst b/source/elements/oneDAL/source/data_management/accessors.rst index bd4df8a866..60bbc8ea20 100644 --- a/source/elements/oneDAL/source/data_management/accessors.rst +++ b/source/elements/oneDAL/source/data_management/accessors.rst @@ -1,2 +1,3 @@ +========= Accessors ========= diff --git a/source/elements/oneDAL/source/data_management/index.rst b/source/elements/oneDAL/source/data_management/index.rst index 783320229b..8724f61dab 100644 --- a/source/elements/oneDAL/source/data_management/index.rst +++ b/source/elements/oneDAL/source/data_management/index.rst @@ -1,3 +1,4 @@ +=============== Data management =============== diff --git a/source/elements/oneDAL/source/data_management/tables.rst b/source/elements/oneDAL/source/data_management/tables.rst index 5ccab25ccb..42483e2b9a 100644 --- a/source/elements/oneDAL/source/data_management/tables.rst +++ b/source/elements/oneDAL/source/data_management/tables.rst @@ -1,4 +1,3 @@ -Numeric Tables -========================= - -This section explains Numeric Tables +====== +Tables +====== diff --git a/source/elements/oneDAL/source/introduction.rst b/source/elements/oneDAL/source/introduction.rst index c516b33174..e6c5d50ea2 100644 --- a/source/elements/oneDAL/source/introduction.rst +++ b/source/elements/oneDAL/source/introduction.rst @@ -1,2 +1,3 @@ +============ Introduction ============ diff --git a/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst b/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst index cfdbc1adea..f48ca5fc38 100644 --- a/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst +++ b/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst @@ -1,15 +1,18 @@ +================= Algorithm anatomy ================= +---------- Descriptor ---------- +---------- Operations ---------- Input -~~~~~ +----- Result -~~~~~~ +------ diff --git a/source/elements/oneDAL/source/programming_model/basic_usage_scenario.rst b/source/elements/oneDAL/source/programming_model/basic_usage_scenario.rst index 010e90802c..0f9c0b9f08 100644 --- a/source/elements/oneDAL/source/programming_model/basic_usage_scenario.rst +++ b/source/elements/oneDAL/source/programming_model/basic_usage_scenario.rst @@ -1,3 +1,4 @@ +==================== Basic usage scenario ==================== diff --git a/source/elements/oneDAL/source/programming_model/computational_modes.rst b/source/elements/oneDAL/source/programming_model/computational_modes.rst index 3eea5776d8..40affafff3 100644 --- a/source/elements/oneDAL/source/programming_model/computational_modes.rst +++ b/source/elements/oneDAL/source/programming_model/computational_modes.rst @@ -1,11 +1,15 @@ +=================== Computational modes =================== +----- Batch ----- +------ Online ------ +----------- Distributed ----------- diff --git a/source/elements/oneDAL/source/programming_model/index.rst b/source/elements/oneDAL/source/programming_model/index.rst index ef123e4e80..09dcdd890f 100644 --- a/source/elements/oneDAL/source/programming_model/index.rst +++ b/source/elements/oneDAL/source/programming_model/index.rst @@ -1,3 +1,4 @@ +================= Programming model ================= diff --git a/source/elements/oneDAL/source/programming_model/managing_execution_context.rst b/source/elements/oneDAL/source/programming_model/managing_execution_context.rst index af45bb1f29..65a733a027 100644 --- a/source/elements/oneDAL/source/programming_model/managing_execution_context.rst +++ b/source/elements/oneDAL/source/programming_model/managing_execution_context.rst @@ -1,2 +1,3 @@ +========================== Managing execution context ========================== diff --git a/source/elements/oneDAL/source/programming_model/memory_objects.rst b/source/elements/oneDAL/source/programming_model/memory_objects.rst index ab6b8a835b..70444eba35 100644 --- a/source/elements/oneDAL/source/programming_model/memory_objects.rst +++ b/source/elements/oneDAL/source/programming_model/memory_objects.rst @@ -1,2 +1,3 @@ +============== Memory objects ============== From c7866e3d5f9f978f01d7f55197ad9fa2f28b1773 Mon Sep 17 00:00:00 2001 From: rlnx Date: Tue, 17 Mar 2020 13:15:20 +0300 Subject: [PATCH 08/31] Set ToC depth limit --- source/elements/oneDAL/source/index.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/elements/oneDAL/source/index.rst b/source/elements/oneDAL/source/index.rst index 889166b390..c2c73ff964 100644 --- a/source/elements/oneDAL/source/index.rst +++ b/source/elements/oneDAL/source/index.rst @@ -23,6 +23,8 @@ Data Parallel C++ (DPC++) API extensions to the traditional C++ interface. For general information, visit |github|. .. toctree:: + :maxdepth: 3 + introduction.rst programming_model/index.rst common_interface/index.rst From 5f97fe995640a0aa87b2c98e04666d18e0f5e67e Mon Sep 17 00:00:00 2001 From: Peng Tu Date: Fri, 20 Mar 2020 16:24:13 -0700 Subject: [PATCH 09/31] Update oneVPL elements. (#83) Co-authored-by: Robert Cohn --- requirements.txt | 1 + scripts/install.sh | 1 + scripts/oneapi.py | 6 +- source/conf/common_conf.py | 3 + source/elements/oneVPL/include/vpl/vpl.h | 20 - source/elements/oneVPL/include/vpl/vpl.hpp | 395 ++++++++++-- .../oneVPL/include/vpl/vpl_config.hpp | 153 +++++ .../oneVPL/include/vpl/vpl_context.hpp | 80 +++ .../oneVPL/include/vpl/vpl_device.hpp | 115 ++++ .../elements/oneVPL/include/vpl/vpl_export.h | 38 -- .../elements/oneVPL/include/vpl/vpl_types.h | 170 +++-- .../elements/oneVPL/include/vpl/vpl_utils.h | 3 +- .../elements/oneVPL/include/vpl/vpl_version.h | 47 -- .../elements/oneVPL/include/vpl/vpl_video.h | 51 +- .../elements/oneVPL/include/vplmemory/vplm.h | 18 +- .../oneVPL/include/vplmemory/vplm_opencl.h | 2 +- .../oneVPL/include/vplmemory/vplm_vaapi.h | 2 +- source/elements/oneVPL/source/VPL_decode.rst | 160 +++++ source/elements/oneVPL/source/VPL_device.rst | 21 + .../oneVPL/source/VPL_device_context.rst | 15 + source/elements/oneVPL/source/VPL_encode.rst | 142 ++++ source/elements/oneVPL/source/VPL_memory.rst | 230 +++++++ .../elements/oneVPL/source/VPL_parameters.rst | 21 + .../oneVPL/source/VPL_processframe.rst | 123 ++++ .../oneVPL/source/VPL_workstreams.rst | 129 ++++ source/elements/oneVPL/source/conf.py | 1 + .../oneVPL/source/decode-state-transition.png | Bin 45098 -> 0 bytes source/elements/oneVPL/source/index.rst | 610 +++++------------- 28 files changed, 1893 insertions(+), 664 deletions(-) delete mode 100644 source/elements/oneVPL/include/vpl/vpl.h create mode 100644 source/elements/oneVPL/include/vpl/vpl_config.hpp create mode 100644 source/elements/oneVPL/include/vpl/vpl_context.hpp create mode 100644 source/elements/oneVPL/include/vpl/vpl_device.hpp delete mode 100644 source/elements/oneVPL/include/vpl/vpl_export.h delete mode 100644 source/elements/oneVPL/include/vpl/vpl_version.h create mode 100644 source/elements/oneVPL/source/VPL_decode.rst create mode 100644 source/elements/oneVPL/source/VPL_device.rst create mode 100644 source/elements/oneVPL/source/VPL_device_context.rst create mode 100644 source/elements/oneVPL/source/VPL_encode.rst create mode 100644 source/elements/oneVPL/source/VPL_memory.rst create mode 100644 source/elements/oneVPL/source/VPL_parameters.rst create mode 100644 source/elements/oneVPL/source/VPL_processframe.rst create mode 100644 source/elements/oneVPL/source/VPL_workstreams.rst delete mode 100644 source/elements/oneVPL/source/decode-state-transition.png diff --git a/requirements.txt b/requirements.txt index 279bfded17..d0dd5eb69e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,3 +11,4 @@ sphinx-rtd-theme sphinx-prompt sphinx_substitution_extensions sphinx_tabs +graphviz diff --git a/scripts/install.sh b/scripts/install.sh index 322988fbc1..27f33fa36c 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -46,6 +46,7 @@ make install set -e popd apt-get install -y \ + graphviz \ latexmk \ texlive-latex-base \ texlive-fonts-recommended \ diff --git a/scripts/oneapi.py b/scripts/oneapi.py index 6d62881e71..dcbe1c0bbd 100644 --- a/scripts/oneapi.py +++ b/scripts/oneapi.py @@ -152,11 +152,15 @@ def dockerpush(root, target=None): def dockerrun(root, target=None): root_only(root) shell('docker run --rm -it' + ' -e http_proxy=%s' + ' -e https_proxy=%s' + ' -e no_proxy=%s' ' --user %s:%s' ' --volume=%s:/build' ' --workdir=/build' ' rscohn2/oneapi-spec' - % (os.getuid(), os.getgid(), os.getcwd())) + % (get_env('http_proxy'), get_env('https_proxy'), get_env('no_proxy'), + os.getuid(), os.getgid(), os.getcwd())) @action def clean(root, target=None): diff --git a/source/conf/common_conf.py b/source/conf/common_conf.py index 0ba74bdfa5..66ab6216bd 100644 --- a/source/conf/common_conf.py +++ b/source/conf/common_conf.py @@ -9,6 +9,7 @@ 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode', 'sphinx.ext.githubpages', + 'sphinx.ext.graphviz', 'sphinx_substitution_extensions', 'breathe', ] @@ -34,3 +35,5 @@ ] oneapi_spec_version = '0.6.0' + +primary_domain = 'cpp' diff --git a/source/elements/oneVPL/include/vpl/vpl.h b/source/elements/oneVPL/include/vpl/vpl.h deleted file mode 100644 index a92b7e46dc..0000000000 --- a/source/elements/oneVPL/include/vpl/vpl.h +++ /dev/null @@ -1,20 +0,0 @@ -/*############################################################################ - # Copyright (C) 2019 Intel Corporation - # - # SPDX-License-Identifier: MIT - ############################################################################*/ -/// @file vpl.h Top level C header for VPL - -#ifndef LIBVPL_INCLUDE_VPL_VPL_H_ -#define LIBVPL_INCLUDE_VPL_VPL_H_ - -// enabling this macro will for the entire stack to use VPL image as intended -// in production. One memory doesn't support creating a new -// image from existing driver-centric allocations, so we roll back to buffer mode - -#define USE_VPL_IMAGE - -#include "vpl/vpl_video.h" -#include "vpl/vpl_utils.h" - -#endif // LIBVPL_INCLUDE_VPL_VPL_H_ diff --git a/source/elements/oneVPL/include/vpl/vpl.hpp b/source/elements/oneVPL/include/vpl/vpl.hpp index 1fb2a5aa16..f30b4ed87a 100644 --- a/source/elements/oneVPL/include/vpl/vpl.hpp +++ b/source/elements/oneVPL/include/vpl/vpl.hpp @@ -1,91 +1,370 @@ /*############################################################################ - # Copyright (C) 2019 Intel Corporation + # Copyright (C) 2020 Intel Corporation # # SPDX-License-Identifier: MIT ############################################################################*/ /** - * @brief C++ API for Intel(R) Video Processing Library + * @brief C++ API for Intel® oneAPI Video Processing Library * @file vpl.hpp -*/ + */ #ifndef VPL_HPP #define VPL_HPP #include -#include #include +#include +#include #include "vpl/vpl.h" #include "vpl/vpl_utils.h" +#include "vpl_context.hpp" namespace vpl { -/** \brief Decode + frame processing workstream +enum VplBlobType { + VPL_BLOB_BS = 0, + VPL_BLOB_VPLM = 1, +}; -*/ -class Decode { - public: - - /** \brief Constructor for decode workstream - * - * \param[in] src_format VplFourCC codec the workstream will decode - * \param[in] (optional) target device - */ - Decode(VplFourCC src_format, VplTargetDevice device = VPL_TARGET_DEVICE_DEFAULT ) : m_workstream(NULL) { - m_workstream=vplCreateWorkStream(VPL_WORKSTREAM_DECODE,device ); - - if ((!m_workstream) ) { - throw std::logic_error( - std::string(__FILE__) + ":" + - std::to_string(__LINE__) + ":" + - std::string(__FUNCTION__) + - ": Unable to create decoder"); - } +class VPL_EXPORT VplBlob { +public: + VplBlob(VplBlobType btype, size_t size, void *data) + : m_type(btype), m_data(data), m_size(size) {} - vplSetConfigProperty(m_workstream, VPL_PROP_SRC_FORMAT, &src_format, sizeof(src_format)); - VplFourCC dst_format=VPL_FOURCC_NV12; - vplSetConfigProperty(m_workstream, VPL_PROP_DST_FORMAT, &dst_format, sizeof(dst_format)); + ~VplBlob() { + if (m_type == VPL_BLOB_BS) { + delete (char*) m_data; + } else { + delete (vplm_mem*) m_data; + } } + VplBlobType m_type; + size_t m_size; + void *m_data; +}; - /** \brief Destructor for decode workstream */ - virtual ~Decode(void) { vplDestroyWorkstream(&m_workstream); } +class VPL_EXPORT DataQueue { +public: + DataQueue(int limit = 1) : m_limit(limit) {} + ~DataQueue(); - /** \brief Constructor for decode workstream - * - * \param[in] *pbs bitstream input data - * \param[in] size size of input data in bytes - */ - vplm_mem* DecodeFrame(const void* pbs, size_t size) { - return vplDecodeFrame(m_workstream, pbs, size); - } + bool IsFull() { return m_blobs.size() == m_limit; } + bool IsEmpty() { return m_blobs.empty(); } + VplBlob* GetFront() { return m_blobs.front(); } + void Push(VplBlob *blob) { m_blobs.push(blob); } + void Pop() { m_blobs.pop(); } + int GetLimit() { return m_limit; } + +protected: + int m_limit; + std::queue m_blobs; +}; + +/** \brief Video processing workstream + * + * Workstreams are the core of VPL. A workstream implements a consistent + * interface for decode, frame processing, and encode across multiple + * accelerator types. It also provides consistent parameter handling and + * logging. + +*/ +class VPL_EXPORT Workstream { +public: + + /** \brief Workstream constructor + * + * \param[in] config workstream settings + * \param[in] dev device instance to create a context + * \param[in] wstype workstream type + */ + Workstream(VplParams *config, DeviceInstance &dev, VplWorkstreamType wstype); + + /** \brief Workstream constructor + * + * \param[in] config workstream settings + * \param[in] dcontext workstream device context + * \param[in] wstype workstream type + */ + Workstream(VplParams *config, DeviceContext *dcontext, VplWorkstreamType wstype); + + /** \brief Get workstream device context + * + * \return workstream device context + */ + DeviceContext *GetContext() { return m_context; } + + /** \brief Returns workstream state + * + * GetState returns workstream state, which can be + * - VPL_STATE_READ_INPUT Can read more input + * - VPL_STATE_ERROR Error during operation + * - VPL_STATE_INPUT_BUFFER_FULL Input buffer is at capacity, drain to make space + * - VPL_STATE_INPUT_EXCEEDS_BUFFER_SIZE Input size>buffer size + * - VPL_STATE_END_OF_OPERATION No more operations to do + * + * \return workstream state + */ + vplWorkstreamState GetState() { return vplWorkstreamGetState(m_workstream); } + + //--------------------------------------------------------- + // Workstream settings + //--------------------------------------------------------- + /** \brief Get workstream configuration setting + * + * \return workstream configuration setting message + */ + vpl::VplParams *GetConfig() { return m_config; } + + /** \brief Set workstream configuration setting + * + * \param[in] config workstream setting + * + * \return configuration setting message + */ + void SetConfig(vpl::VplParams *config) { m_config = config; } + + + /** \brief Propagate the workstream settings to the device + * + * \return status + */ + vplStatus UpdateDeviceConfig(); + +#if 0 + //-------------------------------------------------------------- + // Workstream pipeline interface + //-------------------------------------------------------------- + /** \brief Add successor workstream + * + * \param[in] succ successor workstream + * \param[in] dataqueue data queue + * \param[in] oport output port number + * \param[in] iport successor workstream input port number + * \return workstream state + */ + vplStatus AddSuccessor(Workstream *succ, DataQueue *dataqueue, int oport = 0, int iport = 0); + + /** \brief Add data queue to buffer output + * + * \param[in] sink data queue + * \param[in] oport output port + * \return status + */ + vplStatus AddDataSink(DataQueue *sink, int oport = 0); + + /** \brief Add data queue to buffer input + * + * \param[in] src input buffer queue + * \param[in] iport input port + * \return status + */ + vplStatus AddDataSource(DataQueue *src, int iport = 0); + + /** \brief Run workstream and queue its outputs + * + * \return status + */ + vplStatus Run(); + + //--------------------------------------------------------------------- + // Obsoleted parameter setting interface + //--------------------------------------------------------------------- + /** \brief Set a workstream parameter + * + * Sets a parameter. Parameters are in the VplWorstreamProp enum. + * + * \param[in] prop workstream property to set + * \param[in] val value to set + * \return status + */ + template vplStatus SetConfig(VplWorkstreamProp prop, T val); + + /** \brief Get a workstream parameter + * + * Retrieves a workstream parameter + * + * \param[in] prop workstream property to set + * \param[in] val value to get + * \return status + */ + template vplStatus GetConfig(VplWorkstreamProp prop, T &val); +#endif - /** \brief Cast operator for C++/C API interoperability */ operator vplWorkstream() { return m_workstream; } - /** \brief Get workstream state */ - vplWorkstreamState GetState() { return vplWorkstreamGetState(m_workstream); }; + /** \brief Workstream destructor */ + ~Workstream(); - /** \brief Set workstream parameter */ - template - vplStatus SetConfig(VplWorkstreamProp prop, T val) { - return vplSetConfigProperty(m_workstream, prop, &val, sizeof(T)); - } - /** \brief Get workstream parameter value */ - template - vplStatus GetConfig(VplWorkstreamProp prop, T &val) { - size_t out_size; - return vplGetConfigProperty(m_workstream, prop, &val, &out_size); - } +protected: + vpl::DeviceContext *m_context; /**< Running device context */ + VplParams *m_config; /**< Workstream setting */ + VplWorkstreamType m_wstype; /**< Workstream type */ + + vplWorkstream m_workstream;/**< Dispatch handle */ +}; + +class VPL_EXPORT Decode: public Workstream { +public: + //------------------------------------------------------------- + // Constructor and Destructor + //------------------------------------------------------------- + + /** \brief Decode constructor + * + * \param[in] config decode settings + * \param[in] dcontext decode context + */ + Decode(VplParams *config, DeviceContext *dcontext) + :Workstream(config, dcontext, VPL_WORKSTREAM_DECODE) {} + + /** \brief Workstream constructor + * + * \param[in] config workstream settings + * \param[in] dev device instance to create a context + */ + Decode(VplParams *config, DeviceInstance &dev) + :Workstream(config, dev, VPL_WORKSTREAM_DECODE) {} - protected: - vplWorkstream m_workstream; + /** \brief Get Decode workstream parameter protobuf message + * + * Retrieve the Decode workstream setting protobuf message + * + * \return configuration setting protobuf message + */ + vpl::VplParams *GetConfig(); + + /** \brief Update Decode workstream parameter to device + * + * Propagate the Decode workstream settings to the device + * + * \return status + */ + vplStatus UpdateDeviceConfig(); + + /** \brief Decode a video frame + * + * The DecodeFrame operation decodes a single frame of video + * when sufficient bitstream data is provided. Bitstream input + * does not need to be provided at frame boundaries. If a frame + * cannot be parsed a null frame is returned. + * + * \param[in] *pbs bitstream input data + * \param[in] size size of input data in bytes + * \return decoded frame (can be a null pointer) + */ + vplm_mem *DecodeFrame(const void *pbs, size_t size); + + ~Decode(); - private: - Decode(const Decode& copy); - Decode& operator=(const Decode& decode); }; -} // namespace vpl -#endif // VPL_HPP +class VPL_EXPORT Encode: public Workstream { +public: + //------------------------------------------------------------- + // Constructor and Destructor + //------------------------------------------------------------- + + /** \brief Encode constructor + * + * \param[in] config encode settings + * \param[in] dcontext encode context + */ + Encode(VplParams *config, DeviceContext *dcontext) + :Workstream(config, dcontext, VPL_WORKSTREAM_ENCODE) {} + + /** \brief Encode constructor + * + * \param[in] config workstream settings + * \param[in] dev device instance to create a context + */ + Encode(VplParams *config, DeviceInstance &dev) + :Workstream(config, dev, VPL_WORKSTREAM_ENCODE) {} + + /** \brief Get Encode workstream parameter protobuf message + * + * Retrieve the Encode workstream setting protobuf message + * + * \return configuration setting protobuf message + */ + vpl::VplParams *GetConfig(); + + /** \brief Update Encode workstream parameter to device + * + * Propagate the Encode workstream settings to the device + * + * \return status + */ + vplStatus UpdateDeviceConfig(); + + /** \brief Encode a video frame + * + * Encodes a raw frame of video to compressed bitstream. + * If a frame cannot be output this iteration returns output size 0. + * + * \param[in] image raw frame to encode + * \param[out] pbs_out + * \return # of bytes in encoded bitstream output + */ + size_t EncodeFrame(vplm_mem *image, void *pbs_out); + + ~Encode(); + +}; + +class VPL_EXPORT VideoProcess: public Workstream { +public: + //------------------------------------------------------------- + // Constructor and Destructor + //------------------------------------------------------------- + + /** \brief Process constructor + * + * \param[in] config video processing settings + * \param[in] dcontext video processing context + */ + VideoProcess(VplParams *config, DeviceContext *dcontext) + :Workstream(config, dcontext, VPL_WORKSTREAM_VIDEOPROC) {} + + /** \brief Process constructor + * + * \param[in] config workstream settings + * \param[in] dev device instance to create a context + */ + VideoProcess(VplParams *config, DeviceInstance &dev) + :Workstream(config, dev, VPL_WORKSTREAM_VIDEOPROC) {} + + /** \brief Get VideoProcess workstream settings + * + * Retrieve the VideoProcess workstream setting message + * + * \return configuration setting protobuf message + */ + vpl::VplParams *GetConfig(); + + /** \brief Update VideoProcess workstream parameter to device driver + * + * Propagate the VideoProcess workstream settings to the device driver + * + * \return status + */ + vplStatus UpdateDeviceConfig(); + + /** \brief Process a video frame + * + * Process a raw frame of video to create an output raw frame + * + * \param[in] in raw frame to process + * \return output raw frame output + */ + vplm_mem* ProcessFrame(vplm_mem *in); + + ~VideoProcess(); + +}; + +} // namespace vpl + +#endif // VPL_HPP diff --git a/source/elements/oneVPL/include/vpl/vpl_config.hpp b/source/elements/oneVPL/include/vpl/vpl_config.hpp new file mode 100644 index 0000000000..671c699141 --- /dev/null +++ b/source/elements/oneVPL/include/vpl/vpl_config.hpp @@ -0,0 +1,153 @@ +/*############################################################################ + # Copyright (C) 2019 Intel Corporation + # + # SPDX-License-Identifier: MIT + ############################################################################*/ + +/** + * @brief C++ API for Intel® oneAPI Video Processing Library + * @file vpl_device.hpp + */ + +#ifndef VPL_CONFIG_HPP +#define VPL_CONFIG_HPP + +#include +#include +#include + +#include "vpl/vpl_types.h" +#include "vpl/vpl_export.h" + +namespace vpl { + +/** \brief VPL config API + * + * Workstream configuration interface: + * per session and per frame settings for Decode, VideoProcess, Encode and Infer workstreams + * It is usually initialized by DeviceInfo::GetPreset() and can be modified by application +*/ + +class VPL_EXPORT VplParams { +public: + + /** \brief Get Input Format + * + * \return Input image raw format + */ + VplFourCC GetInputFormat() { return m_iformat; } + void SetInputFormat(VplFourCC format) { m_iformat = format; } + + VplFourCC GetOutputFormat() { return m_oformat; } + void SetOutputFormat(VplFourCC format) { m_oformat = format; } + + VplFrameRate &GetInputFrameRate() { return m_iframerate; } + void SetInputFrameRate(VplFrameRate &fr) { m_iframerate = fr; } + + VplFrameRate &GetOutputFrameRate() { return m_oframerate; } + void SetOutputFrameRate(VplFrameRate &fr) { m_oframerate = fr; } + + VplVideoSurfaceResolution &GetInputResolution() { return m_iresolution; } + void SetInputResolution(VplVideoSurfaceResolution &res) { m_iresolution = res; } + + VplVideoSurfaceResolution &GetOutputResolution() { return m_oresolution; } + void SetOutputResolution(VplVideoSurfaceResolution &res) { m_oresolution = res; } + + VplCrop &GetInputCrop() { return m_icrop; } + void SetInputCrop(VplCrop &crop) { m_icrop = crop; } + + VplCrop &GetOutputCrop() { return m_ocrop; } + void SetOutputCrop(VplCrop &crop) { m_icrop = crop; } + + VplAspectRatio &GetInputAspectRatio() { return m_iaspect; } + void SetInputAspectRatio(VplAspectRatio &ratio) { m_iaspect = ratio; } + + VplAspectRatio &GetOutputAspectRatio() { return m_oaspect; } + void SetOutputAspectRatio(VplAspectRatio &ratio) { m_oaspect = ratio; } + + uint16_t GetPictStruct() { return m_picstruct; } + void SetPictStruct(uint16_t ps) { m_picstruct = ps; } + + VplParams(); + ~VplParams() {} + +protected: + VplFourCC m_iformat; + VplFourCC m_oformat; + VplFrameRate m_iframerate; + VplFrameRate m_oframerate; + VplVideoSurfaceResolution m_iresolution; + VplVideoSurfaceResolution m_oresolution; + VplCrop m_icrop; + VplCrop m_ocrop; + VplAspectRatio m_iaspect; + VplAspectRatio m_oaspect; + uint16_t m_picstruct; +}; + +class VPL_EXPORT VplParamsDecode: public VplParams { +public: + VplCodecType GetCodecType() { return m_codec; } + void SetCodecType(VplCodecType codec) { m_codec = codec; } + + uint32_t GetDecodeBufferSize() { return m_buffersz; } + void SetDecodeBufferSize(uint32_t s) { m_buffersz = s; } + + uint32_t GetMaxNumBuffers() { return m_maxnumbuffers; } + void SetMaxNumBuffers(uint32_t m) { m_maxnumbuffers = m; } + + VplParamsDecode(); + ~VplParamsDecode() {} +protected: + VplCodecType m_codec; + uint32_t m_buffersz; + uint32_t m_maxnumbuffers; +}; + +class VPL_EXPORT VplParamsEncode: public VplParams { +public: + VplCodecType GetCodecType() { return m_codec; } + void SetCodecType(VplCodecType codec) { m_codec = codec; } + + uint32_t GetBitRateKps() { return m_bitratekbps; } + void SetBitRateKps(uint32_t r) { m_bitratekbps = r; } + + uint32_t GetIFrameInterval() { return m_iframeinterval; } + void SetIFrameInterval(uint32_t il) { m_iframeinterval = il; } + + uint32_t GetBFrameInterval() { return m_bframeinterval; } + void SetBFrameInterval(uint32_t il) { m_bframeinterval = il; } + + uint32_t GetFrameRateNumerator() { return m_fr_num; } + void SetFrameRateNumerator(uint32_t n) { m_fr_num = n; } + + uint32_t GetFrameRateDenominator() { return m_fr_denom; } + void SetFrameRateDenominator(uint32_t d) { m_fr_denom = d; } + + VplEncodePreset GetEncodePreset() { return m_encodepreset; } + void SetEncodePreset(VplEncodePreset ps) { m_encodepreset = ps; } + + VplRateControl GetRateControl() { return m_ratecontrol; } + void SetRateControl(VplRateControl rc) { m_ratecontrol = rc; } + + VplBRC GetBRC() { return m_brc; } + void SetBRC(VplBRC brc) { m_brc = brc; } + VplParamsEncode(); + ~VplParamsEncode() {} + +protected: + VplCodecType m_codec; + uint32_t m_bitratekbps; + uint32_t m_iframeinterval; + uint32_t m_bframeinterval; + uint32_t m_fr_num; + uint32_t m_fr_denom; + VplEncodePreset m_encodepreset; + VplRateControl m_ratecontrol; + VplEncodeScenario m_scenario; + VplBRC m_brc; +}; + +} // namespace vpl + +#endif // VPL_CONFIG_HPP diff --git a/source/elements/oneVPL/include/vpl/vpl_context.hpp b/source/elements/oneVPL/include/vpl/vpl_context.hpp new file mode 100644 index 0000000000..3ac4356027 --- /dev/null +++ b/source/elements/oneVPL/include/vpl/vpl_context.hpp @@ -0,0 +1,80 @@ +/*############################################################################ + # Copyright (C) 2019 Intel Corporation + # + # SPDX-License-Identifier: MIT + ############################################################################*/ + +/** + * @brief C++ API for Intel® oneAPI Video Processing Library + * @file vpl_context.hpp + */ + +#ifndef VPL_CONTEXT_HPP +#define VPL_CONTEXT_HPP + +#include +#include +#include +#include + +#include "vpl/vpl_device.hpp" + +namespace vpl { + +/** \brief VPL device context API + * + * Device context is an abstraction to represent the command queue to submit the workstream operations + * +*/ + +class Workstream; + +class VPL_EXPORT DeviceContext { +public: + /** \brief DeviceContext constructor + * + * \param[in] dev device instance to run the workstream operations + * + */ + DeviceContext(const DeviceInstance &dev): m_device(dev) {} + + /** \brief Get Device Instance + * + * \result Device instance + * + */ + DeviceInstance* GetDevice() { return &m_device; } + + + /** \brief Add workstream to context users + * + * \param[in] ws workstream + * + */ + void AddWorkstream(Workstream *ws) { m_workstreams.push_back(ws); } + + /** \brief Remove workstream from context users + * + * \param[in] ws workstream + * + */ + void RemoveWorkstream(Workstream *ws) { + auto it = find(m_workstreams.begin(), m_workstreams.end(), ws); + if (it != m_workstreams.end()) { + m_workstreams.erase(it); + } + } + + /** \brief DeviceContext destructor + * + */ + ~DeviceContext(); + +protected: + DeviceInstance m_device; /**< running device */ + std::vector m_workstreams; /**< workstreams sharing the context */ +}; + +} // namespace vpl + +#endif // VPL_CONTEXT_HPP diff --git a/source/elements/oneVPL/include/vpl/vpl_device.hpp b/source/elements/oneVPL/include/vpl/vpl_device.hpp new file mode 100644 index 0000000000..fdd9d1f318 --- /dev/null +++ b/source/elements/oneVPL/include/vpl/vpl_device.hpp @@ -0,0 +1,115 @@ +/*############################################################################ + # Copyright (C) 2019 Intel Corporation + # + # SPDX-License-Identifier: MIT + ############################################################################*/ + +/** + * @brief C++ API for Intel® oneAPI Video Processing Library + * @file vpl_device.hpp + */ + +#ifndef VPL_DEVICE_HPP +#define VPL_DEVICE_HPP + +#include +#include +#include + +#include "vpl/vpl.h" +#include "vpl/vpl_utils.h" + +using namespace vpl; + +namespace vpl { + +/** \brief VPL device API + * + * Device discovery and property query interface: + * the number of SDKs and handles to the SDKs, + * the number of devices and handles to devices, + * and the device properties. + * + * It also includes device capability queries and + * predefined device settings for Decode, VPP, Infer and Encode workstream. + +*/ + +/** \brief VPL maximum device name length + */ +#define VPL_MAX_DEVICE_NAME 512 + +/** \brief VPL device property structure + */ +struct VplDeviceProperty { + VplDeviceType type; + uint32_t vendorId; + uint32_t deviceId; +// VplDeviceUUID uuid; + uint32_t subdeviceId; + uint32_t coreClockRate; + uint32_t maxCmdEngines; + bool unifiedMemorySupported; + bool eccMemorySupported; + uint32_t numUnits; // number of tiles, cores + char name[VPL_MAX_DEVICE_NAME]; +}; + +/** \brief VPL device instance + */ +class VPL_EXPORT DeviceInstance { +public: + VplDeviceType m_dtype; + uint32_t m_id; + DeviceInstance(VplDeviceType dtype, uint32_t id):m_dtype(dtype),m_id(id) {} +}; + +class VPL_EXPORT DeviceInfo { +public: + + /** \brief Get device count + * + * \param[in] dtype device type + * \return number of devices found for the device type + */ + int GetDeviceCount(VplDeviceType dtype); + + /** \brief Get device property + * + * \param[in] dtype device type + * \param[in] id device ID + * \return device property + * + */ + VplDeviceProperty* GetDeviceProperty(VplDeviceType dtype, uint32_t id); + + /** \brief Get prefered device + * + * \param[in] wstypes a bit mask of workstream types + * \return preferred device instance for the workstream type + * + */ + DeviceInstance* GetPreferredDevice(uint32_t wstypes); + + /** \brief Get device preset to setup a workstream + * + * \param[in] dtype device type + * \param[in] wstype workstream type + * \param[in] id device id + * \return config preset for the device and wstype + * + */ + VplParams* GetPreset(VplDeviceType dtype, VplWorkstreamType wstype, uint32_t id = 0); + + DeviceInfo(); + ~DeviceInfo(); + +protected: + vplDevice GetDeviceHandle(VplDeviceType dtype); + + vplDevice m_device[VPL_DEVICE_COUNT]; /**< Dispatch handle*/ +}; + +} // namespace vpl + +#endif // VPL_DEVICE_HPP diff --git a/source/elements/oneVPL/include/vpl/vpl_export.h b/source/elements/oneVPL/include/vpl/vpl_export.h deleted file mode 100644 index f414ea4c4d..0000000000 --- a/source/elements/oneVPL/include/vpl/vpl_export.h +++ /dev/null @@ -1,38 +0,0 @@ -/*############################################################################ - # Copyright (C) 2019 Intel Corporation - # - # SPDX-License-Identifier: MIT - ############################################################################*/ - -#ifndef VPL_EXPORT_H -#define VPL_EXPORT_H - -#ifdef VPL_STATIC_DEFINE -# define VPL_EXPORT -# define VPL_NO_EXPORT -# define VPL_EXTENSION -#else -# if defined(_WIN32) - #pragma warning( disable : 4251) // Disable link warnings on private STL members -# ifdef vpl_EXPORTS - /* We are building this library */ -# define VPL_EXPORT __declspec(dllexport) -# else - /* We are using this library */ -# define VPL_EXPORT __declspec(dllimport) -# endif -# define VPL_EXTENSION __declspec(dllexport) -# else -# if __GNUC__ >= 4 -# define VPL_EXPORT __attribute__((visibility("default"))) -# define VPL_NO_EXPORT __attribute__((visibility("hidden"))) -# define VPL_EXTENSION VPL_EXPORT -# else -# define VPL_EXPORT -# define VPL_NO_EXPORT -# define VPL_EXTENSION -# endif -# endif -#endif - -#endif // VPL_EXPORT_H diff --git a/source/elements/oneVPL/include/vpl/vpl_types.h b/source/elements/oneVPL/include/vpl/vpl_types.h index 1db1a08ee8..2a09b21e11 100644 --- a/source/elements/oneVPL/include/vpl/vpl_types.h +++ b/source/elements/oneVPL/include/vpl/vpl_types.h @@ -3,9 +3,12 @@ # # SPDX-License-Identifier: MIT ############################################################################*/ -/// @file vpl_types.h -/// Implements non implementation specific workstream functionality -/// such as logging and get/set parameters. + +/** + * @brief Structs, enums, etc. used by VPL + * @file vpl_types.h +*/ + #ifndef VPL_TYPES_H #define VPL_TYPES_H @@ -19,7 +22,8 @@ extern "C" { #endif -typedef struct _vplWorkstream *vplWorkstream; +typedef class _vplWorkstream *vplWorkstream; +typedef class _vplDeviceInfo *vplDevice; /// @brief status codes typedef enum{ @@ -38,31 +42,31 @@ typedef enum{ /// @brief workstream state communicates next steps to the application typedef enum{ // special decoder's state - / - VPL_STATE_READ_INPUT = 1000, ///< Decoder needs additional input bitstream data to decode. + VPL_STATE_READ_INPUT = 1000, // decoder is ready to read input bitstream buffer VPL_STATE_CLOSED_TO_INPUT = 1001, - VPL_STATE_ERROR = 1002, ///< Decoder has encountered an error and entered error state. - VPL_STATE_INPUT_BUFFER_FULL = 1003, ///< Decoder internal input buffer is full. Caller must retrieve the decoded frames before supplying new bitstream data. - VPL_STATE_INPUT_EXCEEDS_BUFFER_SIZE = 1004, ///< The input data exceeds the capacity of the input buffer - VPL_STATE_END_OF_OPERATION = 1005 ///< All decoded frames have been retrieved by the caller. Decoder workstream ends. - + VPL_STATE_ERROR = 1002, + VPL_STATE_INPUT_BUFFER_FULL = 1003, // The input buffer is at capacity, frames must be drain to make space + VPL_STATE_INPUT_EXCEEDS_BUFFER_SIZE = 1004, // The input data exceeds the capacity of the input buffer + VPL_STATE_END_OF_OPERATION = 1005, // End of operations + VPL_STATE_OK = 1006 }vplWorkstreamState; /// @brief workstream type typedef enum { - VPL_WORKSTREAM_DECODE = 0, // decode with raw frame postprocessing - VPL_WORKSTREAM_ENCODE, // encode with raw frame preprocessing - VPL_WORKSTREAM_TRANSCODE, // decode -> frame processing -> encode + VPL_WORKSTREAM_DECODE = 0x01, // decode + VPL_WORKSTREAM_VIDEOPROC = 0x02, // video processing + VPL_WORKSTREAM_ENCODE = 0x04, // encode + VPL_WORKSTREAM_INFER = 0x08, // DL inference } VplWorkstreamType; -/// @brief Target device specifies which extension will be loaded +/// @brief Specifies which device extension is available and will be loaded typedef enum { - VPL_TARGET_DEVICE_DEFAULT, // Let the runtime determine the best target - VPL_TARGET_DEVICE_CPU, // Run on CPU - VPL_TARGET_DEVICE_GPU_GEN, // Run on Gen graphics GPU - VPL_TARGET_DEVICE_GPU_VSI, // Run on VSI GPU - VPL_TARGET_DEVICE_FPGA // Run on FPGA -} VplTargetDevice; + VPL_DEVICE_CPU = 0, + VPL_DEVICE_GEN, + VPL_DEVICE_HDDL, + VPL_DEVICE_FPGA, + VPL_DEVICE_COUNT +} VplDeviceType; /// @brief Settable/Gettable properties for workstreams typedef enum { @@ -76,12 +80,19 @@ typedef enum { // special encode config VPL_PROP_ENCODE_BITRATE, + VPL_PROP_ENCODE_BRC_ALGORITHM, + VPL_PROP_ENCODE_FRAMERATE_NUMERATOR, + VPL_PROP_ENCODE_FRAMERATE_DENOMINATOR, + VPL_PROP_ENCODE_PERFQUALITY_PRESET, VPL_PROP_ENCODE_SCENARIO, - VPL_PROP_ENCODE_TARGETUSAGE, + VPL_PROP_ENCODE_IFRAME_INTERVAL, + VPL_PROP_ENCODE_BFRAME_INTERVAL, // common configs - VPL_PROP_SRC_FORMAT, // fourCC for input bitstream/frame - VPL_PROP_DST_FORMAT, // destination fourCC for bitstream/frame + VPL_PROP_SRC_BITSTREAM_FORMAT, + VPL_PROP_SRC_RAW_FORMAT, + VPL_PROP_DST_BITSTREAM_FORMAT, + VPL_PROP_DST_RAW_FORMAT, VPL_PROP_INPUT_FRAMERATE, VPL_PROP_OUTPUT_FRAMERATE, VPL_PROP_INPUT_RESOLUTION, @@ -96,7 +107,10 @@ typedef enum { // status callback configurations VPL_PROP_STATUS_CALLBACK, VPL_PROP_STATUS_CALLBACK_DATA, - VPL_PROP_STATUS_LEVEL, + VPL_PROP_STATUS_LOGLEVEL, + + // always last property + VPL_PROP_NUMPROPS } VplWorkstreamProp; /// @brief logging level @@ -118,13 +132,15 @@ typedef enum { RECORDING, SURVEILLANCE, REMOTE_DISPLAY, -}vplEncodeScenario; +}VplEncodeScenario; typedef enum { - VPL_BEST_QUALITY = 1, - VPL_BALANCED, - VPL_BEST_SPEED -}vplTargetUsage; + VPL_BRC_CBR = 0, + VPL_BRC_VBR = 1, + VPL_BRC_CQP = 2, + VPL_BRC_AVBR = 3, + VPL_BRC_COUNT = 4, +}VplBRC; typedef struct { @@ -141,23 +157,62 @@ typedef enum { // Raw frame formats VPL_FOURCC_NV12 = VPL_MAKEFOURCC('N', 'V', '1', '2'), - VPL_FOURCC_YV12 = VPL_MAKEFOURCC('Y', 'V', '1', '2'), + //VPL_FOURCC_YV12 = VPL_MAKEFOURCC('Y', 'V', '1', '2'), VPL_FOURCC_RGB4 = VPL_MAKEFOURCC('R', 'G', 'B', '4'), - VPL_FOURCC_YUY2 = VPL_MAKEFOURCC('Y', 'U', 'Y', '2'), - VPL_FOURCC_P210 = VPL_MAKEFOURCC('P', '2', '1', '0'), - VPL_FOURCC_BGR4 = VPL_MAKEFOURCC('B', 'G', 'R', '4'), /* ABGR in that order, A channel is 8 MSBs */ - VPL_FOURCC_A2RGB10 = VPL_MAKEFOURCC('R', 'G', '1', '0'), /* ARGB in that order, A channel is two MSBs */ - VPL_FOURCC_AYUV = VPL_MAKEFOURCC('A', 'Y', 'U', 'V'), /* YUV 4:4:4, AYUV in that order, A channel is 8 MSBs */ - VPL_FOURCC_UYVY = VPL_MAKEFOURCC('U', 'Y', 'V', 'Y'), - VPL_FOURCC_Y210 = VPL_MAKEFOURCC('Y', '2', '1', '0'), - VPL_FOURCC_Y410 = VPL_MAKEFOURCC('Y', '4', '1', '0'), - VPL_FOURCC_Y216 = VPL_MAKEFOURCC('Y', '2', '1', '6'), - VPL_FOURCC_Y416 = VPL_MAKEFOURCC('Y', '4', '1', '6'), + //VPL_FOURCC_YUY2 = VPL_MAKEFOURCC('Y', 'U', 'Y', '2'), + //VPL_FOURCC_P210 = VPL_MAKEFOURCC('P', '2', '1', '0'), + //VPL_FOURCC_BGR4 = VPL_MAKEFOURCC('B', 'G', 'R', '4'), /* ABGR in that order, A channel is 8 MSBs */ + //VPL_FOURCC_A2RGB10 = VPL_MAKEFOURCC('R', 'G', '1', '0'), /* ARGB in that order, A channel is two MSBs */ + //VPL_FOURCC_AYUV = VPL_MAKEFOURCC('A', 'Y', 'U', 'V'), /* YUV 4:4:4, AYUV in that order, A channel is 8 MSBs */ + //VPL_FOURCC_UYVY = VPL_MAKEFOURCC('U', 'Y', 'V', 'Y'), + //VPL_FOURCC_Y210 = VPL_MAKEFOURCC('Y', '2', '1', '0'), + //VPL_FOURCC_Y410 = VPL_MAKEFOURCC('Y', '4', '1', '0'), + //VPL_FOURCC_Y216 = VPL_MAKEFOURCC('Y', '2', '1', '6'), + //VPL_FOURCC_Y416 = VPL_MAKEFOURCC('Y', '4', '1', '6'), VPL_FOURCC_I420 = VPL_MAKEFOURCC('I', '4', '2', '0'), - VPL_FOURCC_RGBA = VPL_MAKEFOURCC('R', 'G', 'B', 'A'), + VPL_FOURCC_BGRA = VPL_MAKEFOURCC('B', 'G', 'R', 'A'), + VPL_FOURCC_I010 = VPL_MAKEFOURCC('I', '0', '1', '0'), } VplFourCC; -/// @brief Version information +/// @brief bitstream codec types +typedef enum { + // Bitstream codec formats + VPL_CODEC_H264 = 0, + VPL_CODEC_H265 = 1, + VPL_CODEC_MPEG2 = 2, + VPL_CODEC_VC1 = 3, + VPL_CODEC_VP9 = 4, + VPL_CODEC_AV1 = 5, + VPL_CODEC_COUNT = 6, +} VplCodecType; + +typedef enum { + VPL_BALANCED = 0, + VPL_MAX_QUALITY = 1, + VPL_HIGH_QUALITY = 2, + VPL_QUALITY = 3, + VPL_SPEED = 4, + VPL_HIGH_SPEED = 5, + VPL_MAX_SPEED = 6, + VPL_LOW_LATENCY_MAX_QUALITY = 7, + VPL_LOW_LATENCY_MAX_SPEED = 8, + VPL_LOWEST_LATENCY_MAX_QUALITY = 9, + VPL_LOWEST_LATENCY_MAX_SPEED = 10, + VPL_EP_COUNT = 11, +} VplEncodePreset; + +typedef struct { + uint32_t crop_x; + uint32_t crop_y; + uint32_t crop_w; + uint32_t crop_h; +} VplCrop; + +typedef struct { + uint32_t ratio_w; + uint32_t ratio_h; +} VplAspectRatio; + typedef struct { uint32_t major; uint32_t major_update; @@ -166,12 +221,39 @@ typedef struct { } VplVersion; -/// @brief raw frame resolution + typedef struct { uint32_t width; uint32_t height; } VplVideoSurfaceResolution; + +typedef struct { + uint16_t BitDepthLuma; + uint16_t BitDepthChroma; + uint32_t Shift; + uint32_t FourCC; + uint16_t Width; //VPL memory info aligned_width + uint16_t Height; //VPL memory info aligned_height + uint16_t CropX; + uint16_t CropY; + uint16_t CropW; //VPL memory info width + uint16_t CropH; //VPL memory info height + + uint32_t FrameRateExtN; + uint32_t FrameRateExtD; + + uint16_t AspectRatioW; + uint16_t AspectRatioH; + + uint16_t PicStruct; + uint16_t ChromaFormat; + uint64_t reserved[8]; +} VPLFrameInfo; + + + + #ifdef __cplusplus } #endif diff --git a/source/elements/oneVPL/include/vpl/vpl_utils.h b/source/elements/oneVPL/include/vpl/vpl_utils.h index 3e3a5c53a3..3817c0688f 100644 --- a/source/elements/oneVPL/include/vpl/vpl_utils.h +++ b/source/elements/oneVPL/include/vpl/vpl_utils.h @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: MIT ############################################################################*/ + /** * @brief Utility functions for file I/O * @file vpl_utils.h @@ -30,7 +31,7 @@ VPL_EXPORT vplStatus vplCloseFile(VplFile* fFile); VPL_EXPORT vplStatus vplWriteData(VplFile* fOutput, vplm_mem* mem); /// @brief read a vplm_mem* image from file -VPL_EXPORT vplm_mem* vplReadImage(VplFile* fInput, vplm_image_info* desc); +VPL_EXPORT vplStatus vplReadData(VplFile* fInput, vplm_mem* mem); #ifdef __cplusplus } diff --git a/source/elements/oneVPL/include/vpl/vpl_version.h b/source/elements/oneVPL/include/vpl/vpl_version.h deleted file mode 100644 index d27934a1fe..0000000000 --- a/source/elements/oneVPL/include/vpl/vpl_version.h +++ /dev/null @@ -1,47 +0,0 @@ -/*############################################################################ - # Copyright (C) 2019 Intel Corporation - # - # SPDX-License-Identifier: MIT - ############################################################################*/ -/// @file vpl_version.h VPL version information -#ifndef VPL_VERSION_H -#define VPL_VERSION_H - -#include - -#include "config.h" - -#define STRING2(a) #a -#define STRING(a) STRING2(a) - -// version is defined in top-level CMakeLists.txt -// -// oneAPI version schema: -// .[-phase] -// -// Examples: -// 2021.1 (gold, initial release) -// 2021.1-beta02 (beta, update 1) - -#if (VPL_VERSION_PHASE == 0) -#define VPL_VERSION_PHASE_STR "alpha" -#elif (VPL_VERSION_PHASE == 1) -#define VPL_VERSION_PHASE_STR "beta" -#elif (VPL_VERSION_PHASE == 99) -#define VPL_VERSION_PHASE_STR "gold" -#endif - -const char *vplVersionString = - STRING(VPL_VERSION_MAJOR) "." - STRING(VPL_VERSION_MAJOR_UPDATE) -#if (VPL_VERSION_PHASE < 99) - "-" VPL_VERSION_PHASE_STR -#if (VPL_VERSION_PHASE < 10) - "0" -#endif - STRING(VPL_VERSION_PHASE_UPDATE) -#endif -; - -#endif // VPL_VERSION_H - diff --git a/source/elements/oneVPL/include/vpl/vpl_video.h b/source/elements/oneVPL/include/vpl/vpl_video.h index d0b63582ff..fddf6d6914 100644 --- a/source/elements/oneVPL/include/vpl/vpl_video.h +++ b/source/elements/oneVPL/include/vpl/vpl_video.h @@ -5,7 +5,7 @@ ############################################################################*/ /** - * @brief C API for Intel(R) Video Processing Library + * @brief C API for Intel® oneAPI Video Processing Library * @file vpl_video.h */ @@ -15,19 +15,15 @@ #include "vpl_export.h" #include "vpl_types.h" #include +#include "vpl_config.hpp" +#include "vpl_device.hpp" #ifdef __cplusplus extern "C" { #endif -/// @brief Opaque handle for workstreams -typedef struct _vplWorkstream *vplWorkstream; - /// @brief Construct a workstream -VPL_EXPORT vplWorkstream vplCreateWorkStream(VplWorkstreamType type, VplTargetDevice device); - -/// @brief Destruct a workstream -VPL_EXPORT vplStatus vplDestroyWorkstream(vplWorkstream *ws); +VPL_EXPORT vplWorkstream vplCreateWorkStream(VplDeviceType device, vpl::VplParams *config); /// @brief Set a workstream property VPL_EXPORT vplStatus vplSetConfigProperty(vplWorkstream ws, VplWorkstreamProp prop, void* value, size_t size); @@ -35,14 +31,51 @@ VPL_EXPORT vplStatus vplSetConfigProperty(vplWorkstream ws, VplWorkstreamProp pr /// @brief Get a workstream property VPL_EXPORT vplStatus vplGetConfigProperty(vplWorkstream workstream, VplWorkstreamProp prop, void* out_value, size_t * out_size); +/// @brief Destruct a workstream +VPL_EXPORT vplStatus vplDestroyWorkstream(vplWorkstream *ws); + +/// @brief Get preconfigured default parameters +VPL_EXPORT vplStatus vplGetWorkstreamPreset(VplDeviceType device, VplWorkstreamType type, vplm_variant* config); + /// @brief Get workstream state VPL_EXPORT vplWorkstreamState vplWorkstreamGetState(vplWorkstream ws); /// @brief Decode workstream decodes a frame VPL_EXPORT vplm_mem* vplDecodeFrame(vplWorkstream decode, const void *pbs, size_t size); +/// @brief Decode workstream decodes a frame with fused frame postprocessing +VPL_EXPORT vplm_mem* vplDecodeProcessFrame(vplWorkstream decode, const void *pbs, size_t size); + +/// @brief ProcessFrame workstream runs frame processing operation(s) on a frame +VPL_EXPORT vplm_mem* vplProcessFrame(vplWorkstream procframe, vplm_mem* image); + +// @brief Encode workstream encodes a frame with fused frame preprocessing +VPL_EXPORT size_t vplProcessEncodeFrame(vplWorkstream encode, vplm_mem* image, void *pbs_out); + +// @brief Encode workstream encodes a frame +VPL_EXPORT size_t vplEncodeFrame(vplWorkstream encode, vplm_mem* image, void *pbs_out); + +/// @brief Transcode workstream transcodes a frame +VPL_EXPORT size_t vplTranscodeFrame(vplWorkstream transcode, const void *pbs, size_t size, void *pbs_out); + +/// @brief Construct a device +VPL_EXPORT vplDevice vplCreateDevice(VplDeviceType dtype); + +/// @brief Destruct a device +VPL_EXPORT vplStatus vplDestroyDevice(vplDevice *dev); + +/// @brief Get default preset configuration +VPL_EXPORT vpl::VplParams* vplGetPreset(vplDevice dev, VplWorkstreamType wstype, uint32_t id); + +/// @brief Get device property +VPL_EXPORT vpl::VplDeviceProperty* vplGetDeviceProperty(vplDevice dev, uint32_t id); + +/// @brief Get device count +VPL_EXPORT int vplGetDeviceCount(vplDevice dev); -VPL_EXPORT vplm_mem* vplEncodeFrame(vplWorkstream encode, vplm_mem* image, uint8_t eos); +VPL_EXPORT vplStatus vplSetPropertyPB(vplWorkstream ws, vpl::VplParams*); +VPL_EXPORT vplStatus vplGetPropertyPB(vplWorkstream ws, vpl::VplParams*); +VPL_EXPORT vplStatus vplPushBlob(vplWorkstream ws, void*, size_t size); #ifdef __cplusplus } diff --git a/source/elements/oneVPL/include/vplmemory/vplm.h b/source/elements/oneVPL/include/vplmemory/vplm.h index 2bd1a17cab..c4044543dc 100644 --- a/source/elements/oneVPL/include/vplmemory/vplm.h +++ b/source/elements/oneVPL/include/vplmemory/vplm.h @@ -42,7 +42,7 @@ extern "C" { #endif #endif -/** \brief VPL Memory success status and error codes. See #_vplm_status. */ +/** \brief VPL Memory success status and error codes. See _vplm_status. */ typedef int32_t vplm_status; /** \brief Major VPL Memory object handle. */ @@ -293,7 +293,7 @@ typedef enum { /** \brief Specifies user-defined on destroy callback. * - * User-defined callback function (see #vplm_on_destroy_cb for prototype) will be called + * User-defined callback function (see vplm_on_destroy_cb for prototype) will be called * once object reference counter will reach 0, but before object will actually will be * destroyed. In this way user can intersect with the object destruction and "save" it * increasing reference counter and placing it in some pool. Library will check object @@ -318,12 +318,12 @@ VPLM_API vplm_status vplm_create_cpu_buffer(const vplm_buffer_info* info, vplm_m /** \brief Allocates image in system memory and returns vpl memory handle * - * Memory will be allocated according to provided #info description. If #vplm_image_info.aligned_width - * and/or #info->aligned_height are equal to 0, library will select alignment for #vplm_image_info.width - * and/or #vplm_image_info.height on its own. If these values are not zero they will be respected. + * Memory will be allocated according to provided info description. If vplm_image_info.aligned_width + * and/or info->aligned_height are equal to 0, library will select alignment for vplm_image_info.width + * and/or vplm_image_info.height on its own. If these values are not zero they will be respected. * However, library may still additionally align them to the higher values. If application needs to * strictly specify image padding, then it should allocate image on its own and pass it to - * #vplm_create_from_cpu_image. + * vplm_create_from_cpu_image. */ VPLM_API vplm_status vplm_create_cpu_image(const vplm_image_info* info, vplm_mem** memory); @@ -336,7 +336,7 @@ typedef struct _vplm_cl_vtable vplm_cl_vtable; typedef struct _vplm_dx11_vtable vplm_dx11_vtable; typedef struct _vplm_dmabuf_vtable vplm_dmabuf_vtable; -/** \brief VPL Memory object, aka #vplm_mem.*/ +/** \brief VPL Memory object, aka vplm_mem.*/ typedef struct _vplm_vtable { uintptr_t priv; @@ -367,7 +367,7 @@ typedef struct _vplm_vtable { * * This function call effectively marks one more user of the object making * sure object won't be deleted while this user won't decrease refence counter - * by #vplm_unref. + * by vplm_unref. */ static inline uint32_t vplm_ref(const vplm_mem* memory) { @@ -379,7 +379,7 @@ static inline uint32_t vplm_ref(const vplm_mem* memory) /** \brief Decreases reference counter of the memory object. * * Once reference counter will reach 0 object will be destroyed. However, - * user might install #VPLM_PROPERTY_CALLBACK_ON_DESTROY to intersect object + * user might install VPLM_PROPERTY_CALLBACK_ON_DESTROY to intersect object * release procedure and effectively "save" the object and reuse it via some * objects pool. */ diff --git a/source/elements/oneVPL/include/vplmemory/vplm_opencl.h b/source/elements/oneVPL/include/vplmemory/vplm_opencl.h index d556652e44..34ce419747 100644 --- a/source/elements/oneVPL/include/vplmemory/vplm_opencl.h +++ b/source/elements/oneVPL/include/vplmemory/vplm_opencl.h @@ -101,7 +101,7 @@ static inline size_t vplm_cl_query_queues(const vplm_mem* memory, cl_command_que * If memory object does not have OpenCL representation yet, it will be generated or * an error returned if that's not possible for some reason. Under the hood VPL Memory * library uses one of OpenCL memory sharing APIs unless memory object wasn't initially - * created as an OpenCL object. #vplm_cl_begin_image_access and #vplm_cl_end_image_access + * created as an OpenCL object. vplm_cl_begin_image_access and vplm_cl_end_image_access * functions should further be used to mark access period to the OpenCL object in the * OpenCL queue(s). */ diff --git a/source/elements/oneVPL/include/vplmemory/vplm_vaapi.h b/source/elements/oneVPL/include/vplmemory/vplm_vaapi.h index 0b17fac125..729aa2d1df 100644 --- a/source/elements/oneVPL/include/vplmemory/vplm_vaapi.h +++ b/source/elements/oneVPL/include/vplmemory/vplm_vaapi.h @@ -58,7 +58,7 @@ typedef struct _vplm_va_vtable { * If memory object does not have OpenCL representation yet, it will be generated or * an error returned if that's not possible for some reason. Under the hood VPL Memory * library uses one of OpenCL memory sharing APIs unless memory object wasn't initially - * created as an OpenCL object. #vplm_cl_begin_image_access and #vplm_cl_end_image_access + * created as an OpenCL object. vplm_cl_begin_image_access and vplm_cl_end_image_access * functions should further be used to mark access period to the OpenCL object in the * OpenCL queue(s). */ diff --git a/source/elements/oneVPL/source/VPL_decode.rst b/source/elements/oneVPL/source/VPL_decode.rst new file mode 100644 index 0000000000..192ec01a54 --- /dev/null +++ b/source/elements/oneVPL/source/VPL_decode.rst @@ -0,0 +1,160 @@ +The :class:`vpl::Decode` implements elementary stream decode from encoded bitstreams and outputs raw frames. + +.. graphviz:: + + digraph { + rankdir=LR; + Bitstream [shape=record label="Bitstream" ]; + Decode [shape=record label="Decode"]; + Raw [shape=rect]; + Bitstream->Decode->Raw; + } + +**Supported bitstream formats** + +- h264 +- h265 + +**DecodeFrame C++ interface**: + +The decode function :func:`vpl::Decode::DecodeFrame` interface is + +.. code-block:: c++ + + vplm_mem* Decode::DecodeFrame(const void* pbs, size_t size); + + +**States**: + +During execution, state communicates what the application should do next. + +.. graphviz:: + + digraph { + rankdir=LR + + start + READ_INPUT + ERROR + INPUT_BUFFER_FULL + INPUT_EXCEEDS_BUFFER_SIZE + END_OF_OPERATION + end + + start->READ_INPUT + + READ_INPUT->READ_INPUT[label="almost everything happens here"] + READ_INPUT->ERROR[label="internal error"] + ERROR->READ_INPUT + + READ_INPUT->INPUT_BUFFER_FULL[label="input size>remaining buffer size"] + INPUT_BUFFER_FULL->READ_INPUT + + READ_INPUT->INPUT_EXCEEDS_BUFFER_SIZE[label="input size>total buffer size"] + INPUT_EXCEEDS_BUFFER_SIZE->READ_INPUT + + READ_INPUT->END_OF_OPERATION[label="no more to process"] + END_OF_OPERATION->end + } + +====================================== ====================================== +State Meaning +====================================== ====================================== +READ_INPUT workstream can read bitstream input +ERROR an error occurred during processing, try again +INPUT_BUFFER_FULL input size > remaining space in the input bitstream buffer, input ignored and decode operation should be allowed to drain before attempting to add more bitstream again +INPUT_EXCEEDS_BUFFER_SIZE input size> total buffer size +====================================== ====================================== + +**Settings**: + +Encode configuration parameters are specified in :class:`vpl::VplParamsDecode`, +which controls per session and per frame settings of the decode operations. + +**Data model**: + +VPL allocates pools of VPL Memory used by decode and consumers of decoded frames. The application is expected to manage reference counts. Only surfaces with no external references can be used to decode new frames. + +.. graphviz:: + + digraph { + rankdir=LR + node [shape=record]; + struct1 [label=" surface pool| DecodeFrame"]; + struct3 [label=" rest of pipeline"]; + + struct1:f1 -> struct3:f1 [label="VPL Memory"]; + } + + +**Sample code**: + +.. code-block:: c + + #include "vpl/vpl.hpp" + #define BUFFER_SIZE 1024 * 1024 + + int main(int argc, char *argv[]) { + + // Find all the devices in the system and select a preferred device + DeviceInfo *dinfo = new DeviceInfo(); + DeviceInstance *dev = dinfo->GetPreferredDevice(VPL_WORKSTREAM_DECODE); + + // Get decode preset + VplParamsDecode *dconfig = dinfo->GetPreset(dev->m_dtype, VPL_WORKSTREAM_DECODE, dev->m_id); + + // Create a Decode workstream and a device context on the device + Decode *ws = new Decode(dconfig, *dev); + + uint8_t *pbs = new uint8_t[BUFFER_SIZE]; + + FILE *fInput = fopen(argv[1], "rb"); + VplFile *fOutput = vplOpenFile("out.nv12", "wb"); + + vplm_mem *dec_image = nullptr; + bool bdrain_mode = false; + int frameCount = 0; + vplWorkstreamState decode_state = VPL_STATE_READ_INPUT; + + while (1) { + decode_state = ws->GetState(); + if (decode_state == VPL_STATE_END_OF_OPERATION || + decode_state == VPL_STATE_ERROR) { + break; + } + + // read more input if state indicates buffer space + // is available + uint32_t bs_size = 0; + if ((decode_state == VPL_STATE_READ_INPUT) && (!bdrain_mode)) { + bs_size = (uint32_t)fread(pbs, 1, BUFFER_SIZE, fInput); + } + + if (bs_size == 0 || decode_state == VPL_STATE_INPUT_BUFFER_FULL) { + bdrain_mode = true; + } + + if (bdrain_mode) + dec_image = ws->DecodeFrame(nullptr, 0); + else + dec_image = ws->DecodeFrame(pbs, bs_size); + + if (!dec_image) + continue; + + frameCount++; + + vplWriteData(fOutput, dec_image); + printf("%d\r", frameCount); + fflush(stdout); + + vplm_unref(dec_image); + } + + printf("\ndone !\n"); + fclose(fInput); + vplCloseFile(fOutput); + + delete[] pbs; + return 0; + } diff --git a/source/elements/oneVPL/source/VPL_device.rst b/source/elements/oneVPL/source/VPL_device.rst new file mode 100644 index 0000000000..839e7108f5 --- /dev/null +++ b/source/elements/oneVPL/source/VPL_device.rst @@ -0,0 +1,21 @@ +:class:`vpl::DeviceInfo` defines device and property query interface. +At runtime, VPL discovers available devices in :type:`VplDeviceType`, +the number of devices of each type (:func:`vpl::DeviceInfo::GetDeviceCount`), +and :type:`vpl::VplDeviceProperty` of each device (:func:`vpl::DeviceInfo::GetDeviceProperty`). + +This class also provides two additional important classes of functions: + +1. :func:`vpl::DeviceInfo::GetPreferredDevice`: get a preferred device instance :type:`vpl::DeviceInstance` for a work +2. :func:`vpl::DeviceInfo::GetPreset`: get the device preset configuration for workstream :enum:`VplWorkstreamType` and device instance + +We recommend the following code sequence to select a device and get the device's preset +configuration parameters before creating a workstream on a device: + +.. code-block:: c++ + + // Find all the devices in the system and select a preferred device + DeviceInfo *dinfo = new DeviceInfo(); + DeviceInstance *dev = dinfo->GetPreferredDevice(VPL_WORKSTREAM_DECODE); + + // Get decode preset + config::VPLParams *dconfig = dinfo->GetPreset(dev->m_dtype, VPL_WORKSTREAM_DECODE, dev->m_id); \ No newline at end of file diff --git a/source/elements/oneVPL/source/VPL_device_context.rst b/source/elements/oneVPL/source/VPL_device_context.rst new file mode 100644 index 0000000000..f97836ca02 --- /dev/null +++ b/source/elements/oneVPL/source/VPL_device_context.rst @@ -0,0 +1,15 @@ +:class:`vpl::DeviceContext` represents device's driver context and +command queue for VPL operations. Depending on the operating systems and workloads, the low level +device contexts can be VAAPI, DX, OCL, GL for media, compute and rendering operations. +This class hides the low level contexts, while exposing +sufficient information to enable context sharing for different :class:`vpl::Workstream` +operations. + +This class provides the following functions: + +1. :func:`vpl::DeviceContext::DeviceContext`: create a new device context on a device +2. :func:`vpl::DeviceContext::AddWorkstream`: add a workstream sharing the device context +3. :func:`vpl::DeviceContext::RemoveWorkstream`: remove a workstream for the device context + +The device context is usually created implicitly inside the :class:`vpl::Workstream` constructor. +Application programmers can also create it explicitly and pass the context to multiple workstreams. \ No newline at end of file diff --git a/source/elements/oneVPL/source/VPL_encode.rst b/source/elements/oneVPL/source/VPL_encode.rst new file mode 100644 index 0000000000..9035571ba5 --- /dev/null +++ b/source/elements/oneVPL/source/VPL_encode.rst @@ -0,0 +1,142 @@ +The :class:`vpl::Encode` class implements elementary stream encode from raw frame to encoded bitstream. + +.. graphviz:: + + digraph { + rankdir=LR; + Bitstream [shape=record label="Bitstream" ]; + Encode [shape=record label="Encode"]; + Raw [shape=rect]; + Raw->Encode->Bitstream; + } + +**Supported bitstream formats** + +- h264 +- h265 + + +**EncodeFrame C++ interface**: + +The encode function :func:`vpl::Encode::EncodeFrame` interface is + +.. code-block:: c++ + + size_t Encode::EncodeFrame(vplm_mem* image, void *pbs_out); + + +**States**: + +During execution, state communicates what the application should do next. + +.. graphviz:: + + digraph { + rankdir=LR + + start + READ_INPUT + ERROR + OUTPUT_BUFFER_FULL + OUTPUT_EXCEEDS_BUFFER_SIZE + END_OF_OPERATION + end + + start->READ_INPUT + + READ_INPUT->READ_INPUT[label="almost everything happens here"] + READ_INPUT->ERROR[label="internal error"] + ERROR->READ_INPUT + + READ_INPUT->OUTPUT_BUFFER_FULL[label="output size>remaining buffer size"] + OUTPUT_BUFFER_FULL->READ_INPUT + + READ_INPUT->OUTPUT_EXCEEDS_BUFFER_SIZE[label="output size>total buffer size"] + OUTPUT_EXCEEDS_BUFFER_SIZE->READ_INPUT + + READ_INPUT->END_OF_OPERATION[label="no more to process"] + END_OF_OPERATION->end + } + +====================================== ====================================== +State Meaning +====================================== ====================================== +READ_INPUT workstream can read raw frame input +ERROR an error occurred during processing, try again +OUTPUT_BUFFER_FULL output size > remaining space in the output bitstream buffer +OUTPUT_EXCEEDS_BUFFER_SIZE output size> total buffer size +====================================== ====================================== + +**Settings**: + +Encode configuration parameters are specified in :class:`vpl::VplParamsEncode`, +which controls per session and per frame settings of the encode operations. + +**Data model**: + +VPL allocates pools of VPL Memory used by decode and consumers of decoded frames. The application is expected to manage reference counts. Only surfaces with no external references can be used to decode new frames. + +.. graphviz:: + + digraph { + rankdir=LR + node [shape=record]; + struct1 [label=" surface pool| DecodeFrame"]; + struct3 [label=" rest of pipeline"]; + + struct1:f1 -> struct3:f1 [label="VPL Memory"]; + } + + + +**Sample code**: + +.. code-block:: c + + #include "vpl/vpl.hpp" + #define BUFFER_SIZE 1024 * 1024 + + int main(int argc, char* argv[]) { + + // Find all the devices in the system and select a preferred device + DeviceInfo *dinfo = new DeviceInfo(); + DeviceInstance *dev = dinfo->GetPreferredDevice(VPL_WORKSTREAM_ENCODE); + + // Get encode preset + VplParamsEncode *dconfig = dinfo->GetPreset(dev->m_dtype, VPL_WORKSTREAM_ENCODE, dev->m_id); + + // Create an Encode workstream and a device context on the device + Encode *ws = new Encode(dconfig, *dev); + + uint8_t *pbsout=new uint8_t[BUFFER_SIZE]; + VplFile* fInput = vplOpenFile(argv[1],"rb"); + FILE* fOutput = fopen("out.h264","wb"); + + vplm_mem* decimage; + vplm_image_info info={}; + info.width=300; + info.height=300; + info.format=VPLM_PIXEL_FORMAT_NV12; + vplm_create_cpu_image(&info, &decimage); + + for (;;) { + vplStatus sts=vplReadData(fInput,decimage); + if (sts<0) break; + vplm_ref(decimage); + + size_t nbytesout=ws->EncodeFrame(decimage,pbsout); + fwrite(pbsout, 1, nbytesout, fOutput); + + printf("."); + fflush(stdout); + + } + puts(""); + + vplCloseFile(fInput); + fclose(fOutput); + + delete[] pbsout; + + return 0; + } diff --git a/source/elements/oneVPL/source/VPL_memory.rst b/source/elements/oneVPL/source/VPL_memory.rst new file mode 100644 index 0000000000..9c2cfbf543 --- /dev/null +++ b/source/elements/oneVPL/source/VPL_memory.rst @@ -0,0 +1,230 @@ +Memory representation and memory allocation are important parts of +VPL API. By default: + +- Each workstream is responsible to allocate its output memory objects + and passes the memory objects to its consumer workstreams. +- For performance, memory objects are passed asynchronously to consumers + before its producer finishes writing to the objects. Hence, a consumer + workstream must first acquire a read access right before reading the + data from the memory object. +- Each memory objects may have multiple consumer workstreams. Hence a + consumer workstream should avoid modifying its input memory objects. + If a consumer workstream needs to modify an input memory object, + it must first acquire a write access right to avoid corrupting + the memory object. + +VPL Memory API provides sharing of 1D buffers and 2D images across +different frameworks (e.g. SYCL, OpenCL, VAAPI, DXVA2) and different +devices (CPU, GPU). Buffer sharing across the decode, compute and +encode pipeline is important for both performance and portability. + +The buffer sharing mechanisms can be classified into 3 types: + +1. *Direct* sharing when access is granted to the primary object's + representation in physical memory, but this happens via different + framework specific logical memory objects (like VAAPI surface or + OpenCL memory). That's the case when handle from one framework can + be converted to the handle of another framework. For example, via + OpenCL VAAPI Sharing Extension. +2. *Mapping* when object is being mapped to the device memory and + framework handle is generated. That's a typical case for CPU (HOST) + access to the video memory. Underneath implementation might + significantly vary and result in a kind of direct access or + accessing a copy of the memory object with the set of associated + copy and on-the-fly conversion operations. For example, OpenCL + provides two sets of functions: clEnqueueReadBuffer, + clEnqueueWriteBuffer for copying, and clEnqueueMapBuffer for direct + mapping between CPU and OpenCL device. +3. *Coherent* sharing when memory object has unified addressing the + physical memory and the underlying hardware and software system + layers assures coherency between these representations as in a + unified shared memory mode. + +The Memory API aims to provide a sharing mechanism with the highest +performance. From this perspective, the library uses "direct" sharing +whenever possible. However, currently, there are a lot of various +restrictions coming from all over the software stack which makes +"direct" sharing unavailable: + +1. Framework restrictions where some color formats are not supported, + or lack of capability to import certain memory handle +2. Underlying driver implementation (or even HW) restrictions + +As oneAPI software stack evolves, we intend to eliminate the *direct* +sharing restrictions in the underlying frameworks and drivers through +API extension and implementation enhancement. + +The current VPL Memory Library provides the following *direct* sharing +capabilities: + +* Sharing of CPU (HOST) allocated memory on Linux (via userptr): + + * With VAAPI driver + * With OpenCL driver and SYCL +* Sharing of VAAPI allocated memory: + + * With OpenCL, SYCL +* Exporting dmabuf handle: + + * From VAAPI memory object + +Recall that oneAPI platform is a host and a collection of devices; and +each device has an associated command queue. Operations on the +devices are executed through submitting tasks to devices’ command +queues. In the application domain of video processing pipeline, each +device may have multiple command queues corresponding to the media +driver, OpenCL and SYCL compute drivers and 3D graphics drivers. For +Intel’s GPU on Linux, a VAAPI driver executes tasks for video +decoding, post processing and encoding, an OpenCL driver executes +tasks for compute such as DL inference, and an OpenGL driver executes +tasks for 3D rendering. Buffers and images allocated by these drivers +are initially only accessible in the context of their corresponding +command queues. To share a buffer between a source and a sink command +queues, VPL Memory library must extract the buffer address from the +source command queue context, map the address to the sink command +queue context, such that, tasks in the sink command queue can now read +or write to the buffer. We call this pair a +memory handler. Memory handlers are encapsulated in the +:cpp:class:`vplm::memory` class hierarchy. + +To share a buffer to a device driver command queue context, just +simply constructs a new memory handler of the corresponding derived +class from the base :cpp:class:`vplm::memory` object. For instance, +the code above converts a CPU allocated memory to a GPU VAAPI surface +for media processing. + +In addition to the buffer sharing API in vplm::\*:memory +subclass constructors, VPL Memory API also provides: + +* API to import memory already allocated by the application external + to VPL Memory library +* API to allocate memory + +The memory import and allocation functions are defined in +:func:`vplm::cpu::make_memory`, :func:`vplm::opencl::make_memory`, +:func:`vplm::sycl::make_memory`, and :func:`vplm::vaapi::make_memory`. + +Creating memory objects +----------------------- + +An application can use the VPL Memory Library to create a memory +object for one of the supported frameworks. For example, the following +code allocates memory in system memory (we count CPU (HOST) as one of +the frameworks): + +.. code:: cpp + + #include + + vplm::cpu::memory yuv_image = vplm::cpu::make_memory(1920, 1080, VPLM_PIXEL_FORMAT_NV12); + +or it can allocate memory externally and request the VPL Memory +Library to manage it as in the following example for VAAPI: + +.. code:: cpp + + #include + #include + + VADisplay dpy; + VASurfaceID id; + vaCreateSurfaces(dpy, VA_RT_FORMAT_RGB32, 1920, 1080, &id, 1, attribs, num_attribs); + + vplm::vaapi::memory rgb_image = vplm::vaapi::make_surface(dpy, id); + +In either case, it ends up with the framework specific C++ object (in +our examples :cpp:class:`vplm::cpu::memory` or +:cpp:class:`vplm::vaapi::memory`), and hence, have access to the +framework specific API defined by VPL Memory for this object. For +example, the following code will access CPU allocated image (via +:cpp:class:`vplm::cpu_image` representation): + +.. code:: cpp + + vplm::cpu_image image; + yuv_image.map(VPLM_ACCESS_MODE_READ, image); + + // do something with the image since you have access to data pointers: + printf("Y data pointer: %p\n", image.data(0)); + + yuv_image.unmap(image); + +Helper Class for Simplifying Image Data Access +---------------------------------------------- + +In the examples above we directly used a memory object to access its +data. While this is possible, there is a simpler way. Most frameworks +require a program to acquire and release access to data. For the CPU +access example, we saw calls to map and unmap to acquire/release +access to the data. Using the :cpp:class:`vplm::cpu_image` helper +class eliminates the need to map and unmap: + +.. code:: cpp + + { + vplm::cpu::image cpu_image(yuv_image, VPLM_ACCESS_MODE_READ); + + // do something with the image since you have access to data pointers: + printf("Y data pointer: %p\n", image.data(0)); + } + +This helper class issues acquire and release operations to mark +start/stop data access in constructor and destructor. Another +"feature" of these helper classes is that they accept base +memory object (:cpp:class:`vplm::memory`) in constructors. This means that we can +use helper classes to make implicit convertion between different +framework objects. For example, with the following we will map our +VAAPI image on to CPU: + +.. code:: cpp + + { + vplm::cpu::image cpu_image(rgb_image, VPLM_ACCESS_MODE_WRITE); + + // do something with the image since you have access to data pointers: + printf("R data pointer: %p\n", image.data(0)); + } + +Usage example +The following example summarize the key usage scenario: + +.. code:: cpp + + #include + #include + + VADisplay dpy = init_vaapi(); + VASurfaceID id = create_per_my_needs(); // calls vaCreateSurfaces inside + + vplm::cpu::memory yuv_image = vplm::cpu::make_memory(1920, 1080, VPLM_PIXEL_FORMAT_NV12); + vplm::vaapi::memory rgb_image = vplm::vaapi::make_surface(dpy, id); + + { + vplm::cpu::image cpu_image(yuv_image, VPLM_ACCESS_MODE_WRITE); + + // do something with the image since you have access to data pointers: + printf("Y data pointer: %p\n", image.data(0)); + // for example, write data into the surface + } + + { + vplm::vaapi::image vaapi_cpu_image(dpy, yuv_image); + vplm::vaapi::image vaapi_rgb_image(dpy, rgb_image); // just for consistency + + // do something with surfaces via VAAPI since we have access to them + // for example, convert yuv which we just wrote on CPU to rgb format + convert_yuv_to_rgb(vaapi_cpu_image.id(), vaapi_rgb_image.id()) + } + + { + vplm::cpu::image cpu_image(rgb_image, VPLM_ACCESS_MODE_READ); + + // now we can read from the CPU data which we got in rgb image after VAAPI conversion: + printf("R data pointer: %p\n", image.data(0)); + } + +The VPL API defines 4 different helper classes, one for each supported device context: +:cpp:class:`vplm::cpu::image` +:cpp:class:`vplm::opencl::image`, +:cpp:class:`vplm::sycl::memory` and +:cpp:class:`vplm::vaapi::image`. \ No newline at end of file diff --git a/source/elements/oneVPL/source/VPL_parameters.rst b/source/elements/oneVPL/source/VPL_parameters.rst new file mode 100644 index 0000000000..86a5084873 --- /dev/null +++ b/source/elements/oneVPL/source/VPL_parameters.rst @@ -0,0 +1,21 @@ +:class:`vpl::VplParams` defines the parameter settings for decode, video process, encode +and DL inference. It addesses two separate aspects of video processing: + +- Easy to use device independent parameter settings for VPL application developers +- Easy to translate into device dependent settings for hardware accelerators + +This class provides common settings for video processing :class:`vpl::VplParams` such as +input/output formats, resolutions, frame rates, crop factors, aspect ratios, and operation +specific settings :class:`vpl::VplParamsDecode` and :class:`vpl::VplParamsEncode` +such as codec type, input/output buffer sizes, encoding bit rate control, and GOP +structure parameters. + +For VPL device plugin providers that support accelerators running autonomously on different nodes, +the parameter settings will need to be passsed across host boundaries similar to +gRPC. :class:`vpl::VplParams` will provide interface for serialization and deserialization +of the parameters as messages for this purpose. We are also evaluating general message +packages such as protobuf for future releases. + +Note that vendor specific extensions can be supported by subclassing +:class:`vpl::VplParams` to expose them to VPL application developers. + diff --git a/source/elements/oneVPL/source/VPL_processframe.rst b/source/elements/oneVPL/source/VPL_processframe.rst new file mode 100644 index 0000000000..9a4f9770b3 --- /dev/null +++ b/source/elements/oneVPL/source/VPL_processframe.rst @@ -0,0 +1,123 @@ +The :class:`vpl::VideoProcess` class implements a variety of filter operations. +Current API is limited to single input and single output. + +.. graphviz:: + + digraph { + rankdir=LR; + Raw0 [shape=rect label="raw" ]; + Decode [shape=record label="Decode"]; + Raw [shape=rect label="raw"]; + Raw0->Decode->Raw; + } + +**Supported Filter Operations** +The list of filters will expand based on implementation schedule. +Current release supports the following filters: + +- Resize +- Colorspace conversion (in=i420,nv12,bgra out=i420,nv12,bgra) + + +**C++ interface**: + +The video process function :func:`vpl::VideoProcess::ProcessFrame` interface is + +.. code-block:: c++ + + vplm_mem* VideoProcess::ProcessFrame(vplm_mem* image); + + +**States**: + +During execution, state communicates what the application should do next. + +====================================== ====================================== +State Meaning +====================================== ====================================== +READ_INPUT workstream can read raw input +ERROR an error occurred during processing, try again +====================================== ====================================== + +**Settings**: + +Video processing configuration parameters are specified in :class:`vpl::VplParams`, +which controls per session and per frame settings of the encode operations. +:func:`vpl::VideoProcess::ProcessFrame` converts the input image to the output image +according to the output image specification in the settings. + +**Data model**: + +VPL allocates pools of VPL Memory used by frame process and consumers of processed frames. The application is expected to manage reference counts. Only surfaces with no external references can be used to for new frame output. + +.. graphviz:: + + digraph { + rankdir=LR + node [shape=record]; + struct1 [label=" surface pool| ProcessFrame"]; + struct3 [label=" rest of pipeline"]; + + struct1:f1 -> struct3:f1 [label="VPL Memory"]; + } + + +**Sample code**: + +.. code-block:: c + + #include "vpl/vpl.hpp" + + int main(int argc, char* argv[]) { + + // Find all the devices in the system and select a preferred device + DeviceInfo *dinfo = new DeviceInfo(); + DeviceInstance *dev = dinfo->GetPreferredDevice(VPL_WORKSTREAM_VIDEOPROC); + + // Get vidoe process preset + VplParams *dconfig = dinfo->GetPreset(dev->m_dtype, VPL_WORKSTREAM_VIDEOPROC, dev->m_id); + + // Create an Encode workstream and a device context on the device + VideoProcess *ws = new VideoProcess(dconfig, *dev); + + // Set output image formats + VplVideoSurfaceResolution output_size = {300,300}; + dconfig->SetOutputResolution(output_size); + dconfig->SetOutputFromat(VPL_FOURCC_I420); + + // Propagate the settings to the device driver + ws->UpdateDeviceConfig(); + + VplFile* fInput = vplOpenFile(argv[1],"rb"); + VplFile* fOutput = vplOpenFile("out.i420", "wb"); + + vplm_mem* dec_image; + vplm_image_info info={}; + info.width=1280; + info.height=720; + info.format=VPLM_PIXEL_FORMAT_RGBA; + vplm_create_cpu_image(&info, &dec_image); + + int frameCount = 0; + for (;;) { + vplStatus sts=vplReadData(fInput,dec_image); + if (sts<0) break; + vplm_ref(dec_image); + frameCount++; + + vplm_mem* vpp_image = ws->ProcessFrame(dec_image); + + vplWriteData(fOutput,vpp_image); + printf("%d\r", frameCount); + fflush(stdout); + vplm_unref(vpp_image); + } + printf("\ndone !\n"); + + vplCloseFile(fInput); + vplCloseFile(fOutput); + + + return 0; + } + diff --git a/source/elements/oneVPL/source/VPL_workstreams.rst b/source/elements/oneVPL/source/VPL_workstreams.rst new file mode 100644 index 0000000000..d79a60ea7c --- /dev/null +++ b/source/elements/oneVPL/source/VPL_workstreams.rst @@ -0,0 +1,129 @@ +The :class:`vpl::Workstream` class is the core of the VPL interface. It represents a +media building block running decode, frame processing, DL inference and +encode operations on a single device context. Workstreams can be offloaded to +different devices. Complex pipelines can be formed from multiple workstreams. + +There are four subclasses of :class:`vpl::Workstream` that perform the following basic operations + +- :class:`vpl::Decode`: decode a bitstream to raw frames +- :class:`vpl::VideoProcess`: implement a video processing filter operation with raw frame input and output +- :code:`vpl::Infer`: invoke a Deep Learning model to infer on raw frame. Details of this subclass will be provided in a future release. +- :class:`vpl::Encode`: encode raw frames to a bitstream + +In the :class:`vpl::VideoProcess` subclass, a sequence of filters with single input and single output running on the same device context can be fused to the same workstream. +Operations executing on different device contexts are seperated to different worksteams such that each workstream can be dispatched to a single device context. + +Workstream Internals +-------------------- + +Each :class:`vpl::Workstream` contains the following information + +- :class:`vpl::VplParams`: the parameter settings of the workstream, i.e., resolution of the output per session or per frame. +- :class:`vpl::DeviceContext`: contains the execution device context of the workstream, i.e., VAAPI, DX, OCL, GL contexts for media, compute and rendering operations + +The :class:`vpl::VplParams` provides the interface for setting the workstream configuration during initialization +and dynamically changing workstream settings during processing for frame level control. + +Initialization Sequence +----------------------- + +The standard sequence to create a workstream consists of the following steps: + +#. Select a device to execute the workstream + + #. Create a device context or use an existing device context to execute the workstream + +#. Get the configuration presets for the selected device +#. Create the workstream with the configuration setting :class:`vpl::config::VPLParams` and :class:`vpl::DeviceContext`. + +The following transcoding example uses three workstreams: :class:`vpl::Decode`, :class:`vpl::Process` and :class:`vpl::Encode`, and shares a single context to execute them together: + +.. code-block:: c++ + + #include "vpl/vpl.hpp" + #define BUFFER_SIZE 1024 * 1024 * 80 + + using namespace vpl; + + int main(int argc, char* argv[]) { + + // Find all the devices in the system and select a preferred device + DeviceInfo *dinfo = new DeviceInfo(); + DeviceInstance *dev = dinfo->GetPreferredDevice(VPL_WORKSTREAM_DECODE | VPL_WORKSTREAM_VIDEOPROC, VPL_WORKSTREAM_ENCODE); + + // Get decode preset + config::VPLParams *dconfig = dinfo->GetPreset(dev->m_dtype, VPL_WORKSTREAM_DECODE, dev->m_id); + // Create a Decode workstream and a device context on the device + Decode *decode = new Decode(dconfig, *dev); + + // Create a VPP workstream, use the same device context as Decode + config::VPLParams *pconfig = dinfo->GetVideoProcessPreset(dev->m_dtype, VPL_WORKSTREAM_VIDEOPROC, dev->m_id); + VideoProcess *proc = new Process(pconfig, decode->GetContext()); + + // Create an Encode workstream, use the same device context as Decode + config::VPLParams *econfig = dinfo->GetEncodePreset(dev->m_dtype, VPL_WORKSTEAM_ENCODE, dev->m_id); + Encode *encode = new Encode(econfig, decode->GetContext()); + + uint8_t* pbs = new uint8_t[BUFFER_SIZE]; + uint8_t* pbsout = new uint8_t[BUFFER_SIZE]; + + FILE* fInput = fopen(argv[1], "rb"); + FILE* fOutput = fopen("out.h264", "wb"); + + int frameCount = 0; + // Run the pipeline explicitly + for (vplWorkstreamState decode_state = VPL_STATE_READ_INPUT; + decode_state != VPL_STATE_END_OF_OPERATION && decode_state != VPL_STATE_ERROR; + decode_state = decode->GetState()) { + vplm_mem* dec_image = + decode->DecodeFrame(pbs, fread(pbs, 1, BUFFER_SIZE, fInput)); + if (!dec_image) continue; + frameCount++; + + vplm_mem* vpp_image = proc->ProcessFrame(dec_image); + if (vpp_image) { + size_t nbytesout = encode->EncodeFrame(vpp_image, pbsout); + fwrite(pbsout, 1, nbytesout, fOutput); + printf("%d\r", frameCount); + fflush(stdout); + } + } + + printf("\ndone !\n"); + + fclose(fInput); + fclose(fOutput); + + delete[] pbs; + delete[] pbsout; + return 0; + } + +Dynamic Setting Control +----------------------- + +The :class:`vpl::VplParams` defines the workstream settings for the device. +User program can use its access functions to read and set the settings for the workstream. +After changing the configuration setting, user program then call the :cpp:func:`vpl::Workstream::UpdateDeviceConfig` function to propapge the setting to +device context. Configuration setting change takes effect for the subsequent calls to the worksteam. +The following example changes the output resolution in the middle of a decoding sequence. + +.. code-block:: c++ + + // Decoding loop + while (decode->GetState() != VPL_STATE_END_OF_OPERATION) { + vplm_mem *image = decode->DecodeFrame(*bs_ptr, bs_size); + + // Change output resolution + if (need_resize) { + VplVideoSurfaceResolution resol = {480, 780}; + dconfig->SetOutputResolution(resol); + + // propagate the new settings to the driver + decode->UpdateDeviceConfig(); + } + } + +In the future releases, serialization operations of :class:`vpl::VplParams` +will be added to support the configuration synchronization to accelerator drivers +that are running autonomously on remote nodes. diff --git a/source/elements/oneVPL/source/conf.py b/source/elements/oneVPL/source/conf.py index cf10ce2b84..c6d3368be6 100644 --- a/source/elements/oneVPL/source/conf.py +++ b/source/elements/oneVPL/source/conf.py @@ -21,3 +21,4 @@ project = 'oneVPL' from element_conf import * + diff --git a/source/elements/oneVPL/source/decode-state-transition.png b/source/elements/oneVPL/source/decode-state-transition.png deleted file mode 100644 index 7c9d1ff3af86f6a06695609ffcd896be258408e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45098 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
  • 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 pair a -memory handler. Memory handlers are encapsulated in the -:cpp:class:`vplm::memory` class hierarchy. - -To share a buffer to a device driver command queue context, just -simply constructs a new memory handler of the corresponding derived -class from the base :cpp:class:`vplm::memory` object. For instance, -the code above converts a CPU allocated memory to a GPU VAAPI surface -for media processing. - -In addition to the buffer sharing API in vplm::\*:memory -subclass constructors, VPL Memory API also provides: - -* API to import memory already allocated by the application external - to VPL Memory library -* API to allocate memory - -The memory import and allocation functions are defined in -`vplm::cpu::make_memory`_, `vplm::opencl::make_memory`_, -`vplm::sycl::make_memory`_, and `vplm::vaapi::make_memory`_. - - - -Creating memory objects ------------------------ - -An application can use the VPL Memory Library to create a memory -object for one of the supported frameworks. For example, the following -code allocates memory in system memory (we count CPU (HOST) as one of -the frameworks): - -.. code:: cpp - - #include - - vplm::cpu::memory yuv_image = vplm::cpu::make_memory(1920, 1080, VPLM_PIXEL_FORMAT_NV12); - -or it can allocate memory externally and request the VPL Memory -Library to manage it as in the following example for VAAPI: - -.. code:: cpp - - #include - #include - - VADisplay dpy; - VASurfaceID id; - vaCreateSurfaces(dpy, VA_RT_FORMAT_RGB32, 1920, 1080, &id, 1, attribs, num_attribs); - - vplm::vaapi::memory rgb_image = vplm::vaapi::make_surface(dpy, id); - -In either case, it ends up with the framework specific C++ object (in -our examples :cpp:class:`vplm::cpu::memory` or -:cpp:class:`vplm::vaapi::memory`), and hence, have access to the -framework specific API defined by VPL Memory for this object. For -example, the following code will access CPU allocated image (via -:cpp:class:`vplm::cpu_image` representation): - -.. code:: cpp - - vplm::cpu_image image; - yuv_image.map(VPLM_ACCESS_MODE_READ, image); - - // do something with the image since you have access to data pointers: - printf("Y data pointer: %p\n", image.data(0)); - - yuv_image.unmap(image); - -Helper Class for Simplifying Image Data Access ----------------------------------------------- - -In the examples above we directly used a memory object to access its -data. While this is possible, there is a simpler way. Most frameworks -require a program to acquire and release access to data. For the CPU -access example, we saw calls to map and unmap to acquire/release -access to the data. Using the :cpp:class:`vplm::cpu_image` helper -class eliminates the need to map and unmap: - -.. code:: cpp - - { - vplm::cpu::image cpu_image(yuv_image, VPLM_ACCESS_MODE_READ); - - // do something with the image since you have access to data pointers: - printf("Y data pointer: %p\n", image.data(0)); - } - -This helper class issues acquire and release operations to mark -start/stop data access in constructor and destructor. Another -"feature" of these helper classes is that they accept base -memory object (:cpp:class:`vplm::memory`) in constructors. This means that we can -use helper classes to make implicit convertion between different -framework objects. For example, with the following we will map our -VAAPI image on to CPU: - -.. code:: cpp - - { - vplm::cpu::image cpu_image(rgb_image, VPLM_ACCESS_MODE_WRITE); - - // do something with the image since you have access to data pointers: - printf("R data pointer: %p\n", image.data(0)); - } - -Usage example -The following example summarize the key usage scenario: +Vidoe Processing +---------------- +.. include:: VPL_processframe.rst -.. code:: cpp - - #include - #include +VPL Memory +========== +.. include:: VPL_memory.rst - VADisplay dpy = init_vaapi(); - VASurfaceID id = create_per_my_needs(); // calls vaCreateSurfaces inside - vplm::cpu::memory yuv_image = vplm::cpu::make_memory(1920, 1080, VPLM_PIXEL_FORMAT_NV12); - vplm::vaapi::memory rgb_image = vplm::vaapi::make_surface(dpy, id); +VPL API Reference +================= - { - vplm::cpu::image cpu_image(yuv_image, VPLM_ACCESS_MODE_WRITE); +.. _device-api: - // do something with the image since you have access to data pointers: - printf("Y data pointer: %p\n", image.data(0)); - // for example, write data into the surface - } +Device +------ - { - vplm::vaapi::image vaapi_cpu_image(dpy, yuv_image); - vplm::vaapi::image vaapi_rgb_image(dpy, rgb_image); // just for consistency +vpl::DeviceInfo +~~~~~~~~~~~~~~~ +.. doxygenenum:: VplDeviceType + :project: oneVPL - // do something with surfaces via VAAPI since we have access to them - // for example, convert yuv which we just wrote on CPU to rgb format - convert_yuv_to_rgb(vaapi_cpu_image.id(), vaapi_rgb_image.id()) - } +.. doxygenstruct:: vpl::VplDeviceProperty + :project: oneVPL + :members: + :protected-members: + :undoc-members: - { - vplm::cpu::image cpu_image(rgb_image, VPLM_ACCESS_MODE_READ); +.. doxygenclass:: vpl::DeviceInstance + :project: oneVPL + :members: + :protected-members: + :undoc-members: - // now we can read from the CPU data which we got in rgb image after VAAPI conversion: - printf("R data pointer: %p\n", image.data(0)); - } +.. doxygenclass:: vpl::DeviceInfo + :project: oneVPL + :members: + :protected-members: + :undoc-members: -The VPL API defines 4 different helper classes, one for each supported device context: -:cpp:class:`vplm::cpu::image` -:cpp:class:`vplm::opencl::image`, -:cpp:class:`vplm::sycl::memory` and -:cpp:class:`vplm::vaapi::image`. +.. _device-context-api: +Device Context -------------- -VPL Encode API --------------- - -The oneVPL Encode API will be released in sync with Intel's oneAPI reference -implementation release in 2020. - ------------------ -VPL Transcode API ------------------ -The oneVPL Transcode API will be released in sync with Intel's oneAPI -reference implementation release in 2020. - ----------------------------- -VPL Video Analytics Pipeline ----------------------------- - -The oneVPL Video Analytics Pipeline API will be released in sync with -Intel's oneAPI reference implementation release in 2020. +vpl::DeviceContext +~~~~~~~~~~~~~~~~~~ +.. doxygenclass:: vpl::DeviceContext + :project: oneVPL + :members: + :protected-members: + :undoc-members: --------------------------------------------- -VPL Object Tracking and Optical Flow Library --------------------------------------------- +.. _config-setting-api: -The oneVPL Object Tracking and Optical Flow Library API API will be -released in sync with Intel's oneAPI reference implementation release -in 2020. +Workstream Settings +------------------- ------------------------------------------------- -VPL Device Discovery and Device Capability Query ------------------------------------------------- +vpl::VplParams +~~~~~~~~~~~~~~ +.. doxygenclass:: vpl::VplParams + :project: oneVPL + :members: + :protected-members: + :undoc-members: -The oneVPL Device Discovery and Device Capability Query API will be -released in sync with Intel's oneAPI reference implementation release -in 2020. +Decode Settings +--------------- ------------------ -VPL API Reference ------------------ +vpl::VplParamsDecode +~~~~~~~~~~~~~~~~~~~~ +.. doxygenclass:: vpl::VplParamsDecode + :project: oneVPL + :members: + :protected-members: + :undoc-members: -Error Handling --------------- +Encode Settings +--------------- -vplStatus -~~~~~~~~~~~~~~~~~ - -.. doxygenenum:: vplStatus +vpl::VplParamsEncode +~~~~~~~~~~~~~~~~~~~~ +.. doxygenclass:: vpl::VplParamsEncode :project: oneVPL - + :members: + :protected-members: + :undoc-members: .. _workstream-api: @@ -456,44 +161,43 @@ Workstreams VplWorkstreamType ~~~~~~~~~~~~~~~~~ - .. doxygenenum:: VplWorkstreamType :project: oneVPL -VplWorkstreamProp -~~~~~~~~~~~~~~~~~ - -.. doxygenenum:: VplWorkstreamProp - :project: oneVPL -vplWorkstream -~~~~~~~~~~~~~ +Workstream +---------- -.. doxygentypedef:: vplWorkstream +vpl::Workstream +~~~~~~~~~~~~~~~ +.. doxygenclass:: vpl::Workstream :project: oneVPL - -vplSetConfigProperty -~~~~~~~~~~~~~~~~~~~~ + :members: + :protected-members: + :undoc-members: -.. doxygenfunction:: vplSetConfigProperty +Workstream::Decode +~~~~~~~~~~~~~~~~~~ +.. doxygenenum:: vplWorkstreamState :project: oneVPL -vplGetConfigProperty -~~~~~~~~~~~~~~~~~~~~ - -.. doxygenfunction:: vplGetConfigProperty +.. doxygenclass:: vpl::Decode :project: oneVPL + :members: + :protected-members: + :undoc-members: -Decode ------- - -vpl::Decode -~~~~~~~~~~~ - -.. doxygenenum:: vplWorkstreamState +Workstream::Encode +~~~~~~~~~~~~~~~~~~ +.. doxygenclass:: vpl::Encode :project: oneVPL + :members: + :protected-members: + :undoc-members: -.. doxygenclass:: vpl::Decode +Workstream::VideoProcess +~~~~~~~~~~~~~~~~~~~~~~~~ +.. doxygenclass:: vpl::VideoProcess :project: oneVPL :members: :protected-members: @@ -504,7 +208,6 @@ Memory vplm::cpu_image ~~~~~~~~~~~~~~~ - .. doxygenclass:: vplm::cpu_image :project: oneVPL :members: @@ -513,7 +216,6 @@ vplm::cpu_image vplm::memory ~~~~~~~~~~~~ - .. doxygenclass:: vplm::memory :project: oneVPL :members: @@ -522,7 +224,6 @@ vplm::memory vplm::cpu::memory ~~~~~~~~~~~~~~~~~ - .. doxygenclass:: vplm::cpu::memory :project: oneVPL :members: @@ -531,7 +232,6 @@ vplm::cpu::memory vplm::cpu::image ~~~~~~~~~~~~~~~~ - .. doxygenclass:: vplm::cpu::image :project: oneVPL :members: @@ -540,7 +240,6 @@ vplm::cpu::image vplm::cpu::make_memory ~~~~~~~~~~~~~~~~~~~~~~ - .. doxygennamespace:: vplm::cpu :outline: :project: oneVPL @@ -548,7 +247,6 @@ vplm::cpu::make_memory vplm::opencl::memory ~~~~~~~~~~~~~~~~~~~~ - .. doxygenclass:: vplm::opencl::memory :project: oneVPL :members: @@ -557,7 +255,6 @@ vplm::opencl::memory vplm::opencl::image ~~~~~~~~~~~~~~~~~~~ - .. doxygenclass:: vplm::opencl::image :project: oneVPL :members: @@ -566,7 +263,6 @@ vplm::opencl::image vplm::opencl::make_memory ~~~~~~~~~~~~~~~~~~~~~~~~~ - .. doxygennamespace:: vplm::opencl :outline: :project: oneVPL @@ -580,15 +276,6 @@ vplm::sycl::memory :protected-members: :undoc-members: -vplm::sycl::image -~~~~~~~~~~~~~~~~~ - -.. doxygenclass:: vplm::sycl::image - :project: oneVPL - :members: - :protected-members: - :undoc-members: - vplm::sycl::make_memory ~~~~~~~~~~~~~~~~~~~~~~~ @@ -625,16 +312,69 @@ vplm::vaapi::make_memory Miscellaneous ------------- +vplStatus +~~~~~~~~~~~~~~~~~ +.. doxygenenum:: vplStatus + :project: oneVPL + +VplCodecType +~~~~~~~~~~~~ +.. doxygenenum:: VplCodecType + :project: oneVPL + VplFourCC ~~~~~~~~~ - .. doxygenenum:: VplFourCC :project: oneVPL -VplTargetDevice +VplCrop +~~~~~~~ +.. doxygenstruct:: VplCrop + :project: oneVPL + :members: + :protected-members: + :undoc-members: + +VplAspectRatio +~~~~~~~~~~~~~~ +.. doxygenstruct:: VplAspectRatio + :project: oneVPL + :members: + :protected-members: + :undoc-members: + +VplEncodePreset ~~~~~~~~~~~~~~~ +.. doxygenenum:: VplEncodePreset + :project: oneVPL + +VplEncodeScenario +~~~~~~~~~~~~~~~~~ +.. doxygenenum:: VplEncodeScenario + :project: oneVPL + +VplBRC +~~~~~~ +.. doxygenenum:: VplBRC + :project: oneVPL -.. doxygenenum:: VplTargetDevice +VplFrameRate +~~~~~~~~~~~~ +.. doxygenstruct:: VplFrameRate :project: oneVPL + :members: + :protected-members: + :undoc-members: +VplVersion +~~~~~~~~~~ +.. doxygenstruct:: VplVersion + :project: oneVPL + :members: + :protected-members: + :undoc-members: +vplLogLevel +~~~~~~~~~~~ +.. doxygenenum:: vplLogLevel + :project: oneVPL From 5fdd8cf3a1813f60890def19235738f33b6b96f9 Mon Sep 17 00:00:00 2001 From: Nikolay Petrov Date: Mon, 23 Mar 2020 14:50:35 +0300 Subject: [PATCH 10/31] Updating terminology, compute modes and first introduction version (#82) * Updating terminology, compute modes and first introduction version --- .../source/_static/data_analytics_stages.png | Bin 0 -> 47751 bytes .../oneDAL/source/_static/e2eframeworks.png | Bin 0 -> 109456 bytes .../oneDAL/source/algorithms/index.rst | 7 ++ .../elements/oneDAL/source/bibliography.rst | 12 ++- .../oneDAL/source/data_management/index.rst | 7 ++ source/elements/oneDAL/source/index.rst | 17 +++-- .../elements/oneDAL/source/introduction.rst | 50 ++++++++++++ .../programming_model/computational_modes.rst | 18 +++++ source/elements/oneDAL/source/terminology.rst | 72 ++++++++++++++++++ 9 files changed, 174 insertions(+), 9 deletions(-) create mode 100644 source/elements/oneDAL/source/_static/data_analytics_stages.png create mode 100644 source/elements/oneDAL/source/_static/e2eframeworks.png create mode 100644 source/elements/oneDAL/source/terminology.rst diff --git a/source/elements/oneDAL/source/_static/data_analytics_stages.png b/source/elements/oneDAL/source/_static/data_analytics_stages.png new file mode 100644 index 0000000000000000000000000000000000000000..2f696706d6620382c74a9a3d60576acc55c3a24c GIT binary patch literal 47751 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

    >oF?NH;uC6*@P1it1Fh@-ag)R=w{Rp6)ui= zYWP$7?4LHcIJApi?c2W9tWK|{JHu|UiCUdZl|(-17Pa7a5@O2r*= z@Sz?d>TRK@$d7$J?d|QXn1>xjrlS(5L3IU}6nVX*L^sg0Wn4Msmqk&t6uk1cl4+=^ zwOtOV+6}lk7$35jNHl%cyxj=PsK){K?p*{}!2vxmWj5UABX;!!z|vJcEE`JyaD5+$ z^$@ms0KDKv-8oZN5&^`M93?2nwp=-IAbE0uc5M=5S5sEV&Y*_s67W8O(m7s(+8C$D zJ#z(rx+hlXS~o`nV}o`oXl>Jf&YE2@br#h_NPqyYjm?#k0oeAv5x}%%WzRYqd;snm zv#xqoGZTGDbEfZuk`7vP$!gw|KRMD4V6`wk*|^(6qKL!nzd+sLTWban3r~l8oa!n5 zE4c?l#d|081$Bj&ori-%f1W<9F5Y->SlD?v0t?(TFEp~(O^0T?Sc2m9n6skGLigKl z5wCi`aWE;6P21is^uGC_Fn&j=JfAOreRejT03yI~7lHiE0XGM5T z;y|`#Nn8g|!P0DDMTc6DdFP&M`fMeHLCF47`@47V(zn~1Dy2T{8<<%13XCfh-!7u8 z2rOm@fe8x>X9GtBIGU523zeTNDy=_-*Jf*g-UNgvaDt}Zr@)YbLGdHyahq^Yl6lNu z!LqAh!5>~38Ws{V7XTldjUO7BD$UBa!EX+MF)axxz)omLpN{$45%^380u~dp6LPaB zLt^jUIg;rpTk9Z@shUF^JV1KfCbBHkfD7MW1uUQ^Su)v0C!4Gu*h7&JerCr?@cadU zLWE>>-|{#O4AvSF6(6>HI%jPdI8(%NKKQoR&T|G)7o|+qQAVr*<+(m``g-?+~fV`}S3VMS_lYJI)L zeU3FlFE1}App(8^hMo_XJb;9Z1lS$(0RBWL4*1Ip^&Q|HieD!I1PEgQZa5@qr4q#K zMvH{43>TuUYSI_MwAEE?6MewVb~b+f=;OEOdCK}M*<-Eh4cJiQ1NepADE3~Ds=5=% zqkX_0+_5%bP{q+Iw{3IBSd`~iB$mx_zKce8#f_k|J;DtL$m_M)e5)G<5P70D|4$&? z0rX`e*gri8$`W)XBj^SyBsx956`=P(kK{`(o>*&Rc^4D8K6ZN+(UYOQ6UWn>vN)pc zyeuI@mb1RFlmfMYS#kSVrAVNTf zUI9S#o6+rW{7QGlN#Ibu1d^wKn9RevpIUl0=()iY1%_d{o3}csI7=vbOw97-!L5A-Vf|_#zh|rNz~2 zY(XBTAN@xHqtg#PfGt~0yCW}JWyV*Oi#L6~95y9nR1ES90|*hWRa^R|;4?yOY;4hk z7Jm>C6Yxm=*Yz=CuIlP)Ctys+DWVnjNWh)KgVe<)kMAKWwC?Y>t@Ga@N9^ zT3Ye%*1%QoC;lj)=(0`F6gGqoA|NiFPY1DKrwE*No@g}sc{P--(Kd4+8 zF0O0<>j^KNot>+5E&arj@p&LLW=?JgKJ9Xu0C}}~yGJxy>CaS%+Va4TC9t7Tt3Xel zW{@mkVb%kG&dYPD#QV6hd0#Rra;{FC(eQRSPuS8p-d(D2?^r1rziLhxA*t6(Gcxjq zJ*M6T6IY;L^Hp@cR>O7D3lcl_N8V5Va8es!hn1NyNfnXDvl*YC*Wto$?W~X=%|n+; zinTg$wkjGuY}X@FP?IOF zDAcP;g$_qW-KcVMd$EB3rLSKtM(gqVLP@FP?%GBn;kUfF{2BRCOWo+msPPFmJ=x0f z-sJEHQaY!-ao1bb*?$9IN8x@YL*UcdJ=~3}#4`qr4HDVOSn|dGxn|mt3vK;~mHtJx zYJtN*A%qaLw;<7B7#ZVJ1Lpg_F$Hji+Z_>qZuFRzm2ynw#>j2zBU#d`Cu!1O?4%UJ zX01$ja#T*ba}Vdt(cMIy%?)a_j06iT;{3U5%mRC2`ZIWuP~=lP+}2#D{X5L& z3S=kQ!>1toTQI#DYw=~vx&@rv@V&1)k&_2(4lgz3K3=HgHLTA=B9YRN)3Sw#=%Y%X z><5BUK?uY&1pIJZ#`ws-Llx2Ye3XXp+7@_;bpGO6{<>g#G+=qW*u}f!5w`Z?nOoij76e53 z>mS6+wtw8v_t|sVfAinLcA;+0D~RnFK+)zArQA;+i(PmJ{v7=}}WsQu0&z?;xpaWnlA6 z9>&$%OQ)LjEE>5h_#WMYW%Bq79me3M;vhMmcpi+B>LeqEF z9Mo5DR?GkO9f6O01Q~9S1$0mHhI&=sBl*-dyS4A6XD3P#_@Id8&v{vLe&|4*j+ud9 z==)H#-uh$qwLPN;S)-$)(vZ{DGa{nP1uXB;lmpupW_BJs13$Mc{$M^4R1Ng$DaS)u z|BgzO9r<){vyXwHdO6(r@wOoqA* zapmbz(vZIp@KHtQ3!PDGFW$$8Rk+i(#%JN=BtzQvPfjLcS77~Ib-bO7wQMzM&^*v* z@VDv6iN%|0OX4jJzr_FX0HSBvU0J{Wjl%fFT-hq zRhJ5DRH`BAiJt`S@RFPN9-Y5U&qo|;4Q%j%s|(sGRe7G#=ZqM2_De-%X3gs~#sk8SUT3>qX9KcB$rqw0)~C z+ItfcS1IyU_O{zo67t)FfcG9iqB}D{!TS=XdS`HG$P(1g{x&i)jYevW-uthC8cZ`l znur&I-FM<=kq2nnx3l9!IBYiXRXHa=pWBK55y=-8d$O}p7T}0O&A7h}@d8ssy0Hj} z*H$|lkk{ek9DRfmP|mnb#R;b2xZ*Gxzh$^A%X^%BC@ws>=_6WZ+{qc#vl5!UH+xx? z$H!d9YJYmcdGZ$6@=eRYFtoV1m{akE+R52@33SD{ocPsWX=|$q&_=R&(ZVI_boOf+ z9^Z>c%H9Z(xe@sEg{G#tId`55_I>d>HQwi~-!Vz^dT378nq70r5Lm5vp?Q-oyyhB8 zlAub8UMYANUW*b)e0PSvtf(l(-`_vA>cb5EKkBa&{PJ+*3rydVnjAk-iQ=h#Xk7aM zzi6YVE-M>Qj~icKrkmXV;Jwp-=@_}#ddTLpAFXbtJQ3~O8uI--!oCyK1S~h4ebEoZ zeyL4n3`ssbixN4SoA%tn%)Q1kQZ?w)-P(!g?gOrSsYikqW zL=Gkm_VsqY|?!0$Hrd$=*I*Fq=>5~S=#uD6aYh%1YyCFr6MLJO?BHiEr zg8z@#rR0U!@`zp9P~dUT*{OIIh1)8<30j~EZ0eEnAM*iLjsWL%_x3`8mo6UK$zQ0* z(Dua@o-7ycOrBKW^S^%my0eZq^vMe|l;mmEQzMf_mEa?J|G8ZEQJd=WjRgxp$OR=O zd!I2VsGGi)Ds429s;8zg{I@de2}h0F_Sf&fg!vy;j1p8HQ39m8U^@|vGcFs2hzb+N zmcHZv!!bAMP54{VR^f{o>=d!X-D+7zjlwf6YOC`+;G!fo_B^{s))OrEzy4DWzha|U ze1-&n)Qi`{uT36{4h;=0NgfCI6ygu?^-u7-vb~%l$APnUvq!w@^#wn3PkAm8QCkX& zANm96t-X*u*$ms=E%ea`oa3-h5pO8ICp&&v=!08#AajuI7+x|T()TwIq`Cubk-l>~ zY^08w<_D){+yrze9T4Fu5Z9Z=jiBox!3=SX43trDu(AQ-+}NJcWCuJ(*=!_ z0yM(~w#XiX#suo`u) zAe`#Stm=-d&z|dHn&e@cuGE_3SUw|u&Zkh-`y{!9%t>{;_$4HFoo6TK%fH-QPu(Ie zvbM8Z7G2Xn4ia9OSpYrhyOkjnR65#fPIq1vjc$S_1_J-_m?WdMQn>V*{)65p{%@WX zi%DNG?W7&#nLT;({;Wcuv_MXqbh^>x+)Trj8}3jdRO!8oROm;q=KO6Q*8}iaQpNA6 z?h=|R`L-7mBj3w9N#bpD9=@4fA~aW)kMUGysTAnHSDQ96Mr?Q&14vc~)i52ZqUanef^h z2M2g|zV_rA;tz+PiQ4^1OTN?P=I_xTs;foBk9P*ZfBL13%z znb%IAtbMrGlA>Y1B+de_)Ud1DkiqM{8Kk)8pzWi&yB;dK_F!SSzn|jPs=*Zr(3Y2m zoTmrgE+ZqeGsB42X7o8K{_x?0z@tZ%EYvV({PA8c=;lHeQgd?b7D1V5A3M_S zZDZLCG$QKT5_sMn*=);=KI7`r;|$_sX=VUKCvACkUa96@Wx?Sx3fS$#`dVimYp_a8BFh|g~T?E7eRRl7`hCG zMx@6M|DgiDM>Vkb==Rmoa!#HR*pcHSdiw@C=B2MVt-S1mzhv$vVaLy(4@9OxQ!W%_ zB+lTmuivkfnCoLI?gFFZFeFjxeSm;HV{ety4W z$^{04jjdNeKUJir-d)>k!u(|)6}hQbZA24$Dt)n-xGI?bdXu%wp9|H)Yt#h`#%2OK zy(BMZzR^fsSzdMmSy7w0vlBcc1ai!k@w}HBIyyABrr4l=7?%H56ZT#?q=n6}=O5;3 zksHXNZwV7ys+RYtbaq`ZYgxm?j8@2@$J#!JTe#d4Zz|0`;tGiMh!HV>&>{!`$7-G2 z7TOV)NA#mbub+I0Kczsv=ohLMCLbCgi*pqP%iQ?E97JbZrHzBu&Dmr2yi`&fElthk z9?^Ayb7L~uaFDp9A+VRoaoRB(YwKE=V(ICOQr?Q~Ez7#EZw04o8@+`phSb+qsfdoQ z?1adU?rc@%Zjpr+zVfK`o7oB@afVqHFs;kJzG2o4`!Vi1$*|{PW|q;>@v*wSQ`5kp zprb?A^<&%U>5A{;hjEvl?L_$~OnP}WU464>4b|S|THNF5U9@7-E80u5`zYk7`_T+) zJ5nSCs>L7=ZVH{_L-E`%d3o0IAF%qa91(&g?nh2Hbp+x^Ts zFj$$ej6xbA*OD&D&N4Q{@(t9q>t~NMxW)|NTK(Kzom#r+D^&O?4gQT+4e115>{eG~ zw0N!)luw0SFd`Hqebq@FLRaJeqoOoFn~6n4rdQ&?&rie+O1;>xp&t=cDnpicY6y;&_c zuIw1Z#|Q=;R$;zrfNsi6Mt4y)9i#yC14Am)@?t zo&c=4jBXe%ppDiz*^G}PeO6YJW+2FuDM3%(a^Y)uon&zx9LzZz+me$GlS>%(h_)D< z(9QsJtQakzCAgHUA*0T2^(<7UkEDV%yS)4*sCEevOm*cv9Ul1}R0yndnroocE=M44 zR$HDrgD`(NM3u@|l zvBSt!7&CPAB9(3?#2ZqQX)-YRTE({eYd!5nUgTbq9GWa`zQRY0x`Jzcsxp6cRL0|Y z2C{pc91^=?*7c)p1c4Cl+w&1JM|j<%dblt!TQG=3#s$NC#X%YCB9drjYdZ`UbfS-7 zAj|f>Df_A1r2rmZ{QmtreCh~%F*Gq@usHt*rQG`JsTWVo;K6gTYE50WkN7bCCndOZ>^Zy%JJKom+X1RuyoROYEYQTUscJ}083k8 zgf;@G^I{4`>B+dcxIjB5D>c*9qrxZuXz5Jm1Zo;*g0DgbOM$}%b~Q4jA5LL({_&tl=ia!i|5b3eEfL1 zO0VE0Z1Vf}_uqdN&Ckz+r$cQKogKgIvWknJgI0~}7sx`~4q*wsBa#y|)77-JZb{iN zDc051&7b^eX84o{7X7u)ojX^(H{k&$@XYs28^r<>lPj3R+%NhvF+-ce@brjt_fGmH z%{U)eU!AC=ml3yJ|M`zg+3->zMtQW)ATz0_rBY;KDazI~fi2bCWs`m4kU{8CqRKen zCWqf|)u)is39&HfIoQ~!l$Mr)Rr(i9*M9EolmU_NewHIsRN|%xWTz*Cnw!gjxcv#5 zbyQc0yT2hKfBgChc+U=?{O`VD?^gn9+><1p3sxOsQDa1_RrWI<+&w&;r<*R-{U-io zY7T%7=_fw2mj?5zwx5yt5`Qj&sz>VEmL1tyhgM;Bh^{V_fG_aDcs1Km_LjZ_;aop$tf58p}{wHIhTU!o<#cSYn4kFR6dzVoB z@5f9X&Y}2u*4m7S9JYZI#f4SEpOKh?a;He_)OAWSTjm5hedOS-cAoMsSYBQgOIeRZ z7uUg+kYB3dQCyY|T5*L99&RlO6QTmwwK`0}w*Zv7jGXx}Aul;rpdc&I40DWc0ZbDI zK-S;SB%wJ8T8nhSOrSe9nGd=Xpb_-O!GX^bTlQOcG0@PujH< zFIin_)v2HBC6WAygPC&(n4 zrCUdx+P9O`~;wQ}OT-{_Ec2t)@ym{!_m_;^- z##M23(ESLnt|*rQDR4T9S6){v^m!Ro8@vaK07q`T@hev?V^u93wggz2oFAUn{pvB=7QJkP#7Ukc0XnM0d%xQrV`W8%agQV z&V~0NX)UiwlPD0vDzUp5C|#9ftDoE$AC}!|!hU7N2+k+3Qp2qbw1uHUl`ymO)uf=8 z0)9Zt9Q@_y=a=t{F$Hk;LPH}BwD@0YYVzoiDfkJt9jl(SOFoyCZOy5;vzfvpuX{t3 zh>(sa@hI&veQ7EZ=KadC=Lw1^1;ep&h$i}WmdO+SXYF9OtLxaEC2R+BV*GjGJ=bUb zvJ|$NUQljgYKP*Q88S!1$%tRq2g(;+mbVX_M9)*_4gU+gZD(RpsfD*w98FthV*h}b z<0cjFTpk}bEV4AJM~eT;zX$|!L?pn|%`uViu4Ak$m-^7M8k%ctIrGXvG{Fzv-l_rP zO|Hp_?$r;$B}Ffb0RpgCQy7*7C>p8r4UWv+u*tzj{M*;<4z*7xN6V=HO(uQTAHkt> zc%nBSZfOAD8K1a5^g=}5xGN2Pw=$7k|C+nIyT}YKd}u~yiO>%?Ia$XWEc7N1{~(vl zLm&_@ZGSixdYj(PI^`qQER%(jgL&kwew-&Uv?VhP^wBlx1ev@Ikt#pmY>n%6aJBYPOCX=4UJ$e44t)QS{T?*PN9;|(6QKbbO#CI@CT=$Sn$uzV7$ZGHLKx{+CI=3dR72k8~taZN+hGC zWaLD{;I?jWNy)6+*-p~SEarVfL;2%Ig~CO>b0Z7*ChUlYq9D%#oKCXyn5%SrFCPTn zVkgE~zBd4g(81-8Z+AOP=&nxpN?jN3G{Jph5$^0jjsYL56%|Qih+i2z<+>5aVmTV9Ff{h;xA<3>fnuSX=!9>9^4dSnO| z05!lp<=YR=PBtiQ)!iH3_S-yh8s<@V!Ku|3=JS=?mlx)1Do*dEY;Aq4ggyccWAw2d z-80O5_xI>uMZ{IEn9&Tt#^!njNcew^G^0SVv+E?ZT-V8OWt+#>&}98GMEG)1BXx64 z%Z-}0N+H3_eD2~tZ&$#n+Hx6VZ+T_UL%Td&Wsl+R-(1kfumGo(;%(qqfG8@x((nXf zm^3m$1<5kVSt`}(1!k*1_P~IoF$W4IRC6Pjm0nL}Kd;MIex#xL*oD+Y*a3iLII(Q~ zrd&KAZrnQLrHudF)$v-oAJ${3xXAdT^g%}Mh5Z8ax=LKg;qmUdZ6fMY?gA z`PAx<&G^x>5k?I!A(Z!57aWSdvh#LN`(CJx${rd??``?@qN95 zB&1z+<&ZksoeV35D30LA1ad)2kb1Z2bIalkA7r5{E*YiC$Gp zZIo2WD6%FG>mJniyt3?eWVD(Y!##5(dsShh{{Hx9jzRg{g+L-!?#Ov1;L-r8_5mMwm+E*DY8xK#OU?y`w ztE%B3UQ{dpX5!~Lc+ATZ5c|3>nL+7B=#FTZluML(qVny9yMw4!*z1A!=l6M62y#{V zLgsOxH9??305si2=(_jPJ8sGi-GqvQ%3h$9J$Tg@uq^Iuj)~az;1vP*wGOd@+sVOT-zkcGCEF9k9vEAn6grHmIm+kiX#w@S&xX;F{o zTKs~fdbjki734&v{S({T%@3dh1_LcFWnG|>O|!4d(Z#&wj_y^iEIf}kK%Un&RNX?c z^zaW@SXJQP2HYbwQszs-Ln;$HB_eE&`SUdZ44*KPmuJ-#cU&!?!GLU%lUXW7Aa#@0 zP=V6CQdANleF83{)GLOifx+_Ib6ngD(09?jy;C2FhlKV{KJL8~4JP_=tA67GLBB6D zps=gNW~OiG7U(#llr22psYYfbU@SN|R_f#0-cqE3%nRBDtX^FgV`^(2tAM)X>~r@JNDPBJHR#U_3yQdF;Yu?Z+iOAi_Z4> zR|2{&VI-XPiREy;z7(OGzl0Yd-ZPNP;|XOG)zqC6^%dpj?ZQp8BZxK0PH{<7I7Xr@ z3Sff@{LUD|aB;@zfpapXZvx|v-(sOyjFMDJYr5nA20n>Sesw;8Ma0-5yGklb%17vL}5 z3cG)AC7M9~2^4=eb#jq6R_0R$$PO4u7c1C833-MtUTMYD>nZYL0S$WIipl!KIuD9K zI|}bMN0)M!92{L0yrOYG?B;Na;(Fa)l1kE%>fz8&wJ-7TTQV?=EBA5h{$1nysXs#3V3zC zdVU&+YJRZ9hRt_3CdP#Tr;_miyq|EeNND2SJLZe$8OW$BR#4ws zO$7R_-A>{{-$O;;g=#wUWse#U!W4I(byil68O0WU&QH3(&0f5tAhcpxyVrn1#_$cW z$1m~8BPJNXzD*d*%Cv|`d8nr=!<061*6{<_sAVNlvUN`1ES}VSC)(-Ow2Q=m=Pn~h zg%>+|S2dwRu=Cz#->a2d>?U~K9;{wI?6Z}A#vsnr%}Ih6V{i%jOY!sPa&yuV`OP!6 z43@-EUGt?~O*V#tQL)t80^o_X0f*3Y2Vx(n)SoB&%?G*SRTiQ-h@%7!(-Y%XQMVOC zOpa^P6m2hp;^BXA_11Awtx?;sieh3@f?$Axl(c|^g&-;2ASp0(iImDwq-7`p0hR6; zU|=XY(y7G2Fr+y2fONyVwtAlLc|QKppM$gazW05vxURL06If->fd4Aq?-NC}cwWb4=%2uh-L*ev{(T{%)-t@RiR;efo@}P%@sa?Q_l>rYD%5 z+sSQ9J+6OUCg|Id%g`>?BjDp+*Z+YFc;AqalY>5cJ2*#Dz}-*EHT}k@nN-{(46|Sv zd9BiUk>KM<@Y9HWe2$=V)sYoz@u{SaY9ii!*tMk?KnAacKtr{ACP}&8i?W~MFq}=( z2^WScZzo+OyYvq__>u2S%<3o_Dr8T@zHhqdW5TvJCUv>}4#y|Djyt*~sP9m=lBXoG zk^FJuqh4k4E!Vq0zM!S^#R%cv{=dT(*^=JN1ihr3H^0}H-)!!#@Du-%5+Tg$YOyu6 znS6)<7m`s~a3fbh7UvZ5Bqi6(5jOG<*vPT$S>YTix3`L0NS)C%9d|S(H|~$xI}B-2 zJc7=r^N@LkgToaNRQC)WWQ8K4t_jIKck#u>tH&tqZqT*v`SZnXK6OpucyP(gM^l`a z$Qmvmy1=SCtjDy2DNoR(cyiHw4;tEJQdomu6= zz1X7}d}n7)pHZvxX_BC>vd)mh$I}xZBbDVRK6=boYOW3YR6_^cC*hVtdcoJwDGL!- z27>NZ@oSS!GUBa^dXCuV)w4t1T_FeYZp3QT0!o_r}MMdA!^JipECOC%bU z)49})VmljsIX-m6wQ4g{@aZDN0Oqo2EcZ2@%6BskM#UX>IG#+2q|3K2_DQhFwigzv ziybc0;|BaU+h1Pfs*LpsPRs6qUD5-Oh7Wq7DH*99EW^E@%XIu_vLmBr8Py&;%v`XA zZ+Tty2GdeX=o`{9lQ0XaX4*R&&V)NGH7>V$|m4%Ra|k*&6vc zl#AF(UXwPVe*j>bEYG!I)c%>_ptU~BEk}Hpj??_iDM9E>j!oWAQQpPX3pk6@H~FzE z{LF?$;}@xMY6~JeYikdFa`N=zTm*Hhs}u!i@UrL|H*TN}`gXQ__U4@o%zxBj7+Q{1JHV%XC(KmF3Caa>-^>VES9U7kZ;Oj&DxuaW7 z@M*=1duRY+E5g%tgbg)N`dDQu-j|P;;@?2Sfp7vq9{>iRD1Sw97<#RM8>V~|)XA>0 z>3F(D7`q^k# zQxDF{3rDQ8tk8;vV~(ku*Q4jHzms$_;Jwheoy^R{$FI1h12l$K1Jf<=rA>rwwN`5D zUYmJ+NyO%+QA(Z}_*7dz>#QEA;}B_XRx|WTn;s}YOZN1rvxj@#I=nyS^?ufu2jQGd zPfmWTUZ>sr_XH~Xvo6KSo;1$^&Yqd!XUSaLPW{hJyF?AkhXk$f;CY(r5frR;Rcmm? zphb#hYRJSikAzE@ny%BH8G#r#(fr?n$8`us2l#rwvgRjn22c`;nSI=^8Q4NnfliFw zhP?%!Zr@W9S`oC)g1LPeJiPbJ+#Y%j6{`McgB-DG4r3@TRG?>HsY6oLW>4O9mf=n& zy_!~F(2HN?mIn-^*(pp;=aZTzs_cr&A*2Ne4?~0P0oVEZ*5RB(DfTCuX-(eMLq;jv zl*lN<3gM;5t>JMTYp>t%q^+ELaN!5*?~(a5xfqRp9nr(u4fk(08>L(ja7f9c!VLPA zmfTRlc8MHe6Ed}>2t3PQEH?-oK_zf+02*wr&KJkgI%!fkK|K8w_(Jo0XT*Wslp88f zs#Mg~<)p~xGWvy}uEu8nO`_LZ z>#R;ku>{|M$8h2Qg;qbE5r@~-_RrOD{pF^ea+0d-4;)5Qpr5#C&nzD;9`-tP%4BG2oJ_i+jZ zUi>yb^UB$KKrv1;gcikgc|(8?Z#q2<(~C-)y3yTIGy&`tMLfVg-8!o597Nrs+t#QA{8yV@Ui0mRtM z>V4Qc@`TSd?|UbixPcqGQ3n>G1mAIIp8I6!jT9f;W#-;DF`FhrTi+h(>84nZ>6Dk~ zZ~+j=#sG_@Ql63=5_?8U#N3zh^4e5Ute_=YQIhlsokXOzMiP}ok#lOba_$5F-gJ@ufTy(0^@oPt$b4zot;h2cL*+} z(aVzCem+4S9e!iNs@xoLB|yCQ7pcV6a!&o3+X-Y3&KQYE!ZMmiB{Q0Y4yI~tyk9$1G=`}AMG;(?+E3+kEt#0LJsBhmj zPBYYzG_*DZBIg>_S<|f;^R8hsez!Gs-dtx-zAJ^;-ZT_VUM<@7x~Km-SD}rI;5~)E zOdOLfNi_WYyIjsayDZ*D3X)5t4o!%z8~T7;R>GAQ9Z%}m5b!vK*+2l#$jjTt4o+yn2JM@9Z1R!Hz$^sGmsp7as%5yUz{QQzT+3g;>GzoYiw6MYL8nD-_F z$2$Px*j?`4qF*ZqOrvg4*?q1j)UnDxkuxDI#Nnca+a@u_0lbbu+UBMhi|ky#4g@tn z1TrXv6_=Nf=UKrB80KBV{3G=AfGrSoF-tOM!|nTG3mOONZPMxZiqDzBph}XhIrsIW zV)IR@ToAk9$)y*LSQLBBmWUX3rReNA6YCmVG5!4)w$SLzsLaPsb|qg3XX@U4GD?%| zYs*($-AIk~DM_>x+7TygVJw}vXA&)O&O{NyR^ea*zWRFHwJuRpkK0YFOS+B@Hk2hCRyJ-Z*`;YH>c%RwTK;C_{VsCCL<$izof)kDs;{%`GNSL3|chI=()`n574g(A7$K1})n#1;bDx^-JH z?jt@k9=9^$CO^B%Q6qMXd+(WYZ|eB5va)yA4`LmNZ1o?7jBZw;5Oh=iSq-C1PLqDw z`ns_%OP#oMd2H!>il_VBa|zI2S%>C572 zWvw`so_=X>hm&`!&d)%IJ;r$OXNZ%sEkN76hvfzV*5iAD(vx#Pd>!GNRNM0a#zElR z-_f3v;OQtg`+rx%>7j%KEa4oo8c$CYSJti(4EQ#niU*?5J8& z{HVV)DNVJIrMf^akFR&uvN?z?Fo$UBB5o{1?1&X{d30UD{cwYe;1?5-*Jrm>Rx+TP zU~(u**M*%w*s)3lI(%SV9J{-_lac80;CVb7fGuq&LgIYAFYnzte0ey4EQ)M*q*(Ra zVg>JZ26EDPu)VBQlnhE=fPTDY^Wr%afK+`SG!Nlffa^h-LMN0d{4HE*djIqnJS@;? z27ooKv;f@oT_$HN~X#CoX+rP-&CVB{NRNod7p7+LfeLZPb*KHnHn zhow^=bBvt{N5ue~hcK_U?-u?Vbs$$!heiu-*NGSL{;jw{--ODT8a?Y(%=zP+7bs-S zAJIGmTyuE)dmXDVOK@_9b1}}ur5bYz#Q+Y9mp{qlkJqFT*6{7A46NQ;{E@Q{s7B-6 zq4<2NcRv5qw)FG$nZ7~TlLIr-`5t9THT1=pa};g$eDE$JoQ%ZOw z7U@Od4>l}5{%$=Ebb*T@NLxphJ$52WGU+V{4b1&dfnH-AmRm6+4fCB*%MrXRkWc0#V&SkL5bkxs zJ9mL8x##VIS)9Pz^cbb`5?9P~nl zI`wzq`@5%Z0}~3b0Lsmpv)yf;jTdyVaLHb&<0}Egw+Ldty&qvhfWgyhI*SLRmci&F zyXHc4*Y=>;t*Re2E~f|Dv#fh_r^2%|sr9uQr*=rx)K=Cu>VUffgqGVBBE; zeTVyAL0Nx;KY-S5tGUKc=+@$roxYgRYAMyI@W)ml1zva9H2;NM2;shgYfu|=%uMZ+ zmGX!@Gtln)R3H=5cccUboouLIh)vP~57R%OmV^{rlF4L%+vDj+u6_H{TJ=I@QEpF- zvviQa#;%cBn|nc1dv>o*l=udsM0QLG72+iz7QN^_%a0V!^n4j8JX|1OmTi9@LOG<| z0ZMZwp)RP->Xl(!?A33T$Bx)eG_9|fvP|vmgrDl(+gE z6;AH;d;TOj>% z2TvNwac4IYhIg`wojr1pMYdsRU8d`kyA4rGb28O(Vq$tpC{L5J-dQtV&ahuAEhB>+ zww@x1MEcK^y*PlBv;n~14|zPYyP(3#!AJN}7L;6SPp0NtLQR-ZYg^qkiS8viZ(vw& z@*1h1kgQfFE3>O^I2_9 z+;?dFa?&0!6E3bo3C$Ikm5D%819ax|JH?&&tJ3h%9@u}}g(KH}4&;-(-y zKHoiiHw7R0x<|uXA1zR>oDsGm#wu$=>MhRY6za_6@x-#!DR_vhBrUwvMgPpGFy{XH zUWib5A|@5v{$CH*JME@J*fEeVIFA#_y2i)+-IGvpCG4$s2Z> z=X1vZRJ9(X^mQOKLmNUtHJ7C*V~F29@f zaNax5>!)@{utKqtcJ`EL#qe49-l6Oao5)!~H-bW0i*0|bkUB$lmj%N}i1bmb|N7TH zJ@q9blp%D_xi}f%_%N%}kL+}mKK>mHzt2(KxyI(|J(2UrWYN3rhN+`7Ff(~4vV$u< zQ}0H2ycE`C;qT)!)Gc0^H$wW?u^!{qqw z7~#mM{hW1X|(&P7R-`e%tr4D{~46EZ{H*7?}xBC zH)t?eu?u+H)z$0#fi*S{)4wVFEjE3Demqb^4mc)jT|T$^>)`*o#^PP!OYuM7h8I%F%Q|F$GLO-_{wl{u=jiqyzT?X z)nD75EG&W#9^)t-Tb5 ztQ*xIP?lBJtep=koY>CeGCI0*21iyO9>mI_0gM{lT#2O`iePDLYqNgxQY?>6!Yr_% zchNBoX>`-jxCR|@zs{*5zm<>>#WGkyufcLQObr$Np>$A$WeJyDSZM69$3FWy{@%&5 z8~T|py|U<6HF2?_t#W7@nm%7;y`bbsM~gCij_&Ql8NYg$p@SzjCMFE-vaY31^@Cy> z42DzJ80Vbbuy7zmaz|TPS+mLt+r1HxWG4F1e4f3-#%*R+aD9y9Ml(ryl)|Zg5t`S) zp_!Ze9`l=Ekqwji$LVxHzzU<9K1n48lRxp%IpA7p{G*f>)$BhIzp1k`#Kf(6~M{}EmZu(9GPCl*6awz`?<3Gk`%W`Q;8n0eqj_^%1 zGn$PHrkqI*H;y4fryi%V`u^tg!Oh$426LRkc}d3{s4O@!C&2I?XOe`jMGzf96T}Qd&*pW%CSj%T+Pgklry3hHt5yb)7`E1 zDb6TxCGh>3k#uME*z1?lx|*7fJea~$-AmKsj^1$k6mofd>?MhmnHx~tFls;WoaF=0 z1GX!8N6UKJq~?I;S7r{n#4()#pU(lYHHX^ou?gWH{>z~si8eK8p&1|l*6E}S{UsBZ z&a=+6(P^5^-ZFe_z(lL3rGVcdl%_@`Z@9zZQn?72 zVP(CyUk`n^Yjb_f|85>4@`U`HkAyB6UFK?Zvdc`SAU}Uj$eZ*{Zfcy%su%Y%hwe+8 z2pVg=UXQVKC5t+jeHwLLljkE%alHs{l7Gxt$blg3s1UO#)@C@SMVE7(+g+T+-(rPBfGKSUaz1sAed z)<&}OPM=m+OK+X(zL@)V&R#Y#>Pu-Lu<`VAVIKvwl^)^GvOczI{UoEUBwD9@wPmxe z(NiFF=kNp01-Z%<(A zAr5WT+dRYMvn zfN4I({aNIFACFM$kCzk)#3fZ!=#i*N$NcW$vaa38D4jda!mm5d?R*aZ542X^6~3Ht z*Nk!hhDxJY4!+gjxP0t*-{VQ|xMwGS=>4PeRpdycKJPLS){eg=0-87#3O@KA8>G2J zTi0(9$X9Apsy^140R^XR?XBr!?djl0C!@@S=F`7v)m;^-TuKA#t)C(KYszDvQ$ymjUs^Mi{6is!TB1k%c_KjZjRw-3LRqfYFqXm+vq znQ29n3e+rm)Uj-Nqr=DGl*IZ+J#NqsLR|g%4_F^9kTQYM?C)Y3G}hR^gP4u<^#dR| z!0Ep8e(l51YH%j#UEB+mWOFO#m@0aWf}tW><Pr# zU)!dL163-ZQP8xyye9ZyMTuxaac?J1llv*LUet@UYhE^k&-(oNu8S=e{0a>=FkH+F zZbZs|DL4pb;NAgw3~HE_55rcyl>(Wn^7KJ(g0=1d76v5;D<0GkFZF8mP=q^11c6Gw z6fA7QBv^9>r7Hdi=l;7Tpa+$$k0=V&kup15TjiU&2ixoXgz@9g5tpuoC<}o&%p)|6 zTy50XXNOc~?V}-#7Y~4G)rV}7EKHJ8eJ>Yly_yEC3AhL{P#grD#%Gewy=3hgm-{me z-XF$G+fsJ(7b91*fu*mCEF(u?Zm%jiBCpYa-FZx-G3`@dwV0lY`fJR$Hssp*cR>pz zBtet|RA~@#i`qj4pcByxKKeey)L`if0fwko~&E4;B7Jl>O#>6n}XMnA?h$o2h?mFH8qZSO!5$2dgLw|& z8Em14u#&1+S6^ac>n)ZCJrzSKa=pF~@4(Z%p#BBAGU%e2s#%IO7zm8WYk>?-S+Ba) z7ut6)Xcacc?`hXvF!EP$q?~g&#lZwKE;)9C{2hVx3`LbP2uz*ZSRG3RQ)9LdNCk&y{qyL?weF6{3Ft6I^vJ z3@omOPJ_w-%w`TOe`!=wOyYy`gjhVH z;kJ6p+6U&-qFH}W)*khz9{`0B^PDA^AP$mRVc5O9dQrDPH|``1{*e+r>GySe!dVnr zDM^{x5ik->|D3wI>_6ieHzx_9eA6A=vB84e&;RXX$BWybb zOk#jXj>r@HMrR*GZo9ohpr4g&jveSGWGe{`F)nA7)l??ati7x=Tcg^Hu9)~X zhHb7b&C-8fiqVJD1`Fs;gig^*l8^Xq>&UkjO>17jjt&H!gjSi2EeK`H^ z%`LdmysrfR`Q*W`vT20gN(JN{|DN7kW+tmYC+}l;a=5V+j@z8w(*nWD_?0Ge0w{MS z`^sOa*{c0m#e%5?cgp6?dS(E+J8$T6%KhL(0+!d%X|)`)Vl7;{^IZ+4EX#*T0lp~a z=tUX9_rbv9EI6JpdYz@tO8Ghl#`D4fSp<0{P&b3qVKD4jNNkO0UtS~KeAO7k*NxFm zL`BEX&9~^o@rB+{ZaL$de~z$QR11>j^cP9!Os3|%KV^5z*~!2v`>HkabXtL6oM2}( z5hXwLYz6JVFxbPrGs3fqXeS^8s8e$8A!Dl%qXk>xy%ne`5U)SSYBdEls> z=*j5;5(R6x=89~v)@(trBdB z-V)Do*M7KfpE4aZ^a=4{+I#I-72IwU6+px6Y@dFA`>JP(8hu}FfM!iHs6jo zGw6rG*#F6?`JLJid&u&`7ii~&!t8os+KEvzv%%RSMP%lF4E>OW`>@0OM%^85Z1$WV z7?Z_J7AxE9s*fMDTWaXe1x?3iS@R#+9;LGEt-p&sAjJnWo54gbssx^8Gn+lWFaI_u zRg}{8T?{!s4#vd=nJOQecldb;qECkCoV86MazAHJ3r%Y>bkTQt&otTU`gGK`j|57) zpMjGg4#Tu-^~s$udcDvf5$1_2fB|crf^9^yl^diqv2O*gOecmEI3SYp;IgW-!h1M^_sLn@|EUw(z1W?-&dEj4cG5HW#Ve)N`+fKY2(ty{lpEfs4*Qu2lu8_!PGVV*tgbpg*NXjy@D9Bn)+j{ z2zc@gq3<1Edi?ax)Huwh>Eus1yEU4)lgpCPPS)u8@jd{&UDJ=a5{d-Y=rVl`jnu_O zElh7u_tWRkbs)0naj>|riPxe(mGm>fq=4nPE%Sc4!5UrK)hD3KHZw(Qz}l63da z9L^=yQ>b$2B`6yO%{;a6>I5+c+7~5G=Y*m+4(xmJFMHXDtKL{ki~3`OPmTXpWHu*R z=kB_y6%fyps1M$>(@ZF-FEv8^ufx1MX!E!%cWV=XxJ-@(s|yX-L|C1D8$@aT>f*#ww>bxd6&U5^@aP&xFKr87CN zPh;<)F#{RtENK{dvyj5N6+>OZRAUI7gL@v#-7n?~e=ElY@iY~}aQPNtzJgm`DPUca zTLpMiT{JZ_UE}3I8l~2(fzIbtYkeV~I0Hj*7RIZ|6Vd7e=Ltj2vmj&=9$v^wsmXzJ zZZ6e|%LcWAhGOET_t=EgO>m2A=#Mcj{or-Xa}1LbJ`dU$onSlvo(gm-AD?n7u@DUY z9%8ywf*Cy9OK3a`;%Y2|^;-IW!n`7wpg%YL2m~Y^;i~C>s~+jRCgtV^ZN;5AkL6dW z+Qbf$w4*J(Du`MJpyp8}H-ew7LO$3m~8pn=11!4ni;M1TV)j$0|QLm0|s%33X#+9PQ+GN*1s9MJ{8I1 zZ$!N^cDR>TAg-KF8M+KXNpod;3jf4#GzgL4N{Z4y*~W|L!&a!?o(m=I)E$!TbiT;~ zmH`>K|I4f3MJHmwe$4OQLI1Rusb2KC0-q_!A1Zd55qBVOIP3w{d(zVQMmnspm0q>t z&b&T)jrME5vs>lvc-mfi^#;!#o%NbW^s=y|m(p6vuuT;2%^~K5z)2A5a8$pwQevmJ zv$tL_wBqx5*n4D2E{YmHgBT`P>5$;X6ER(V1WGVT%bJp#uLovs6i>}P-`Uw%TN#a1 zYIDKz!`qA3o%iQxFmfwr&Bb`=r$E>NUQhWMH@bK1dZ8P{Vxt>xck48LROei{L8ppS z;!)+Y6a6osk!Za?f1lZJV`&`$YeDHPp6Q>V{Tcvn@?i-(>kI6XJ4D;KWGzX_=bPF8 zI-L<=?DW%=h+LzkZLRVi-`)ZxT5IrQvd20e3h)YYfX0cFd(-Nn)!!K9i_zANH4wu6 z=Ck(kA^N9dS!-bz`;WMe{&=@0Q`@UTMrrptp_7`0nzK}2S66pZ!GUNE(l0FhBP?~V z5cNhxjVi_k5fa+%Ii5ES>Q{(66(NHRO`&p5*QRtmsJ;zrrF;uIM{zSmugN?_RU@a9 z^Y1z7Q33EAX8K95X8o>ultBaV#$xI1J>;1a0hqf}e5M|^x`vt+%DL!U8=A#t5Z7}e zGhD<#>m}jc#uBj2NNCqg3-Kz5sYHV6>zo&amU5{pMS`*Wb3p)4R_+yuM@m74fGBBF zViCC#kyEf-h|`8mu_3v8kzdM;v*E&fVa7=ido-OPls$l7uOydOu#{F-PwaQnF&QGD zd<*l;&|y``7i$C!^Uc1S~-*1LeoWtL{Mk-X|k9E zg}@--KRwb90oT>U{7LhcD8_T zR%B$s^Uq;2wVdI`+lB$zHDp4JwtnTNe^~-llkmvIA&m(3x3UqY5U@*RP&yz&`{xeu zJ=#ZSMvuE&xChG`>#XwTmLgo+--Ir#*gz{^iHo7ayECq-F_y zr-f}YIe*IE0hysUANWNzRfLE}J{_*^LPFC&XYN75mj>Bpr*PtINXzMB{lwJ~~p3G$vAPcNoF?G}EN)A`pYd3dC!VyG17V~6j zr-e{W_%kaoD+8uJNspJTOaQzoTYw^~wD&2Ri=H;Dx=eRsI-EljYK(hIpL{I@hJCy6 zjQ@QBKq25)m-sLFdaP8C%Q@L;zMyT*q(NeiA73k&dQm}zrnY@Jyrq}he6N{ zL!d+>UI>Ei%1|f2`IQE4HSQ z5}3BqdcstfVrb)-tq%-jGp~2POgD4pWP?SS*ZSzgfYy$fYP*Vw1T!u`4k6qT9dpLN zWVssl*7nU^h~vkD54|F0ebu>86U%C8YC-wxQxHXdN~|mDijn!7Dl&uqqTAJ9Zjkgo zz_)>}EA2WTW$7{sRkX5;DtWmgF3n{;-1w|B$W^S1u8Z2Z{IXBb^Y2Xu8tbLPA==|F zg~0Ax-~CHAQy0X#`kr8Yi26gzC@o0Q#1pt2mRbbtGvi$g|ByQx_kg|B)Pb5dz*;`V z71aKFw{~0PtUsrTBClc^Kev7Gk5O1v06CV{;GNU&lUQE&b?BM{ARx`~nYxnC{B;oP z6XGWlg!w>UO<6C${YbY?8W~Ur$he1+e9}QAr3*5Iv0VuvUQj1r3Z&?_DZn1kMm8Nl zRghK0wK##!Bu_`X(9M#mUYr=1C0^f1yyGd?RM}KzBGm@(2!nz)j}A`#Y_i=qyP+ci zRFi$5!I?U2S%H}V%k4!Dvnfd}aN@6@ldy$0{jJI!TEGm{6N0Ib^iD31=i<*!u()9S z2Inn%`f4K}o?w@Im(RS9!wz-jBOnF_iT`N%yC2xN&-~yrqQwZpQGmSUO!r-~E*Q?M zb2*@_#mYRO7{ygFaKbpLs0jw`K=Kw6~5@=Hjp5da8;(P_%+8)kof!*(O5T z1jlF%Uy-Q~0L(&-=+z_Ro2y4sw`I&w?rn9&B2w0t@Q6!9-LoLWW+A2wr*KQbxadWdb`J`rWv`*+kJ&^S<&zq)q&ox=r_VYvoa;xvW& z#goe@A+qFPISf>yOhHLd^!X;<8A)wpBew%DZryPJ>9aIpTDwM>g4Rvg3mE;g zhnuLMmoqITsKQ|c^(9WbnwOF9uP=Uu9fYW!Vf5l0Fg=(82W_Q;kry_fPJvY93;>xB zdCP6?kig9&vF+$L&0~YzLEvY>C0RN1);uZZ#12b(eD1BNS1<#GYO;e-z?1lWm%^_4 zy|5Wz$iCADHIs>Z&3VbiWb*Q|DaU4+760Dc2_3_^+=d%OcXQibo%y{|vBc*P#45u6g7oOTGBQ#Ee ze5m03-5-SjU8Gukl{Lh+gHYNBL_-d;F^H!xo5af2n-Hd!EcJWLJA($r{8oO@w6&7|fe&C9-Q>TN_08vnkZ`?)mwwmZOtJvAO`q zqm5Hi!)wpk9Hx_#aPml@+fRn73ph1(y&A&49uj*otS15nR;ShB1v17HAK`W*$&2VV9&Lu$u7M+uRz$b%JfRo-ne#Fa zq@kkpHFsPs+{$qvfLM>t=jifSbFpg?HL5zhR0{|?1VsPtphFTQIPCWFLCedXN}ify zlTD-FF@(rrR<dqP zptV)6(v6X?aDYG*L3!n-tFLg&^*~?JHtN7Jns|fm=ppla01{6V%FLP+xRN+Ea8jS*$^F8U!fTQ<>-6;{^4OCx zL)Q9Oh;JQ)Uj_A2)a1v+^bU*|;BV(7J|K%~4!Ft{-_Aa%r0dI4XJ&RGs6zog&=bkt z;6@jB%{Y_CRgS*=h*}H9uB)R zK0A3BuMV^@-JN#WMRJ;wJxaq2-=q8IReFCU#ip2BYNP9dY;tUG_Tuy>#%VAONu75E z@aRKzR<+s7lJt9GjA%wj(H2r>P|rWEWqO(EZwIf+F3|0N_ucts_LPxK_0E?Gk^y%6 z`Op_D%XHnegyH_rzx3{dLSV4|si&fJok>K=JPYr=#PpO;?RbH#!D|CdySqq|BadW= zw;5C={TIh}N9*_)a;yqGc@$kDdz<+?q-8zP zLc=MLYtExnCw+4h-x%#!fRgUO>vrdy!14#`36 z$u~$cYZ>jgji7drw?%taUszvB2Xe`30`IY$vRdBSn+W)7^mD(T2Ab?^qS27r&QCP} z2wt30w_TBtopn>{Goq?GLblJ`)MS1@Zv6@z4xiH?%LlS&VF*R4mXQ|Of~ zST`i6yOwHB%7nYBlv~_2)*3C70r_f|fsL)Dd7c=WjquF*3+*3#3<2~L-%y&@9R4`G zS|GBp_{Jwazb}f(QctsIf zA8rnl)3Thypr>4Du3QMlEhyBrKgPV6_)qaXXa^(Z=hKk+L;eU9fU7QR%q%G4ef$5V ztYD$RK20C?DbNJbOF)U9uinoCN5gtiKrq^!jwF>$aIH7e&X_LJjW+4VOA^GA5wUjH z=mqC{sUt7q$yV8Rz(*hw&JJ5i^PSK7U1ZjVmar34Ekguol|rioPDQjS}3B0>}bN}RvrGLkcF;tW^)6oXsK z)ci?{pxz0)qAWSYt#GGtZgF-s61CM0F(m|Aph)bY=T9;AK8({>>`x928;+fy7{-i0 zVUYE>Wn!!NVTqX+%G>Fiop*vtc0v{qo)GM}bqv``7I=IB8CK*y&iR!wJ=C0Dj|&C6 zaT1do7f-fc>pL{EDrGNr6w+nNs2s_>Yu4Il{TLngyG(d;j#TNao8CD1v*JRWW(X-yD?Cqo%Vo_!I%0SxR|8=hp_tB0=% z(bC^px2gQlK>+bvUi;@+l@Q4~>5hB2H@2qd+4O`PY7QF{v$Gp60%ZwE z-VB6tp3&C=GTRq*_(vE7?OH+A!UrQF#4J-oMi+Ea>3)9X%sX7}T^Zl@oGJpGejIjfg&@0~ouTK*W^%bm zSO=+w$;~B&FabQo3XqPNfmhBmPI5FOyoGZ)gh*-WpKzg`LOM>s;AV7{T!~hpe>TW+ zhP?J?SgVRzO)dQmQ6Yw7-<1jpr<}w?a%&gd1pDJ*ewFKfEsrC%7Rrq(4ERnqbIW&* zX;2l(Vo7}i%~CX>anUhpQp{K8z&>SBSC@JwuJ(tizpRcQy!U+5L-MhcuNe2e=dd#% zKNOtVKxCJJ9|5=V6#fn5G20DW$+o?od0#tSrj>!QfH=lwdAVcxf0B03AlG2?^wHQn z(q#`MsRwaPNQ*$TUD?T(xIF;R%Rgj#6s`safszXF_RJjDDdY)HvY2CTmwVOCImc{H z_T87_Vru>w@tMRJ7u;$xChL25IUKbb*ta?E%GkEH;8xsUskd|(*+nch~(y;hW+~kt1HJ2XPOiIt_Xir;zByj=V zYk=5?pBL&PX;9k8yFn8D>?*Zb7a(*1`Z_li29q5C1$bR@TSG;tVZ7EPZGoU0TK9VL zI$@4hWv=17CzFpRxUA;hg5zKM?~c2kk<+-40+V3XDZ}I&VsjLbQLuFrHejj1H$%Mp zlhBvmZxyYb)(beNud&K(;FN>xb;D}G(_KxyegWJvgnyb*1j~ogFYCutePuQ}Q$A+(|%< zTb^iN0VL%!Bz~$k#T-KG{bJr;OF*!-d~NP`F)Rl+F$3DxF_vZXVK(5w>;@*TSr$lu zuygz59)u-7HVyw*hCkhFt~0cgprPwkXUkjyk?ezqN{PX`tB}vb7x6&g%xbdr*s~A} z+FAnt7NM_Jt<%JzWQQeg%=CsU9PQ1D2x67WTR7TcsWZ&K_qi@~Tr@VpZh<&&iTBRc z@*m)WHC6&`jKy9U7esB2>*z!i>vj@oU<1Ab^L3yS`w9<+`r`BLno=Hb@u&bVuG8ue|ZSd~uRsd(u`^^vpLnHHTh3f!i~x7c$jJ7_36eCGz2~I}pHY zATQy79&77dfji{?l`x5hVpKY@z4Cl?O4-9azyc)gyNOsNaIM`Qn6xLD-Z6X-+e@FDdYR&57HT)kqlaV)+} zp=7mx9Bg0L@Rn?6!*@g!_aTE11T0A00*Putw&c7BI5IvTLoR>vK8;5|s=g15Xvq2M zwo$o&zHe3XUQS9?Srne+YI6G;<9jNL?b)EfXRt+=TIT!i8_617CRhW$)rA>N&bz*K zrE%j=@{OVv<65B&XSzz-_W4XI< zI-!QH!`5y)@8aaWu&(+fbhU-3kZ!db0M^O3rCAHRl!9DY#T3Uo{W{6C=$$dw+^vW~ zn<^D@`?#lx#g@6#?A={fZ)R|+NS**E3xf;M$u%wT^Yk$sg`xD~f3orE|C3p(giKh7 zt;>wN9=%c;6nQ?sn?j*Ns%Uo(4mjj8T$bFaK`${-=2T^TT}+I;Z}BpridXcEGVqlU zbeRyiqgvaFyM=o@aRaunsfaNuO-z=GtE~J4YY=hn!GT+x;jAY5WD&d8xW{>MD~2z%wo~|&`+$^ek4Miv@1LGaa5Olk1?b*H5c>y?65OFQ)U(kfJ zSUxAWJ9v3;je2G+tKX&Ij>TXgg;`pF_Byx1ubs4iP7hGN3&(mzy8t2rn^+Yu!HCpr zmCHmLhw=hRE^U52QGyu4po;G`R9^+BSjH$jzGreyb^PdMZLzb%T_nrL z0IMCMnP<_(*aqXC6bHI&LarH05m|J4K$?bW4h0=Fm%(fSS!AQVqL5^+_XpVr1nyFv zof_OUf)GZ{n#8O!+!NY*^|-v9uEO$*n>G;8oA~fS_O-P?Rbi+(o}t~x{3c&T=TZIp zv!g)lTkyPtZXng^<^|fiy7mHhO$)J_Pei(g+#m3^1bo_;#SNOb>|{kBIQ^+Q+{&_X{KSd+;G*Gt7ko!eoCzYzUtQFsz8j?OY=)0^tse12XAn zu$)D%#5M$iaJZQIWRaJ^^j{+iyOw=oX!2(0hL8 zY1&2PNdn;8h2(4)#l7&JoBRaTj*O}X;s!L)Y)K0h=L1a;Rm9QNXFLTP_*qyP)ujwL z$#P6FL2<8|4Ya6KdW2;nZfvb zb;#c#E$QlIl4Y`2TooT`cZ*G|UJHW-7l}TKl;glw+kLYg@o{WR$>Azu_S{@Z0r)F| ziu;;gH9`b}nVWyaKg|N*w-4Jl@2f=Oi0G)ucGCx_Tp|9jB)miN+PV^Ay z9aEt+1!_!U+7xR``>qvEJ_3GXFeY`0x3q$HQUUXp=y_+QEDQewtOU2E-@@A;I|+E| zL8SI{-=pyOc>!3a4Q_>6g>y&Vph80-sSs!h*NWy9I@35M#xU#?KnpFh9KinnFOJA{ z(9QZ+{a^m-zc7}6<}vJj$l!Dqf^5ga(hwS|xC-KaaNm5dc+rqc0mjVG8&crU4w!=>W2sq7fZg$I zuRmygA@~kM6}hVOK?(;2M9*k_=QEVz*2uKWt&=dEZn&K7W$jS?wclbwOaZHZu@Ew#m(`qN3+89Mg{fWR;@hxWOoy7fAZvF(PW&GtCPtQdRRu6 z#g)ta6w(1J%rh_QyD$Z_AMzrfQhhZUa{61qcIN+e_uWBFZeP22Y(MoNRg6K`|;tkYYknq=y6qq?%v_5v7D9NDG2s1O%i85<*l|dM^s|YKp0)PcI{|jJz;J^3ky}3i@LhYZZj^}35x6M`t3lDQ zc=T~>HXHbG;s$=nPU(vxorjFQm^_ep0=QzHdV1Thf!sr&PNQUMyL+_1%&RUkdIHv&++Y!|8rLeSK15e-0J__6DJWQb92W z)HiNkXCxTTfY#*E<&e<>H9&EmG}vz@2qj_E2e1j~kX%R5pFr(hYbf+&|1cOzDxvh1 ztwlPChsp5c&&mC}lfI9D0+iFoU9e}MU|0=20G0ViB0v$+86>-8q|M>cIS{>!vyfjw zMG`1}ak_W?jZ4j1Rf5lJy3gi57AU`5t#~~0<0%dJCx8Uj9aCawox(22EAzeL@g>4E z?L1T+op%Zp=cgqmH-$v`OWIgzKxab+22@Hkm!g5(a7}3Imk}I2!Eez#12NpUj^Vazrzt{22Lw z9UUN}o?yj?gFQ>Hq={m~r^{@)s-Rn z!H8oE-ZPnzOO*zxcZr&`fbBY;bsPRZ9)~{UTxqB`q-U(RKTHd59Iq{HuU8}e({q#@ z=avOM?D>tlk1x94X`BLeip}8YV7bk6m}-T?`#K&J8KNJPA9b4+z*7koB^Yh=rOZ+d zsCGlj)}%D6LJyI(V=1k!+?Co9?QOWLft~QljS$i$rS20`gLvtErbkNtZF5C$XVn(@ z{U1F8z3iv@s^2yT(ihokmQ<%gZZP+J-C|X@)ZA989OdefjiMkd@ddx>2p6~ZcvifX zzDc`!P=5w9+)Ta!B|(LQOS!rRmMsO>B4H!{NR==DT@*j8fZ2QB$!yI*Z*ZkFzjM(+ zK8x6wok!IxU1fNk*sf0J_ZUjZ6wZBEYt~8CEdrQeVqPH}JQ{%)mVHVxK_q;FB z;V&5O>9|F$E@O@a3n8*{g?D7D!z#DDa74*+H+xa;`v*WT?^HjCJjMUt+q84mF&{^-xJGx1`hTgK5 z&l5~)YU3X?rv}zZYRo&b&RcZ3S=zXfGv8#=!eIL8Gg6d0P903fyq1ky9lwT*Z$T2j zdCboEaQ{jNH4#L+30JJ|I8&cV>mzImOb5bW^r9z@DBX+z z23#&pJoe6s)1X$3aQ~oob!D*nbcZO?Qx)3R4)%fdR2=0eW`qh!tlRP?;n$MlklKX; zOrj0mlgLe|nARq(93OaRS8&zTg@M54$@En}9gln49MjvWOQ|2Ds1G?;MRUwjVUX7} zr|*c0sa>&W29xr3*EgBx$=7p|R6?&HIi*W3uWslQ>^msm34;~rEbqlxGP@sGE`C_# zSKh|`nIKtIcljDl!emu}r|AYL{5yHm>k_P1OW1Y5d%}qx7HSWHa%ueKk zMg__L*r{j}n(Wj9^j@2Sm%4qqDpeewt)0<-E$uaUpe48WF-Ph1>fc38u(92 z@(<|^ju!^FJ2uW>!qKzjis*+0z0%|G>aeDK`}B;|ZjLS9v!~yCoZtl3`1I*;=1so;=ZQX5UEoxdK#4IA`=}Sg zh=IPNau2GhUZ_yj?UQt=N>%O2{8V{^BAZxRU7^F*Ia3nt(x*Qm$_{+_*ZI419#Kxu zeKCjJ3@SQDtm=reGUSG4&Lm>U2bO!pZs`1F)Xy6GAVGMliU)_ zNt8wPeXf{O@OaDBpr)|uU$LqZQTG`eADc@gt$!|_n5<(vW;bo$I%?Ap!eY1E*7QYt z*CcKWOZxQ2X3T-N!@Ur=(_rxfWws2I-1DxD4fiXm!F8)mPt11**Qyg*T$&bdsW0Kr zRvKtJvTM^(riww)b!HrD{n+!zdsQ*FWh~`kmPVSn&-*;11_XxP>})q>_!pNL>y;T< zS^T)(`UB)$-sk{l*NXD8pO-JGfFE{oG16|%mb=57&Bea#Z4wPD@)fvJhxg_3dLdd@ zt;nq5k&=SDUitS5su%9SR&En*OH9i8L&~fL}^E{RG1v|LRYy5@wlb`?sSK*`n0LX^Sw^i2^GACm)*?|f%gK#MRM5zhX9jG&Q6@GSL10qn_A4CHK|R9 z^yCXSMiR7q?hnf6iTJVM@@H3))AuDk@0-UPzo|HyYXcR2wuKaTMx+0`0qX(QNl2vS ztCIgB*z0yFvd>PwZZ59u#oG!K3`6l842S*Vi{`N;}-Lo+llq}8s%NGVc_@C z;CckmI1Q80k}YBVCDDQ|8GrY{fo;v`f+L07pOq;VDE8o-dd(rleks2n!tXYu0`rLpz)5pn)nH4h)u`io*3VH%(MqJJfoP0L znqes`?o=N=OLGm5Z$Scn_~L6Ec*Fc~2UykWvpwB-bE`SQW*vCjTe_IIha(-!9t;{S z9yk=qd!8{+fvP)dTgGKeIWkdv9YkPB$1Q#D8TI!Ae5l=t?SSEg}myJfw&Zrtx@;61X4M*nV0cdzHa+=^f@*V60 zqfMy%mX1otUVQKymU5rZ3)}tk{OEy!tx<)d2S&hoUbnc^?%Yi%uCy25_e@$YhmB!` z!9=v~DbcVFaCLe9+5*5X0Gg&E%Vc<^*)*ZV?52aw7sLxj3^AI`o~dY_$Q;1EVq)g( z@_S!bOlJXmCuVq$5B}_`=y7v&UJ5CM?@et%PSEAy*lWZsVQ_fJm{K0#Kj74fCbiEz zj3Hhe0F@D=$Fk90pjBYcY7ucdtGBbKj@XuhkgW7Vd7)?ZIaJ_T@NzB4v5BoATN(#u z+Mm3aeTFnh<@YBAJgGZ4s~7IxnP2Ew6y0Y%Ro9<&i}QCqz=TWFYJfdBH6e_7+;m_UF_{_qmWSK36J>W_YJJ4LORo1{+w&+ouxz2Pz<Jg5R$`WVUp}!JJet0 z*z(R!9tM>6qXKbl>FOqHemd}`>aa`53H#b&V6P0OuIL5$poNH+RsdB&Y)f-M>+){FD|=pik&}hb%F-K%p6h@0$J=)lY8)KYP!49=M*4A zjOeqyQF%Fi`F-PbFnwRg1zPZ;#%-&nSY}J4adSK9?d4@k6DNI^xEg^_A>qfF7_u*( zzCmf6lAV5#ANdk^36$8$)I=$}x>jh0VXBc!^8(-~i#=vUv9kXMak00=WUlE(Xc`k&=;mYR>Sr zJD|F5fGivNhO;$agi>9AzViL26d`ZLOn-hsrY|DqU2wC}gMt+vRiBd3Ms zeB}hlA2eK(Cd2oP=dAodz&ax%GQrH_(>U;}nQ!jhyEo>r;l5mIBkG`W8XRg2RLReT z6)(FVbr>eQBc$)e&0Fjwm5cZeC}~C&+EbRy6Yf^wCQ57p=lWOY6j8eUS zrmh9{Fd|BsEn)l27M6C*5FO$O2X?H%W`aNsEv(odPDJsgmh!FB#X7`9d*S`W$91A@ zrN0_%n7)%+d;ah~U7Kkw&dz|Xf%@pUVtLk!GZiPYwlg`1_OJ$6jWYbyLj-woa7Gx4 zv&)5^FY?c{nhw%~h&|w7mE^% z9PvLn(?VSjYckiWmfmvXsSH*3^z>R8_jy4j5OIm}KEbLm;M{;35zfsSXOO!9O&#UBxmMzP`X*78rdrlYn%#{p(M?0<5w zA|rplZOa_h;caj12XHNyN|FR_`?G+wwewS!w9)M=@B5CMj0&3MIg=f8X-|~uru3H< z(_uc#;@|wF1}YNoZQGZtdb-35wV`k@F#jTe^ryoLl=>M@u+oK>Th@(xnMw2eeQp#1 zL^^*mOXPQM%!7e=-`MC)+Y!=Z^JlogxiFirC$ha0m2fRRHrLdt>LIG97i8$^`s6aI0O?fB!L*9e$TT7yik$m-+wvJ&d48ZSa^R$*~lmG{F@;*z`ZUp zmxp)}Z(AQ^P1C|0Sa+GTiX-wmkn<-$o)S+0*Ax3n_YxyJNyp1}{UpG904wEjq`tVN z+dHpft^cucGf|1oXq0^hY|I@G(L4jfFb)MRGampXE)Wo5yWP&89HGp}(Shh2tWndR zrJ=7R2HHqNdCSxIwjwVwU3Vb+17jqJWS}YcSCsEQ+8pTY1v&oiB@zl?`5Qy7^oD*_ zQMO52e$;q(v!+if5YixU1fcp8Fa6@b#dr6Eu#8|jP(%q8 z@amavX&p(ctHSeWEsxI!kQ0|moswciw@00?C8JaePIYxQo)Cvmk|+9(OJ#e#y}EOd z1Lr6@N4##ycXY1C(#I*Z_jlMD%`y0L z-lpX_J$I_TIX9^<_m*jDLxkJ{`mLh#d7AV=Ue6#Q7g3F$|J|p;;@H z=2G2lMnS_pV|KGQfvZr}G`*+(QK?~L&PU|WR?AP7BzK&+Q&(Bb9Sx2h+D3hGYGt8G8=&*Qx%8v6ZtN?$+>Vi1a- zTC@X-!=%k$BWpWb{%RSB7*~3ZFhX?++n1RS~QbdCrMwQ zzV;JTf=d9$2T~H|M${_qFr+Mmi%8&~qNobR_e!$>BvF0m`W_h+<#lQ5YZiVc6U!1? zCxEQt3jo{D9HgC3MU9POlS#RtuQ*(;%N{r|!KM>& z*%x!NsG`F~&=npBXrt-=o4ZbP0?A7yL;t88NVtUViPn`yk{!tY3zV6ERQjPhTnuGk z7HDa}7e4X&)X@zX)i*C$#}Z|gkh_^@S~2~!ox|-jVKlVi1&;G)NKHzt!!cb+^`4^< z_tC(KN}Q7Rjh!Kn_QV!jrR`Xe@HGSp8-SD`ym1r~0O`Ow0SJP;l#ZYi`|2~9TJ=tt zuixsJ&_1*C49J#gLbdyTVxf0HKsmG^PSZ50f#0HBvcYjPZ;XS*+~X7_w{G>ie*I-g z(!G~;%2kqLsKhj*lz1X)c<&Dqz*6D8@8@*TehA!{G<7uSf`o)xZs}!o*RRz;1z*LW zBuzU~0ov%;?<0<|@=^zA(w5p3o-9cIxD~~Q3E|18zDJf#Q!RD3WsY;^N%G`(1fK0; z1mS_@iJiD?VE_3k10Ve$(12-KgP( zf{K;HyQ(Syc|g8aDD1FBl*p_&PGc^zi(i3}P-1gH+ntNjG!$1x9wc?!F{| z*&vAp;w@$WlZDi!*}|tD#-P`U!BRCHc`aZ;Q52-Oh0F;Q3KeAR4MZ&|U|FW0std(i1xI030 zDTw@l8MoO|grf!n&{z~xOk+xc?u0LZksWvQJYixYO94b?_hd~SbNUw(Uc2+N3GRHy zAe9p=32u}~_(J)dxJKf1@Ri?g(JK3F>I22R4CGb+O78(UD9(Yo&UO_(uRDwy^cjR) zqs4qH>*4nXHb&MN#;h`yC(QfOPk7>j(zwZ+)(sLvmWO_wOhFx`3>b%k?~28<1SFp_ zus1LRTVA$NHX4>U-)&fEoV4!FA-A;g1t2o*SL0oY)Abk60kIv0ISuHBE1jpvn*)HyIF0|l`^KZTcfye50&SADMn-qNuV!+! zQ{l;{;NgQ2u$3VT0IZ%T`r7~atTvtQaTx^sVkRJ|!*C!wtT=GI2tT0-qc}Mu zF>VFE7C*?<=+PczD1i3^#p$w&>-t@D=BcoPi|{b~oFgI(zoqPj>mfIwXTcr;wbg(7 zA5&H-ePxX-bwz+2d$hNsc5}X1@$^lNqQasGZiN5{BgBoH3sTnH@yr8wr%i!85Fu?# zDPY3=@|oYh*DZM>cQwNjlg1^lE7jdc8*wL+)RaRk!Tp0oxMz>x3dk8M!GPK)-Efrb zhJS17HdTcV{-`kh^rvbzxMlq4Vv>@HVq|uckf-c2?AbHHLnXWv( znC+E;x*2?7%%hrJ#qd`YBVw#d?hX4hg_j7lH4^V9K-YP#N`CWyjLcS_hX47KofWvg z?@4cXVL*l5+4&*;Z~RWfO{|x!gl=3MUq6Yd8)|@t2ytIGNE}?Uv-o$d#%+3v;^fcj zmifC&gE#*_e>^vM?LaUPGH|`14yRx9BLO??(Chg&|Ni~m^I1j$+6o^cV6{P~lAN&d ziU$r@GohUw=fWw!?R59V$(Q#gSMpc7o~zilj-4_wF*uU8KM*7taA8jYL5f5eSZDak zxAE|0!ZDbDkopZPoIh2#TB!g|F?9dW?vj2E)wZA@=KNs+RUZ2nOylYHbBDIWI){c{ z5>cX=Gi^p~tKAIjetJC33xWIa;fzDB>uBU)xD(VQZ#SLO^EZ(xN3oWQ3i^Flr{Bni zpkRzfc71zXVYMyFbi^tb<9);oO_Or-^|dhKP$4h@wDtMc0jT&C)&ay^##Z}Q%-;67*vPD+$_eTR1265&us)9iyr}(QVKX{ z7vORuz*X<2pDXw$p>bSYQ&n9=IwW*TqfG#?{Z?(+4eKVSHXyT}|`gdiyQ9;Cl(!IWyzJv)Awc7qT`= Ax&QzG literal 0 HcmV?d00001 diff --git a/source/elements/oneDAL/source/_static/e2eframeworks.png b/source/elements/oneDAL/source/_static/e2eframeworks.png new file mode 100644 index 0000000000000000000000000000000000000000..f8507164d26fd682a5c40e43797f5e51802f2487 GIT binary patch literal 109456 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�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 literal 0 HcmV?d00001 diff --git a/source/elements/oneDAL/source/algorithms/index.rst b/source/elements/oneDAL/source/algorithms/index.rst index 81ccb98b32..82721c685e 100644 --- a/source/elements/oneDAL/source/algorithms/index.rst +++ b/source/elements/oneDAL/source/algorithms/index.rst @@ -1,7 +1,14 @@ +.. _algorithms: + ========== Algorithms ========== +The Algorithms component consists of classes that implement algorithms for +data analysis (data mining) and data modeling (training and prediction). +These algorithms include matrix decompositions, clustering, classification, +and regression algorithms, as well as association rules discovery. + .. toctree:: clustering/index.rst nearest_neighbors/index.rst diff --git a/source/elements/oneDAL/source/bibliography.rst b/source/elements/oneDAL/source/bibliography.rst index 88cb6a6d29..a2af4d447e 100644 --- a/source/elements/oneDAL/source/bibliography.rst +++ b/source/elements/oneDAL/source/bibliography.rst @@ -4,4 +4,14 @@ Bibliography ============ -For more information about algorithms implemented in |dal_short_name|, refer to the following publications: +For more information about algorithms implemented in |dal_full_name| (|dal_short_name|), refer to the following publications: + +.. [OpenCLSpec] + Khronos OpenCL Working Group, The OpenCL Specification + Version:2.1 Document Revision:24 + Available from `opencl-2.1.pdf `_ + +.. [SYCLSpec] + Khronos®OpenCL™ Working Group — SYCL™ subgroup, SYCL™ Specification + SYCL™ integrates OpenCL™ devices with modern C++, Version 1.2.1 + Available from `sycl-1.2.1.pdf `_ diff --git a/source/elements/oneDAL/source/data_management/index.rst b/source/elements/oneDAL/source/data_management/index.rst index 8724f61dab..5e1065c856 100644 --- a/source/elements/oneDAL/source/data_management/index.rst +++ b/source/elements/oneDAL/source/data_management/index.rst @@ -1,7 +1,14 @@ +.. _data_management: + + =============== Data management =============== +The Data Management component includes classes and utilities for data acquisition, initial preprocessing +and normalization, for data conversion into numeric formats (performed by one of supported Data Sources) +and for model representation. + .. toctree:: tables.rst diff --git a/source/elements/oneDAL/source/index.rst b/source/elements/oneDAL/source/index.rst index c2c73ff964..8306343123 100644 --- a/source/elements/oneDAL/source/index.rst +++ b/source/elements/oneDAL/source/index.rst @@ -3,31 +3,32 @@ .. _oneDAL-section: -========================== - |dal_full_name| (oneDAL) -========================== +========================================== + oneAPI |dal_full_name| (|dal_short_name|) +========================================== .. |github| replace:: oneDAL GitHub\* page .. _github: https://github.com/intel/daal -This document specifies requirements for implementations of Intel oneAPI Data Analytics Library (oneDAL). +This document specifies requirements for implementations of oneAPI |dal_full_name| (|dal_short_name|). -oneDAL is a library -that helps speed up big data analysis by providing highly optimized +|dal_short_name| is a library that helps speed up big data analysis by providing highly optimized algorithmic building blocks for all stages of data analytics (preprocessing, transformation, analysis, modeling, validation, and decision making) in batch, online, and distributed processing modes of -computation. The current version of oneDAL provides +computation. The current version of |dal_short_name| provides Data Parallel C++ (DPC++) API extensions to the traditional C++ interface. -For general information, visit |github|. +For general information, visit |github|_. .. toctree:: :maxdepth: 3 introduction.rst + terminology.rst programming_model/index.rst common_interface/index.rst data_management/index.rst algorithms/index.rst bibliography.rst + diff --git a/source/elements/oneDAL/source/introduction.rst b/source/elements/oneDAL/source/introduction.rst index e6c5d50ea2..01c5689bd4 100644 --- a/source/elements/oneDAL/source/introduction.rst +++ b/source/elements/oneDAL/source/introduction.rst @@ -1,3 +1,53 @@ ============ Introduction ============ + +oneAPI |dal_full_name| (|dal_short_name|) is a library that provides building blocks covering all stages of data analytics: data acquisition +from a data source, preprocessing, transformation, data mining, modeling, validation, and decision making. + +.. image:: _static/data_analytics_stages.png + :width: 800 + :alt: Data analytis stages + +|dal_short_name| supports the concept of the end-to-end analytics when some of data analytics stages are performed on the +edge devices (close to where the data is generated and where it is finally consumed). Specifically, +|dal_short_name| Application Programming Interfaces (APIs) are agnostic about a particular cross-device +communication technology and, therefore, can be used within different end-to-end analytics frameworks. + +.. image:: _static/e2eframeworks.png + :width: 800 + :alt: End to End Analytics Frameworks + +|dal_short_name| consists of the following major components: + + - The :ref:`Data Management ` component includes classes and utilities for data acquisition, initial preprocessing and normalization, + for data conversion into numeric formats (performed by one of supported Data Sources), and for model representation. + + - The :ref:`Algorithms ` component consists of classes that implement algorithms for data analysis (data mining) and data modeling + (training and prediction). These algorithms include clustering, classification, regression, and recommendation algorithms. + Algorithms support the following computation modes: + + - :ref:`Batch processing `: algorithms work with the entire data set to produce the final result + + - :ref:`Online processing `: algorithms process a data set in blocks streamed into the device’s memory + + - :ref:`Distributed processing `: algorithms operate on a data set distributed across several devices + (compute nodes) + + Distributed algorithms in |dal_short_name| are abstracted from underlying cross-device communication technology, + which enables use of the library in a variety of multi-device computing and data transfer scenarios. + + Depending on the usage, algorithms operate both on actual data (data set) and data models: + + - Analysis algorithms typically operate on data sets. + + - Training algorithms typically operate on a data set to train an appropriate data model. + + - Prediction algorithms typically work with the trained data model and with a working data set. + + - The **Services** component includes classes and utilities used across Data Management and Algorithms components. + These classes enable memory allocation, error handling. + +Classes in Data Management, Algorithms, and Services components cover the most important usage scenarios and allow +seamless implementation of complex data analytics workflows through direct API calls. At the same time, the library +is an object-oriented framework that helps customize the API by redefining particular classes and methods of the library. diff --git a/source/elements/oneDAL/source/programming_model/computational_modes.rst b/source/elements/oneDAL/source/programming_model/computational_modes.rst index 40affafff3..ace144aa0b 100644 --- a/source/elements/oneDAL/source/programming_model/computational_modes.rst +++ b/source/elements/oneDAL/source/programming_model/computational_modes.rst @@ -2,14 +2,32 @@ Computational modes =================== +.. _Batch: + ----- Batch ----- +In the batch processing mode, the algorithm works with the entire data set to produce the final +result. A more complex scenario occurs when the entire data set is not available at the moment +or the data set does not fit into the device memory. + +.. _Online: + ------ Online ------ +In the online processing mode, the algorithm processes a data set in blocks streamed into the +device's memory. Partial results are updated incrementally and finalized when the last data block +is processed. + +.. _Distributed: + ----------- Distributed ----------- + +In the distributed processing mode, the algorithm operates on a data set distributed across +several devices (compute nodes). On each node, the algorithm produces partial results that +are later merged into the final result on the master node. \ No newline at end of file diff --git a/source/elements/oneDAL/source/terminology.rst b/source/elements/oneDAL/source/terminology.rst new file mode 100644 index 0000000000..1f7310b4eb --- /dev/null +++ b/source/elements/oneDAL/source/terminology.rst @@ -0,0 +1,72 @@ +.. _terminology: + +============ +Terminology +============ + +.. glossary:: + + API + Application Programming Interface + + Batch Mode + The computation mode for an algorithm in |dal_short_name|, where all the data needed for + computation is available at the start and fits the memory of the device on which the computations are performed. + + Dataset + A pair of a matrix :math:`X` of size :math:`N \times p` and a vector :math:`Y` of size :math:`N`, where :math:`X` + contains :math:`N` :term:`feature vectors ` in rows and :math:`Y` stores all corresponding + :term:`responses `. Vector :math:`Y` is optional and may not be present if responses are unknown. + + DPC++ + Data Parallel C++ (DPC++) is a high-level language designed for data parallel programming productivity. + DPC++ is based on :term:`SYCL* ` from the Khronos* Group to support data parallelism and heterogeneous programming. + + Feature + A single column of matrix :math:`X` from a dataset. + + Feature vector + A single real-valued vector of length :math:`p` that encodes information about a real + object or an event. + + Host/Device + OpenCL [OpenCLSpec]_ refers to CPU that controls the connected GPU executing kernels. + + JIT + Just in Time Compilation --- compilation during execution of a program. + + Kernel + Code written in OpenCL [OpenCLSpec]_ or :term:`SYCL` and executed on a GPU device. + + Observation + A pair of a :term:`feature vector ` and a :term:`response` if response is known, otherwise a feature + vector. + + Model + A result of training machine-learning algorithm that stores information necessary to run + inference (prediction) on a new dataset. + + oneDAL + |dal_full_name| (|dal_short_name|). + + Online Mode + The computation mode for an algorithm in |dal_short_name|, where the data needed for computation + becomes available in parts over time. + + Response + A single value corresponding to an :term:`observation`. For example, response may be a label + indicating that an observation belongs to a particular class. + + SPIR-V + Standard Portable Intermediate Representation - V is a language for intermediate representation of compute kernels. + + SYCL + SYCL(TM) [SYCLSpec]_ --- high-level programming model for OpenCL(TM) that enables code for heterogeneous + processors to be written in a "single-source" style using completely standard C++. + + Use case + A scenario that describes how a user might interact with a |dal_short_name| algorithm. + + Workload + A task of applying a |dal_short_name| algorithm to a dataset. + From 4e659a837e8b7fefb6a12b81f409b9bbe340da08 Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Mon, 23 Mar 2020 11:45:20 -0400 Subject: [PATCH 11/31] Full names include oneAPI, add spellchecker (#89) --- .github/workflows/main.yml | 5 +++++ requirements.txt | 1 + scripts/install.sh | 1 + scripts/oneapi.py | 4 +++- source/conf/common_conf.py | 18 +++++++++--------- .../source/spec/collective_communication.rst | 2 +- .../elements/oneVPL/source/VPL_workstreams.rst | 2 +- source/elements/oneVPL/source/index.rst | 2 +- source/spelling_wordlist.txt | 0 9 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 source/spelling_wordlist.txt diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a1c39970eb..6ad709487c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,3 +21,8 @@ jobs: with: name: oneapi-spec-artifacts path: site.zip + - name: Archive spellcheck + uses: actions/upload-artifact@v1 + with: + name: spell check + path: build/spelling/output.txt diff --git a/requirements.txt b/requirements.txt index d0dd5eb69e..d81b719edf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,4 +11,5 @@ sphinx-rtd-theme sphinx-prompt sphinx_substitution_extensions sphinx_tabs +sphinxcontrib-spelling graphviz diff --git a/scripts/install.sh b/scripts/install.sh index 27f33fa36c..e89a3d44c8 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -46,6 +46,7 @@ make install set -e popd apt-get install -y \ + enchant \ graphviz \ latexmk \ texlive-latex-base \ diff --git a/scripts/oneapi.py b/scripts/oneapi.py index dcbe1c0bbd..9b9887effa 100644 --- a/scripts/oneapi.py +++ b/scripts/oneapi.py @@ -332,6 +332,7 @@ def ci(root, target=None): root_only(root) get_tarballs(root) site(root) + build('.', 'spelling') if args.branch == 'publish' or args.branch == 'refs/heads/publish': stage_publish(root) else: @@ -348,6 +349,7 @@ def ci(root, target=None): 'dockerrun': dockerrun, 'html': build, 'latexpdf': build, + 'spelling': build, 'prep': prep, 'prod-publish': prod_publish, 'purge': purge, @@ -370,7 +372,7 @@ def ci(root, target=None): def main(): global args parser = argparse.ArgumentParser(description='Build oneapi spec.') - parser.add_argument('action',choices=commands.keys()) + parser.add_argument('action',choices=commands.keys(), default='html', nargs='?') parser.add_argument('root', nargs='?', default='.') parser.add_argument('--branch') parser.add_argument('--dry-run', action='store_true') diff --git a/source/conf/common_conf.py b/source/conf/common_conf.py index 66ab6216bd..9d9e631c73 100644 --- a/source/conf/common_conf.py +++ b/source/conf/common_conf.py @@ -2,7 +2,6 @@ 'notfound.extension', 'sphinx.ext.autodoc', 'sphinx.ext.doctest', -# 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.mathjax', @@ -10,22 +9,23 @@ 'sphinx.ext.viewcode', 'sphinx.ext.githubpages', 'sphinx.ext.graphviz', + 'sphinxcontrib.spelling', 'sphinx_substitution_extensions', 'breathe', ] rst_prolog = """ -.. |ccl_full_name| replace:: Collective Communications Library -.. |dal_full_name| replace:: Data Analytics Library +.. |ccl_full_name| replace:: oneAPI Collective Communications Library +.. |dal_full_name| replace:: oneAPI Data Analytics Library .. |dal_short_name| replace:: oneDAL .. |dal_namespace| replace:: daal -.. |dnn_full_name| replace:: Deep Neural Network Library -.. |dpl_full_name| replace:: DPC++ Library +.. |dnn_full_name| replace:: oneAPI Deep Neural Network Library +.. |dpl_full_name| replace:: oneAPI DPC++ Library .. |dpcpp_full_name| replace:: DPC++ -.. |l0_full_name| replace:: Level Zero -.. |mkl_full_name| replace:: Math Kernel Library -.. |tbb_full_name| replace:: Threading Building Blocks -.. |vpl_full_name| replace:: Video Processing Library +.. |l0_full_name| replace:: oneAPI Level Zero +.. |mkl_full_name| replace:: oneAPI Math Kernel Library +.. |tbb_full_name| replace:: oneAPI Threading Building Blocks +.. |vpl_full_name| replace:: oneAPI Video Processing Library """ # for substitutions in code blocks and sphinx-prompts: diff --git a/source/elements/oneCCL/source/spec/collective_communication.rst b/source/elements/oneCCL/source/spec/collective_communication.rst index 1ffdcd999e..d0deac8dfe 100644 --- a/source/elements/oneCCL/source/spec/collective_communication.rst +++ b/source/elements/oneCCL/source/spec/collective_communication.rst @@ -1,7 +1,7 @@ oneCCL Collective Communication =============================== -Thi section covers collective communcation operations implemented in |ccl_full_name|. +This section covers collective communication operations implemented in |ccl_full_name|. .. toctree:: :maxdepth: 1 diff --git a/source/elements/oneVPL/source/VPL_workstreams.rst b/source/elements/oneVPL/source/VPL_workstreams.rst index d79a60ea7c..5f16aaeefe 100644 --- a/source/elements/oneVPL/source/VPL_workstreams.rst +++ b/source/elements/oneVPL/source/VPL_workstreams.rst @@ -11,7 +11,7 @@ There are four subclasses of :class:`vpl::Workstream` that perform the following - :class:`vpl::Encode`: encode raw frames to a bitstream In the :class:`vpl::VideoProcess` subclass, a sequence of filters with single input and single output running on the same device context can be fused to the same workstream. -Operations executing on different device contexts are seperated to different worksteams such that each workstream can be dispatched to a single device context. +Operations executing on different device contexts are separated to different worksteams such that each workstream can be dispatched to a single device context. Workstream Internals -------------------- diff --git a/source/elements/oneVPL/source/index.rst b/source/elements/oneVPL/source/index.rst index 2b41e2521a..616fa45fc1 100644 --- a/source/elements/oneVPL/source/index.rst +++ b/source/elements/oneVPL/source/index.rst @@ -66,7 +66,7 @@ Encode ------ .. include:: VPL_encode.rst -Vidoe Processing +Video Processing ---------------- .. include:: VPL_processframe.rst diff --git a/source/spelling_wordlist.txt b/source/spelling_wordlist.txt new file mode 100644 index 0000000000..e69de29bb2 From 2fc211a8ef39e98f7d028130d31e59929498db9d Mon Sep 17 00:00:00 2001 From: Mikhail Shiryaev Date: Mon, 23 Mar 2020 18:50:48 +0300 Subject: [PATCH 12/31] Update oneCCL roadmap for 0.7.0 and 0.8.0 (#90) --- roadmap.rst | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/roadmap.rst b/roadmap.rst index dade1e1bf7..86f138cb6a 100644 --- a/roadmap.rst +++ b/roadmap.rst @@ -149,10 +149,6 @@ Date Milestone - Add introduction, execution, primitive lifecycle, and programming model sections -- oneCCL - - - Add initial version of API for scale-up - - Level Zero - Switched to RST as format, using oneapi-spec as upstream repo @@ -217,8 +213,8 @@ Date Milestone - oneCCL - - Update page with API for scale-up - - Update page with GPU programming model + - Add page with API for multi-GPU + - Add page with multi-GPU programming model - Extend page with collective operations - Level Zero From 817925eeb1c913bfc37e792a2bd11a55c96d5a49 Mon Sep 17 00:00:00 2001 From: "Petrov, Nikolay A" Date: Mon, 23 Mar 2020 23:16:34 +0300 Subject: [PATCH 13/31] update oneDAL name preffix --- source/elements/oneDAL/source/index.rst | 4 ++-- source/elements/oneDAL/source/introduction.rst | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/elements/oneDAL/source/index.rst b/source/elements/oneDAL/source/index.rst index 8306343123..adf07d860f 100644 --- a/source/elements/oneDAL/source/index.rst +++ b/source/elements/oneDAL/source/index.rst @@ -4,13 +4,13 @@ .. _oneDAL-section: ========================================== - oneAPI |dal_full_name| (|dal_short_name|) +|dal_full_name| (|dal_short_name|) ========================================== .. |github| replace:: oneDAL GitHub\* page .. _github: https://github.com/intel/daal -This document specifies requirements for implementations of oneAPI |dal_full_name| (|dal_short_name|). +This document specifies requirements for implementations of |dal_full_name| (|dal_short_name|). |dal_short_name| is a library that helps speed up big data analysis by providing highly optimized algorithmic building blocks for all stages of data analytics diff --git a/source/elements/oneDAL/source/introduction.rst b/source/elements/oneDAL/source/introduction.rst index 01c5689bd4..eb52b5105e 100644 --- a/source/elements/oneDAL/source/introduction.rst +++ b/source/elements/oneDAL/source/introduction.rst @@ -2,7 +2,7 @@ Introduction ============ -oneAPI |dal_full_name| (|dal_short_name|) is a library that provides building blocks covering all stages of data analytics: data acquisition +|dal_full_name| (|dal_short_name|) is a library that provides building blocks covering all stages of data analytics: data acquisition from a data source, preprocessing, transformation, data mining, modeling, validation, and decision making. .. image:: _static/data_analytics_stages.png From 035d804793e0c2614a5023420c2bb0921df88d20 Mon Sep 17 00:00:00 2001 From: "Petrov, Nikolay A" Date: Mon, 23 Mar 2020 23:17:45 +0300 Subject: [PATCH 14/31] update README info on remote repos --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 09711eab34..b0604150d1 100644 --- a/README.rst +++ b/README.rst @@ -50,7 +50,7 @@ On windows:: python scripts\oneapi.py spec-venv spec-venv\Scripts\activate -MKL, DAL, and Level Zero are temporarily in separate private repos. If you have access to the repos you can clone them:: +MKL and Level Zero are temporarily in separate private repos. If you have access to the repos you can clone them:: python scripts/oneapi.py clones From 2d7eb6f301dcce10575d296fef3f67252a10c21b Mon Sep 17 00:00:00 2001 From: Ruslan Israfilov Date: Tue, 24 Mar 2020 17:19:27 +0300 Subject: [PATCH 15/31] Add detailed K-Means math and API description - Lloyd's method explained - All API components are documented - Preconditions/Postcoditions --- .../source/algorithms/clustering/kmeans.rst | 455 +++++++++++++++--- .../elements/oneDAL/source/bibliography.rst | 13 +- 2 files changed, 409 insertions(+), 59 deletions(-) diff --git a/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst b/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst index 02bb85ddb5..1c3739c05a 100644 --- a/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst +++ b/source/elements/oneDAL/source/algorithms/clustering/kmeans.rst @@ -1,74 +1,250 @@ +.. highlight:: cpp +.. default-domain:: cpp + ======= K-Means ======= -K-Means is a clustering algorithm that partitions :math:`n` observations into -:math:`k` clusters minimizing some criterion within each cluster. Each cluster -is characterized by a representative point, called *a centroid*, and a cluster -radius. +The K-Means algorithm partitions :math:`n` feature vectors into :math:`k` +*clusters* minimizing some criterion. Each cluster is characterized by a +representative point, called *a centroid*. + +Given the training set :math:`X = \{ x_1, \ldots, x_n \}` of +:math:`p`-dimensional feature vectors and a positive integer :math:`k`, the +problem is to find a set :math:`C = \{ c_1, \ldots, c_k \}` of +:math:`p`-dimensional centroids that minimize the objective function + +.. math:: + \Phi_{X}(C) = \sum_{i = 1}^n d^2(x_i, C), + +where :math:`d^2(x_i, C)` is the squared Euclidean distance from :math:`x_i` to +the closest centroid in :math:`C`, + +.. math:: + d^2(x_i, C) = \min_{1 \leq j \leq k} \| x_i - c_j \|^2, \quad 1 \leq i \leq n. + +Expression :math:`\|\cdot\|` denotes :math:`L_2` `norm +`_. + +.. note:: + In the general case, :math:`d` may be an arbitrary distance function. Current + version of the oneDAL spec defines only Euclidean distance case. + -Given the set :math:`X = \{ x_1, \ldots, x_n \}` of :math:`p`-dimensional -feature vectors and a positive integer :math:`k`, the problem is to find a set -:math:`C = \{ c_1, \ldots, c_k \}` of :math:`p`-dimensional vectors that -minimize the objective function +-------------- +Lloyd's method +-------------- + +The Lloyd's method [Lloyd82]_ consists in iterative updates of centroids by +applying the alternating *Assignment* and *Update* steps, where :math:`t` +denotes a index of the current iteration, e.g., :math:`C^{(t)} = \{ c_1^{(t)}, +\ldots, c_k^{(t)} \}` is the set of centroids at the :math:`t`-th iteration. The +method requires the initial centroids :math:`C^{(1)}` to be specified at the +beginning of the algorithm (:math:`t = 1`). + +**(1) Assignment step:** Assign each feature vector :math:`x_i` to the nearest +centroid. :math:`y_i^{(t)}` denotes the assigned label (cluster index) to the +feature vector :math:`x_i`. + +.. math:: + y_i^{(t)} = \mathrm{arg}\min_{1 \leq j \leq k} \| x_i - c_j^{(t)} \|^2, \quad 1 \leq i \leq n. + +Each feature vector from the training set :math:`X` is assigned to exactly one +centroid so that :math:`X` is partitioned to :math:`k` disjoint sets (clusters) .. math:: - \Phi_{X}(C)=\sum_{x_i \in X}d(x_i, C), + S_j^{(t)} = \big\{ \; x_i \in X : \; y_i^{(t)} = j \; \big\}, \quad 1 \leq j \leq k. + +**(2) Update step:** Recalculate centroids by averaging feature vectors assigned +to each cluster. + +.. math:: + c_j^{(t + 1)} = \frac{1}{|S_j^{(t)}|} \sum_{x \in S_j^{(t)}} x, \quad 1 \leq j \leq k. + +The steps (1) and (2) are performed until the following **stop condition**, + +.. math:: + \sum_{j=1}^k \big\| c_j^{(t)} - c_j^{(t+1)} \big\|^2 < \varepsilon, + +is satisfied or number of iterations exceeds the maximal value :math:`T` defined +by the user. + +------------- +Usage example +------------- +:: + + onedal::kmeans::model run_training(const onedal::table& data, + const onedal::table& initial_centroids) { + + const auto kmeans_desc = onedal::kmeans::desc{} + .set_cluster_count(10) + .set_max_iteration_count(50) + .set_accuracy_threshold(1e-4); + + const auto result = onedal::train(kmeans_desc, data, initial_centroids); + + print_table("labels", result.get_labels()); + print_table("centroids", result.get_model().get_centroids()); + print_value("objective", result.get_objective_function_value()); + + return result.get_model(); + } + + +:: + + onedal::table run_inference(const onedal::kmeans::model& model, + const onedal::table& new_data) { + + const auto kmeans_desc = onedal::kmeans::desc{} + .set_cluster_count(model.get_cluster_count()); + + const auto result = onedal::infer(kmeans_desc, model, new_data); + + print_table("labels", result.get_labels()); + } -where :math:`d(x_i, C)` is the distance from :math:`x_i` to the closest center -in :math:`C`. --- API --- -Descriptor ----------- -.. code-block:: c++ - - namespace onedal::kmeans { +Methods +------- +:: namespace method { - struct lloyd {}; - using by_default = lloyd; + struct lloyd {}; + using by_default = lloyd; } // namespace method +.. namespace:: onedal::kmeans::method +.. struct:: lloyd + + Tag-type that denotes `Lloyd's method`_. + + +.. type:: by_default = lloyd + + Alias tag-type for the `Lloyd's method`_. + + +Descriptor +---------- +:: + template class desc { public: - double get_gamma() const; + desc(); + + int64_t get_cluster_count() const; + int64_t get_max_iteration_count() const; double get_accuracy_threshold() const; - std::int64_t get_cluster_count() const; - std::int64_t get_max_iteration_count() const; - desc& set_gamma(double); + desc& set_cluster_count(int64_t); + desc& set_max_iteration_count(int64_t); desc& set_accuracy_threshold(double); - desc& set_cluster_count(std::int64_t); - desc& set_max_iteration_count(std::int64_t); }; - } // namespace onedal::kmeans +.. namespace:: onedal::kmeans +.. class:: template \ + desc + + :tparam Float: The floating-point type that the algorithm uses for + intermediate computations. Can be :expr:`float` or :expr:`double`. + + :tparam Method: Tag-type that specifies an implementation of K-Means + algorithm. Can be :expr:`method::lloyd` or + :expr:`method::by_default`. + + .. function:: desc() + + Creates new instance of descriptor with the default attribute values. + + .. member:: std::int64_t cluster_count = 2 + + The number of clusters :math:`k`. + + Getter & Setter + | ``std::int64_t get_cluster_count() const`` + | ``desc& set_cluster_count(std::int64_t)`` + + Invariants + | :expr:`cluster_count > 0` + + + .. member:: std::int64_t max_iteration_count = 100 + + The maximum number of iterations :math:`T`. + + Getter & Setter + | ``std::int64_t get_max_iteration_count() const`` + | ``desc& set_max_iteration_count(std::int64_t)`` + + Invariants + | :expr:`max_iteration_count >= 0` + + + .. member:: double accuracy_threshold = 0.0 + + The threshold :math:`\varepsilon` for the stop condition. + + Getter & Setter + | ``double get_accuracy_threshold() const`` + | ``desc& set_accuracy_threshold(double)`` + + Invariants + | :expr:`accuracy_threshold >= 0.0` Model ----- -.. code-block:: c++ +:: class model { public: + model(); + const table& get_centroids() const; + int64_t get_cluster_count() const; }; +.. class:: model + + .. function:: model() + + Creates a model with the default attribute values. + + + .. member:: table centroids = table() + + :math:`k \times p` table with the cluster centroids. Each row of the table + stores one centroid. + + Getter + | ``const table& get_centroids() const`` + + + .. member:: std::int64_t cluster_count = 0 -Training --------- + Number of clusters :math:`k` in the trained model. + Getter + | ``std::int64_t get_cluster_count() const`` + + Invariants + | :expr:`cluster_count == centroids.row_count` + + +Training :expr:`onedal::train(...)` +----------------------------------- Input ~~~~~ -.. code-block:: c++ - - namespace onedal::kmeans { +:: class train_input { public: @@ -76,51 +252,139 @@ Input train_input(const table& data); train_input(const table& data, const table& initial_centroids); + const table& get_data() const; + const table& get_initial_centroids() const; + train_input& set_data(const table&); train_input& set_initial_centroids(const table&); }; - } // namespace onedal::kmeans +.. class:: train_input + + .. function:: train_input() + + Creates input for the training operation with the default attribute + values. + + + .. function:: train_input(const table& data) + + Creates input for the training operation with the given :expr:`data`, the + other attributes get default values. + + + .. function:: train_input(const table& data, const table& initial_centroids) + + Creates input for the training operation with the given data and + :expr:`initial_centroids`. + + + .. member:: table data = table() + + :math:`n \times p` table with the data to be clustered, where each row + stores one feature vector. + + Getter & Setter + | ``const table& get_data() const`` + | ``train_input& set_data(const table&)`` + + + .. member:: table initial_centroids = table() + + :math:`k \times p` table with the initial centroids, where each row + stores one centroid. + + Getter & Setter + | ``const table& get_initial_centroids() const`` + | ``train_input& set_initial_centroids(const table&)`` Result ~~~~~~ -.. code-block:: c++ - - namespace onedal::kmeans { +:: class train_result { public: + train_result(); + const model& get_model() const; const table& get_labels() const; - std::int64_t get_iteration_count() const; + int64_t get_iteration_count() const; double get_objective_function_value() const; }; - } // namespace onedal::kmeans +.. class:: train_result + .. function:: train_result() -Usage example -~~~~~~~~~~~~~ + Creates result of the training operation with the default attribute + values. -.. code-block:: c++ - int main() { - auto kmeans_desc = onedal::kmeans::desc{} - .set_cluster_count(10); + .. member:: kmeans::model model = kmeans::model() + + The trained K-means model. + + Getter + | ``const model& get_model() const`` + + + .. member:: table labels = table() + + :math:`n \times 1` table with the labels :math:`y_i` assigned to the + samples :math:`x_i` in the input data, :math:`1 \leq 1 \leq n`. + + Getter + | ``const table& get_labels() const`` + + + .. member:: std::int64_t iteration_count = 0 + + The number of iterations performed by the algorithm. + + Invariants + | :expr:`iteration_count >= 0` + + + .. member:: double objective_function_value = 0.0 + + The value of the objective function :math:`\Phi_X(C)`, where :math:`C` is + :expr:`model.centroids` (see :expr:`kmeans::model::centroids`). + + Invariants + | :expr:`objective_function_value >= 0.0` - onedal::train(kmeans_desc, x_train, x_train_centroids); - } +Operation semantics +~~~~~~~~~~~~~~~~~~~ +.. namespace:: onedal +.. function:: template \ + kmeans::train_result train(const Descriptor& desc, \ + const kmeans::train_input& input) -Inference ---------- + :tparam Descriptor: K-Means algorithm descriptor :expr:`kmeans::desc`. + + Preconditions + | :expr:`input.data.is_empty == false` + | :expr:`input.initial_centroids.is_empty == false` + | :expr:`input.initial_centroids.row_count == desc.cluster_count` + | :expr:`input.initial_centroids.column_count == input.data.column_count` + + Postconditions + | :expr:`result.labels.is_empty == false` + | :expr:`result.labels.row_count == input.data.row_count` + | :expr:`result.model.centroids.is_empty == false` + | :expr:`result.model.clusters.row_count == desc.cluster_count` + | :expr:`result.model.clusters.column_count == input.data.column_count` + | :expr:`result.iteration_count <= desc.max_iteration_count` + + +Inference :expr:`onedal::infer(...)` +------------------------------------ Input ~~~~~ -.. code-block:: c++ - - namespace onedal::kmeans { +:: class infer_input { public: @@ -128,26 +392,107 @@ Input infer_input(const model& m); infer_input(const model& m, const table& data); + const model& get_model() const; + const table& get_data() const; + infer_input& set_model(const model&); infer_input& set_data(const table&); }; - } // namespace onedal::kmeans +.. namespace:: onedal::kmeans +.. class:: infer_input + + .. function:: infer_input() + + Creates input for the inference operation with the default attribute + values. + + + .. function:: infer_input(const kmeans::model& model) + + Creates input for the inference operation with the given :expr:`model`, the + other attributes get default values. + + + .. function:: infer_input(const kmeans::model& model, const table& data) + + Creates input for the inference operation with the given :expr:`model` and + :expr:`data`. + + + .. member:: table data = table() + + :math:`n \times p` table with the data to be assigned to the clusters, + where each row stores one feature vector. + + Getter & Setter + | ``const table& get_data() const`` + | ``infer_input& set_data(const table&)`` + + + .. member:: kmeans::model model = kmeans::model() + + The trained K-Means model (see :expr:`kmeans::model`). + + Getter & Setter + | ``const kmeans::model& get_model() const`` + | ``infer_input& set_model(const kmeans::model&)`` Result ~~~~~~ -.. code-block:: c++ - - namespace onedal::kmeans { +:: class infer_result { public: + infer_result(); + const table& get_labels() const; + double get_objective_function_value() const; }; - } // namespace onedal::kmeans +.. class:: infer_result + + .. function:: infer_result() + + Creates result of the inference operation with the default attribute + values. + + + .. member:: table labels = table() + + :math:`n \times 1` table with assignments labels to feature vectors in the + input data. + + Getter + | ``const table& get_labels() const`` + + + .. member:: double objective_function_value = 0.0 + + The value of the objective function :math:`\Phi_X(C)`, where :math:`C` is + defined by the corresponding :expr:`infer_input::model::centroids`. + + Invariants + | :expr:`objective_function_value >= 0.0` + + +Operation semantics +~~~~~~~~~~~~~~~~~~~ +.. namespace:: onedal +.. function:: template \ + kmeans::infer_result infer(const Descriptor& desc, \ + const kmeans::infer_input& input) + :tparam Descriptor: K-Means algorithm descriptor :expr:`kmeans::desc`. + Preconditions + | :expr:`input.data.is_empty == false` + | :expr:`input.model.centroids.is_empty == false` + | :expr:`input.model.centroids.row_count == desc.cluster_count` + | :expr:`input.model.centroids.column_count == input.data.column_count` + Postconditions + | :expr:`result.labels.is_empty == false` + | :expr:`result.labels.row_count == input.data.row_count` diff --git a/source/elements/oneDAL/source/bibliography.rst b/source/elements/oneDAL/source/bibliography.rst index a2af4d447e..35b6e53412 100644 --- a/source/elements/oneDAL/source/bibliography.rst +++ b/source/elements/oneDAL/source/bibliography.rst @@ -4,14 +4,19 @@ Bibliography ============ -For more information about algorithms implemented in |dal_full_name| (|dal_short_name|), refer to the following publications: +For more information about algorithms implemented in |dal_full_name| +(|dal_short_name|), refer to the following publications: .. [OpenCLSpec] - Khronos OpenCL Working Group, The OpenCL Specification + Khronos OpenCL Working Group, The OpenCL Specification Version:2.1 Document Revision:24 Available from `opencl-2.1.pdf `_ - + .. [SYCLSpec] - Khronos®OpenCL™ Working Group — SYCL™ subgroup, SYCL™ Specification + Khronos®OpenCL™ Working Group — SYCL™ subgroup, SYCL™ Specification SYCL™ integrates OpenCL™ devices with modern C++, Version 1.2.1 Available from `sycl-1.2.1.pdf `_ + +.. [Lloyd82] + Stuart P Lloyd. *Least squares quantization in PCM*. IEEE Transactions on + Information Theory 1982, 28 (2): 1982pp: 129–137. From c1d2537a6727ee0f0db53dd1c6212b752d676cad Mon Sep 17 00:00:00 2001 From: Ekaterina Mekhnetsova Date: Tue, 24 Mar 2020 17:31:23 +0300 Subject: [PATCH 16/31] Minor updates to README and Style Guide (#93) Co-authored-by: Mekhnetsova, Ekaterina --- README.rst | 26 +++++++++++++------------- style-guide.rst | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README.rst b/README.rst index b0604150d1..0b5b7112d0 100644 --- a/README.rst +++ b/README.rst @@ -5,16 +5,16 @@ oneAPI Specifications .. image:: https://github.com/oneapi-src/oneapi-spec/workflows/CI/badge.svg :target: https://github.com/oneapi-src/oneapi-spec/actions?query=workflow%3ACI -This repo contains the sources for the `oneAPI Specification`_ +This repo contains the sources for the `oneAPI Specification`_. The document is built with `Sphinx`_ using a theme provided by `Read -the Docs`_ +the Docs`_. --------------------------------- -Editing with Github Web Interface +Editing with GitHub Web Interface --------------------------------- -The simplest and quickest way to edit is directly in the github web +The simplest and quickest way to edit is directly in the GitHub web interface. It has an editor, previewer, and lets you commit changes. You won't need to install any local tools. The previewer knows how to render RST, but not the sphinx directives so it will not @@ -32,11 +32,11 @@ to do the same task manually. Setup ----- -Install python 3 and doxygen (>= 1.8.17). To install on **Ubuntu**:: +Install Python 3 and doxygen (>= 1.8.17). To install on **Ubuntu**:: sudo scripts/install.sh -Create and activate a python virtual environment with all required tools:: +Create and activate a Python virtual environment with all required tools:: python scripts/oneapi.py spec-venv source spec-venv/bin/activate @@ -45,12 +45,12 @@ To install directly with pip:: pip install -r requirements.txt -On windows:: +On Windows:: python scripts\oneapi.py spec-venv spec-venv\Scripts\activate -MKL and Level Zero are temporarily in separate private repos. If you have access to the repos you can clone them:: +MKL and Level Zero are temporarily in separate private repos. If you have access to the repos, you can clone them:: python scripts/oneapi.py clones @@ -61,8 +61,8 @@ To build the html document:: python scripts/oneapi.py html -This will not work on windows because we are using symbolic links for -the elements that are in separate repos. However, windows can build +This will not work on Windows because we are using symbolic links for +the elements that are in separate repos. However, Windows can build individual specs for individual elements. The document is organized as a book with chapters. Each element of @@ -91,7 +91,7 @@ examples. We may not want to try to correct them. Editing Tools ------------- -For simple edits to individual files, you can use the github web +For simple edits to individual files, you can use the GitHub web interface. **Emacs** has a built-in ReST mode. It does some syntax highlighting and @@ -125,12 +125,12 @@ You can run a docker container with:: CI -- -We use Github actions. See .github/workflows/main.yml +We use GitHub actions. See `<.github/workflows/main.yml>`_ On every commit, the CI system builds and publishes the document to the staging server. To see the URL, look at the end of the log for the build step in the CI system. The staging server is an s3 bucket, and -the access keys are managed as github action secrets. PR's based on +the access keys are managed as GitHub action secrets. PR's based on forks do not have access to the keys and will not publish on the staging server. diff --git a/style-guide.rst b/style-guide.rst index dfc002297e..4cdc3976b5 100644 --- a/style-guide.rst +++ b/style-guide.rst @@ -19,7 +19,7 @@ Convention for titles:: ~~~~~~~~~~~~~~~~~~~ -Follow the `Python Style Guide https://devguide.python.org/documenting/#style-guide`_ +Follow the `Python Style Guide `_ This section needs work. From 229e044155d8aa0474bdaef67c324475e1548c4d Mon Sep 17 00:00:00 2001 From: Michael Smirnov Date: Tue, 24 Mar 2020 17:35:08 +0300 Subject: [PATCH 17/31] Initial version of tables specification (#88) --- .../source/data_management/builders.rst | 5 + .../oneDAL/source/data_management/index.rst | 1 + .../oneDAL/source/data_management/tables.rst | 472 ++++++++++++++++++ .../programming_model/algorithm_anatomy.rst | 6 + source/elements/oneDAL/source/terminology.rst | 16 +- 5 files changed, 495 insertions(+), 5 deletions(-) create mode 100644 source/elements/oneDAL/source/data_management/builders.rst diff --git a/source/elements/oneDAL/source/data_management/builders.rst b/source/elements/oneDAL/source/data_management/builders.rst new file mode 100644 index 0000000000..1695c01991 --- /dev/null +++ b/source/elements/oneDAL/source/data_management/builders.rst @@ -0,0 +1,5 @@ +.. _Builders: + +======== +Builders +======== diff --git a/source/elements/oneDAL/source/data_management/index.rst b/source/elements/oneDAL/source/data_management/index.rst index 5e1065c856..1965d88681 100644 --- a/source/elements/oneDAL/source/data_management/index.rst +++ b/source/elements/oneDAL/source/data_management/index.rst @@ -13,3 +13,4 @@ and for model representation. tables.rst accessors.rst + builders.rst diff --git a/source/elements/oneDAL/source/data_management/tables.rst b/source/elements/oneDAL/source/data_management/tables.rst index 42483e2b9a..a2e83d9840 100644 --- a/source/elements/oneDAL/source/data_management/tables.rst +++ b/source/elements/oneDAL/source/data_management/tables.rst @@ -1,3 +1,475 @@ +.. highlight:: cpp + ====== Tables ====== + +Table is a generic |dal_short_name| concept over numerical data. It provides uniformed way +to pass the data to the library as :ref:`inputs ` or :ref:`parameters ` or get them as :ref:`results `. + +Table object is a container of two entities: data and metadata. + +- Data is organized in a shape of :math:`(N \times p)`, + where :math:`N` is a number of :term:`observations ` in a table and :math:`p` + is a number of :term:`features `. + +- Metadata defines the detailed structure of the data and, + therefore, helps |dal_short_name| to access the data efficiently + (see :ref:`Metadata API` section for details). + +------------------------------- +Table types in |dal_short_name| +------------------------------- +|dal_short_name| defines a set of classes, each class implements a table contract +with a specific set of metadata values (see :ref:`Metadata API` for details): + +.. list-table:: + :header-rows: 1 + + * - Table type + - :ref:`Data layout ` + - :ref:`Data format ` + - Is contiguous + - Is homogeneous + * - homogen_table_ + - row_major/column_major + - dense + - yes + - yes + * - soa_table_ + - column_major + - dense + - yes + - yes/no + * - aos_table_ + - row_major + - dense + - yes + - yes/no + * - csr_table_ + - row_major + - csr + - yes + - yes + +----------------------------- +Requirements on table objects +----------------------------- +Each table object in |dal_short_name| follows these requirements: + +1. Table objects in |dal_short_name| are :term:`immutable ` (it is not possible + to change data or metadata values inside the table). + +2. To create compex table types or modify table data, :ref:`builders ` should be used. + +3. Table objects in |dal_short_name| are reference-counted. One can use an assignment operator or copy constructor + on table objects to create another reference to it. + :: + + onedal::table table2 = table1; + // table1 and table2 share the data (no data copy is performed) + + table3 = table2; + // table1, table2 and table3 share the same data + +4. Every table type must be inherited from the base ``table`` class, + which represents a generalized :ref:`table API `. + +5. Every table type is implemented over particular set of metadata values and must hide other + implementation details from public API. + +------------------------------- +Entities and their dependencies +------------------------------- + +This section describes dependencies between all the classes and structures +related to tables. + +TBD + +.. _Table API: + +--------- +Table API +--------- +:: + + class table { + public: + table() = default; + + template >> + table(TableImpl&&); + + table(const table&); + table(table&&); + + table& operator=(const table&); + + std::int64_t get_feature_count() const noexcept; + std::int64_t get_observation_count() const noexcept; + bool is_empty() const noexcept; + const dal::table_meta& get_metadata() const noexcept; + }; + +.. namespace:: onedal +.. class:: table + + .. function:: table() + + Creates an empty table with no data and ``table_meta`` constructed by default + + .. function:: table(TableImpl&&) + + Creates a table object using the entity passed as a parameter + + :tparam TableImpl: The class that contains the table's implementation + + Invariants + | contract ``is_table_impl`` is satisfied + + .. function:: table(const table&) + + Creates new reference object on the table data + + .. function:: table(table&&) + + Moves one table object into another + + .. function:: table& operator=(const table&) + + Sets the current object reference to point to another one + + .. member:: std::int64_t feature_count = 0 + + The number of :term:`features ` :math:`p` in the table. + + Getter + | ``std::int64_t get_feature_count() const noexcept`` + + Invariants + | ``feature_count >= 0`` + + .. member:: std::int64_t observation_count = 0 + + The number of :term:`observations ` :math:`N` in the table. + + Getter + | ``std::int64_t get_observation_count() const noexcept`` + + Invariants + | ``observation_count >= 0`` + + .. member:: bool is_empty = true + + If ``feature_count`` or ``observation_count`` are zero, the + table is empty. + + Getter + | ``bool is_empty() const noexcept`` + + .. member:: table_meta metadata = table_meta() + + The object that represents data structure inside the table + + Getter + | ``const dal::table_meta& get_metadata() const noexcept`` + + Invariants + | ``is_empty = false`` + +.. _homogen_table: + +Homogeneous table +----------------- +Class ``homogen_table`` is an implementation of a table type +for which the following is true: + +- Its data is dense and it is stored as one contiguous memory block +- All features have the same :ref:`data type ` + (but :ref:`feature types ` may differ) + +:: + + class homogen_table : public table { + public: + // TODO: + // Consider constructors with user-provided allocators & deleters + + homogen_table(const homogen_table&); + homogen_table(homogen_table&&); + + homogen_table(std::int64_t N, std::int64_t p, data_layout layout); + + template + homogen_table(const T* const data_pointer, std::int64_t N, std::int64_t p, data_layout layout); + + homogen_table& operator=(const homogen_table&); + + data_type get_data_type() const noexcept; + bool has_equal_feature_types() const noexcept; + + template + const T* get_data_pointer() const noexcept; + }; + +.. namespace:: onedal +.. class:: homogen_table + + .. function:: homogen_table(const homogen_table&) + + Creates new reference object on the table data + + .. function:: homogen_table(homogen_table&&) + + Moves current reference object into another one + + .. function:: homogen_table(std::int64_t N, std::int64_t p, data_layout layout) + + Creates a homogeneous table of shape :math:`N \times p` with + default |dal_short_name| allocator + + .. function:: homogen_table(const T* const data_pointer, std::int64_t N, std::int64_t p, data_layout layout) + + :tparam T: The type of pointer to the data + + Creates a homogeneous table of shape :math:`N \times p` with + the user-defined data. Uses the provided pointer to access data (no copy is performed). + + .. function:: homogen_table& operator=(const homogen_table&) + + Sets the current object reference to point to another + + .. member:: onedal::data_type data_type + + The type of underlying data + + Getter + | ``data_type get_data_type() const noexcept`` + + .. member:: bool feature_types_equal + + Flag that indicates whether or not the `feature_type` fields + of `metadata` are all equal + + Getter + | ``bool has_equal_feature_types() const noexcept`` + + .. member:: const T* data_pointer + + :tparam T: The type of pointer to the data + + The pointer to underlying data + + Getter + | ``const T* get_data_pointer() const noexcept`` + +.. _soa_table: + +Structure-of-arrays table +------------------------- +TBD + +.. _aos_table: + +Arrays-of-structure table +------------------------- +TBD + +.. _csr_table: + +Compressed-sparse-row table +--------------------------- +TBD + +.. _Metadata API: + +------------ +Metadata API +------------ +Table metadata contains structures describing how the data +are stored inside the table and how efficiently access them. + +:: + + class table_meta { + public: + table_meta(); + + std::int64_t get_feature_count() const noexcept; + table_meta& set_feature_count(std::int64_t); + + const feature_info& get_feature(std::int64_t index) const; + table_meta& add_feature(const feature_info&); + + data_layout get_layout() const noexcept; + table_meta& set_layout(data_layout); + + bool is_contiguous() const noexcept; + table_meta& set_contiguous(bool); + + bool is_homogeneous() const noexcept; + + data_format get_format() const noexcept; + table_meta& set_format(data_format); + }; + +.. namespace:: onedal +.. class:: table_meta + + .. member:: std::int64_t feature_count = 0 + + The number of :term:`features ` :math:`p` in the table. + + Getter & Setter + | ``std::int64_t get_feature_count() const noexcept`` + | ``table_meta& set_feature_count(std::int64_t)`` + + Invariants + | ``feature_count >= 0`` + + .. member:: feature_info feature + + Information about a particular :term:`feature` in the table + + Getter & Setter + | ``const feature_info& get_feature(std::int64_t index) const`` + | ``table_meta& add_feature(const feature_info&)`` + + .. member:: data_layout layout = data_layout::row_major + + Flag that indicates whether the data is in a row-major or column-major format. + + Getter & Setter + | ``data_layout get_layout() const noexcept`` + | ``table_meta& set_layout(data_layout)`` + + .. member:: bool is_contiguous = true + + Flag that indicates whether the data is stored in contiguous blocks of memory by + the axis of ``layout``. + For example, if ``is_contiguous == true`` and ``data_layout`` is ``row_major``, + the data is stored contiguously in each row. + + Getter & Setter + | ``bool is_contiguous() const noexcept`` + | ``table_meta& set_contiguous(bool)`` + + .. function:: bool is_homogeneous() const noexcept + + Returns true if all features have the same ``data_type`` + + .. member:: data_format format = data_format::dense + + Description of the format used for data representation inside the table + + Getter & Setter + | ``data_format get_format() const noexcept`` + | ``table_meta& set_format(data_format)`` + +.. _Data layout API: + +Data layout +----------- +:: + + enum class data_layout : std::int64_t { + row_major, + column_major + }; + +.. namespace:: onedal +.. class:: data_layout + + Structure that represents underlying data layout + +.. _Data format API: + +Data format +----------- +:: + + enum class data_format : std::int64_t { + dense, + csr + }; + +.. namespace:: onedal +.. class:: data_format + + Structure that represents underlying format of the data + +Feature info +------------ +:: + + class feature_info { + public: + feature(data_type, feature_type); + + data_type get_data_type() const noexcept; + feature_type get_type() const noexcept; + }; + +.. namespace:: onedal +.. class:: feature_info + + Structure that represents information about particular :term:`feature` + + Invariants: + | ``feature_type::nominal`` or ``feature_type::ordinal`` + are avaliable only with integer ``data_type`` + | ``feature_type::contiguous`` avaliable only with floating-point ``data_type`` + +.. _Data type: + +Data type +--------- +:: + + enum class data_type : std::int64_t { + u32, u64 + i32, i64, + f32, f64 + }; + +.. namespace:: onedal +.. class:: data_type + + Structure that represents runtime information about feature data type. + + |dal_short_name| supports next data types: + + - ``std::uint32_t`` + - ``std::uint64_t`` + - ``std::int32_t`` + - ``std::int64_t`` + - ``float`` + - ``double`` + +.. _Feature type: + +Feature type +------------ +:: + + enum class feature_type : std::int64_t { + nominal, + ordinal, + contiguous + }; + +.. namespace:: onedal +.. class:: feature_type + + Structure that represents runtime information about feature logical type. + + feature_type::nominal + Discrete feature type, non-ordered + + feature_type::ordinal + Discrete feature type, ordered + + feature_type::contiguous + Contiguous feature type diff --git a/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst b/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst index f48ca5fc38..eceb58481d 100644 --- a/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst +++ b/source/elements/oneDAL/source/programming_model/algorithm_anatomy.rst @@ -2,6 +2,8 @@ Algorithm anatomy ================= +.. _Descriptor: + ---------- Descriptor ---------- @@ -10,9 +12,13 @@ Descriptor Operations ---------- +.. _Input: + Input ----- +.. _Result: + Result ------ diff --git a/source/elements/oneDAL/source/terminology.rst b/source/elements/oneDAL/source/terminology.rst index 1f7310b4eb..0251077b79 100644 --- a/source/elements/oneDAL/source/terminology.rst +++ b/source/elements/oneDAL/source/terminology.rst @@ -6,10 +6,10 @@ Terminology .. glossary:: - API + API Application Programming Interface - Batch Mode + Batch Mode The computation mode for an algorithm in |dal_short_name|, where all the data needed for computation is available at the start and fits the memory of the device on which the computations are performed. @@ -21,16 +21,19 @@ Terminology DPC++ Data Parallel C++ (DPC++) is a high-level language designed for data parallel programming productivity. DPC++ is based on :term:`SYCL* ` from the Khronos* Group to support data parallelism and heterogeneous programming. - + Feature - A single column of matrix :math:`X` from a dataset. + A single vector of length `N` that encodes information about values of a single :term:`variable`. Feature vector A single real-valued vector of length :math:`p` that encodes information about a real object or an event. Host/Device - OpenCL [OpenCLSpec]_ refers to CPU that controls the connected GPU executing kernels. + OpenCL [OpenCLSpec]_ refers to CPU that controls the connected GPU executing kernels. + + Immutability + The object is immutable when it is not possible to change its state after it is constructed. JIT Just in Time Compilation --- compilation during execution of a program. @@ -67,6 +70,9 @@ Terminology Use case A scenario that describes how a user might interact with a |dal_short_name| algorithm. + Variable + A single attribute of described object with defined type and domain. + Workload A task of applying a |dal_short_name| algorithm to a dataset. From 04a8e9c0a06c0f6c3d578c4fc18a2d28c94ef87b Mon Sep 17 00:00:00 2001 From: Ruslan Israfilov Date: Tue, 24 Mar 2020 18:41:22 +0300 Subject: [PATCH 18/31] Add PCA math and API description --- .../source/algorithms/decomposition/pca.rst | 461 ++++++++++++++++++ .../elements/oneDAL/source/bibliography.rst | 5 + 2 files changed, 466 insertions(+) diff --git a/source/elements/oneDAL/source/algorithms/decomposition/pca.rst b/source/elements/oneDAL/source/algorithms/decomposition/pca.rst index bf1d2f6d6d..47b566668c 100644 --- a/source/elements/oneDAL/source/algorithms/decomposition/pca.rst +++ b/source/elements/oneDAL/source/algorithms/decomposition/pca.rst @@ -1,3 +1,464 @@ +.. highlight:: cpp +.. default-domain:: cpp + =================================== Principal Components Analysis (PCA) =================================== + +.. TODO: we either need to refer to the literature that describe the algorithm +.. (in present daal docs we do not always do that) or specify somewhere a single +.. source that contain all such descriptions and add more refs in individual algos +.. when necessary. It would help avoid different interpretation of the possible +.. minor differences and precisely say-we rely on that specific scheme + +Principal Component Analysis (PCA) is an algorithm for exploratory data analysis +and dimensionality reduction. PCA transforms a set of feature vectors of +possibly correlated features to a new set of uncorrelated features, called +principal components. Principal components are the directions of the largest +variance, that is, the directions where the data is mostly spread out. + +Given the training set :math:`X = \{ x_1, \ldots, x_n \}` of +:math:`p`-dimensional feature vectors and the number of principal components +:math:`r`, the problem is to compute :math:`r` principal directions +(:math:`p`-dimensional eigenvectors) for the training set. The eigenvectors can +be grouped into the :math:`r \times p` matrix :math:`T` that contains one +eigenvector in each row. + +oneDAL specifies two methods for PCA computation: + +#. `Covariance-based method`_ +#. `SVD-based method`_ + +----------------------- +Covariance-based method +----------------------- +[TBD] + +---------------- +SVD-based method +---------------- +[TBD] + +------------------- +Sign-flip technique +------------------- +Eigenvectors computed by some eigenvalue solvers are not uniquely defined due to +sign ambiguity. To get the deterministic result, a sign-flip technique should be +applied. One of the sign-flip techniques proposed in [Bro07]_ requires the +following modification of matrix :math:`T`: + +.. math:: + \hat{T}_i = T_i \cdot \mathrm{sgn}(\max_{1 \leq j \leq p } |{T}_{ij}|), \quad 1 \leq i \leq r, + +where :math:`T_i` is :math:`i`-th row, :math:`T_{ij}` is the element in the +:math:`i`-th row and :math:`j`-th column, :math:`\mathrm{sgn}(\cdot)` is the +signum function, + +.. math:: + \mathrm{sgn}(x) = + \begin{cases} + -1, & x < 0, \\ + 0, & x = 0, \\ + 1, & x > 0. + \end{cases} + +.. note:: + The sign-flip technique described above is an example. oneDAL spec does not + require implementation of this sign-flip technique. Implementer can choose an + arbitrary technique that modifies the eigenvectors' signs. + + +------------- +Usage example +------------- +:: + + onedal::pca::model run_training(const onedal::table& data) { + + const auto pca_desc = onedal::pca::desc{} + .set_component_count(5) + .set_deterministic(true); + + const auto result = onedal::train(pca_desc, data); + + print_table("means", result.get_means()); + print_table("variances", result.get_variances()); + print_table("eigenvalues", result.get_eigenvalues()); + print_table("eigenvectors", result.get_model().get_eigenvectors()); + + return result.get_model(); + } + + +:: + + onedal::table run_inference(const onedal::pca::model& model, + const onedal::table& new_data) { + + const auto pca_desc = onedal::pca::desc{} + .set_component_count(model.get_component_count()); + + const auto result = onedal::infer(pca_desc, model, new_data); + + print_table("labels", result.get_transformed_data()); + } + + +--- +API +--- +Methods +------- +:: + + namespace method { + struct cov {}; + struct svd {}; + using by_default = cov; + } // namespace method + + +.. namespace:: onedal::pca::method + +.. struct:: cov + + Tag-type that denotes `Covariance-based method`_. + + +.. struct:: svd + + Tag-type that denotes `SVD-based method`_. + + +.. type:: by_default = cov + + Alias tag-type for the `Covariance-based method`_. + + +Descriptor +---------- +:: + + template + class desc { + public: + desc(); + + int64_t get_component_count() const; + bool get_deterministic() const; + + desc& set_component_count(int64_t); + desc& set_deterministic(bool); + }; + +.. namespace:: onedal::pca + +.. class:: template \ + desc + + :tparam Float: The floating-point type that the algorithm uses for + intermediate computations. Can be :expr:`float` or :expr:`double`. + + :tparam Method: Tag-type that specifies an implementation of PCA algorithm. + Can be :expr:`method::cov`, :expr:`method::svd` or + :expr:`method::by_default`. + + .. function:: desc() + + Creates a new instance of the descriptor with the default attribute + values. + + + .. member:: std::int64_t component_count = 0 + + The number of principal components :math:`r`. If it is zero, the algorithm + computes the eigenvectors for all features, :math:`r = p`. + + Getter & Setter + | ``std::int64_t get_component_count() const`` + | ``desc& set_component_count(std::int64_t)`` + + Invariants + | :expr:`component_count >= 0` + + + .. member:: bool set_deterministic = true + + Specifies whether the algorithm applies the `Sign-flip technique`_ or uses + a deterministic eigenvalues solver. If it is `true`, directions of the + eigenvectors must be deterministic. + + Getter & Setter + | ``bool get_deterministic() const`` + | ``desc& set_deterministic(bool)`` + + +Model +----- +:: + + class model { + public: + model(); + + const table& get_eigenvectors() const; + int64_t get_component_count() const; + }; + +.. class:: model + + .. function:: model() + + Creates a model with the default attribute values. + + + .. member:: table eigenvectors = table() + + :math:`r \times p` table with the eigenvectors. Each row contains one + eigenvector. + + Getter + | ``const table& get_eigenvectors() const`` + + + .. member:: std::int64_t component_count = 0 + + The number of components :math:`r` in the trained model. + + Getter + | ``std::int64_t get_component_count() const`` + + Invariants + | :expr:`component_count == eigenvectors.row_count` + + + +Training :expr:`onedal::train(...)` +----------------------------------- +Input +~~~~~ +:: + + class train_input { + public: + train_input(); + train_input(const table& data); + + const table& get_data() const; + + train_input& set_data(const table&); + }; + +.. class:: train_input + + .. function:: train_input() + + Creates an input for the training operation with the default attribute + values. + + + .. function:: train_input(const table& data) + + Creates an input for the training operation with the given :expr:`data`. + + + .. member:: table data = table() + + :math:`n \times p` table with the training data, where each row stores one + feature vector. + + Getter & Setter + | ``const table& get_data() const`` + | ``train_input& set_data(const table&)`` + + +Result +~~~~~~ +:: + + class train_result { + public: + train_result(); + + const model& get_model() const; + const table& get_means() const; + const table& get_variances() const; + const table& get_eigenvalues() const; + }; + +.. class:: train_result + + .. function:: train_result() + + Creates a result of the training operation with the default attribute + values. + + + .. member:: pca::model model = pca::model() + + The trained PCA model. + + Getter + | ``const model& get_model() const`` + + + .. member:: table means = table() + + :math:`1 \times r` table that contains mean value for the first :math:`r` + features. + + Getter + | ``const table& get_means() const`` + + + .. member:: table variances = table() + + :math:`1 \times r` table that contains variance for the first :math:`r` + features. + + Getter + | ``const table& get_variances() const`` + + + .. member:: table eigenvalues = table() + + :math:`1 \times r` table that contains eigenvalue for for the first + :math:`r` features. + + Getter + | ``const table& get_eigenvalues() const`` + + +Operation semantics +~~~~~~~~~~~~~~~~~~~ +.. namespace:: onedal +.. function:: template \ + pca::train_result train(const Descriptor& desc, \ + const pca::train_input& input) + + :tparam Descriptor: PCA algorithm descriptor :expr:`pca::desc`. + + Preconditions + | :expr:`input.data.is_empty == false` + | :expr:`input.data.column_count >= desc.component_count` + + Postconditions + | :expr:`result.means.row_count == 1` + | :expr:`result.means.column_count == desc.component_count` + | :expr:`result.variances.row_count == 1` + | :expr:`result.variances.column_count == desc.component_count` + | :expr:`result.variances >= 0.0` + | :expr:`result.eigenvalues.row_count == 1` + | :expr:`result.eigenvalues.column_count == desc.component_count` + | :expr:`result.model.eigenvectors.row_count == 1` + | :expr:`result.model.eigenvectors.column_count == desc.component_count` + + +Inference :expr:`onedal::infer(...)` +------------------------------------ +Input +~~~~~ +:: + + class infer_input { + public: + infer_input(); + infer_input(const model& m); + infer_input(const model& m, const table& data); + + const model& get_model() const; + const table& get_data() const; + + infer_input& set_model(const model&); + infer_input& set_data(const table&); + }; + +.. namespace:: onedal::pca + +.. class:: infer_input + + .. function:: infer_input() + + Creates an input for the inference operation with the default attribute + values. + + + .. function:: infer_input(const pca::model& model) + + Creates an input for the inference operation with the given :expr:`model`, + the other attributes get default values. + + + .. function:: infer_input(const pca::model& model, const table& data) + + Creates an input for the inference operation with the given :expr:`model` + and :expr:`data`. + + + .. member:: table data = table() + + :math:`n \times p` table with the data to be projected to the :math:`r` + principal components previously extracted from a training set. + + Getter & Setter + | ``const table& get_data() const`` + | ``infer_input& set_data(const table&)`` + + + .. member:: pca::model model = pca::model() + + The trained PCA model (see :expr:`pca::model`). + + Getter & Setter + | ``const pca::model& get_model() const`` + | ``infer_input& set_model(const pca::model&)`` + + +Result +~~~~~~ +:: + + class infer_result { + public: + infer_result(); + + const table& get_transformed_data() const; + }; + + +.. class:: infer_result + + .. function:: infer_result() + + Creates a result of the inference operation with the default attribute + values. + + + .. member:: table transformed_data = table() + + :math:`n \times r` table that contains data projected to the :math:`r` + principal components. + + Getter + | ``const table& get_transformed_data() const`` + + +Operation semantics +~~~~~~~~~~~~~~~~~~~ +.. namespace:: onedal +.. function:: template \ + pca::infer_result infer(const Descriptor& desc, \ + const pca::infer_input& input) + + :tparam Descriptor: PCA algorithm descriptor :expr:`pca::desc`. + + Preconditions + | :expr:`input.data.is_empty == false` + | :expr:`input.model.eigenvectors.row_count == desc.component_count` + | :expr:`input.model.eigenvectors.column_count = input.data.column_count` + + Postconditions + | :expr:`result.transformed_data.row_count == input.data.row_count` + | :expr:`result.transformed_data.column_count == desc.component_count` diff --git a/source/elements/oneDAL/source/bibliography.rst b/source/elements/oneDAL/source/bibliography.rst index 35b6e53412..da678e0e09 100644 --- a/source/elements/oneDAL/source/bibliography.rst +++ b/source/elements/oneDAL/source/bibliography.rst @@ -20,3 +20,8 @@ For more information about algorithms implemented in |dal_full_name| .. [Lloyd82] Stuart P Lloyd. *Least squares quantization in PCM*. IEEE Transactions on Information Theory 1982, 28 (2): 1982pp: 129–137. + +.. [Bro07] + Bro, R.; Acar, E.; Kolda, T.. *Resolving the sign ambiguity in the singular + value decomposition*. SANDIA Report, SAND2007-6422, Unlimited Release, + October, 2007. From a11af60e6f7ff7d33c4b63cc5aa0d934df0a30cc Mon Sep 17 00:00:00 2001 From: Peng Tu Date: Tue, 24 Mar 2020 09:03:37 -0700 Subject: [PATCH 19/31] Touch on wordings in preparation for the March release. (#92) --- source/elements/oneVPL/source/VPL_device.rst | 12 ++--- .../oneVPL/source/VPL_device_context.rst | 12 ++--- .../elements/oneVPL/source/VPL_parameters.rst | 23 ++++---- .../oneVPL/source/VPL_workstreams.rst | 26 +++++----- source/elements/oneVPL/source/index.rst | 52 ++++++------------- 5 files changed, 51 insertions(+), 74 deletions(-) diff --git a/source/elements/oneVPL/source/VPL_device.rst b/source/elements/oneVPL/source/VPL_device.rst index 839e7108f5..abd3a27ac2 100644 --- a/source/elements/oneVPL/source/VPL_device.rst +++ b/source/elements/oneVPL/source/VPL_device.rst @@ -1,15 +1,15 @@ -:class:`vpl::DeviceInfo` defines device and property query interface. -At runtime, VPL discovers available devices in :type:`VplDeviceType`, +:class:`vpl::DeviceInfo` defines a device and property query interface. +At runtime, VPL discovers available devices declared in :type:`VplDeviceType`, the number of devices of each type (:func:`vpl::DeviceInfo::GetDeviceCount`), and :type:`vpl::VplDeviceProperty` of each device (:func:`vpl::DeviceInfo::GetDeviceProperty`). -This class also provides two additional important classes of functions: +This class also provides two important member functions: -1. :func:`vpl::DeviceInfo::GetPreferredDevice`: get a preferred device instance :type:`vpl::DeviceInstance` for a work -2. :func:`vpl::DeviceInfo::GetPreset`: get the device preset configuration for workstream :enum:`VplWorkstreamType` and device instance +1. :func:`vpl::DeviceInfo::GetPreferredDevice`: get a preferred device instance :type:`vpl::DeviceInstance` for a :class:`vpl::Workstream` (workstream_) +2. :func:`vpl::DeviceInfo::GetPreset`: get the device preset configuration for a :enum:`VplWorkstreamType` and a device instance We recommend the following code sequence to select a device and get the device's preset -configuration parameters before creating a workstream on a device: +configuration parameters before creating a :class:`Workstream` on a device: .. code-block:: c++ diff --git a/source/elements/oneVPL/source/VPL_device_context.rst b/source/elements/oneVPL/source/VPL_device_context.rst index f97836ca02..17cac8e167 100644 --- a/source/elements/oneVPL/source/VPL_device_context.rst +++ b/source/elements/oneVPL/source/VPL_device_context.rst @@ -1,9 +1,7 @@ -:class:`vpl::DeviceContext` represents device's driver context and -command queue for VPL operations. Depending on the operating systems and workloads, the low level -device contexts can be VAAPI, DX, OCL, GL for media, compute and rendering operations. -This class hides the low level contexts, while exposing -sufficient information to enable context sharing for different :class:`vpl::Workstream` -operations. +:class:`vpl::DeviceContext` defines a device's driver context and +command queue for VPL operations. Depending on the underlying operating systems and workstream operations, +the low level device contexts can be VAAPI, DX, OCL, GL for media, compute and rendering operations. +This class hides the details of the low level contexts, while enabling context sharing among several workstreams. This class provides the following functions: @@ -12,4 +10,4 @@ This class provides the following functions: 3. :func:`vpl::DeviceContext::RemoveWorkstream`: remove a workstream for the device context The device context is usually created implicitly inside the :class:`vpl::Workstream` constructor. -Application programmers can also create it explicitly and pass the context to multiple workstreams. \ No newline at end of file +Application programmers can also create it explicitly to share the context with multiple workstreams. \ No newline at end of file diff --git a/source/elements/oneVPL/source/VPL_parameters.rst b/source/elements/oneVPL/source/VPL_parameters.rst index 86a5084873..4ce5b38021 100644 --- a/source/elements/oneVPL/source/VPL_parameters.rst +++ b/source/elements/oneVPL/source/VPL_parameters.rst @@ -1,21 +1,20 @@ -:class:`vpl::VplParams` defines the parameter settings for decode, video process, encode -and DL inference. It addesses two separate aspects of video processing: +:class:`vpl::VplParams` defines the parameter settings for decode, video processing, encode +and DL inference. It addesses two aspects of video processing: - Easy to use device independent parameter settings for VPL application developers -- Easy to translate into device dependent settings for hardware accelerators +- Easy to translate into device dependent settings for VPL hardware plugin writers -This class provides common settings for video processing :class:`vpl::VplParams` such as +This class provides common settings for video processing in :class:`vpl::VplParams`, such as input/output formats, resolutions, frame rates, crop factors, aspect ratios, and operation -specific settings :class:`vpl::VplParamsDecode` and :class:`vpl::VplParamsEncode` +specific settings in :class:`vpl::VplParamsDecode` and :class:`vpl::VplParamsEncode`, such as codec type, input/output buffer sizes, encoding bit rate control, and GOP structure parameters. -For VPL device plugin providers that support accelerators running autonomously on different nodes, -the parameter settings will need to be passsed across host boundaries similar to -gRPC. :class:`vpl::VplParams` will provide interface for serialization and deserialization -of the parameters as messages for this purpose. We are also evaluating general message -packages such as protobuf for future releases. +In the near future, oneVPL will support target devices running autonomously on different nodes, +where parameter settings need to be passsed across host boundaries similar to +gRPC. We will extend :class:`vpl::VplParams` to include serialization and deserialization +of the parameters as messages. We are also evaluating general message packages such as protobuf +as we finalize the API. Note that vendor specific extensions can be supported by subclassing -:class:`vpl::VplParams` to expose them to VPL application developers. - +:class:`vpl::VplParams` to expose them to oneVPL application developers. \ No newline at end of file diff --git a/source/elements/oneVPL/source/VPL_workstreams.rst b/source/elements/oneVPL/source/VPL_workstreams.rst index 5f16aaeefe..d649f8821e 100644 --- a/source/elements/oneVPL/source/VPL_workstreams.rst +++ b/source/elements/oneVPL/source/VPL_workstreams.rst @@ -7,22 +7,22 @@ There are four subclasses of :class:`vpl::Workstream` that perform the following - :class:`vpl::Decode`: decode a bitstream to raw frames - :class:`vpl::VideoProcess`: implement a video processing filter operation with raw frame input and output -- :code:`vpl::Infer`: invoke a Deep Learning model to infer on raw frame. Details of this subclass will be provided in a future release. +- :code:`vpl::Infer`: invoke a Deep Learning model to infer on a raw frame. Details of this subclass will be provided in a future release. - :class:`vpl::Encode`: encode raw frames to a bitstream -In the :class:`vpl::VideoProcess` subclass, a sequence of filters with single input and single output running on the same device context can be fused to the same workstream. -Operations executing on different device contexts are separated to different worksteams such that each workstream can be dispatched to a single device context. +In the :class:`vpl::VideoProcess` subclass, a sequence of filters with single input and single output running on the same device context can be fused into a single workstream. +Operations executing on different device contexts are separated to different worksteams such that each workstream can always be dispatched to a single device. Workstream Internals -------------------- -Each :class:`vpl::Workstream` contains the following information +Each :class:`vpl::Workstream` contains the following members: - :class:`vpl::VplParams`: the parameter settings of the workstream, i.e., resolution of the output per session or per frame. -- :class:`vpl::DeviceContext`: contains the execution device context of the workstream, i.e., VAAPI, DX, OCL, GL contexts for media, compute and rendering operations +- :class:`vpl::DeviceContext`: the execution device context of the workstream, i.e., VAAPI, DX, OCL, GL contexts for media, compute and rendering operations -The :class:`vpl::VplParams` provides the interface for setting the workstream configuration during initialization -and dynamically changing workstream settings during processing for frame level control. +Workstream per session configurations are set up during workstream instialization using :class:`vpl::VplParams`. User program can also dynamically modify a workstream's configuration +frame level control. Initialization Sequence ----------------------- @@ -36,7 +36,7 @@ The standard sequence to create a workstream consists of the following steps: #. Get the configuration presets for the selected device #. Create the workstream with the configuration setting :class:`vpl::config::VPLParams` and :class:`vpl::DeviceContext`. -The following transcoding example uses three workstreams: :class:`vpl::Decode`, :class:`vpl::Process` and :class:`vpl::Encode`, and shares a single context to execute them together: +The following transcoding example uses three workstreams: :class:`vpl::Decode`, :class:`vpl::VideoProcess` and :class:`vpl::Encode`, and shares a single context to execute them together: .. code-block:: c++ @@ -103,9 +103,9 @@ Dynamic Setting Control ----------------------- The :class:`vpl::VplParams` defines the workstream settings for the device. -User program can use its access functions to read and set the settings for the workstream. -After changing the configuration setting, user program then call the :cpp:func:`vpl::Workstream::UpdateDeviceConfig` function to propapge the setting to -device context. Configuration setting change takes effect for the subsequent calls to the worksteam. +User program can use its access functions to read and set the parameters for the workstream. +After modifying configuration settings, a user program needs to call :cpp:func:`vpl::Workstream::UpdateDeviceConfig` function to propapge the setting to the +device context. Configuration setting change takes effect in the next processing operation. The following example changes the output resolution in the middle of a decoding sequence. .. code-block:: c++ @@ -124,6 +124,4 @@ The following example changes the output resolution in the middle of a decoding } } -In the future releases, serialization operations of :class:`vpl::VplParams` -will be added to support the configuration synchronization to accelerator drivers -that are running autonomously on remote nodes. + diff --git a/source/elements/oneVPL/source/index.rst b/source/elements/oneVPL/source/index.rst index 616fa45fc1..6898043025 100644 --- a/source/elements/oneVPL/source/index.rst +++ b/source/elements/oneVPL/source/index.rst @@ -7,23 +7,23 @@ |vpl_full_name| (oneVPL) ************************ -The |vpl_full_name| is a programming interface for all video/image -related usages, with focus on portable media pipeline on CPU, GPU, AI -accelerators and FPGA, media, compute and render interoperability, to -provide the best cross domain pipeline experience. oneVPL libary provides -the following features: - -1. Cross architecture building blocks for Decode, Video Processing, - Deep Learning (DL) based video analytics and Encode. -2. A VPL-Memory Library provides image object passing among media, compute and graphics render. - phases of a video analytics pipeline, and, enables zero-copy buffer sharing - among CPU, GPU and various hardware accelerators. -3. Device discovery and device selection query interface for video operations. +The |vpl_full_name| is a programming interface for video processing and video analytics, +focusing on building portable media pipeline on CPU, GPU, Deep Learning (DL) +accelerators and FPGA. It aims for function and performance portabilities such that +applications built with oneVPL can be efficiently executed on the current and future +generation hardware without modification. oneVPL libary provides the following features: + +1. Cross architecture building blocks for Decode, Video Processing, Encode and + DL based video analytics. +2. A VPL-Memory Library for image object passing among media, compute and 3D rendering + phases of a video analytics pipeline, with zero-copying buffer sharing + among CPU, GPU, DL accelerators and FPGA. +3. Device discovery and device selection query interface for video and DL operations. Intel's implementation of VPL will be hosted at -https://software.intel.com/en-us/oneapi/vpl# after release to public. +https://software.intel.com/en-us/oneapi/vpl# with each public release. -See `VPL API Reference`_ for a detailed API description. +See `VPL API Reference`_ for the detailed API description. Device Discovery ================ @@ -37,27 +37,11 @@ Workstream Settings =================== .. include:: VPL_parameters.rst -Workstreams -=========== +Workstream +========== +.. _workstream: .. include:: VPL_workstreams.rst -The VPL API is defined around workstreams, which are referenced by -:cpp:type:`vplWorkstream`, an opaque pointer. See -:ref:`workstream-api` for all workstream APIs. - -A Workstream defines a set of settable and gettable properties to configure: - -* *Input and output*: image formats, frame rates, resolutions, - cropping, aspect ratios -* *Internal settings*: maximum number of decoded image buffers, - internal input raw data buffer size -* *Encoding preset and heuristics*: encoding bitrates, scenarios and - target usage - -:cpp:type:`VplWorkstreamProp` names all the properties. Get and set -the properites with :cpp:type:`vplGetConfigProperty` and -:cpp:func:`vplSetConfigProperty`. - Decode ------ .. include:: VPL_decode.rst @@ -74,10 +58,8 @@ VPL Memory ========== .. include:: VPL_memory.rst - VPL API Reference ================= - .. _device-api: Device From 793cd0975c8632991d26a2a1fba7349ffc6a02ee Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Tue, 24 Mar 2020 20:15:36 -0500 Subject: [PATCH 20/31] fix spelling --- scripts/oneapi.py | 9 + source/elements/dpcpp/source/index.rst | 6 +- .../elements/oneCCL/source/introduction.rst | 2 +- .../spec/collective_call_attributes.rst | 2 +- .../source/spec/communication_primitives.rst | 4 +- .../oneCCL/source/spec/completion.rst | 2 +- .../oneCCL/source/spec/cpu_support.rst | 2 +- .../oneCCL/source/spec/gpu_support.rst | 6 +- .../oneCCL/source/spec/main_objects.rst | 6 +- .../oneDAL/source/data_management/tables.rst | 2 +- source/elements/oneDNN/include/dnnl.hpp | 2 +- source/elements/oneDNN/source/api/memory.rst | 2 +- .../source/algorithms/parallel_do_func.rst | 2 +- .../containers/concurrent_hash_map_cls.rst | 2 +- .../concurrent_map_cls/modifiers_map_cls.rst | 2 +- .../containers/concurrent_queue_cls.rst | 2 +- .../concurrent_set_cls/modifiers_set_cls.rst | 4 +- .../construct_destroy_copy_map_cls.rst | 4 +- .../construct_destroy_copy_set_cls.rst | 4 +- source/elements/oneTBB/source/exceptions.rst | 2 +- .../source/exceptions/specific_exceptions.rst | 2 +- .../source/flow_graph/func_node_cls.rst | 2 +- .../source/flow_graph/join_node_cls.rst | 2 +- .../source/flow_graph/node_priorities.rst | 6 +- .../flow_graph/sender_and_buffer_policy.rst | 6 +- source/elements/oneTBB/source/general.rst | 2 +- .../oneTBB/source/synchronization/mutexes.rst | 2 +- .../oneVPL/include/vpl/vpl_device.hpp | 2 +- .../oneVPL/include/vplmemory/vplm++.h | 2 +- source/elements/oneVPL/source/VPL_memory.rst | 4 +- .../elements/oneVPL/source/VPL_parameters.rst | 8 +- .../oneVPL/source/VPL_workstreams.rst | 6 +- source/elements/oneVPL/source/index.rst | 4 +- source/introduction.rst | 2 +- source/spelling_wordlist.txt | 277 ++++++++++++++++++ 35 files changed, 340 insertions(+), 54 deletions(-) diff --git a/scripts/oneapi.py b/scripts/oneapi.py index 9b9887effa..2fedb2cc94 100644 --- a/scripts/oneapi.py +++ b/scripts/oneapi.py @@ -327,6 +327,14 @@ def purge(root, target=None): for file in files: print('http://spec.oneapi.com/%s/%s' % (r, file)) +@action +def sort_words(root, target=None): + with open(join('source', 'spelling_wordlist.txt')) as fin: + lines = fin.readlines() + with open(join('source', 'spelling_wordlist.txt'), 'w') as fout: + for l in sorted(list(set(lines))): + fout.write(l) + @action def ci(root, target=None): root_only(root) @@ -354,6 +362,7 @@ def ci(root, target=None): 'prod-publish': prod_publish, 'purge': purge, 'site': site, + 'sort-words': sort_words, 'spec-venv': spec_venv, 'stage-publish': stage_publish} diff --git a/source/elements/dpcpp/source/index.rst b/source/elements/dpcpp/source/index.rst index 9e8ec7592c..dc7fcaa6da 100644 --- a/source/elements/dpcpp/source/index.rst +++ b/source/elements/dpcpp/source/index.rst @@ -55,16 +55,16 @@ required if covered by newer C++ or SYCL versions directly. ===================== ================ ================ ================ ============= Extension CPU GPU FPGA Test [#test]_ ===================== ================ ================ ================ ============= - USM Required [#usm]_ Required [#usm]_ Required [#usm]_ usm + USM Required [#USM]_ Required [#USM]_ Required [#USM]_ USM In-order queues Required Required Required NA [#na]_ Optional lambda name Required Required Required NA [#na]_ Reduction Required Required Required NA [#na]_ Subgroups Required Required Not required sub_group - Data flow pipes Not required Not required Required fpga_tests + Data flow pipes Not required Not required Required FPGA_tests ===================== ================ ================ ================ ============= .. [#test] Test directory within `extension tests`_ -.. [#usm] Minimum explicit USM support +.. [#USM] Minimum explicit USM support .. [#na] Not yet available. Detailed API and Language Descriptions diff --git a/source/elements/oneCCL/source/introduction.rst b/source/elements/oneCCL/source/introduction.rst index 674edcb92f..2433bb1535 100644 --- a/source/elements/oneCCL/source/introduction.rst +++ b/source/elements/oneCCL/source/introduction.rst @@ -25,7 +25,7 @@ capabilities such as: * User-defined pre-/post-processing of incoming buffers and reduction operation * Prioritization for communication operations -* Persistent communication operations (enables de-coupling one-time +* Persistent communication operations (enables decoupling one-time initialization and repetitive execution) * Fusion of multiple communication operations into the single one * Unordered communication operations diff --git a/source/elements/oneCCL/source/spec/collective_call_attributes.rst b/source/elements/oneCCL/source/spec/collective_call_attributes.rst index 5d0c658afc..a410fcdf9f 100644 --- a/source/elements/oneCCL/source/spec/collective_call_attributes.rst +++ b/source/elements/oneCCL/source/spec/collective_call_attributes.rst @@ -29,5 +29,5 @@ Collective Call Attributes const char* match_id; } ccl_coll_attr_t; -``ccl_coll_attr_t`` (``ccl::coll_attr`` in C++ version of API) is extendable structure which serves as a modificator of communication primitive behaviour. +``ccl_coll_attr_t`` (``ccl::coll_attr`` in C++ version of API) is extendable structure which serves as a modifier of communication primitive behavior. It can be optionally passed into any collective operation exposed by oneCCL. diff --git a/source/elements/oneCCL/source/spec/communication_primitives.rst b/source/elements/oneCCL/source/spec/communication_primitives.rst index 2fb4c4a86d..00703c7c7f 100644 --- a/source/elements/oneCCL/source/spec/communication_primitives.rst +++ b/source/elements/oneCCL/source/spec/communication_primitives.rst @@ -1,5 +1,5 @@ -Collective Opertations -====================== +Collective Operations +===================== |ccl_full_name| introduces the following list of communication primitives: diff --git a/source/elements/oneCCL/source/spec/completion.rst b/source/elements/oneCCL/source/spec/completion.rst index 6782eebccb..6a45f717ff 100644 --- a/source/elements/oneCCL/source/spec/completion.rst +++ b/source/elements/oneCCL/source/spec/completion.rst @@ -68,7 +68,7 @@ is_completed bool request::test(); -Returnes the value that indicates the status: +Returns the value that indicates the status: - 0 - operation is in progress - otherwise, the operation is completed. diff --git a/source/elements/oneCCL/source/spec/cpu_support.rst b/source/elements/oneCCL/source/spec/cpu_support.rst index c5b43e0afb..6677f88380 100644 --- a/source/elements/oneCCL/source/spec/cpu_support.rst +++ b/source/elements/oneCCL/source/spec/cpu_support.rst @@ -11,7 +11,7 @@ The example below demonstrates these concepts. Example ------- -Conisider simple ``allreduce`` example for CPU. +Consider simple ``allreduce`` example for CPU. #. Create CPU ccl stream object: diff --git a/source/elements/oneCCL/source/spec/gpu_support.rst b/source/elements/oneCCL/source/spec/gpu_support.rst index 32debf0780..a91bc8dcd0 100644 --- a/source/elements/oneCCL/source/spec/gpu_support.rst +++ b/source/elements/oneCCL/source/spec/gpu_support.rst @@ -4,14 +4,14 @@ GPU support The choice between CPU and GPU backends is performed by specifying ``ccl_stream_type`` value at the moment when ccl stream object is created: - For GPU backend you should specify ``ccl_stream_sycl`` as the first argument. -- For collective operations, which operate on SYCL* stream, C version of oneCCL API expects communication buffers to be ``sycl::buffer*`` objects casted to ``void*``. +- For collective operations, which operate on SYCL* stream, C version of oneCCL API expects communication buffers to be ``sycl::buffer*`` objects cast to ``void*``. The example below demonstrates these concepts. Example ------- -Conisider simple ``allreduce`` example for GPU. +Consider simple ``allreduce`` example for GPU. #. Create GPU ccl stream object: @@ -38,7 +38,7 @@ Conisider simple ``allreduce`` example for GPU. host_acc_sbuf[i] = rank; } -#. For demostration purposes only, modify the ``sendbuf`` on the GPU side: +#. For demonstration purposes only, modify the ``sendbuf`` on the GPU side: :: diff --git a/source/elements/oneCCL/source/spec/main_objects.rst b/source/elements/oneCCL/source/spec/main_objects.rst index ac9fe31e53..3ee64342c3 100644 --- a/source/elements/oneCCL/source/spec/main_objects.rst +++ b/source/elements/oneCCL/source/spec/main_objects.rst @@ -10,7 +10,7 @@ oneCCL Concepts oneCCL Environment ****************** -oneCCL Enviroment is a singleton object which is used as an entry +oneCCL Environment is a singleton object which is used as an entry point into the oneCCL library and which is defined only for C++ version of API. oneCCL Environment exposes a number of helper methods to manage other oneCCL objects, such as streams, communicators, etc. @@ -103,7 +103,7 @@ oneCCL Communicator defines participants of collective communication operations. communicator_t create_communicator(const ccl::comm_attr* attr = nullptr) const; } -When you create oneCCL Communicator, you can optionally specify attributes that control the runtime behaviour of oneCCL implementation. +When you create oneCCL Communicator, you can optionally specify attributes that control the runtime behavior of oneCCL implementation. oneCCL Communicator Attributes ------------------------------ @@ -119,4 +119,4 @@ oneCCL Communicator Attributes int color; } ccl_comm_attr_t; -``ccl_comm_attr_t`` (``ccl::comm_attr`` in C++ version of API) is extendable structure that serves as a modificator of communicator behaviour. +``ccl_comm_attr_t`` (``ccl::comm_attr`` in C++ version of API) is extendable structure that serves as a modifier of communicator behavior. diff --git a/source/elements/oneDAL/source/data_management/tables.rst b/source/elements/oneDAL/source/data_management/tables.rst index a2e83d9840..5d1a2ab44f 100644 --- a/source/elements/oneDAL/source/data_management/tables.rst +++ b/source/elements/oneDAL/source/data_management/tables.rst @@ -60,7 +60,7 @@ Each table object in |dal_short_name| follows these requirements: 1. Table objects in |dal_short_name| are :term:`immutable ` (it is not possible to change data or metadata values inside the table). -2. To create compex table types or modify table data, :ref:`builders ` should be used. +2. To create complex table types or modify table data, :ref:`builders ` should be used. 3. Table objects in |dal_short_name| are reference-counted. One can use an assignment operator or copy constructor on table objects to create another reference to it. diff --git a/source/elements/oneDNN/include/dnnl.hpp b/source/elements/oneDNN/include/dnnl.hpp index c9d951b48e..8a656bb834 100644 --- a/source/elements/oneDNN/include/dnnl.hpp +++ b/source/elements/oneDNN/include/dnnl.hpp @@ -433,7 +433,7 @@ enum class algorithm { eltwise_clip, /// Elementwise: pow eltwise_pow, - /// Elementwise: rectified linar unit (ReLU) (dst for backward) + /// Elementwise: rectified linear unit (ReLU) (dst for backward) eltwise_relu_use_dst_for_bwd, /// Elementwise: hyperbolic tangent non-linearity (tanh) (dst for backward) eltwise_tanh_use_dst_for_bwd, diff --git a/source/elements/oneDNN/source/api/memory.rst b/source/elements/oneDNN/source/api/memory.rst index 3bd4387654..57337a03e1 100644 --- a/source/elements/oneDNN/source/api/memory.rst +++ b/source/elements/oneDNN/source/api/memory.rst @@ -54,7 +54,7 @@ computations with this memory. For example: concat dimension / axis. * A forward convolution with a source memory object with zero in the minibatch - dimension would always produce a detination memory object with a zero in the + dimension would always produce a destination memory object with a zero in the minibatch dimension and perform no computations. * However, a forward convolution with a zero in one of the weights dimensions diff --git a/source/elements/oneTBB/source/algorithms/parallel_do_func.rst b/source/elements/oneTBB/source/algorithms/parallel_do_func.rst index 133648f60e..e2e0a5ec50 100644 --- a/source/elements/oneTBB/source/algorithms/parallel_do_func.rst +++ b/source/elements/oneTBB/source/algorithms/parallel_do_func.rst @@ -104,7 +104,7 @@ The table below shows the requirements on type ``Body``. * If ``Body::operator()`` accepts its argument by value, or if the ``InputIterator`` type does not also satisfy the requirements - of a forward iterator, then derefencing an ``InputIterator`` + of a forward iterator, then dereferencing an ``InputIterator`` must produce an rvalue reference. * Additional work items should be passed to the feeder as rvalues, for example via the ``std::move`` function. diff --git a/source/elements/oneTBB/source/containers/concurrent_hash_map_cls.rst b/source/elements/oneTBB/source/containers/concurrent_hash_map_cls.rst index 6fd288d39c..1c95878517 100644 --- a/source/elements/oneTBB/source/containers/concurrent_hash_map_cls.rst +++ b/source/elements/oneTBB/source/containers/concurrent_hash_map_cls.rst @@ -82,7 +82,7 @@ Example When keys are pointers, simply casting the pointer to a hash code may cause poor performance because the low-order bits of the hash code will be always zero if the pointer points to a -type with alignment restrictions. A way to remove this bias is to divide the casted pointer +type with alignment restrictions. A way to remove this bias is to divide the cast pointer by the size of the type, as indicated below in ``bold italic font``. diff --git a/source/elements/oneTBB/source/containers/concurrent_map_cls/modifiers_map_cls.rst b/source/elements/oneTBB/source/containers/concurrent_map_cls/modifiers_map_cls.rst index e503c45d4b..79e720a234 100644 --- a/source/elements/oneTBB/source/containers/concurrent_map_cls/modifiers_map_cls.rst +++ b/source/elements/oneTBB/source/containers/concurrent_map_cls/modifiers_map_cls.rst @@ -118,7 +118,7 @@ The following table provides information on the members of the The ``merge`` operation is concurrency-safe for the target table (i.e. the instance for which the method is called), but not for the source table. - The behaviour is underfined if ``source`` is concurrently + The behavior is undefined if ``source`` is concurrently modified or merged into more than one target table. ------------------------------------------------------------------------------------------ diff --git a/source/elements/oneTBB/source/containers/concurrent_queue_cls.rst b/source/elements/oneTBB/source/containers/concurrent_queue_cls.rst index 5f5269f50a..2fe50db463 100644 --- a/source/elements/oneTBB/source/containers/concurrent_queue_cls.rst +++ b/source/elements/oneTBB/source/containers/concurrent_queue_cls.rst @@ -144,7 +144,7 @@ The following table provides additional information on the members of this templ \ ``concurrent_queue( concurrent_queue&& src, const allocator_type& a )`` \ Supported since C++11. Constructs new queue by moving content from *src* using - specifed allocator. *src* is left in an unspecified state, but can be safely + specified allocator. *src* is left in an unspecified state, but can be safely destroyed. ------------------------------------------------------------------------------------------ \ ``~concurrent_queue()`` diff --git a/source/elements/oneTBB/source/containers/concurrent_set_cls/modifiers_set_cls.rst b/source/elements/oneTBB/source/containers/concurrent_set_cls/modifiers_set_cls.rst index 6764a1e37f..983eeba0e0 100644 --- a/source/elements/oneTBB/source/containers/concurrent_set_cls/modifiers_set_cls.rst +++ b/source/elements/oneTBB/source/containers/concurrent_set_cls/modifiers_set_cls.rst @@ -51,7 +51,7 @@ The following table provides information on the members of the \ ``std::pair insert(node_type&& nh)``. \ Attempts to insert the node owned by ``nh`` into the set. - If the attempt fails because an equvalent item already exists, + If the attempt fails because an equivalent item already exists, ownership of the node remains at ``nh``. Otherwise ``nh`` is left in an empty state. @@ -98,7 +98,7 @@ The following table provides information on the members of the The ``merge`` operation is concurrency-safe for the target set (i.e. the instance for which the method is called), but not for the source set. - The behaviour is underfined if ``source`` is concurrently + The behavior is undefined if ``source`` is concurrently modified or merged into more than one target set. ------------------------------------------------------------------------------------------ diff --git a/source/elements/oneTBB/source/containers/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.rst b/source/elements/oneTBB/source/containers/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.rst index c111a77e05..f357151821 100644 --- a/source/elements/oneTBB/source/containers/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.rst +++ b/source/elements/oneTBB/source/containers/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.rst @@ -78,7 +78,7 @@ concurrent_unordered_map \ ``concurrent_unordered_map(concurrent_unordered_map&& m, const allocator_type& a)`` \ Supported since C++11. Constructs a new table by moving content from *m* using - specifed allocator. *m* is left in an unspecified state, but can be safely + specified allocator. *m* is left in an unspecified state, but can be safely destroyed. ------------------------------------------------------------------------------------------ \ ``~concurrent_unordered_map()`` @@ -185,7 +185,7 @@ concurrent_unordered_multimap \ ``concurrent_unordered_multimap(concurrent_unordered_multimap&& m, const allocator_type& a)`` \ Supported since C++11. Constructs a new table by moving content from *m* using - specifed allocator. *m* is left in an unspecified state, but can be safely + specified allocator. *m* is left in an unspecified state, but can be safely destroyed. ------------------------------------------------------------------------------------------ \ ``~concurrent_unordered_multimap()`` diff --git a/source/elements/oneTBB/source/containers/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.rst b/source/elements/oneTBB/source/containers/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.rst index aee9b8edd3..6af24f4fbe 100644 --- a/source/elements/oneTBB/source/containers/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.rst +++ b/source/elements/oneTBB/source/containers/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.rst @@ -77,7 +77,7 @@ concurrent_unordered_set \ ``concurrent_unordered_set(concurrent_unordered_set&& m, const allocator_type& a)`` \ Supported since C++11. Constructs a new table by moving content from *m* using - specifed allocator. *m* is left in an unspecified state, but can be safely + specified allocator. *m* is left in an unspecified state, but can be safely destroyed. ------------------------------------------------------------------------------------------ \ ``~concurrent_unordered_set()`` @@ -182,7 +182,7 @@ concurrent_unordered_multiset \ ``concurrent_unordered_multiset(concurrent_unordered_multiset&& m, const allocator_type& a)`` \ Supported since C++11. Constructs a new table by moving content from *m* using - specifed allocator. *m* is left in an unspecified state, but can be safely + specified allocator. *m* is left in an unspecified state, but can be safely destroyed. ------------------------------------------------------------------------------------------ \ ``~concurrent_unordered_multiset()`` diff --git a/source/elements/oneTBB/source/exceptions.rst b/source/elements/oneTBB/source/exceptions.rst index ae6f66b029..abf13d2d30 100644 --- a/source/elements/oneTBB/source/exceptions.rst +++ b/source/elements/oneTBB/source/exceptions.rst @@ -15,7 +15,7 @@ The exact exception is captured when both of the following conditions are true: * The task's ``task_group_context`` was created in a translation unit compiled with ``TBB_USE_CAPTURED_EXCEPTION=0``. * The TBB library was built with a compiler that supports the ``std::exception_ptr`` feature of C++11. -Otherwise an appoximation of the original exception *x* is captured as follows: +Otherwise an approximation of the original exception *x* is captured as follows: * If ``x`` is a ``tbb_exception``, it is captured by ``x.move()``. diff --git a/source/elements/oneTBB/source/exceptions/specific_exceptions.rst b/source/elements/oneTBB/source/exceptions/specific_exceptions.rst index bc3d47f8d6..405fb5005c 100644 --- a/source/elements/oneTBB/source/exceptions/specific_exceptions.rst +++ b/source/elements/oneTBB/source/exceptions/specific_exceptions.rst @@ -38,7 +38,7 @@ Classes for Specific Exceptions. **Exception** **Thrown when...** =========================== ===================================================== bad_last_alloc * A ``pop`` operation on a ``concurrent_queue`` or - ``concurrent_bounded_queue`` corrersponds to a + ``concurrent_bounded_queue`` corresponds to a push that threw an exception. * An operation on a ``concurrent_vector`` cannot be performed because a prior diff --git a/source/elements/oneTBB/source/flow_graph/func_node_cls.rst b/source/elements/oneTBB/source/flow_graph/func_node_cls.rst index 7b79e854e6..b3a01eabf2 100644 --- a/source/elements/oneTBB/source/flow_graph/func_node_cls.rst +++ b/source/elements/oneTBB/source/flow_graph/func_node_cls.rst @@ -139,7 +139,7 @@ Example ------- :doc:`Data Flow Graph example ` -ilustrates how ``function_node`` could do computation on input data +illustrates how ``function_node`` could do computation on input data and pass the result to successors. Members diff --git a/source/elements/oneTBB/source/flow_graph/join_node_cls.rst b/source/elements/oneTBB/source/flow_graph/join_node_cls.rst index 2164264223..2425e2f96c 100644 --- a/source/elements/oneTBB/source/flow_graph/join_node_cls.rst +++ b/source/elements/oneTBB/source/flow_graph/join_node_cls.rst @@ -79,7 +79,7 @@ the table below. possibly available, the ``join_node`` will try to reserve a message at each port from their known predecessors. If it is unable to reserve a message - at a port, it un-marks that port, and releases all previously acquired + at a port, it unmarks that port, and releases all previously acquired reservations. If it is able to reserve a message at all ports, it broadcasts a tuple containing these messages to all successors. If at least one successor accepts the tuple, the reservations are consumed; otherwise, they are released. diff --git a/source/elements/oneTBB/source/flow_graph/node_priorities.rst b/source/elements/oneTBB/source/flow_graph/node_priorities.rst index 38faeb3052..b5c38e3451 100644 --- a/source/elements/oneTBB/source/flow_graph/node_priorities.rst +++ b/source/elements/oneTBB/source/flow_graph/node_priorities.rst @@ -78,7 +78,7 @@ Description With this extension the ``function_node``, the ``multifunction_node``, the ``async_node`` and the -``continue_node`` accept additional contstructor parameter of +``continue_node`` accept additional constructor parameter of ``node_priority_t`` type, which sets the node priority in the graph: the larger the specified value for the parameter, the higher the priority. The special constant value ``no_priority``, also the default value of the parameter, switches priority off @@ -90,7 +90,7 @@ task to execute, a thread will choose the one with the highest priority from tho graph which are available to be executed. If a node with priority has nested parallel construct the thread that waits this parallel -contruct to complete might take tasks with no priority, but may not take another priority +construct to complete might take tasks with no priority, but may not take another priority task. If such behavior is undesirable, we recommend to either use isolation or specify a priority for each node. @@ -109,7 +109,7 @@ mechanism in the library. Example ------- -The following basic example demostrates prioritization of one path in the graph over the +The following basic example demonstrates prioritization of one path in the graph over the other, which may help to improve overall performance of the graph. .. figure:: ../Resources/critical_path_in_graph.png diff --git a/source/elements/oneTBB/source/flow_graph/sender_and_buffer_policy.rst b/source/elements/oneTBB/source/flow_graph/sender_and_buffer_policy.rst index ca11d6ce6f..895ab83a7a 100644 --- a/source/elements/oneTBB/source/flow_graph/sender_and_buffer_policy.rst +++ b/source/elements/oneTBB/source/flow_graph/sender_and_buffer_policy.rst @@ -1,6 +1,6 @@ -========================================= -Fowarding, Buffering and Reception Policy -========================================= +========================================== +Forwarding, Buffering and Reception Policy +========================================== In an oneAPI Threading Building Blocks flow::graph, nodes which forward messages to successors have one of two possible forwarding policies, which are a diff --git a/source/elements/oneTBB/source/general.rst b/source/elements/oneTBB/source/general.rst index 611e2a9f2b..ad4df4024b 100644 --- a/source/elements/oneTBB/source/general.rst +++ b/source/elements/oneTBB/source/general.rst @@ -12,7 +12,7 @@ with the C++ execution and memory models. For example, a platform-specific implementation of threads may be used if that implementation provides the same execution guarantees as C++ threads. -An implementation of oneTBB shall support execution on single-core and multicore CPUs, +An implementation of oneTBB shall support execution on single core and multi-core CPUs, including those that provide simultaneous multithreading capabilities. On CPU, an implementation shall support nested parallelism, so that one diff --git a/source/elements/oneTBB/source/synchronization/mutexes.rst b/source/elements/oneTBB/source/synchronization/mutexes.rst index 832fd5784c..1add091529 100644 --- a/source/elements/oneTBB/source/synchronization/mutexes.rst +++ b/source/elements/oneTBB/source/synchronization/mutexes.rst @@ -2,7 +2,7 @@ Mutexes ======= -Mutexes provide MUTual EXclusion of threads from sections of code. +Mutexes provide Mutual Exclusion of threads from sections of code. In general, strive for designs that minimize the use of explicit locking, because it can lead to serial bottlenecks. If explicitly locking is necessary, try to spread it out so that multiple threads usually do not contend to lock the same mutex. diff --git a/source/elements/oneVPL/include/vpl/vpl_device.hpp b/source/elements/oneVPL/include/vpl/vpl_device.hpp index fdd9d1f318..e790d83394 100644 --- a/source/elements/oneVPL/include/vpl/vpl_device.hpp +++ b/source/elements/oneVPL/include/vpl/vpl_device.hpp @@ -83,7 +83,7 @@ class VPL_EXPORT DeviceInfo { */ VplDeviceProperty* GetDeviceProperty(VplDeviceType dtype, uint32_t id); - /** \brief Get prefered device + /** \brief Get preferred device * * \param[in] wstypes a bit mask of workstream types * \return preferred device instance for the workstream type diff --git a/source/elements/oneVPL/include/vplmemory/vplm++.h b/source/elements/oneVPL/include/vplmemory/vplm++.h index 735b152687..dd315a5802 100644 --- a/source/elements/oneVPL/include/vplmemory/vplm++.h +++ b/source/elements/oneVPL/include/vplmemory/vplm++.h @@ -189,7 +189,7 @@ class variant : public vplm::wrapper * getting/setting properties. * * To access underlying memory object within some framework (like - * Opencl or VAAPI), VPL Memory C++ API defines framework specific + * OpenCL or VAAPI), VPL Memory C++ API defines framework specific * memory handlers inherited from this base class. The key thing * to note is that end user can construct framework handler from * the base memory object. For example: diff --git a/source/elements/oneVPL/source/VPL_memory.rst b/source/elements/oneVPL/source/VPL_memory.rst index 9c2cfbf543..a1663e04b3 100644 --- a/source/elements/oneVPL/source/VPL_memory.rst +++ b/source/elements/oneVPL/source/VPL_memory.rst @@ -172,7 +172,7 @@ This helper class issues acquire and release operations to mark start/stop data access in constructor and destructor. Another "feature" of these helper classes is that they accept base memory object (:cpp:class:`vplm::memory`) in constructors. This means that we can -use helper classes to make implicit convertion between different +use helper classes to make implicit conversion between different framework objects. For example, with the following we will map our VAAPI image on to CPU: @@ -227,4 +227,4 @@ The VPL API defines 4 different helper classes, one for each supported device co :cpp:class:`vplm::cpu::image` :cpp:class:`vplm::opencl::image`, :cpp:class:`vplm::sycl::memory` and -:cpp:class:`vplm::vaapi::image`. \ No newline at end of file +:cpp:class:`vplm::vaapi::image`. diff --git a/source/elements/oneVPL/source/VPL_parameters.rst b/source/elements/oneVPL/source/VPL_parameters.rst index 4ce5b38021..de645a211e 100644 --- a/source/elements/oneVPL/source/VPL_parameters.rst +++ b/source/elements/oneVPL/source/VPL_parameters.rst @@ -1,5 +1,5 @@ :class:`vpl::VplParams` defines the parameter settings for decode, video processing, encode -and DL inference. It addesses two aspects of video processing: +and DL inference. It addresses two aspects of video processing: - Easy to use device independent parameter settings for VPL application developers - Easy to translate into device dependent settings for VPL hardware plugin writers @@ -7,14 +7,14 @@ and DL inference. It addesses two aspects of video processing: This class provides common settings for video processing in :class:`vpl::VplParams`, such as input/output formats, resolutions, frame rates, crop factors, aspect ratios, and operation specific settings in :class:`vpl::VplParamsDecode` and :class:`vpl::VplParamsEncode`, -such as codec type, input/output buffer sizes, encoding bit rate control, and GOP +such as CODEC type, input/output buffer sizes, encoding bit rate control, and GOP structure parameters. In the near future, oneVPL will support target devices running autonomously on different nodes, -where parameter settings need to be passsed across host boundaries similar to +where parameter settings need to be passed across host boundaries similar to gRPC. We will extend :class:`vpl::VplParams` to include serialization and deserialization of the parameters as messages. We are also evaluating general message packages such as protobuf as we finalize the API. Note that vendor specific extensions can be supported by subclassing -:class:`vpl::VplParams` to expose them to oneVPL application developers. \ No newline at end of file +:class:`vpl::VplParams` to expose them to oneVPL application developers. diff --git a/source/elements/oneVPL/source/VPL_workstreams.rst b/source/elements/oneVPL/source/VPL_workstreams.rst index d649f8821e..7f5f85c9d8 100644 --- a/source/elements/oneVPL/source/VPL_workstreams.rst +++ b/source/elements/oneVPL/source/VPL_workstreams.rst @@ -11,7 +11,7 @@ There are four subclasses of :class:`vpl::Workstream` that perform the following - :class:`vpl::Encode`: encode raw frames to a bitstream In the :class:`vpl::VideoProcess` subclass, a sequence of filters with single input and single output running on the same device context can be fused into a single workstream. -Operations executing on different device contexts are separated to different worksteams such that each workstream can always be dispatched to a single device. +Operations executing on different device contexts are separated to different workstreams such that each workstream can always be dispatched to a single device. Workstream Internals -------------------- @@ -21,7 +21,7 @@ Each :class:`vpl::Workstream` contains the following members: - :class:`vpl::VplParams`: the parameter settings of the workstream, i.e., resolution of the output per session or per frame. - :class:`vpl::DeviceContext`: the execution device context of the workstream, i.e., VAAPI, DX, OCL, GL contexts for media, compute and rendering operations -Workstream per session configurations are set up during workstream instialization using :class:`vpl::VplParams`. User program can also dynamically modify a workstream's configuration +Workstream per session configurations are set up during workstream initialization using :class:`vpl::VplParams`. User program can also dynamically modify a workstream's configuration frame level control. Initialization Sequence @@ -104,7 +104,7 @@ Dynamic Setting Control The :class:`vpl::VplParams` defines the workstream settings for the device. User program can use its access functions to read and set the parameters for the workstream. -After modifying configuration settings, a user program needs to call :cpp:func:`vpl::Workstream::UpdateDeviceConfig` function to propapge the setting to the +After modifying configuration settings, a user program needs to call :cpp:func:`vpl::Workstream::UpdateDeviceConfig` function to propagate the setting to the device context. Configuration setting change takes effect in the next processing operation. The following example changes the output resolution in the middle of a decoding sequence. diff --git a/source/elements/oneVPL/source/index.rst b/source/elements/oneVPL/source/index.rst index 6898043025..d47e999627 100644 --- a/source/elements/oneVPL/source/index.rst +++ b/source/elements/oneVPL/source/index.rst @@ -9,9 +9,9 @@ The |vpl_full_name| is a programming interface for video processing and video analytics, focusing on building portable media pipeline on CPU, GPU, Deep Learning (DL) -accelerators and FPGA. It aims for function and performance portabilities such that +accelerators and FPGA. It aims for function and performance portability such that applications built with oneVPL can be efficiently executed on the current and future -generation hardware without modification. oneVPL libary provides the following features: +generation hardware without modification. oneVPL library provides the following features: 1. Cross architecture building blocks for Decode, Video Processing, Encode and DL based video analytics. diff --git a/source/introduction.rst b/source/introduction.rst index 0603297d09..5629b601da 100644 --- a/source/introduction.rst +++ b/source/introduction.rst @@ -53,7 +53,7 @@ Target Audience The expected audience for this specification includes: application developers, middleware developers, system software providers, and hardware providers. As a *contributor* to this specification, you will -shape the accelerator software eco-system. A productive and high +shape the accelerator software ecosystem. A productive and high performing system must take into account the constraints at all levels of the software stack. As a *user* of this document, you can ensure that your components will inter-operate with applications and system diff --git a/source/spelling_wordlist.txt b/source/spelling_wordlist.txt index e69de29bb2..8586ea67dd 100644 --- a/source/spelling_wordlist.txt +++ b/source/spelling_wordlist.txt @@ -0,0 +1,277 @@ +ALLgatherv +Acar +Adaptor +Advisor +Akl +Allgather +Allgatherv +Allreduce +Alltoall +BFloat +Bilinear +Colorspace +Covariance +Dataset +Deallocate +Deallocates +Deallocation +Deconvolution +Destructor +DeviceContext +DeviceInfo +Dilations +Dilgations +Elementwise +Emplaces +Enqueues +Enum +Fortran +Func +Getter +Hashcode +InputType +Invariants +KHash +Khronos +Kolda +MByte +Mutex +Mutexes +Namespace +Normalizations +OpenCL +Partitioners +Postconditions +Preallocating +Quantization +Queueing +Reinitializes +SVD +Subclassed +Tanh +Transactional +Trilinear +USM +VPL +VTune +Variadic +VideoProcess +Vj +VplParams +VplParamsDecode +VplParamsEncode +Winograd +Workstreams +accessor +accessors +activations +alloc +allocator +allocators +analytics +arg +async +attr +backend +backends +balancer +bfloat +bfp +bgra +bitflags +bitflgs +bitstream +bitstreams +bitwise +boolean +breakpoint +buf +bytecode +calloc +cancellable +cancelled +cancelling +ccl +centroid +centroids +clEnqueueMapBuffer +clEnqueueReadBuffer +clEnqueueWriteBuffer +codec +combinable +composability +concat +config +conformant +const +construct +constructible +copyable +cpu +csr +dataset +deallocated +deallocates +deallocation +decompositions +deconvolution +dependences +dereferencing +desc +desctructor +deserialization +destructor +destructors +dimensionality +dmabuf +dnnl +dst +dtype +durations +eigenvector +eigenvectors +elementwise +elementwisematmul +eltwise +enqueued +enqueueing +enqueues +enqueuing +fc +functor +functors +gRPC +gelu +hasher +ic +idx +initializer +interfacex +interoperability +intptr +iter +kNN +kh +libsdc +libstdc +logsoftmax +lookups +macOS +malloc +matmul +md +mem +memalign +metacharacter +middleware +minibatch +msg +msize +mul +multifunction +multimap +multiset +multithreading +mutex +mutexes +namespace +namespaces +nen +noncommutative +nondeterministically +notational +num +nv +oc +oneAPI +oneCCL +oneDAL +oneDNN +oneDPL +oneMKL +oneTBB +oneVPL +opencl +oqueueing +parallelized +parallelizing +partitioner +partitioners +pipelined +pmr +posix +ppl +pre +preallocated +preprocessing +prescan +prescanned +prescanning +protobuf +pthread +ptr +quantization +quantize +queueing +rangeNd +realloc +reassociating +reassociation +recv +relu +repartition +representable +req +resampling +reservable +rethrown +rhs +rnn +runtime +rvalue +rvalues +rw +scalability +scalable +signum +softmax +sortable +splittable +src +subclases +subclasses +subclassing +subcomputations +subrange +subranges +subtasks +subtree +superset +sycl +tanh +tbb +templated +th +transactional +transcoding +typedef +typename +uint +unallocated +unary +uncancelled +unmap +unmaps +unmarks +unregister +userptr +vaapi +variadic +viewable +vpl +vplLogLevel +vplStatus +vplm +workstream +workstreams +wstype From 82e967f7bbfb1e8720187128cbbe0edf619789e7 Mon Sep 17 00:00:00 2001 From: Maria Kraynyuk Date: Tue, 24 Mar 2020 20:49:33 -0700 Subject: [PATCH 21/31] onemkl: add intro, architecture, and domains API in rst format (#95) * onemkl: add intro, architecture, and domains API in rst format Co-authored-by: Caday, Peter Co-authored-by: Meterelliyoz, Mesut Co-authored-by: Patty, Spencer Co-authored-by: Rosenquist, Todd * fix unicode and gif issues with latex build of mkl Co-authored-by: Caday, Peter Co-authored-by: Meterelliyoz, Mesut Co-authored-by: Patty, Spencer Co-authored-by: Rosenquist, Todd Co-authored-by: Robert Cohn --- scripts/oneapi.py | 9 +- source/conf.py | 24 +- source/conf/common_conf.py | 1 + .../source/architecture/api_design.inc.rst | 180 +++++++ .../source/architecture/architecture.rst | 10 + .../source/architecture/exceptions.inc.rst | 7 + .../architecture/execution_model.inc.rst | 88 ++++ .../global_library_controls.inc.rst | 23 + .../source/architecture/memory_model.inc.rst | 29 ++ .../source/domains/blas/asum-usm-version.rst | 143 ++++++ .../oneMKL/source/domains/blas/asum.rst | 121 +++++ .../source/domains/blas/axpy-usm-version.rst | 156 ++++++ .../oneMKL/source/domains/blas/axpy.rst | 135 +++++ .../blas/blas-level-1-routines.inc.rst | 125 +++++ .../blas/blas-level-2-routines.inc.rst | 181 +++++++ .../blas/blas-level-3-routines.inc.rst | 109 ++++ .../domains/blas/blas-like-extensions.inc.rst | 53 ++ .../oneMKL/source/domains/blas/blas.rst | 13 + .../source/domains/blas/copy-usm-version.rst | 137 +++++ .../oneMKL/source/domains/blas/copy.rst | 116 +++++ .../source/domains/blas/dot-usm-version.rst | 158 ++++++ .../oneMKL/source/domains/blas/dot.rst | 136 +++++ .../source/domains/blas/dotc-usm-version.rst | 143 ++++++ .../oneMKL/source/domains/blas/dotc.rst | 121 +++++ .../source/domains/blas/dotu-usm-version.rst | 142 ++++++ .../oneMKL/source/domains/blas/dotu.rst | 119 +++++ .../source/domains/blas/gbmv-usm-version.rst | 208 ++++++++ .../oneMKL/source/domains/blas/gbmv.rst | 185 +++++++ .../source/domains/blas/gemm-usm-version.rst | 235 +++++++++ .../oneMKL/source/domains/blas/gemm.rst | 216 ++++++++ .../oneMKL/source/domains/blas/gemm_batch.rst | 440 ++++++++++++++++ .../oneMKL/source/domains/blas/gemm_ext.rst | 335 ++++++++++++ .../source/domains/blas/gemmt-usm-version.rst | 246 +++++++++ .../oneMKL/source/domains/blas/gemmt.rst | 228 +++++++++ .../source/domains/blas/gemv-usm-version.rst | 195 +++++++ .../oneMKL/source/domains/blas/gemv.rst | 174 +++++++ .../source/domains/blas/ger-usm-version.rst | 176 +++++++ .../oneMKL/source/domains/blas/ger.rst | 154 ++++++ .../source/domains/blas/gerc-usm-version.rst | 177 +++++++ .../oneMKL/source/domains/blas/gerc.rst | 154 ++++++ .../source/domains/blas/geru-usm-version.rst | 178 +++++++ .../oneMKL/source/domains/blas/geru.rst | 154 ++++++ .../source/domains/blas/hbmv-usm-version.rst | 187 +++++++ .../oneMKL/source/domains/blas/hbmv.rst | 164 ++++++ .../source/domains/blas/hemm-usm-version.rst | 234 +++++++++ .../oneMKL/source/domains/blas/hemm.rst | 214 ++++++++ .../source/domains/blas/hemv-usm-version.rst | 181 +++++++ .../oneMKL/source/domains/blas/hemv.rst | 158 ++++++ .../source/domains/blas/her-usm-version.rst | 170 +++++++ .../oneMKL/source/domains/blas/her.rst | 148 ++++++ .../source/domains/blas/her2-usm-version.rst | 182 +++++++ .../oneMKL/source/domains/blas/her2.rst | 159 ++++++ .../source/domains/blas/her2k-usm-version.rst | 223 ++++++++ .../oneMKL/source/domains/blas/her2k.rst | 198 ++++++++ .../source/domains/blas/herk-usm-version.rst | 199 ++++++++ .../oneMKL/source/domains/blas/herk.rst | 175 +++++++ .../source/domains/blas/hpmv-usm-version.rst | 181 +++++++ .../oneMKL/source/domains/blas/hpmv.rst | 157 ++++++ .../source/domains/blas/hpr-usm-version.rst | 171 +++++++ .../oneMKL/source/domains/blas/hpr.rst | 147 ++++++ .../source/domains/blas/hpr2-usm-version.rst | 182 +++++++ .../oneMKL/source/domains/blas/hpr2.rst | 163 ++++++ .../source/domains/blas/iamax-usm-version.rst | 153 ++++++ .../oneMKL/source/domains/blas/iamax.rst | 132 +++++ .../source/domains/blas/iamin-usm-version.rst | 147 ++++++ .../oneMKL/source/domains/blas/iamin.rst | 130 +++++ .../source/domains/blas/nrm2-usm-version.rst | 142 ++++++ .../oneMKL/source/domains/blas/nrm2.rst | 121 +++++ .../source/domains/blas/rot-usm-version.rst | 162 ++++++ .../oneMKL/source/domains/blas/rot.rst | 139 +++++ .../source/domains/blas/rotg-usm-version.rst | 145 ++++++ .../oneMKL/source/domains/blas/rotg.rst | 125 +++++ .../source/domains/blas/rotm-usm-version.rst | 192 +++++++ .../oneMKL/source/domains/blas/rotm.rst | 170 +++++++ .../source/domains/blas/rotmg-usm-version.rst | 185 +++++++ .../oneMKL/source/domains/blas/rotmg.rst | 165 ++++++ .../source/domains/blas/sbmv-usm-version.rst | 187 +++++++ .../oneMKL/source/domains/blas/sbmv.rst | 164 ++++++ .../source/domains/blas/scal-usm-version.rst | 146 ++++++ .../oneMKL/source/domains/blas/scal.rst | 131 +++++ .../domains/blas/sdsdot-usm-version.rst | 109 ++++ .../oneMKL/source/domains/blas/sdsdot.rst | 93 ++++ .../source/domains/blas/spmv-usm-version.rst | 177 +++++++ .../oneMKL/source/domains/blas/spmv.rst | 153 ++++++ .../source/domains/blas/spr-usm-version.rst | 164 ++++++ .../oneMKL/source/domains/blas/spr.rst | 145 ++++++ .../source/domains/blas/spr2-usm-version.rst | 175 +++++++ .../oneMKL/source/domains/blas/spr2.rst | 156 ++++++ .../source/domains/blas/swap-usm-version.rst | 148 ++++++ .../oneMKL/source/domains/blas/swap.rst | 128 +++++ .../source/domains/blas/symm-usm-version.rst | 232 +++++++++ .../oneMKL/source/domains/blas/symm.rst | 206 ++++++++ .../source/domains/blas/symv-usm-version.rst | 177 +++++++ .../oneMKL/source/domains/blas/symv.rst | 154 ++++++ .../source/domains/blas/syr-usm-version.rst | 168 ++++++ .../oneMKL/source/domains/blas/syr.rst | 146 ++++++ .../source/domains/blas/syr2-usm-version.rst | 180 +++++++ .../oneMKL/source/domains/blas/syr2.rst | 157 ++++++ .../source/domains/blas/syr2k-usm-version.rst | 221 ++++++++ .../oneMKL/source/domains/blas/syr2k.rst | 196 +++++++ .../source/domains/blas/syrk-usm-version.rst | 190 +++++++ .../oneMKL/source/domains/blas/syrk.rst | 172 +++++++ .../source/domains/blas/tbmv-usm-version.rst | 183 +++++++ .../oneMKL/source/domains/blas/tbmv.rst | 160 ++++++ .../source/domains/blas/tbsv-usm-version.rst | 185 +++++++ .../oneMKL/source/domains/blas/tbsv.rst | 162 ++++++ .../source/domains/blas/tpmv-usm-version.rst | 173 +++++++ .../oneMKL/source/domains/blas/tpmv.rst | 150 ++++++ .../source/domains/blas/tpsv-usm-version.rst | 176 +++++++ .../oneMKL/source/domains/blas/tpsv.rst | 153 ++++++ .../source/domains/blas/trmm-usm-version.rst | 231 +++++++++ .../oneMKL/source/domains/blas/trmm.rst | 208 ++++++++ .../source/domains/blas/trmv-usm-version.rst | 178 +++++++ .../oneMKL/source/domains/blas/trmv.rst | 155 ++++++ .../source/domains/blas/trsm-usm-version.rst | 227 +++++++++ .../oneMKL/source/domains/blas/trsm.rst | 205 ++++++++ .../oneMKL/source/domains/blas/trsm_batch.rst | 436 ++++++++++++++++ .../source/domains/blas/trsv-usm-version.rst | 180 +++++++ .../oneMKL/source/domains/blas/trsv.rst | 157 ++++++ .../domains/dense_linear_algebra.inc.rst | 19 + .../oneMKL/source/domains/dft/dft.rst | 49 ++ ...kl-dft-precision-mkl-dft-domain-commit.rst | 160 ++++++ ...domain-computebackward-typename-iotype.rst | 186 +++++++ ...-domain-computeforward-typename-iotype.rst | 185 +++++++ ...-dft-precision-mkl-dft-domain-getvalue.rst | 156 ++++++ ...-mkl-dft-precision-mkl-dft-domain-init.rst | 167 ++++++ ...-dft-precision-mkl-dft-domain-setvalue.rst | 178 +++++++ ...iptor-mkl-dft-precision-mkl-dft-domain.rst | 78 +++ .../discrete_fourier_transforms.inc.rst | 12 + .../oneMKL/source/domains/domains.rst | 13 + ...26D841-74F3-43C0-8EB5-F9E4107EF95D-low.gif | Bin 0 -> 924 bytes ...486559-84D2-4880-8EAB-2085A5BE2D10-low.jpg | Bin 0 -> 2613 bytes ...EEA5FC-8F46-4034-86D9-99900F93373C-low.gif | Bin 0 -> 914 bytes ...D-03C78F41-D16C-4BFE-B087-BE4F5A6A0ee1.png | Bin 0 -> 2329 bytes ...615D14-A026-4BF0-ACD6-0FC822FEC64E-low.gif | Bin 0 -> 1511 bytes ...1AF9F8-B166-4154-9BF1-4E2C99F1CE1F-low.png | Bin 0 -> 31040 bytes ...1A19C4-609F-4736-BCCF-D680013A2775-low.gif | Bin 0 -> 2145 bytes ...FC1496-B5B3-4DF6-A3EE-E6410BE1EFD2-low.jpg | Bin 0 -> 7629 bytes ...406EAC-6A1D-4D81-977C-08C018161E3F-low.jpg | Bin 0 -> 3108 bytes ...8E6C61-9171-4584-927A-83AC482ADC4D-low.gif | Bin 0 -> 2965 bytes ...9A59CC-C914-429D-AF87-93B16DABD291-low.jpg | Bin 0 -> 20475 bytes ...4BC54F-4C29-4577-80AA-BCBCD291582A-low.jpg | Bin 0 -> 2064 bytes ...DD2BB7-A284-495A-84F6-8A210AC499CD-low.gif | Bin 0 -> 1656 bytes ...D-0F47CAD3-006C-4A78-B229-413313667ee1.png | Bin 0 -> 1393 bytes ...B96BA7-C321-446D-A7B6-8D84C8CBC076-low.png | Bin 0 -> 14435 bytes ...315BD9-4F4D-42B0-A9B5-68A22D40756D-low.jpg | Bin 0 -> 6971 bytes ...F7C7EA-5657-4016-87A6-4E2721994C56-low.gif | Bin 0 -> 1248 bytes ...36B5CE-3BF3-4762-926B-05C5527FAE45-low.gif | Bin 0 -> 474 bytes ...93B947-42D6-4E5F-BBB3-9DC135AA724A-low.gif | Bin 0 -> 695 bytes ...1DBA27-691A-4B62-A255-FC33EA28D8D5-low.jpg | Bin 0 -> 6113 bytes ...EFE049-EB3B-4FC9-AD75-ABA053617238-low.jpg | Bin 0 -> 6723 bytes ...60A1A4-9522-40FC-AEEA-B64EB795144C-low.gif | Bin 0 -> 1514 bytes ...91B385-0AC2-41D3-AE61-48F63A7DBB02-low.png | Bin 0 -> 2645 bytes ...A750B8-7BCC-409B-BD48-E88FBEF86D32-low.jpg | Bin 0 -> 2290 bytes ...D-3605ACD9-02D1-46D7-B791-F2F76F0D9ee1.png | Bin 0 -> 1707 bytes ...C12345-5E6E-4D94-8072-460502CB52EC-low.gif | Bin 0 -> 2995 bytes ...9C1154-2E42-416F-8865-06E7382A3AA7-low.jpg | Bin 0 -> 6225 bytes ...F8B94B-EEFA-4308-925A-D2DF486FBF8B-low.gif | Bin 0 -> 841 bytes ...FCF9BC-28B7-4030-B904-1DBA03DD328C-low.gif | Bin 0 -> 924 bytes ...8BFB7A-6E88-4D12-9707-885C02A93A8E-low.jpg | Bin 0 -> 6234 bytes ...D-42AF2BFE-F8F1-4F96-A4E0-05D4FB5A7ee1.png | Bin 0 -> 1707 bytes ...D-482EEED2-95DF-4AA3-A484-E2CC41F29ee1.png | Bin 0 -> 2620 bytes ...D-482EEED2-95DF-4AA3-A484-E2CC41F29ee2.png | Bin 0 -> 2901 bytes ...35D5B4-6232-45CD-9A49-0264F8B0DBF4-low.gif | Bin 0 -> 920 bytes ...962DF4-16F2-438B-8866-4F105DC41242-low.jpg | Bin 0 -> 9609 bytes ...D-4F76F5A1-251F-4AC0-A2E0-A3B4B6F39ee1.png | Bin 0 -> 2727 bytes ...D-50960934-BF9F-4070-BC8E-AE05FD9AFee1.png | Bin 0 -> 1628 bytes ...D-50960934-BF9F-4070-BC8E-AE05FD9AFee2.png | Bin 0 -> 1610 bytes ...D-50960934-BF9F-4070-BC8E-AE05FD9AFee3.png | Bin 0 -> 1791 bytes ...D-50960934-BF9F-4070-BC8E-AE05FD9AFee4.png | Bin 0 -> 1486 bytes ...59E8DD-25FF-473A-86AA-1E71FFCD018C-low.jpg | Bin 0 -> 3086 bytes ...93801D-8E3B-43A2-989E-09A8431FD34E-low.png | Bin 0 -> 16158 bytes ...FA6703-70D8-4D01-B7AB-A163F4CDFC94-low.jpg | Bin 0 -> 2566 bytes ...24679E-82BB-4ECB-AC87-02FC7CF3C77F-low.jpg | Bin 0 -> 2604 bytes ...AAD02F-09F5-4B78-B404-384F1270FA1C-low.jpg | Bin 0 -> 5746 bytes ...D-608D9BA6-827F-48DE-A01F-0EE5991F7ee1.png | Bin 0 -> 1414 bytes ...D-608D9BA6-827F-48DE-A01F-0EE5991F7ee2.png | Bin 0 -> 1559 bytes ...D-608D9BA6-827F-48DE-A01F-0EE5991F7ee3.png | Bin 0 -> 1623 bytes ...D-608D9BA6-827F-48DE-A01F-0EE5991F7ee4.png | Bin 0 -> 1656 bytes ...D-608D9BA6-827F-48DE-A01F-0EE5991F7ee5.png | Bin 0 -> 1530 bytes ...D-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee1.png | Bin 0 -> 1414 bytes ...D-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee2.png | Bin 0 -> 1559 bytes ...D-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee3.png | Bin 0 -> 1623 bytes ...D-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee4.png | Bin 0 -> 1656 bytes ...D-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee5.png | Bin 0 -> 1530 bytes ...D-684BB993-83CA-4605-BD49-E493806C1ee1.png | Bin 0 -> 2727 bytes ...BD7CD8-8E05-409D-B84F-9B88E4CDE9DB-low.gif | Bin 0 -> 745 bytes ...53C93C-0634-4E53-8874-5ACBD4C9AA3E-low.gif | Bin 0 -> 2073 bytes ...B20CE7-1E2A-4340-995F-0E621DEF0E2D-low.jpg | Bin 0 -> 1989 bytes ...9B9421-ABAF-41EA-B8B9-3C9941EF5B72-low.png | Bin 0 -> 4089 bytes ...D-75532DED-BE44-4D85-B9C0-99C825778ee1.png | Bin 0 -> 1707 bytes ...8A8218-34E5-4625-8E51-A5D36A113D23-low.gif | Bin 0 -> 893 bytes ...E86F5B-8BE2-42D5-B6C7-AF9FF41CCE11-low.jpg | Bin 0 -> 2599 bytes ...A9B2F2-8D7C-4955-8EA8-D67616FB5B08-low.gif | Bin 0 -> 1515 bytes ...65198B-719A-44FB-8983-BBD3C196A663-low.jpg | Bin 0 -> 4979 bytes ...7D9F12-6BD9-4B74-BFA0-39A03D0660C3-low.jpg | Bin 0 -> 4260 bytes ...42E2B1-94AF-4622-B964-181611E3D1F2-low.jpg | Bin 0 -> 3211 bytes ...5E6B37-AC54-40D4-B134-E2816B7F30D3-low.gif | Bin 0 -> 914 bytes ...D223ED-624A-4390-9514-D8EF20BD04EE-low.gif | Bin 0 -> 2685 bytes ...1F2803-8F8F-4795-BF16-41856C6442CF-low.jpg | Bin 0 -> 21794 bytes ...2DCE6A-CB54-4CEA-A5EB-937893A3DB34-low.gif | Bin 0 -> 2188 bytes ...8B1A27-FCBD-4E61-ACC0-459C9EBAE376-low.gif | Bin 0 -> 616 bytes ...4ADCA4-1F33-4C30-90AD-128AA11689FF-low.png | Bin 0 -> 2380 bytes ...14D36E-F829-485D-BF04-8747E20120BD-low.gif | Bin 0 -> 684 bytes ...D-93DA36DC-40CA-4C01-B883-DABAB0D37ee1.png | Bin 0 -> 1707 bytes ...C9ACB0-9A38-4682-85C6-4E71711C32C0-low.gif | Bin 0 -> 749 bytes ...DF4ACE-8587-423F-B50A-E9A58BE272F9-low.gif | Bin 0 -> 2116 bytes ...EC239E-D5C9-4960-834B-827656CF3052-low.gif | Bin 0 -> 696 bytes ...32E129-264C-42F7-A75D-00E3705ABB80-low.png | Bin 0 -> 2877 bytes ...33FF12-964D-4450-949B-6AB7246435C7-low.gif | Bin 0 -> 1091 bytes ...B7A841-1EEC-49D6-BBF8-5B346FB32C1A-low.jpg | Bin 0 -> 2539 bytes ...0556B7-20F4-4EC9-875B-F6654CAC0C73-low.gif | Bin 0 -> 1372 bytes ...D-9B91DAAE-72DD-4799-9983-12B021993ee1.png | Bin 0 -> 1890 bytes ...CB2B87-3DED-4764-A182-30A4FAA4A2E2-low.gif | Bin 0 -> 770 bytes ...D-9DB212E1-03E2-430C-8B1F-8F5CBD4F2ee1.png | Bin 0 -> 1890 bytes ...054E0D-CFC1-44E8-89F7-B5A232903EE9-low.jpg | Bin 0 -> 4208 bytes ...089763-5ACF-46DB-AFFF-197043DD5932-low.gif | Bin 0 -> 837 bytes ...3FDBB0-21D0-4087-AAD9-4289019DD4C3-low.gif | Bin 0 -> 1796 bytes ...408434-7126-4EEC-8AD1-856204EBF263-low.jpg | Bin 0 -> 4745 bytes ...CA23B7-756F-45C6-85B3-3A8924939D7D-low.jpg | Bin 0 -> 4593 bytes ...84CAB6-AB6E-41AC-885E-DE4A33635480-low.jpg | Bin 0 -> 12102 bytes ...A6EA17-BA1C-4185-A5F4-8997B64E3BDD-low.gif | Bin 0 -> 1778 bytes ...AAF79E-E46B-4053-8A64-9CC8B9C84A3F-low.jpg | Bin 0 -> 3514 bytes ...F0A9F7-1A40-490B-BF70-EE6C63C21738-low.png | Bin 0 -> 14426 bytes ...D-AED001B6-9056-491F-ACBE-E06C82D17ee1.png | Bin 0 -> 1732 bytes ...D-B2211D34-A472-4FB8-9CFB-1E11AF4F0ee1.png | Bin 0 -> 1732 bytes ...D-B229F6A5-0619-4F06-994B-8A734C356ee1.png | Bin 0 -> 1948 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15e10.png | Bin 0 -> 2464 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15e11.png | Bin 0 -> 1625 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15ee1.png | Bin 0 -> 3650 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15ee2.png | Bin 0 -> 3195 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15ee3.png | Bin 0 -> 3006 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15ee4.png | Bin 0 -> 11194 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15ee5.png | Bin 0 -> 7775 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15ee6.png | Bin 0 -> 8060 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15ee7.png | Bin 0 -> 3109 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15ee8.png | Bin 0 -> 2222 bytes ...D-B9AEF80A-AD5F-4B59-9F21-60672FB15ee9.png | Bin 0 -> 3006 bytes ...3DF32F-5256-4DFD-9653-FAD2C740BCA5-low.gif | Bin 0 -> 1630 bytes ...113DF0-DE46-42A1-99AF-93F6F76E72EA-low.gif | Bin 0 -> 1642 bytes ...D-CD24FF51-197B-40A1-83A8-514788192ee1.png | Bin 0 -> 4548 bytes ...D-CD24FF51-197B-40A1-83A8-514788192ee2.png | Bin 0 -> 5157 bytes ...961E8B-3127-4493-839A-C045E325BC42-low.jpg | Bin 0 -> 5169 bytes ...D-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee1.png | Bin 0 -> 3334 bytes ...D-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee2.png | Bin 0 -> 2700 bytes ...D-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee3.png | Bin 0 -> 3031 bytes ...002137-8BA4-4D20-871B-550F2C6F9CE8-low.gif | Bin 0 -> 785 bytes ...D-D6A2FFBB-116D-4A37-A278-47F163915ee1.png | Bin 0 -> 2021 bytes ...D-D6A2FFBB-116D-4A37-A278-47F163915ee2.png | Bin 0 -> 1559 bytes ...D-D6A2FFBB-116D-4A37-A278-47F163915ee3.png | Bin 0 -> 1623 bytes ...D-D6A2FFBB-116D-4A37-A278-47F163915ee4.png | Bin 0 -> 1656 bytes ...D-D6A2FFBB-116D-4A37-A278-47F163915ee5.png | Bin 0 -> 1530 bytes ...03292D-2A37-42C6-B713-E38B801F0114-low.gif | Bin 0 -> 1107 bytes ...D-D797E8FA-B0CE-417C-98F1-896CDFB4Fee1.png | Bin 0 -> 3334 bytes ...D-D797E8FA-B0CE-417C-98F1-896CDFB4Fee2.png | Bin 0 -> 2700 bytes ...D-D797E8FA-B0CE-417C-98F1-896CDFB4Fee3.png | Bin 0 -> 2718 bytes ...D-D797E8FA-B0CE-417C-98F1-896CDFB4Fee4.png | Bin 0 -> 3330 bytes ...0F2CB0-58B4-42F5-A1F9-FD1EA859DD44-low.png | Bin 0 -> 10775 bytes ...D-DA21ECDC-F63E-4971-BA3F-492E69335ee1.png | Bin 0 -> 2021 bytes ...D-DA21ECDC-F63E-4971-BA3F-492E69335ee2.png | Bin 0 -> 1559 bytes ...D-DA21ECDC-F63E-4971-BA3F-492E69335ee3.png | Bin 0 -> 1623 bytes ...D-DA21ECDC-F63E-4971-BA3F-492E69335ee4.png | Bin 0 -> 1656 bytes ...D-DA21ECDC-F63E-4971-BA3F-492E69335ee5.png | Bin 0 -> 1530 bytes ...275A8A-05D4-49D9-9031-E4A9382C284C-low.gif | Bin 0 -> 605 bytes ...193631-248D-4D18-A094-30BB6FF50687-low.jpg | Bin 0 -> 4976 bytes ...8BA1ED-9ABF-487F-80F3-1FA1E0F6EABC-low.jpg | Bin 0 -> 5357 bytes ...BC391B-F8BC-45E0-9A58-84319AC0B246-low.gif | Bin 0 -> 2399 bytes ...1939AE-5968-4E6A-8396-6F44E73939AF-low.png | Bin 0 -> 14984 bytes ...77C856-3F93-40ED-AB2A-0F1BD8C4CE7A-low.jpg | Bin 0 -> 4177 bytes ...1C1454-13EC-4D30-8E73-8E41755B8AF2-low.gif | Bin 0 -> 619 bytes ...5E385E-ACAD-4DC6-95EC-7C8A85836AAD-low.gif | Bin 0 -> 1885 bytes ...28F918-624A-444A-BB76-7D26D1E1BC62-low.gif | Bin 0 -> 1091 bytes ...387120-1A86-45B9-BE20-97247EF0ABB5-low.gif | Bin 0 -> 948 bytes .../oneMKL/source/domains/lapack/gebrd.rst | 235 +++++++++ .../source/domains/lapack/gebrd_get_lwork.rst | 130 +++++ .../oneMKL/source/domains/lapack/geqrf.rst | 165 ++++++ .../source/domains/lapack/geqrf_batch.rst | 165 ++++++ .../source/domains/lapack/geqrf_get_lwork.rst | 128 +++++ .../oneMKL/source/domains/lapack/gesvd.rst | 307 +++++++++++ .../source/domains/lapack/gesvd_get_lwork.rst | 185 +++++++ .../oneMKL/source/domains/lapack/getrf.rst | 156 ++++++ .../source/domains/lapack/getrf_batch.rst | 167 ++++++ .../oneMKL/source/domains/lapack/getri.rst | 167 ++++++ .../source/domains/lapack/getri_batch.rst | 151 ++++++ .../source/domains/lapack/getri_get_lwork.rst | 126 +++++ .../oneMKL/source/domains/lapack/getrs.rst | 205 ++++++++ .../source/domains/lapack/getrs_batch.rst | 189 +++++++ .../oneMKL/source/domains/lapack/heevd.rst | 213 ++++++++ .../source/domains/lapack/heevd_get_lwork.rst | 160 ++++++ .../oneMKL/source/domains/lapack/hegvd.rst | 261 ++++++++++ .../source/domains/lapack/hegvd_get_lwork.rst | 180 +++++++ .../oneMKL/source/domains/lapack/hetrd.rst | 188 +++++++ .../source/domains/lapack/hetrd_get_lwork.rst | 137 +++++ .../oneMKL/source/domains/lapack/lapack.rst | 364 +++++++++++++ .../oneMKL/source/domains/lapack/orgbr.rst | 230 +++++++++ .../source/domains/lapack/orgbr_get_lwork.rst | 158 ++++++ .../oneMKL/source/domains/lapack/orgqr.rst | 197 ++++++++ .../source/domains/lapack/orgqr_batch.rst | 245 +++++++++ .../source/domains/lapack/orgqr_get_lwork.rst | 129 +++++ .../oneMKL/source/domains/lapack/orgtr.rst | 157 ++++++ .../source/domains/lapack/orgtr_get_lwork.rst | 130 +++++ .../oneMKL/source/domains/lapack/ormqr.rst | 201 ++++++++ .../source/domains/lapack/ormqr_get_lwork.rst | 155 ++++++ .../oneMKL/source/domains/lapack/ormtr.rst | 217 ++++++++ .../source/domains/lapack/ormtr_get_lwork.rst | 179 +++++++ .../domains/lapack/potrf-usm-version.rst | 175 +++++++ .../oneMKL/source/domains/lapack/potrf.rst | 189 +++++++ .../source/domains/lapack/potrf_batch.rst | 185 +++++++ .../oneMKL/source/domains/lapack/potri.rst | 133 +++++ .../domains/lapack/potrs-usm-version.rst | 184 +++++++ .../oneMKL/source/domains/lapack/potrs.rst | 175 +++++++ .../source/domains/lapack/potrs_batch.rst | 198 ++++++++ .../oneMKL/source/domains/lapack/syevd.rst | 205 ++++++++ .../source/domains/lapack/syevd_get_lwork.rst | 155 ++++++ .../oneMKL/source/domains/lapack/sygvd.rst | 262 ++++++++++ .../source/domains/lapack/sygvd_get_lwork.rst | 170 +++++++ .../oneMKL/source/domains/lapack/sytrd.rst | 186 +++++++ .../source/domains/lapack/sytrd_get_lwork.rst | 136 +++++ .../oneMKL/source/domains/lapack/sytrf.rst | 150 ++++++ .../source/domains/lapack/sytrf_get_lwork.rst | 140 +++++ .../oneMKL/source/domains/lapack/trtrs.rst | 187 +++++++ .../oneMKL/source/domains/lapack/ungbr.rst | 232 +++++++++ .../source/domains/lapack/ungbr_get_lwork.rst | 158 ++++++ .../oneMKL/source/domains/lapack/ungqr.rst | 197 ++++++++ .../source/domains/lapack/ungqr_get_lwork.rst | 129 +++++ .../oneMKL/source/domains/lapack/ungtr.rst | 157 ++++++ .../source/domains/lapack/ungtr_get_lwork.rst | 130 +++++ .../oneMKL/source/domains/lapack/unmqr.rst | 204 ++++++++ .../source/domains/lapack/unmqr_get_lwork.rst | 153 ++++++ .../oneMKL/source/domains/lapack/unmtr.rst | 224 ++++++++ .../source/domains/lapack/unmtr_get_lwork.rst | 167 ++++++ .../oneMKL/source/domains/matrix-storage.rst | 373 ++++++++++++++ .../source/domains/rng/bibliography.rst | 122 +++++ ...mplate-parameter-mkl-rng-method-values.rst | 109 ++++ .../source/domains/rng/distributions.rst | 207 ++++++++ ...engines-basic-random-number-generators.rst | 142 ++++++ .../source/domains/rng/generate-routine.rst | 18 + .../source/domains/rng/mkl-rng-ars5.rst | 98 ++++ .../source/domains/rng/mkl-rng-bernoulli.rst | 128 +++++ .../source/domains/rng/mkl-rng-beta.rst | 128 +++++ .../source/domains/rng/mkl-rng-binomial.rst | 126 +++++ .../source/domains/rng/mkl-rng-bits.rst | 86 ++++ .../source/domains/rng/mkl-rng-cauchy.rst | 116 +++++ .../source/domains/rng/mkl-rng-chi_square.rst | 109 ++++ .../domains/rng/mkl-rng-exponential.rst | 116 +++++ .../source/domains/rng/mkl-rng-gamma.rst | 110 ++++ .../source/domains/rng/mkl-rng-gaussian.rst | 134 +++++ .../source/domains/rng/mkl-rng-generate.rst | 132 +++++ .../source/domains/rng/mkl-rng-geometric.rst | 114 +++++ .../source/domains/rng/mkl-rng-gumbel.rst | 116 +++++ .../domains/rng/mkl-rng-hypergeometric.rst | 132 +++++ .../source/domains/rng/mkl-rng-laplace.rst | 122 +++++ .../source/domains/rng/mkl-rng-leapfrog.rst | 146 ++++++ .../source/domains/rng/mkl-rng-lognormal.rst | 128 +++++ .../source/domains/rng/mkl-rng-mcg31m1.rst | 95 ++++ .../source/domains/rng/mkl-rng-mcg59.rst | 95 ++++ .../source/domains/rng/mkl-rng-mrg32k3a.rst | 95 ++++ .../source/domains/rng/mkl-rng-mt19937.rst | 97 ++++ .../source/domains/rng/mkl-rng-mt2203.rst | 106 ++++ .../domains/rng/mkl-rng-multinomial.rst | 106 ++++ .../domains/rng/mkl-rng-negbinomial.rst | 123 +++++ .../domains/rng/mkl-rng-niederreiter.rst | 100 ++++ .../domains/rng/mkl-rng-nondeterministic.rst | 91 ++++ .../domains/rng/mkl-rng-philox4x32x10.rst | 96 ++++ .../source/domains/rng/mkl-rng-poisson.rst | 111 ++++ .../source/domains/rng/mkl-rng-poisson_v.rst | 109 ++++ .../source/domains/rng/mkl-rng-r250.rst | 97 ++++ .../source/domains/rng/mkl-rng-rayleigh.rst | 121 +++++ .../source/domains/rng/mkl-rng-sfmt19937.rst | 100 ++++ .../source/domains/rng/mkl-rng-skip_ahead.rst | 237 +++++++++ .../source/domains/rng/mkl-rng-sobol.rst | 101 ++++ .../rng/mkl-rng-uniform-continuous.rst | 113 +++++ .../domains/rng/mkl-rng-uniform-discrete.rst | 114 +++++ .../domains/rng/mkl-rng-uniform_bits.rst | 76 +++ .../source/domains/rng/mkl-rng-weibull.rst | 121 +++++ .../domains/rng/mkl-rng-wichmann_hill.rst | 100 ++++ .../domains/rng/onemkl-rng-usage-model.rst | 149 ++++++ .../rng/random_number_generators.inc.rst | 98 ++++ .../source/domains/rng/service-routines.rst | 31 ++ .../domains/sparse_linear_algebra.inc.rst | 18 + .../source/domains/spblas/exceptions.rst | 35 ++ .../source/domains/spblas/mkl-sparse-gemm.rst | 208 ++++++++ .../source/domains/spblas/mkl-sparse-gemv.rst | 231 +++++++++ .../domains/spblas/mkl-sparse-gemvdot.rst | 208 ++++++++ .../spblas/mkl-sparse-gemvoptimize.rst | 136 +++++ .../domains/spblas/mkl-sparse-matrixinit.rst | 57 +++ .../spblas/mkl-sparse-setcsrstructure.rst | 162 ++++++ .../source/domains/spblas/mkl-sparse-symv.rst | 204 ++++++++ .../source/domains/spblas/mkl-sparse-trmv.rst | 235 +++++++++ .../spblas/mkl-sparse-trmvoptimize.rst | 172 +++++++ .../source/domains/spblas/mkl-sparse-trsv.rst | 223 ++++++++ .../spblas/mkl-sparse-trsvoptimize.rst | 172 +++++++ .../oneMKL/source/domains/spblas/spblas.rst | 42 ++ .../source/domains/spblas/supported-types.rst | 31 ++ .../elements/oneMKL/source/domains/vm/abs.rst | 214 ++++++++ .../oneMKL/source/domains/vm/acos.rst | 307 +++++++++++ .../oneMKL/source/domains/vm/acosh.rst | 303 +++++++++++ .../oneMKL/source/domains/vm/acospi.rst | 227 +++++++++ .../elements/oneMKL/source/domains/vm/add.rst | 267 ++++++++++ .../elements/oneMKL/source/domains/vm/arg.rst | 264 ++++++++++ .../domains/vm/arithmetic-functions.rst | 72 +++ .../oneMKL/source/domains/vm/asin.rst | 234 +++++++++ .../oneMKL/source/domains/vm/asinh.rst | 291 +++++++++++ .../oneMKL/source/domains/vm/asinpi.rst | 227 +++++++++ .../oneMKL/source/domains/vm/atan.rst | 214 ++++++++ .../oneMKL/source/domains/vm/atan2.rst | 361 +++++++++++++ .../oneMKL/source/domains/vm/atan2pi.rst | 364 +++++++++++++ .../oneMKL/source/domains/vm/atanh.rst | 308 +++++++++++ .../oneMKL/source/domains/vm/atanpi.rst | 207 ++++++++ .../oneMKL/source/domains/vm/bibliography.rst | 30 ++ .../oneMKL/source/domains/vm/cbrt.rst | 205 ++++++++ .../oneMKL/source/domains/vm/cdfnorm.rst | 285 +++++++++++ .../oneMKL/source/domains/vm/cdfnorminv.rst | 305 +++++++++++ .../oneMKL/source/domains/vm/ceil.rst | 214 ++++++++ .../elements/oneMKL/source/domains/vm/cis.rst | 221 ++++++++ .../oneMKL/source/domains/vm/clear_status.rst | 117 +++++ .../oneMKL/source/domains/vm/conj.rst | 176 +++++++ .../oneMKL/source/domains/vm/copysign.rst | 207 ++++++++ .../elements/oneMKL/source/domains/vm/cos.rst | 235 +++++++++ .../oneMKL/source/domains/vm/cosd.rst | 230 +++++++++ .../oneMKL/source/domains/vm/cosh.rst | 330 ++++++++++++ .../oneMKL/source/domains/vm/cospi.rst | 232 +++++++++ .../domains/vm/create_error_handler.rst | 413 +++++++++++++++ .../elements/oneMKL/source/domains/vm/div.rst | 272 ++++++++++ .../elements/oneMKL/source/domains/vm/erf.rst | 283 +++++++++++ .../oneMKL/source/domains/vm/erfc.rst | 301 +++++++++++ .../oneMKL/source/domains/vm/erfcinv.rst | 310 ++++++++++++ .../oneMKL/source/domains/vm/erfinv.rst | 316 ++++++++++++ .../elements/oneMKL/source/domains/vm/exp.rst | 324 ++++++++++++ .../oneMKL/source/domains/vm/exp10.rst | 239 +++++++++ .../oneMKL/source/domains/vm/exp2.rst | 238 +++++++++ .../oneMKL/source/domains/vm/expint1.rst | 234 +++++++++ .../oneMKL/source/domains/vm/expm1.rst | 236 +++++++++ .../exponential-and-logarithmic-functions.rst | 51 ++ .../oneMKL/source/domains/vm/fdim.rst | 216 ++++++++ .../oneMKL/source/domains/vm/floor.rst | 214 ++++++++ .../oneMKL/source/domains/vm/fmax.rst | 212 ++++++++ .../oneMKL/source/domains/vm/fmin.rst | 212 ++++++++ .../oneMKL/source/domains/vm/fmod.rst | 243 +++++++++ .../oneMKL/source/domains/vm/frac.rst | 213 ++++++++ .../oneMKL/source/domains/vm/get_mode.rst | 116 +++++ .../oneMKL/source/domains/vm/get_status.rst | 127 +++++ .../domains/vm/hyperbolic-functions.rst | 41 ++ .../oneMKL/source/domains/vm/hypot.rst | 245 +++++++++ .../elements/oneMKL/source/domains/vm/inv.rst | 217 ++++++++ .../oneMKL/source/domains/vm/invcbrt.rst | 217 ++++++++ .../oneMKL/source/domains/vm/invsqrt.rst | 220 ++++++++ .../oneMKL/source/domains/vm/lgamma.rst | 234 +++++++++ .../oneMKL/source/domains/vm/linearfrac.rst | 288 +++++++++++ .../elements/oneMKL/source/domains/vm/ln.rst | 302 +++++++++++ .../oneMKL/source/domains/vm/log10.rst | 319 ++++++++++++ .../oneMKL/source/domains/vm/log1p.rst | 224 ++++++++ .../oneMKL/source/domains/vm/log2.rst | 223 ++++++++ .../oneMKL/source/domains/vm/logb.rst | 220 ++++++++ .../oneMKL/source/domains/vm/maxmag.rst | 222 ++++++++ .../oneMKL/source/domains/vm/minmag.rst | 222 ++++++++ .../domains/vm/miscellaneous-vm-functions.rst | 47 ++ .../oneMKL/source/domains/vm/modf.rst | 233 +++++++++ .../elements/oneMKL/source/domains/vm/mul.rst | 307 +++++++++++ .../oneMKL/source/domains/vm/mulbyconj.rst | 182 +++++++ .../oneMKL/source/domains/vm/nearbyint.rst | 207 ++++++++ .../oneMKL/source/domains/vm/nextafter.rst | 219 ++++++++ .../elements/oneMKL/source/domains/vm/pow.rst | 478 ++++++++++++++++++ .../oneMKL/source/domains/vm/pow2o3.rst | 217 ++++++++ .../oneMKL/source/domains/vm/pow3o2.rst | 236 +++++++++ .../domains/vm/power-and-root-functions.rst | 60 +++ .../oneMKL/source/domains/vm/powr.rst | 314 ++++++++++++ .../oneMKL/source/domains/vm/powx.rst | 209 ++++++++ .../oneMKL/source/domains/vm/remainder.rst | 244 +++++++++ .../oneMKL/source/domains/vm/rint.rst | 225 +++++++++ .../oneMKL/source/domains/vm/round.rst | 209 ++++++++ .../source/domains/vm/rounding-functions.rst | 52 ++ .../oneMKL/source/domains/vm/set_status.rst | 133 +++++ .../oneMKL/source/domains/vm/setmode.rst | 143 ++++++ .../elements/oneMKL/source/domains/vm/sin.rst | 235 +++++++++ .../oneMKL/source/domains/vm/sincos.rst | 243 +++++++++ .../oneMKL/source/domains/vm/sind.rst | 230 +++++++++ .../oneMKL/source/domains/vm/sinh.rst | 330 ++++++++++++ .../oneMKL/source/domains/vm/sinpi.rst | 235 +++++++++ .../source/domains/vm/special-functions.rst | 54 ++ .../domains/vm/special-value-notations.rst | 60 +++ .../elements/oneMKL/source/domains/vm/sqr.rst | 205 ++++++++ .../oneMKL/source/domains/vm/sqrt.rst | 301 +++++++++++ .../elements/oneMKL/source/domains/vm/sub.rst | 267 ++++++++++ .../elements/oneMKL/source/domains/vm/tan.rst | 235 +++++++++ .../oneMKL/source/domains/vm/tand.rst | 230 +++++++++ .../oneMKL/source/domains/vm/tanh.rst | 290 +++++++++++ .../oneMKL/source/domains/vm/tanpi.rst | 246 +++++++++ .../oneMKL/source/domains/vm/tgamma.rst | 227 +++++++++ .../domains/vm/trigonometric-functions.rst | 81 +++ .../oneMKL/source/domains/vm/trunc.rst | 214 ++++++++ .../source/domains/vm/vector_math.inc.rst | 54 ++ .../domains/vm/vm-mathematical-functions.rst | 340 +++++++++++++ .../domains/vm/vm-service-functions.rst | 48 ++ source/elements/oneMKL/source/index.rst | 32 +- 495 files changed, 61271 insertions(+), 30 deletions(-) create mode 100644 source/elements/oneMKL/source/architecture/api_design.inc.rst create mode 100644 source/elements/oneMKL/source/architecture/architecture.rst create mode 100644 source/elements/oneMKL/source/architecture/exceptions.inc.rst create mode 100644 source/elements/oneMKL/source/architecture/execution_model.inc.rst create mode 100644 source/elements/oneMKL/source/architecture/global_library_controls.inc.rst create mode 100644 source/elements/oneMKL/source/architecture/memory_model.inc.rst create mode 100644 source/elements/oneMKL/source/domains/blas/asum-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/asum.rst create mode 100644 source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/axpy.rst create mode 100644 source/elements/oneMKL/source/domains/blas/blas-level-1-routines.inc.rst create mode 100644 source/elements/oneMKL/source/domains/blas/blas-level-2-routines.inc.rst create mode 100644 source/elements/oneMKL/source/domains/blas/blas-level-3-routines.inc.rst create mode 100644 source/elements/oneMKL/source/domains/blas/blas-like-extensions.inc.rst create mode 100644 source/elements/oneMKL/source/domains/blas/blas.rst create mode 100644 source/elements/oneMKL/source/domains/blas/copy-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/copy.rst create mode 100644 source/elements/oneMKL/source/domains/blas/dot-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/dot.rst create mode 100644 source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/dotc.rst create mode 100644 source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/dotu.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gbmv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gemm.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gemm_batch.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gemm_ext.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gemmt.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gemv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/ger-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/ger.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/gerc.rst create mode 100644 source/elements/oneMKL/source/domains/blas/geru-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/geru.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hbmv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hemm.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hemv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/her-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/her.rst create mode 100644 source/elements/oneMKL/source/domains/blas/her2-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/her2.rst create mode 100644 source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/her2k.rst create mode 100644 source/elements/oneMKL/source/domains/blas/herk-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/herk.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hpmv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hpr.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/hpr2.rst create mode 100644 source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/iamax.rst create mode 100644 source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/iamin.rst create mode 100644 source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/nrm2.rst create mode 100644 source/elements/oneMKL/source/domains/blas/rot-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/rot.rst create mode 100644 source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/rotg.rst create mode 100644 source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/rotm.rst create mode 100644 source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/rotmg.rst create mode 100644 source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/sbmv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/scal-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/scal.rst create mode 100644 source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/sdsdot.rst create mode 100644 source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/spmv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/spr-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/spr.rst create mode 100644 source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/spr2.rst create mode 100644 source/elements/oneMKL/source/domains/blas/swap-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/swap.rst create mode 100644 source/elements/oneMKL/source/domains/blas/symm-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/symm.rst create mode 100644 source/elements/oneMKL/source/domains/blas/symv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/symv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/syr-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/syr.rst create mode 100644 source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/syr2.rst create mode 100644 source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/syr2k.rst create mode 100644 source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/syrk.rst create mode 100644 source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/tbmv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/tbsv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/tpmv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/tpsv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/trmm.rst create mode 100644 source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/trmv.rst create mode 100644 source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/trsm.rst create mode 100644 source/elements/oneMKL/source/domains/blas/trsm_batch.rst create mode 100644 source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/blas/trsv.rst create mode 100644 source/elements/oneMKL/source/domains/dense_linear_algebra.inc.rst create mode 100644 source/elements/oneMKL/source/domains/dft/dft.rst create mode 100644 source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst create mode 100644 source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst create mode 100644 source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst create mode 100644 source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst create mode 100644 source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst create mode 100644 source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst create mode 100644 source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst create mode 100644 source/elements/oneMKL/source/domains/discrete_fourier_transforms.inc.rst create mode 100644 source/elements/oneMKL/source/domains/domains.rst create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-0026D841-74F3-43C0-8EB5-F9E4107EF95D-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-02486559-84D2-4880-8EAB-2085A5BE2D10-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-02EEA5FC-8F46-4034-86D9-99900F93373C-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-03C78F41-D16C-4BFE-B087-BE4F5A6A0ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-04615D14-A026-4BF0-ACD6-0FC822FEC64E-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-061AF9F8-B166-4154-9BF1-4E2C99F1CE1F-low.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-081A19C4-609F-4736-BCCF-D680013A2775-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-09FC1496-B5B3-4DF6-A3EE-E6410BE1EFD2-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-0A406EAC-6A1D-4D81-977C-08C018161E3F-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-0A8E6C61-9171-4584-927A-83AC482ADC4D-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-0B9A59CC-C914-429D-AF87-93B16DABD291-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-0C4BC54F-4C29-4577-80AA-BCBCD291582A-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-0EDD2BB7-A284-495A-84F6-8A210AC499CD-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-0F47CAD3-006C-4A78-B229-413313667ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-11B96BA7-C321-446D-A7B6-8D84C8CBC076-low.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-12315BD9-4F4D-42B0-A9B5-68A22D40756D-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-19F7C7EA-5657-4016-87A6-4E2721994C56-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-1D36B5CE-3BF3-4762-926B-05C5527FAE45-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-2293B947-42D6-4E5F-BBB3-9DC135AA724A-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-281DBA27-691A-4B62-A255-FC33EA28D8D5-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-2BEFE049-EB3B-4FC9-AD75-ABA053617238-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-2D60A1A4-9522-40FC-AEEA-B64EB795144C-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-2F91B385-0AC2-41D3-AE61-48F63A7DBB02-low.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-32A750B8-7BCC-409B-BD48-E88FBEF86D32-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-3605ACD9-02D1-46D7-B791-F2F76F0D9ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-38C12345-5E6E-4D94-8072-460502CB52EC-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-3A9C1154-2E42-416F-8865-06E7382A3AA7-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-41F8B94B-EEFA-4308-925A-D2DF486FBF8B-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-41FCF9BC-28B7-4030-B904-1DBA03DD328C-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-428BFB7A-6E88-4D12-9707-885C02A93A8E-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-42AF2BFE-F8F1-4F96-A4E0-05D4FB5A7ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-482EEED2-95DF-4AA3-A484-E2CC41F29ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-482EEED2-95DF-4AA3-A484-E2CC41F29ee2.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-4835D5B4-6232-45CD-9A49-0264F8B0DBF4-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-4D962DF4-16F2-438B-8866-4F105DC41242-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-4F76F5A1-251F-4AC0-A2E0-A3B4B6F39ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee2.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee3.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee4.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-5159E8DD-25FF-473A-86AA-1E71FFCD018C-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-5193801D-8E3B-43A2-989E-09A8431FD34E-low.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-51FA6703-70D8-4D01-B7AB-A163F4CDFC94-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-5F24679E-82BB-4ECB-AC87-02FC7CF3C77F-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-5FAAD02F-09F5-4B78-B404-384F1270FA1C-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee2.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee3.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee4.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee5.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee2.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee3.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee4.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee5.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-684BB993-83CA-4605-BD49-E493806C1ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-6ABD7CD8-8E05-409D-B84F-9B88E4CDE9DB-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-6F53C93C-0634-4E53-8874-5ACBD4C9AA3E-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-6FB20CE7-1E2A-4340-995F-0E621DEF0E2D-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-749B9421-ABAF-41EA-B8B9-3C9941EF5B72-low.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-75532DED-BE44-4D85-B9C0-99C825778ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-788A8218-34E5-4625-8E51-A5D36A113D23-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-7AE86F5B-8BE2-42D5-B6C7-AF9FF41CCE11-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-7CA9B2F2-8D7C-4955-8EA8-D67616FB5B08-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-7F65198B-719A-44FB-8983-BBD3C196A663-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-817D9F12-6BD9-4B74-BFA0-39A03D0660C3-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-8742E2B1-94AF-4622-B964-181611E3D1F2-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-895E6B37-AC54-40D4-B134-E2816B7F30D3-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-8AD223ED-624A-4390-9514-D8EF20BD04EE-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-8C1F2803-8F8F-4795-BF16-41856C6442CF-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-8F2DCE6A-CB54-4CEA-A5EB-937893A3DB34-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-8F8B1A27-FCBD-4E61-ACC0-459C9EBAE376-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-904ADCA4-1F33-4C30-90AD-128AA11689FF-low.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-9114D36E-F829-485D-BF04-8747E20120BD-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-93DA36DC-40CA-4C01-B883-DABAB0D37ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-96C9ACB0-9A38-4682-85C6-4E71711C32C0-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-96DF4ACE-8587-423F-B50A-E9A58BE272F9-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-98EC239E-D5C9-4960-834B-827656CF3052-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-9932E129-264C-42F7-A75D-00E3705ABB80-low.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-9A33FF12-964D-4450-949B-6AB7246435C7-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-9AB7A841-1EEC-49D6-BBF8-5B346FB32C1A-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-9B0556B7-20F4-4EC9-875B-F6654CAC0C73-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-9B91DAAE-72DD-4799-9983-12B021993ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-9BCB2B87-3DED-4764-A182-30A4FAA4A2E2-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-9DB212E1-03E2-430C-8B1F-8F5CBD4F2ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-A3054E0D-CFC1-44E8-89F7-B5A232903EE9-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-A3089763-5ACF-46DB-AFFF-197043DD5932-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-A43FDBB0-21D0-4087-AAD9-4289019DD4C3-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-A5408434-7126-4EEC-8AD1-856204EBF263-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-A7CA23B7-756F-45C6-85B3-3A8924939D7D-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-A984CAB6-AB6E-41AC-885E-DE4A33635480-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-AAA6EA17-BA1C-4185-A5F4-8997B64E3BDD-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-ABAAF79E-E46B-4053-8A64-9CC8B9C84A3F-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-ACF0A9F7-1A40-490B-BF70-EE6C63C21738-low.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-AED001B6-9056-491F-ACBE-E06C82D17ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B2211D34-A472-4FB8-9CFB-1E11AF4F0ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B229F6A5-0619-4F06-994B-8A734C356ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15e10.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15e11.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee2.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee3.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee4.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee5.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee6.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee7.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee8.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee9.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-BF3DF32F-5256-4DFD-9653-FAD2C740BCA5-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-CA113DF0-DE46-42A1-99AF-93F6F76E72EA-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-CD24FF51-197B-40A1-83A8-514788192ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-CD24FF51-197B-40A1-83A8-514788192ee2.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-CF961E8B-3127-4493-839A-C045E325BC42-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee2.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee3.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D4002137-8BA4-4D20-871B-550F2C6F9CE8-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee2.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee3.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee4.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee5.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D703292D-2A37-42C6-B713-E38B801F0114-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee2.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee3.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee4.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-D90F2CB0-58B4-42F5-A1F9-FD1EA859DD44-low.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee1.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee2.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee3.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee4.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee5.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-DF275A8A-05D4-49D9-9031-E4A9382C284C-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-E3193631-248D-4D18-A094-30BB6FF50687-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-E48BA1ED-9ABF-487F-80F3-1FA1E0F6EABC-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-E5BC391B-F8BC-45E0-9A58-84319AC0B246-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-EA1939AE-5968-4E6A-8396-6F44E73939AF-low.png create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-EA77C856-3F93-40ED-AB2A-0F1BD8C4CE7A-low.jpg create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-F01C1454-13EC-4D30-8E73-8E41755B8AF2-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-F85E385E-ACAD-4DC6-95EC-7C8A85836AAD-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-F928F918-624A-444A-BB76-7D26D1E1BC62-low.gif create mode 100644 source/elements/oneMKL/source/domains/equations/GUID-FB387120-1A86-45B9-BE20-97247EF0ABB5-low.gif create mode 100644 source/elements/oneMKL/source/domains/lapack/gebrd.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/geqrf.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/gesvd.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/getrf.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/getrf_batch.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/getri.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/getri_batch.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/getrs.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/getrs_batch.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/heevd.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/hegvd.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/hetrd.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/lapack.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/orgbr.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/orgqr.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/orgtr.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/ormqr.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/ormtr.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/potrf.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/potrf_batch.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/potri.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/potrs.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/potrs_batch.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/syevd.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/sygvd.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/sytrd.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/sytrf.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/trtrs.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/ungbr.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/ungqr.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/ungtr.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/unmqr.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/unmtr.rst create mode 100644 source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst create mode 100644 source/elements/oneMKL/source/domains/matrix-storage.rst create mode 100644 source/elements/oneMKL/source/domains/rng/bibliography.rst create mode 100644 source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst create mode 100644 source/elements/oneMKL/source/domains/rng/distributions.rst create mode 100644 source/elements/oneMKL/source/domains/rng/engines-basic-random-number-generators.rst create mode 100644 source/elements/oneMKL/source/domains/rng/generate-routine.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst create mode 100644 source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst create mode 100644 source/elements/oneMKL/source/domains/rng/onemkl-rng-usage-model.rst create mode 100644 source/elements/oneMKL/source/domains/rng/random_number_generators.inc.rst create mode 100644 source/elements/oneMKL/source/domains/rng/service-routines.rst create mode 100644 source/elements/oneMKL/source/domains/sparse_linear_algebra.inc.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/exceptions.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/spblas.rst create mode 100644 source/elements/oneMKL/source/domains/spblas/supported-types.rst create mode 100644 source/elements/oneMKL/source/domains/vm/abs.rst create mode 100644 source/elements/oneMKL/source/domains/vm/acos.rst create mode 100644 source/elements/oneMKL/source/domains/vm/acosh.rst create mode 100644 source/elements/oneMKL/source/domains/vm/acospi.rst create mode 100644 source/elements/oneMKL/source/domains/vm/add.rst create mode 100644 source/elements/oneMKL/source/domains/vm/arg.rst create mode 100644 source/elements/oneMKL/source/domains/vm/arithmetic-functions.rst create mode 100644 source/elements/oneMKL/source/domains/vm/asin.rst create mode 100644 source/elements/oneMKL/source/domains/vm/asinh.rst create mode 100644 source/elements/oneMKL/source/domains/vm/asinpi.rst create mode 100644 source/elements/oneMKL/source/domains/vm/atan.rst create mode 100644 source/elements/oneMKL/source/domains/vm/atan2.rst create mode 100644 source/elements/oneMKL/source/domains/vm/atan2pi.rst create mode 100644 source/elements/oneMKL/source/domains/vm/atanh.rst create mode 100644 source/elements/oneMKL/source/domains/vm/atanpi.rst create mode 100644 source/elements/oneMKL/source/domains/vm/bibliography.rst create mode 100644 source/elements/oneMKL/source/domains/vm/cbrt.rst create mode 100644 source/elements/oneMKL/source/domains/vm/cdfnorm.rst create mode 100644 source/elements/oneMKL/source/domains/vm/cdfnorminv.rst create mode 100644 source/elements/oneMKL/source/domains/vm/ceil.rst create mode 100644 source/elements/oneMKL/source/domains/vm/cis.rst create mode 100644 source/elements/oneMKL/source/domains/vm/clear_status.rst create mode 100644 source/elements/oneMKL/source/domains/vm/conj.rst create mode 100644 source/elements/oneMKL/source/domains/vm/copysign.rst create mode 100644 source/elements/oneMKL/source/domains/vm/cos.rst create mode 100644 source/elements/oneMKL/source/domains/vm/cosd.rst create mode 100644 source/elements/oneMKL/source/domains/vm/cosh.rst create mode 100644 source/elements/oneMKL/source/domains/vm/cospi.rst create mode 100644 source/elements/oneMKL/source/domains/vm/create_error_handler.rst create mode 100644 source/elements/oneMKL/source/domains/vm/div.rst create mode 100644 source/elements/oneMKL/source/domains/vm/erf.rst create mode 100644 source/elements/oneMKL/source/domains/vm/erfc.rst create mode 100644 source/elements/oneMKL/source/domains/vm/erfcinv.rst create mode 100644 source/elements/oneMKL/source/domains/vm/erfinv.rst create mode 100644 source/elements/oneMKL/source/domains/vm/exp.rst create mode 100644 source/elements/oneMKL/source/domains/vm/exp10.rst create mode 100644 source/elements/oneMKL/source/domains/vm/exp2.rst create mode 100644 source/elements/oneMKL/source/domains/vm/expint1.rst create mode 100644 source/elements/oneMKL/source/domains/vm/expm1.rst create mode 100644 source/elements/oneMKL/source/domains/vm/exponential-and-logarithmic-functions.rst create mode 100644 source/elements/oneMKL/source/domains/vm/fdim.rst create mode 100644 source/elements/oneMKL/source/domains/vm/floor.rst create mode 100644 source/elements/oneMKL/source/domains/vm/fmax.rst create mode 100644 source/elements/oneMKL/source/domains/vm/fmin.rst create mode 100644 source/elements/oneMKL/source/domains/vm/fmod.rst create mode 100644 source/elements/oneMKL/source/domains/vm/frac.rst create mode 100644 source/elements/oneMKL/source/domains/vm/get_mode.rst create mode 100644 source/elements/oneMKL/source/domains/vm/get_status.rst create mode 100644 source/elements/oneMKL/source/domains/vm/hyperbolic-functions.rst create mode 100644 source/elements/oneMKL/source/domains/vm/hypot.rst create mode 100644 source/elements/oneMKL/source/domains/vm/inv.rst create mode 100644 source/elements/oneMKL/source/domains/vm/invcbrt.rst create mode 100644 source/elements/oneMKL/source/domains/vm/invsqrt.rst create mode 100644 source/elements/oneMKL/source/domains/vm/lgamma.rst create mode 100644 source/elements/oneMKL/source/domains/vm/linearfrac.rst create mode 100644 source/elements/oneMKL/source/domains/vm/ln.rst create mode 100644 source/elements/oneMKL/source/domains/vm/log10.rst create mode 100644 source/elements/oneMKL/source/domains/vm/log1p.rst create mode 100644 source/elements/oneMKL/source/domains/vm/log2.rst create mode 100644 source/elements/oneMKL/source/domains/vm/logb.rst create mode 100644 source/elements/oneMKL/source/domains/vm/maxmag.rst create mode 100644 source/elements/oneMKL/source/domains/vm/minmag.rst create mode 100644 source/elements/oneMKL/source/domains/vm/miscellaneous-vm-functions.rst create mode 100644 source/elements/oneMKL/source/domains/vm/modf.rst create mode 100644 source/elements/oneMKL/source/domains/vm/mul.rst create mode 100644 source/elements/oneMKL/source/domains/vm/mulbyconj.rst create mode 100644 source/elements/oneMKL/source/domains/vm/nearbyint.rst create mode 100644 source/elements/oneMKL/source/domains/vm/nextafter.rst create mode 100644 source/elements/oneMKL/source/domains/vm/pow.rst create mode 100644 source/elements/oneMKL/source/domains/vm/pow2o3.rst create mode 100644 source/elements/oneMKL/source/domains/vm/pow3o2.rst create mode 100644 source/elements/oneMKL/source/domains/vm/power-and-root-functions.rst create mode 100644 source/elements/oneMKL/source/domains/vm/powr.rst create mode 100644 source/elements/oneMKL/source/domains/vm/powx.rst create mode 100644 source/elements/oneMKL/source/domains/vm/remainder.rst create mode 100644 source/elements/oneMKL/source/domains/vm/rint.rst create mode 100644 source/elements/oneMKL/source/domains/vm/round.rst create mode 100644 source/elements/oneMKL/source/domains/vm/rounding-functions.rst create mode 100644 source/elements/oneMKL/source/domains/vm/set_status.rst create mode 100644 source/elements/oneMKL/source/domains/vm/setmode.rst create mode 100644 source/elements/oneMKL/source/domains/vm/sin.rst create mode 100644 source/elements/oneMKL/source/domains/vm/sincos.rst create mode 100644 source/elements/oneMKL/source/domains/vm/sind.rst create mode 100644 source/elements/oneMKL/source/domains/vm/sinh.rst create mode 100644 source/elements/oneMKL/source/domains/vm/sinpi.rst create mode 100644 source/elements/oneMKL/source/domains/vm/special-functions.rst create mode 100644 source/elements/oneMKL/source/domains/vm/special-value-notations.rst create mode 100644 source/elements/oneMKL/source/domains/vm/sqr.rst create mode 100644 source/elements/oneMKL/source/domains/vm/sqrt.rst create mode 100644 source/elements/oneMKL/source/domains/vm/sub.rst create mode 100644 source/elements/oneMKL/source/domains/vm/tan.rst create mode 100644 source/elements/oneMKL/source/domains/vm/tand.rst create mode 100644 source/elements/oneMKL/source/domains/vm/tanh.rst create mode 100644 source/elements/oneMKL/source/domains/vm/tanpi.rst create mode 100644 source/elements/oneMKL/source/domains/vm/tgamma.rst create mode 100644 source/elements/oneMKL/source/domains/vm/trigonometric-functions.rst create mode 100644 source/elements/oneMKL/source/domains/vm/trunc.rst create mode 100644 source/elements/oneMKL/source/domains/vm/vector_math.inc.rst create mode 100644 source/elements/oneMKL/source/domains/vm/vm-mathematical-functions.rst create mode 100644 source/elements/oneMKL/source/domains/vm/vm-service-functions.rst diff --git a/scripts/oneapi.py b/scripts/oneapi.py index 2fedb2cc94..c6b637c4ee 100644 --- a/scripts/oneapi.py +++ b/scripts/oneapi.py @@ -50,7 +50,6 @@ args = None -sphinx_opts = '-q' sphinx_build = 'sphinx-build' source_dir = 'source' build_dir = 'build' @@ -117,13 +116,14 @@ def makedirs(path): os.makedirs(path) def sphinx(root, target): - os.environ['LATEXMKOPTS'] = '--silent' - os.environ['LATEXOPTS'] = '-interaction=nonstopmode -halt-on-error' + if not args.verbose: + os.environ['LATEXMKOPTS'] = '--silent' + os.environ['LATEXOPTS'] = '-interaction=nonstopmode -halt-on-error' shell('%s -M %s %s %s %s' % (sphinx_build, target, join(root,source_dir), join(root,build_dir), - sphinx_opts)) + '' if args.verbose else '-q')) def get_env(var): return os.environ[var] if var in os.environ else '' @@ -384,6 +384,7 @@ def main(): parser.add_argument('action',choices=commands.keys(), default='html', nargs='?') parser.add_argument('root', nargs='?', default='.') parser.add_argument('--branch') + parser.add_argument('--verbose', action='store_true') parser.add_argument('--dry-run', action='store_true') args = parser.parse_args() diff --git a/source/conf.py b/source/conf.py index 5b2c1dae70..e97801e95f 100644 --- a/source/conf.py +++ b/source/conf.py @@ -70,6 +70,7 @@ 'elements/oneTBB/source/uncategorized/**', 'elements/oneTBB/source/low_level_task_api.rst', 'elements/oneTBB/source/low_level_tasking/**', + '**/*.inc.rst', ] # The name of the Pygments (syntax highlighting) style to use. @@ -139,7 +140,28 @@ # Additional stuff for the LaTeX preamble. # - 'preamble': '\\DeclareUnicodeCharacter{2208}{$\\in$}', + 'preamble': ('\\DeclareUnicodeCharacter{2208}{$\\in$}' + '\\DeclareUnicodeCharacter{222A}{$\\cup$}' + '\\DeclareUnicodeCharacter{2236}{$\\colon$}' + '\\DeclareUnicodeCharacter{2260}{$\\neq$}' + '\\DeclareUnicodeCharacter{2264}{$\\leq$}' + '\\DeclareUnicodeCharacter{2265}{$\\geq$}' + '\\DeclareUnicodeCharacter{393}{$\\gamma$}' + '\\DeclareUnicodeCharacter{39B}{$\\Lambda$}' + '\\DeclareUnicodeCharacter{3A3}{$\\Sigma$}' + '\\DeclareUnicodeCharacter{3A6}{$\\phi$}' + '\\DeclareUnicodeCharacter{3B1}{$\\alpha$}' + '\\DeclareUnicodeCharacter{3B2}{$\\beta$}' + '\\DeclareUnicodeCharacter{3B4}{$\\delta$}' + '\\DeclareUnicodeCharacter{3BB}{$\\lambda$}' + '\\DeclareUnicodeCharacter{3BC}{$\\mu$}' + '\\DeclareUnicodeCharacter{3BD}{$\\nu$}' + '\\DeclareUnicodeCharacter{3C0}{$\\pi$}' + '\\DeclareUnicodeCharacter{3C3}{$\\sigma$}' + '\\DeclareUnicodeCharacter{FB01}{$fi$}' + '\\DeclareUnicodeCharacter{FB02}{$fl$}' + ), + # Latex figure (float) alignment # diff --git a/source/conf/common_conf.py b/source/conf/common_conf.py index 9d9e631c73..d18373a26c 100644 --- a/source/conf/common_conf.py +++ b/source/conf/common_conf.py @@ -6,6 +6,7 @@ 'sphinx.ext.coverage', 'sphinx.ext.mathjax', 'sphinx.ext.ifconfig', + 'sphinx.ext.imgconverter', 'sphinx.ext.viewcode', 'sphinx.ext.githubpages', 'sphinx.ext.graphviz', diff --git a/source/elements/oneMKL/source/architecture/api_design.inc.rst b/source/elements/oneMKL/source/architecture/api_design.inc.rst new file mode 100644 index 0000000000..aadebd7917 --- /dev/null +++ b/source/elements/oneMKL/source/architecture/api_design.inc.rst @@ -0,0 +1,180 @@ +.. _onemkl_api_design: + +API design in oneMKL +---------------------- +This section discusses the general features of oneMKL API design. + +.. _onemkl_namespaces: + +oneMKL namespaces +++++++++++++++++++ + +The oneMKL library uses C++ namespaces to organize routines by mathematical domain. All oneMKL objects and routines shall be contained within the ``onemkl`` base namespace. The individual oneMKL domains use a secondary namespace layer as follows: + +=================== ======================================================================================================= +namespace oneMKL domain or content +=================== ======================================================================================================= +``onemkl`` oneMKL base namespace, contains general oneMKL data types, objects, exceptions and routines +``onemkl::blas`` Dense linear algebra routines from BLAS and BLAS like extensions. See :ref:`onemkl_blas` +``onemkl::lapack`` Dense linear algebra routines from LAPACK and LAPACK like extensions. See :ref:`onemkl_lapack` +``onemkl::sparse`` Sparse linear algebra routines from Sparse BLAS and Sparse Solvers. See :ref:`onemkl_sparse_linear_algebra` +``onemkl::dft`` Discrete and fast Fourier transformations. See :ref:`onemkl_dft` +``onemkl::rng`` Random number generator routines. See :ref:`onemkl_rng` +``onemkl::vm`` Vector mathematics routines, e.g. trigonometric, exponential functions acting on elements of a vector. See :ref:`onemkl_vm` +=================== ======================================================================================================= + + +.. _onemkl_cpp_datatypes: + +Standard C++ datatype usage ++++++++++++++++++++++++++++ + +oneMKL uses C++ STL data types for scalars where applicable: + * Integer scalars are C++ fixed-size integer types (``std::intN_t``, ``std::uintN_t``). + * Complex numbers are represented by C++ ``std::complex`` types. + +In general, scalar integer arguments to oneMKL routines are 64 bit integers (``std::int64_t`` or ``std::uint64_t``). Integer vectors and matrices may have varying bit widths, defined on a per-routine basis. + +.. _onemkl_dpcpp_datatypes: + +DPC++ datatype usage +++++++++++++++++++++ + +oneMKL uses following SYCL Language data types and DPC++ Language Extensions data types: + * SYCL queue ``sycl::queue`` for scheduling kernels on a SYCL device. See :ref:`onemkl_queues` for more details. + * SYCL buffer ``sycl::buffer`` for buffer based memory access. See :ref:`onemkl_buffers` for more details. + * DPC++ Extension Unified Shared Memory (USM) for pointer based memory access. See :ref:`onemkl_usm` for more details. + * SYCL event ``sycl::event`` for output event synchronization in oneMKL routines with USM pointers. See :ref:`onemkl_synchronization_with_usm` for more details. + * Vector of SYCL events ``sycl::vector_class`` for input events synchronization in oneMKL routines with USM pointers. See :ref:`onemkl_synchronization_with_usm` for more details. + +.. _onemkl_datatypes: + +oneMKL defined datatypes +++++++++++++++++++++++++ + +oneMKL linear algebra routines use scoped enum types as type-safe replacements for the traditional character arguments used in BLAS and LAPACK. These types all belong to the ``onemkl`` namespace. + +Each enumeration value comes with two names: A single-character name (the traditional BLAS/LAPACK character) and a longer, more descriptive name. The two names are exactly equivalent and may be used interchangeably. + + .. rubric:: transpose + :name: transpose + :class: sectiontitle + + The ``transpose`` type specifies whether an input matrix should be + transposed and/or conjugated. It can take the following values: + + .. container:: tablenoborder + + .. list-table:: + :header-rows: 1 + + * - Short Name + - Long Name + - Description + * - ``transpose::N`` + - ``transpose::nontrans`` + - Do not transpose or conjugate the matrix. + * - ``transpose::T`` + - ``transpose::trans`` + - Transpose the matrix. + * - ``transpose::C`` + - ``transpose::conjtrans`` + - Perform Hermitian transpose (transpose and conjugate). Only applicable to complex matrices. + + .. rubric:: uplo + :name: uplo + :class: sectiontitle + + The ``uplo`` type specifies whether the lower or upper triangle of + a triangular, symmetric, or Hermitian matrix should be accessed. + It can take the following values: + + .. container:: tablenoborder + + .. list-table:: + :header-rows: 1 + + * - Short Name + - Long Name + - Description + * - ``uplo::U`` + - ``uplo::upper`` + - Access the upper triangle of the matrix. + * - ``uplo::L`` + - ``uplo::lower`` + - Access the lower triangle of the matrix. + + In both cases, elements that are not in the selected triangle are + not accessed or updated. + + .. rubric:: diag + :name: diag + :class: sectiontitle + + The ``diag`` type specifies the values on the diagonal of a + triangular matrix. It can take the following values: + + .. container:: tablenoborder + + .. list-table:: + :header-rows: 1 + + * - Short Name + - Long Name + - Description + * - ``diag::N`` + - ``diag::nonunit`` + - The matrix is not unit triangular. The diagonal entries are stored with the matrix data. + * - ``diag::U`` + - ``diag::unit`` + - The matrix is unit triangular (the diagonal entries are all 1's). The diagonal entries in the matrix data are not accessed. + + .. rubric:: side + :name: side + :class: sectiontitle + + The ``side`` type specifies the order of matrix multiplication + when one matrix has a special form (triangular, symmetric, or + Hermitian): + + .. container:: tablenoborder + + .. list-table:: + :header-rows: 1 + + * - Short Name + - Long Name + - Description + * - ``side::L`` + - ``side::left`` + - The special form matrix is on the left in the multiplication. + * - ``side::R`` + - ``side::right`` + - The special form matrix is on the right in the multiplication. + + .. rubric:: offset + :name: offset + :class: sectiontitle + + The ``offset`` type specifies whether the offset to apply to an + output matrix is a fix offset, column offset or row offset. It can + take the following values + + .. container:: tablenoborder + + .. list-table:: + :header-rows: 1 + + * - Short Name + - Long Name + - Description + * - ``offset::F`` + - ``offset::fix`` + - The offset to apply to the output matrix is fix, all the inputs in the ``C_offset`` matrix has the same value given by the first element in the ``co`` array. + * - ``offset::C`` + - ``offset::column`` + - The offset to apply to the output matrix is a column offset, that is to say all the columns in the ``C_offset`` matrix are the same and given by the elements in the ``co`` array. + * - ``offset::R`` + - ``offset::row`` + - The offset to apply to the output matrix is a row offset, that is to say all the rows in the ``C_offset`` matrix are the same and given by the elements in the ``co`` array. + diff --git a/source/elements/oneMKL/source/architecture/architecture.rst b/source/elements/oneMKL/source/architecture/architecture.rst new file mode 100644 index 0000000000..44214371a1 --- /dev/null +++ b/source/elements/oneMKL/source/architecture/architecture.rst @@ -0,0 +1,10 @@ +.. _onemkl_architecture: + +oneMKL Architecture +==================== + +.. include:: execution_model.inc.rst +.. include:: memory_model.inc.rst +.. include:: api_design.inc.rst +.. include:: exceptions.inc.rst +.. include:: global_library_controls.inc.rst diff --git a/source/elements/oneMKL/source/architecture/exceptions.inc.rst b/source/elements/oneMKL/source/architecture/exceptions.inc.rst new file mode 100644 index 0000000000..ecb1fa6458 --- /dev/null +++ b/source/elements/oneMKL/source/architecture/exceptions.inc.rst @@ -0,0 +1,7 @@ +.. _onemkl_exceptions: + +oneMKL Exceptions +------------------ + +Will be added in a future version. + diff --git a/source/elements/oneMKL/source/architecture/execution_model.inc.rst b/source/elements/oneMKL/source/architecture/execution_model.inc.rst new file mode 100644 index 0000000000..389ab434db --- /dev/null +++ b/source/elements/oneMKL/source/architecture/execution_model.inc.rst @@ -0,0 +1,88 @@ +.. _onemkl_execution_model: + +Execution Model +--------------- + +This section describes the execution environment common to all oneMKL functionality. + +.. _onemkl_queues: + +Queues +++++++ + +Will be added in a future version. + + +.. _onemkl_nonmember_functions: + +Non-Member Functions +******************** + +Each oneMKL non-member computational routine takes a ``sycl::queue`` reference as its first parameter:: + + mkl::domain::routine(sycl::queue &q, ...); + +All computation performed by the routine shall be done on the hardware device(s) associated with this queue, with possible aid from the host, unless otherwise specified. +In the case of an ordered queue, all computation shall also be ordered with respect to other kernels as if enqueued on that queue. + +A particular oneMKL implementation may not support the execution of a given oneMKL routine on the specified device(s). In this case, the implementation may either perform the computation on the host or throw an exception. + +.. _onemkl_member_functions: + +Member Functions +**************** + +oneMKL class-based APIs, such as those in the RNG and DFT domains, require a ``sycl::queue`` as an argument to the constructor or another setup routine. +The execution requirements for computational routines from the previous section also apply to computational class methods. + +.. _onemkl_device_usage: + +Device Usage +++++++++++++ + +oneMKL itself does not currently provide any interfaces for controlling device usage: for instance, controlling the number of cores used on the CPU, or the number of execution units on a GPU. However, such functionality may be available by partitioning a ``sycl::device`` instance into subdevices, when supported by the device. + +When given a queue associated with such a subdevice, a oneMKL implementation shall only perform computation on that subdevice. + +.. _onemkl_asynchronous_synchronous_execution: + +Asynchronous Execution +++++++++++++++++++++++ +The oneMKL API is designed to allow asynchronous execution of computational routines, to facilitate concurrent usage of multiple devices in the system. Each computational routine enqueues work to be performed on the selected device, and may (but is not required to) return before execution completes. + +Hence, it is the calling application's responsibility to ensure that any inputs are valid until computation is complete, and likewise to wait for computation completion before reading any outputs. This can be done automatically when using DPC++ buffers, or manually when using Unified Shared Memory (USM) pointers, as described in the sections below. + +Unless otherwise specified, asynchronous execution is *allowed*, but not *guaranteed*, by any oneMKL computational routine, and may vary between implementations and/or versions. oneMKL implementations must clearly document whether execution is guaranteed to be asynchronous for each supported routine. + + +.. _onemkl_synchronization_with_buffers: + +Synchronization When Using Buffers +*********************************** + +``sycl::buffer`` objects automatically manage synchronization between kernel launches linked by a data dependency (either read-after-write, write-after-write, or write-after-read). + +oneMKL routines are not required to perform any additional synchronization of ``sycl::buffer`` arguments. + +.. _onemkl_synchronization_with_usm: + +Synchronization When Using USM APIs +*********************************** + +When USM pointers are used as input to, or output from, a oneMKL routine, it becomes the calling application's responsibility to manage possible asynchronicity. + +To help the calling application, all oneMKL routines with at least one USM pointer argument also take an optional reference to a list of *input events*, of type ``sycl::vector_class``, and have a return value of type ``sycl::event`` representing computation completion:: + + sycl::event mkl::domain::routine(..., sycl::vector_class &in_events = {}); + +The routine shall ensure that all input events (if the list is present and non-empty) have occurred before any USM pointers are accessed. Likewise, the routine's output event shall not be complete until the routine has finished accessing all USM pointer arguments. + +For class methods, "argument" includes any USM pointers previously provided to the object via the class constructor or other class methods. + + +.. _onemkl_host_thread_safety: + +Host Thread Safety +++++++++++++++++++ + +All oneMKL member and non-member functions shall be *host thread safe*. That is, they may be safely called simultaneously from concurrent host threads. However, oneMKL objects in class-based APIs may not be shared between concurrent host threads unless otherwise specified. diff --git a/source/elements/oneMKL/source/architecture/global_library_controls.inc.rst b/source/elements/oneMKL/source/architecture/global_library_controls.inc.rst new file mode 100644 index 0000000000..4242b25f32 --- /dev/null +++ b/source/elements/oneMKL/source/architecture/global_library_controls.inc.rst @@ -0,0 +1,23 @@ +.. _onemkl_global_lib_control: + +Global Library Controls +------------------------ +Will be added in a future version. + + +.. _onemkl_spec_version: + +oneMKL Specification Versioning +++++++++++++++++++++++++++++++++ + +This is oneMKL specification version ``0.7.0``. + + +.. _onemkl_pre_post_condition_control: + +Control of Pre/Post Condition Checking ++++++++++++++++++++++++++++++++++++++++ + +Will be added in a future version. + + diff --git a/source/elements/oneMKL/source/architecture/memory_model.inc.rst b/source/elements/oneMKL/source/architecture/memory_model.inc.rst new file mode 100644 index 0000000000..ae279a2365 --- /dev/null +++ b/source/elements/oneMKL/source/architecture/memory_model.inc.rst @@ -0,0 +1,29 @@ +.. _onemkl_memory_model: + +Memory Model +------------- + +The oneMKL memory model shall follow directly from the oneAPI memory model. Mainly, oneMKL shall support two modes of encapsulating data for consumption on the device: the buffer memory abstraction model and the pointer-based memory model using Unified Shared Memory (USM). These two paradigms shall also support both synchronous and asynchronous execution models as described in :ref:`onemkl_asynchronous_synchronous_execution`. + + +.. _onemkl_buffers: + +The buffer memory model ++++++++++++++++++++++++ + +The SYCL 1.2.1 specification defines the buffer container templated on the provided data type which encapsulates the data in a SYCL application across both host and devices. It provides the concept of accessors as the mechanism to access the buffer data with different modes to read and or write into that data. These accessors allow SYCL to create and manage the data dependencies in the SYCL graph that order the kernel executions. With the buffer model, all data movement is handled by the SYCL runtime supporting both synchronous and asynchronous execution. + +oneMKL provides APIs where buffers (in particular 1D buffers, ``sycl::buffer``) contain the memory for all non scalar input and output data arguments. See :ref:`onemkl_synchronization_with_buffers` for details on how oneMKL routines manage any data dependencies with buffer arguments. Any higher dimensional buffer must be converted to a 1D buffer prior to use in oneMKL APIs, e.g., via ``buffer::reinterpret``. + + + +.. _onemkl_usm: + +Unified Shared Memory model ++++++++++++++++++++++++++++ + +While the buffer model is powerful and elegantly expresses the data dependencies, it can be a burden for programmers to replace all pointers and arrays by buffers in their C++ applications. A pointer-based model called Unified Shared Memory (USM) has also been provided in the DPC++ language. This alternative approach allows the programmer to use standard C++ pointers that have been allocated using one of the DPC++ provided memory allocation routines (e.g., ``malloc_shared()``). The USM pointers, however, do not manage data dependencies between enqueued actions on the USM data, so DPC++ language provides ``sycl::event`` objects associated with each enqueued submission which can be used to explicitly manage the dependencies. + +oneMKL provides APIs where USM pointers contain the memory for all non scalar input and output data arguments. Additionally, oneMKL APIs with USM pointers shall provide means to pass ``sycl::events`` to manage the data depednencies. See :ref:`onemkl_synchronization_with_usm` for the details. + + diff --git a/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst b/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst new file mode 100644 index 0000000000..6575d4c28b --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst @@ -0,0 +1,143 @@ +.. _asum-usm-version: + +asum (USM Version) +================== + + +.. container:: + + + Computes the sum of magnitudes of the vector elements. + + + .. container:: section + :name: GUID-C135E117-8018-473E-BE83-8833C95BB3B5 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event asum(queue &exec_queue, std::int64_t n, const T \*x, std::int64_t incx, T_res \*result, const vector_class &dependencies = {}) + + The USM version of ``asum`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_res + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + + .. container:: section + :name: GUID-6AFCECB5-6614-46AC-B921-AB5DED0D22B2 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The asum routine computes the sum of the magnitudes of elements of + a real vector, or the sum of magnitudes of the real and imaginary + parts of elements of a complex vector: + + + |image0| + + + where ``x`` is a vector with ``n`` elements. + + + .. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Pointer to input vector ``x``. The array holding the vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-2B160DEB-ADBB-4044-8078-4B613A0DA4E1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Pointer to the output matrix where the scalar result is stored + (the sum of magnitudes of the real and imaginary parts of all + elements of the vector). + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-4F76F5A1-251F-4AC0-A2E0-A3B4B6F39ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/asum.rst b/source/elements/oneMKL/source/domains/blas/asum.rst new file mode 100644 index 0000000000..8e7f53092f --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/asum.rst @@ -0,0 +1,121 @@ +.. _asum: + +asum +==== + + +.. container:: + + + Computes the sum of magnitudes of the vector elements. + + + .. container:: section + :name: GUID-C135E117-8018-473E-BE83-8833C95BB3B5 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void asum(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &result) + + ``asum`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_res + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + +.. container:: section + :name: GUID-6AFCECB5-6614-46AC-B921-AB5DED0D22B2 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The asum routine computes the sum of the magnitudes of elements of a + real vector, or the sum of magnitudes of the real and imaginary parts + of elements of a complex vector: + + + |image0| + + + where ``x`` is a vector with ``n`` elements. + + +.. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + +.. container:: section + :name: GUID-2B160DEB-ADBB-4044-8078-4B613A0DA4E1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Buffer where the scalar result is stored (the sum of magnitudes of + the real and imaginary parts of all elements of the vector). + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-684BB993-83CA-4605-BD49-E493806C1ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst b/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst new file mode 100644 index 0000000000..d06fd83c5e --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst @@ -0,0 +1,156 @@ +.. _axpy-usm-version: + +axpy (USM Version) +================== + + +.. container:: + + + Computes a vector-scalar product and adds the result to a vector. + + + .. container:: section + :name: GUID-17ADB23B-C9B0-44B4-89F9-B7199DA9E872 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event axpy(queue &exec_queue, std::int64_t n, T alpha, const T \*x, std::int64_t incx, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of ``axpy`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-4BC6BF9A-BAB9-4078-A6B5-9C7ECB9D4821 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The axpy routines compute a scalar-vector product and add the + result to a vector: + + + + + + y <- alpha*x+y + + + where: + + + ``x`` and ``y`` are vectors of ``n`` elements, + + + ``alpha`` is a scalar. + + + .. container:: section + :name: GUID-6F86EF6A-8FFE-4C6A-8B71-23B95C1F1365 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector x. + + + alpha + Specifies the scalar alpha. + + + x + Pointer to the input vector x. The array holding the vector + ``x`` must be of size at least ``(1 + (n – 1)*abs(incx))``. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Pointer to the input vector y. The array holding the vector + ``y`` must be of size at least ``(1 + (n – 1)*abs(incy))``. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-A0926D96-B673-48A4-986A-033719589288 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Pointer to the updated vector y. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/axpy.rst b/source/elements/oneMKL/source/domains/blas/axpy.rst new file mode 100644 index 0000000000..50f2ed9868 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/axpy.rst @@ -0,0 +1,135 @@ +.. _axpy: + +axpy +==== + + +.. container:: + + + Computes a vector-scalar product and adds the result to a vector. + + + .. container:: section + :name: GUID-17ADB23B-C9B0-44B4-89F9-B7199DA9E872 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void axpy(queue &exec_queue, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy) + + ``axpy`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-4BC6BF9A-BAB9-4078-A6B5-9C7ECB9D4821 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The axpy routines compute a scalar-vector product and add the result + to a vector: + + + + + + y <- alpha*x+y + + + where: + + + ``x`` and ``y`` are vectors of ``n`` elements, + + + ``alpha`` is a scalar. + + +.. container:: section + :name: GUID-6F86EF6A-8FFE-4C6A-8B71-23B95C1F1365 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector x. + + + alpha + Specifies the scalar alpha. + + + x + Buffer holding input vector x. The buffer must be of size at least + ``(1 + (n – 1)*abs(incx))``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Buffer holding input vector y. The buffer must be of size at least + ``(1 + (n – 1)*abs(incy))``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + +.. container:: section + :name: GUID-A0926D96-B673-48A4-986A-033719589288 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Buffer holding the updated vector y. + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/blas-level-1-routines.inc.rst b/source/elements/oneMKL/source/domains/blas/blas-level-1-routines.inc.rst new file mode 100644 index 0000000000..904ba518fe --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/blas-level-1-routines.inc.rst @@ -0,0 +1,125 @@ +.. _blas-level-1-routines: + +BLAS Level 1 Routines +===================== + + +.. container:: + + + BLAS Level 1 includes routines and functions, which perform + vector-vector operations. The following table lists the BLAS Level 1 + routine and function groups and the data types associated with them. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Routine or Function Group with SYCL Buffer + - Routine or Function Group with USM + - Data Types + - Description + * - \ `asum `__\ + - \ `asum `__\ + - float, double, mixed float and std::complex, mixed double and std::complex + - Sum of vector magnitudes (functions) + * - \ `axpy `__\ + - \ `axpy `__\ + - float, double, std::complex, std::complex + - Scalar-vector product (routines) + * - \ `copy `__\ + - \ `copy `__\ + - float, double, std::complex, std::complex + - Copy vector (routines) + * - \ `dot `__\ + - \ `dot `__\ + - float, double, mixed float and double + - Dot product (functions) + * - \ `sdsdot `__\ + - \ `sdsdot `__\ + - mixed float and double + - Dot product with double precision (functions) + * - \ `dotc `__\ + - \ `dotc `__\ + - std::complex, std::complex + - Dot product conjugated (functions) + * - \ `dotu `__\ + - \ `dotu `__\ + - std::complex, std::complex + - Dot product unconjugated (functions) + * - \ `nrm2 `__\ + - \ `nrm2 `__\ + - float, double, mixed float and std::complex, mixed double and std::complex + - Vector 2-norm (Euclidean norm) (functions) + * - \ `rot `__\ + - \ `rot `__\ + - float, double, mixed float and std::complex, mixed double and std::complex + - Plane rotation of points (routines) + * - \ `rotg `__\ + - \ `rotg `__\ + - float, double, std::complex, std::complex + - Generate Givens rotation of points (routines) + * - \ `rotm `__\ + - \ `rotm `__\ + - float, double + - Modified Givens plane rotation of points (routines) + * - \ `rotmg `__\ + - \ `rotmg `__\ + - float, double + - Generate modified Givens plane rotation of points (routines) + * - \ `scal `__\ + - \ `scal `__\ + - float, double, std::complex, std::complex, mixed float and std::complex, mixed double and std::complex + - Vector-scalar product (routines) + * - \ `swap `__\ + - \ `swap `__\ + - float, double, std::complex, std::complex + - Vector-vector swap (routines) + * - \ `iamax `__\ + - \ `iamax `__\ + - float, double, std::complex, std::complex + - Index of the maximum absolute value element of a vector (functions) + * - \ `iamin `__\ + - \ `iamin `__\ + - float, double, std::complex, std::complex + - Index of the minimum absolute value element of a vector (functions) + +.. toctree:: + :hidden: + + asum + asum-usm-version + axpy + axpy-usm-version + copy + copy-usm-version + dot + dot-usm-version + dotc + dotc-usm-version + dotu + dotu-usm-version + iamax + iamax-usm-version + iamin + iamin-usm-version + nrm2 + nrm2-usm-version + rot + rot-usm-version + rotg + rotg-usm-version + rotm + rotm-usm-version + rotmg + rotmg-usm-version + scal + scal-usm-version + sdsdot + sdsdot-usm-version + swap + swap-usm-version + diff --git a/source/elements/oneMKL/source/domains/blas/blas-level-2-routines.inc.rst b/source/elements/oneMKL/source/domains/blas/blas-level-2-routines.inc.rst new file mode 100644 index 0000000000..763a5d1142 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/blas-level-2-routines.inc.rst @@ -0,0 +1,181 @@ +.. _blas-level-2-routines: + +BLAS Level 2 Routines +===================== + + +.. container:: + + + This section describes BLAS Level 2 routines, which perform + matrix-vector operations. The following table lists the BLAS Level 2 + routine groups and the data types associated with them. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Routine or Function Group with SYCL Buffer + - Routine or Function Group with USM + - Data Types + - Description + * - \ `gbmv `__\ + - \ `gbmv `__\ + - float, double, std::complex, std::complex + - Matrix-vector product using a general band matrix + * - \ `gemv `__\ + - \ `gemv `__\ + - float, double, std::complex, std::complex + - Matrix-vector product using a general matrix + * - \ `ger `__\ + - \ `ger `__\ + - float, double + - Rank-1 update of a general matrix + * - \ `gerc `__\ + - \ `gerc `__\ + - std::complex, std::complex + - Rank-1 update of a conjugated general matrix + * - \ `geru `__\ + - \ `geru `__\ + - std::complex, std::complex + - Rank-1 update of a general matrix, unconjugated + * - \ `hbmv `__\ + - \ `hbmv `__\ + - std::complex, std::complex + - Matrix-vector product using a Hermitian band matrix + * - \ `hemv `__\ + - \ `hemv `__\ + - std::complex, std::complex + - Matrix-vector product using a Hermitian matrix + * - \ `her `__\ + - \ `her `__\ + - std::complex, std::complex + - Rank-1 update of a Hermitian matrix + * - \ `her2 `__\ + - \ `her2 `__\ + - std::complex, std::complex + - Rank-2 update of a Hermitian matrix + * - \ `hpmv `__\ + - \ `hpmv `__\ + - std::complex, std::complex + - Matrix-vector product using a Hermitian packed matrix + * - \ `hpr `__\ + - \ `hpr `__\ + - std::complex, std::complex + - Rank-1 update of a Hermitian packed matrix + * - \ `hpr2 `__\ + - \ `hpr2 `__\ + - std::complex, std::complex + - Rank-2 update of a Hermitian packed matrix + * - \ `sbmv `__\ + - \ `sbmv `__\ + - float, double + - Matrix-vector product using symmetric band matrix + * - \ `spmv `__\ + - \ `spmv `__\ + - float, double + - Matrix-vector product using a symmetric packed matrix + * - \ `spr `__\ + - \ `spr `__\ + - float, double + - Rank-1 update of a symmetric packed matrix + * - \ `spr2 `__\ + - \ `spr2 `__\ + - float, double + - Rank-2 update of a symmetric packed matrix + * - \ `symv `__\ + - \ `symv `__\ + - float, double + - Matrix-vector product using a symmetric matrix + * - \ `syr `__\ + - \ `syr `__\ + - float, double + - Rank-1 update of a symmetric matrix + * - \ `syr2 `__\ + - \ `syr2 `__\ + - float, double + - Rank-2 update of a symmetric matrix + * - \ `tbmv `__\ + - \ `tbmv `__\ + - float, double, std::complex, std::complex + - Matrix-vector product using a triangular band matrix + * - \ `tbsv `__\ + - \ `tbsv `__\ + - float, double, std::complex, std::complex + - Solution of a linear system of equations with a triangular band matrix + * - \ `tpmv `__\ + - \ `tpmv `__\ + - float, double, std::complex, std::complex + - Matrix-vector product using a triangular packed matrix + * - \ `tpsv `__\ + - \ `tpsv `__\ + - float, double, std::complex, std::complex + - Solution of a linear system of equations with a triangular packed matrix + * - \ `trmv `__\ + - \ `trmv `__\ + - float, double, std::complex, std::complex + - Matrix-vector product using a triangular matrix + * - \ `trsv `__\ + - \ `trsv `__\ + - float, double, std::complex, std::complex + - Solution of a linear system of equations with a triangular matrix + + + + +.. toctree:: + :hidden: + + gbmv + gbmv-usm-version + gemv + gemv-usm-version + ger + ger-usm-version + gerc + gerc-usm-version + geru + geru-usm-version + hbmv + hbmv-usm-version + hemv + hemv-usm-version + her + her-usm-version + her2 + her2-usm-version + hpmv + hpmv-usm-version + hpr + hpr-usm-version + hpr2 + hpr2-usm-version + sbmv + sbmv-usm-version + spmv + spmv-usm-version + spr + spr-usm-version + spr2 + spr2-usm-version + symv + symv-usm-version + syr + syr-usm-version + syr2 + syr2-usm-version + tbmv + tbmv-usm-version + tbsv + tbsv-usm-version + tpmv + tpmv-usm-version + tpsv + tpsv-usm-version + trmv + trmv-usm-version + trsv + trsv-usm-version diff --git a/source/elements/oneMKL/source/domains/blas/blas-level-3-routines.inc.rst b/source/elements/oneMKL/source/domains/blas/blas-level-3-routines.inc.rst new file mode 100644 index 0000000000..d75181fa65 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/blas-level-3-routines.inc.rst @@ -0,0 +1,109 @@ +.. _blas-level-3-routines: + +BLAS Level 3 Routines +===================== + + +.. container:: + + + BLAS Level 3 routines perform matrix-matrix operations. The following + table lists the BLAS Level 3 routine groups and the data types + associated with them. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Routine or Function Group with SYCL Buffer + - Routine or Function Group with USM + - Data Types + - Description + * - \ `gemm `__\ + - \ `gemm `__\ + - float, double, std::complex, std::complex + - Computes a matrix-matrix product with general matrices. + * - \ `hemm `__\ + - \ `hemm `__\ + - std::complex, std::complex + - Computes a matrix-matrix product where one input matrix is Hermitian and one is general. + * - \ `herk `__\ + - \ `herk `__\ + - std::complex, std::complex + - Performs a Hermitian rank-k update. + * - \ `her2k `__\ + - \ `her2k `__\ + - std::complex, std::complex + - Performs a Hermitian rank-2k update. + * - \ `symm `__\ + - \ `symm `__\ + - float, double, std::complex, std::complex + - Computes a matrix-matrix product where one input matrix is symmetric and one matrix is general. + * - \ `syrk `__\ + - \ `syrk `__\ + - float, double, std::complex, std::complex + - Performs a symmetric rank-k update. + * - \ `syr2k `__\ + - \ `syr2k `__\ + - float, double, std::complex, std::complex + - Performs a symmetric rank-2k update. + * - \ `trmm `__\ + - \ `trmm `__\ + - float, double, std::complex, std::complex + - Computes a matrix-matrix product where one input matrix is triangular and one input matrix is general. + * - \ `trsm `__\ + - \ `trsm `__\ + - float, double, std::complex, std::complex + - Solves a triangular matrix equation (forward or backward solve). + + + + + - + + + .. container:: + :name: LI_21BA86AC0A4942A79BA0C7DC4ABC50C4 + + + The BLAS functions are blocked where possible to restructure + the code in a way that increases the localization of data + reference, enhances cache memory use, and reduces the + dependency on the memory bus. + + + - + + + .. container:: + :name: LI_9D82DEDFA672416D9B3EA8C9C2B6F0A3 + + + The code is distributed across the processors to maximize + parallelism. + + +.. toctree:: + :hidden: + + gemm + gemm-usm-version + hemm + hemm-usm-version + her2k + her2k-usm-version + herk + herk-usm-version + symm + symm-usm-version + syr2k + syr2k-usm-version + syrk + syrk-usm-version + trmm + trmm-usm-version + trsm + trsm-usm-version diff --git a/source/elements/oneMKL/source/domains/blas/blas-like-extensions.inc.rst b/source/elements/oneMKL/source/domains/blas/blas-like-extensions.inc.rst new file mode 100644 index 0000000000..529bde7e4d --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/blas-like-extensions.inc.rst @@ -0,0 +1,53 @@ +.. _blas-like-extensions: + +BLAS-like Extensions +==================== + + +.. container:: + + + oneAPI Math Kernel Library DPC++ provides additional routines to + extend the functionality of the BLAS routines. These include routines + to compute many independent matrix-matrix products. + + The following table lists the BLAS-like Extensions groups and the data types + associated with them. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Routine or Function Group with SYCL Buffer + - Data Types + - Description + * - \ `gemm_batch `__\ + - float, double, std::complex, std::complex + - Computes groups of matrix-matrix product with general matrices. + * - \ `trsm_batch `__\ + - float, double, std::complex, std::complex + - Solves a triangular matrix equation for a group of matrices. + * - \ `gemmt `__\ + - float, double, std::complex, std::complex + - Computes a matrix-matrix product with general matrices, but updates + only the upper or lower triangular part of the result matrix. + * - \ `gemm_ext `__\ + - half, float, double, std::complex, std::complex + int8_t, uint8_t, int32_t + - Computes a matrix-matrix product with general matrices + + + + + +.. toctree:: + :hidden: + + gemm_batch + gemm_ext + gemmt + gemmt-usm-version + trsm_batch diff --git a/source/elements/oneMKL/source/domains/blas/blas.rst b/source/elements/oneMKL/source/domains/blas/blas.rst new file mode 100644 index 0000000000..0bff1b9ecc --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/blas.rst @@ -0,0 +1,13 @@ +.. _onemkl_blas: + +BLAS Routines ++++++++++++++ + +oneMKL provides a DPC++ interface to the Basic Linear Algebra Subprograms (BLAS) routines, as well as several BLAS-like extension routines. + +.. include:: blas-level-1-routines.inc.rst +.. include:: blas-level-2-routines.inc.rst +.. include:: blas-level-3-routines.inc.rst +.. include:: blas-like-extensions.inc.rst + +**Parent topic:** :ref:`onemkl_dense_linear_algebra` diff --git a/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst b/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst new file mode 100644 index 0000000000..198a0dbe68 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst @@ -0,0 +1,137 @@ +.. _copy-usm-version: + +copy (USM Version) +================== + + +.. container:: + + + Copies a vector to another vector. + + + .. container:: section + :name: GUID-D6B6C72E-9516-40C9-B034-9F344C41AAF3 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event copy(queue &exec_queue, std::int64_t n, const T \*x, std::int64_t incx, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of ``copy`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-5E0A9C5F-BDD5-41E6-97CD-4316FD58C347 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The copy routines copy one vector to another: + + + + + + y ←x + + + where x and y are vectors of n elements. + + + .. container:: section + :name: GUID-6F86EF6A-8FFE-4C6A-8B71-23B95C1F1365 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector x. + + + x + Pointer to the input vector x. The array holding the vector + ``x`` must be of size at least ``(1 + (n – 1)*abs(incx))``. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + incy + Stride of vector y. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-4ABB603B-835C-428B-B880-2F088BAB5456 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Pointer to the updated vector y. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/copy.rst b/source/elements/oneMKL/source/domains/blas/copy.rst new file mode 100644 index 0000000000..df47419aa4 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/copy.rst @@ -0,0 +1,116 @@ +.. _copy: + +copy +==== + + +.. container:: + + + Copies a vector to another vector. + + + .. container:: section + :name: GUID-D6B6C72E-9516-40C9-B034-9F344C41AAF3 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void copy(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy) + + ``copy`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-5E0A9C5F-BDD5-41E6-97CD-4316FD58C347 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The copy routines copy one vector to another: + + + + + + y ←x + + + where x and y are vectors of n elements. + + +.. container:: section + :name: GUID-6F86EF6A-8FFE-4C6A-8B71-23B95C1F1365 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector x. + + + x + Buffer holding input vector x. The buffer must be of size at least + ``(1 + (n – 1)*abs(incx))``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + incy + Stride of vector y. + + +.. container:: section + :name: GUID-4ABB603B-835C-428B-B880-2F088BAB5456 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Buffer holding the updated vector y. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst new file mode 100644 index 0000000000..859e3d3312 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst @@ -0,0 +1,158 @@ +.. _dot-usm-version: + +dot (USM Version) +================= + + +.. container:: + + + Computes the dot product of two real vectors. + + + .. container:: section + :name: GUID-13355B56-0278-45E5-B310-3B0AC541C675 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event dot(queue &exec_queue, std::int64_t n, const T \*x, std::int64_t incx, const T \*y, std::int64_t incy, T_res \*result, const vector_class &dependencies = {}) + + The USM version of ``dot`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_res + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``float`` + - ``double`` + + + + + .. container:: section + :name: GUID-4BC6BF9A-BAB9-4078-A6B5-9C7ECB9D4821 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The dot routines perform a dot product between two vectors: + + + |image0| + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + For the mixed precision version (inputs are float while result + is double), the dot product is computed with double precision. + + + .. container:: section + :name: GUID-6F86EF6A-8FFE-4C6A-8B71-23B95C1F1365 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vectors x and y. + + + x + Pointer to the input vector x. The array holding the vector x + must be of size at least ``(1 + (n – 1)*abs(incx))``. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Pointer to the input vector y. The array holding the vector y + must be of size at least ``(1 + (n – 1)*abs(incy))``. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-CAAFE234-AF82-4B61-8406-D57EC527BED5 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Pointer to where the result (a scalar) will be stored. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-75532DED-BE44-4D85-B9C0-99C825778ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/dot.rst b/source/elements/oneMKL/source/domains/blas/dot.rst new file mode 100644 index 0000000000..7388eed8c5 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/dot.rst @@ -0,0 +1,136 @@ +.. _dot: + +dot +=== + + +.. container:: + + + Computes the dot product of two real vectors. + + + .. container:: section + :name: GUID-13355B56-0278-45E5-B310-3B0AC541C675 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void dot(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &result) + + ``dot`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_res + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``float`` + - ``double`` + + + + +.. container:: section + :name: GUID-4BC6BF9A-BAB9-4078-A6B5-9C7ECB9D4821 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The dot routines perform a dot product between two vectors: + + + |image0| + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + For the mixed precision version (inputs are float while result is + double), the dot product is computed with double precision. + + +.. container:: section + :name: GUID-6F86EF6A-8FFE-4C6A-8B71-23B95C1F1365 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vectors x and y. + + + x + Buffer holding input vector x. The buffer must be of size at least + ``(1 + (n – 1)*abs(incx))``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Buffer holding input vector y. The buffer must be of size at least + ``(1 + (n – 1)*abs(incy))``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + +.. container:: section + :name: GUID-CAAFE234-AF82-4B61-8406-D57EC527BED5 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Buffer where the result (a scalar) will be stored. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-93DA36DC-40CA-4C01-B883-DABAB0D37ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst new file mode 100644 index 0000000000..037aeadd17 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst @@ -0,0 +1,143 @@ +.. _dotc-usm-version: + +dotc (USM Version) +================== + + +.. container:: + + + Computes the dot product of two complex vectors, conjugating the + first vector. + + + .. container:: section + :name: GUID-9D36611B-564D-475B-8D98-5F53A4F698F5 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void dotc(queue &exec_queue, std::int64_t n, const T \*x, std::int64_t incx, const T \*y, std::int64_t incy, T \*result, const vector_class &dependencies = {}) + + The USM version of ``dotc`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-3E4588D2-5FDE-43F1-955E-85173AE62252 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The ``dotc`` routines perform a dot product between two complex + vectors, conjugating the first of them: + + + |image0| + + + .. container:: section + :name: GUID-38675523-DEDD-4314-8486-7C66614ED2C7 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + The number of elements in vectors ``x`` and ``y``. + + + x + Pointer to input vector ``x``. The array holding the input + vector ``x`` must be of size at least (1 + (``n`` - + 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + The stride of vector ``x``. + + + y + Pointer to input vector ``y``. The array holding the input + vector ``y`` must be of size at least (1 + (``n`` - + 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details.. + + + incy + The stride of vector ``y``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-B84A5D05-6B61-4D13-8185-2A349C41CE46 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + The pointer to where the result (a scalar) is stored. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-B2211D34-A472-4FB8-9CFB-1E11AF4F0ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/dotc.rst b/source/elements/oneMKL/source/domains/blas/dotc.rst new file mode 100644 index 0000000000..08e07d1d32 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/dotc.rst @@ -0,0 +1,121 @@ +.. _dotc: + +dotc +==== + + +.. container:: + + + Computes the dot product of two complex vectors, conjugating the + first vector. + + + .. container:: section + :name: GUID-9D36611B-564D-475B-8D98-5F53A4F698F5 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void dotc(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &result) + + ``dotc`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-3E4588D2-5FDE-43F1-955E-85173AE62252 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The ``dotc`` routines perform a dot product between two complex + vectors, conjugating the first of them: + + + |image0| + + +.. container:: section + :name: GUID-38675523-DEDD-4314-8486-7C66614ED2C7 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + The number of elements in vectors ``x`` and ``y``. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + The stride of vector ``x``. + + + y + Buffer holding input vector ``y``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details.. + + + incy + The stride of vector ``y``. + + +.. container:: section + :name: GUID-B84A5D05-6B61-4D13-8185-2A349C41CE46 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + The buffer where the result (a scalar) is stored. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-AED001B6-9056-491F-ACBE-E06C82D17ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst new file mode 100644 index 0000000000..1f59c0aa90 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst @@ -0,0 +1,142 @@ +.. _dotu-usm-version: + +dotu (USM Version) +================== + + +.. container:: + + + Computes the dot product of two complex vectors. + + + .. container:: section + :name: GUID-27A695AE-7ED5-4CFF-9783-0E50D111BED2 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event dotu(queue &exec_queue, std::int64_t n, const T \*x, std::int64_t incx, const T \*y, std::int64_t incy, T \*result, const vector_class &dependencies = {}) + + The USM version of ``dotu`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-7E67CFC6-917F-41A3-A664-F99EE4E04E43 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The dotu routines perform a dot product between two complex + vectors: + + + |image0| + + + .. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vectors ``x`` and ``y``. + + + x + Pointer to the input vector ``x``. The array holding input + vector ``x`` must be of size at least (1 + (``n`` - + 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Pointer to input vector ``y``. The array holding input vector + ``y`` must be of size at least (1 + (``n`` - 1)*abs(``incy``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-2B160DEB-ADBB-4044-8078-4B613A0DA4E1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Pointer to where the result (a scalar) is stored. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-42AF2BFE-F8F1-4F96-A4E0-05D4FB5A7ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/dotu.rst b/source/elements/oneMKL/source/domains/blas/dotu.rst new file mode 100644 index 0000000000..15cb71e7d5 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/dotu.rst @@ -0,0 +1,119 @@ +.. _dotu: + +dotu +==== + + +.. container:: + + + Computes the dot product of two complex vectors. + + + .. container:: section + :name: GUID-27A695AE-7ED5-4CFF-9783-0E50D111BED2 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void dotu(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &result) + + ``dotu`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-7E67CFC6-917F-41A3-A664-F99EE4E04E43 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The dotu routines perform a dot product between two complex vectors: + + + |image0| + + +.. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vectors ``x`` and ``y``. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Buffer holding input vector ``y``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + +.. container:: section + :name: GUID-2B160DEB-ADBB-4044-8078-4B613A0DA4E1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Buffer where the result (a scalar) is stored. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-3605ACD9-02D1-46D7-B791-F2F76F0D9ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst new file mode 100644 index 0000000000..d53974633d --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst @@ -0,0 +1,208 @@ +.. _gbmv-usm-version: + +gbmv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product with a general band matrix. + + + .. container:: section + :name: GUID-870EA7B0-09B5-43FF-90A4-6378B5D94B55 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event gbmv(queue &exec_queue, transpose trans, std::int64_t m, std::int64_t n, std::int64_t kl, std::int64_t ku, T alpha, const T \*a, std::int64_t lda, const T \*x, std::int64_t incx, T beta, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of ``gbmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-71614419-BC91-4A1A-B743-FE52767C4926 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The ``gbmv`` routines compute a scalar-matrix-vector product and + add the result to a scalar-vector product, with a general band + matrix. The operation is defined as + + + + + + y <- alpha*op(A)*x + beta*y + + + where: + + + - op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + - ``alpha`` and ``beta`` are scalars, + + + - ``A`` is an ``m``-by-``n`` matrix with ``kl`` sub-diagonals and + ``ku`` super-diagonals, + + + - ``x`` and ``y`` are vectors. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + trans + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + m + Number of rows of ``A``. Must be at least zero. + + + n + Number of columns of ``A``. Must be at least zero. + + + kl + Number of sub-diagonals of the matrix ``A``. Must be at least + zero. + + + ku + Number of super-diagonals of the matrix ``A``. Must be at least + zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least (``kl`` + + ``ku`` + 1), and positive. + + + x + Pointer to input vector ``x``. The length ``len`` of vector + ``x`` is ``n`` if ``A`` is not transposed, and ``m`` if ``A`` + is transposed. The array holding input vector ``x`` must be of + size at least (1 + (``len`` - 1)*abs(``incx``)). See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Pointer to input/output vector ``y``. The length ``len`` of + vector ``y`` is ``m``, if ``A`` is not transposed, and ``n`` if + ``A`` is transposed. The array holding input/output vector + ``y`` must be of size at least (1 + (``len`` - + 1)*abs(``incy``)) where ``len`` is this length. See `Matrix and + Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-4B31584D-BC63-4032-A4A7-61BF3F163165 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Pointer to the updated vector ``y``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/gbmv.rst b/source/elements/oneMKL/source/domains/blas/gbmv.rst new file mode 100644 index 0000000000..524d529721 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gbmv.rst @@ -0,0 +1,185 @@ +.. _gbmv: + +gbmv +==== + + +.. container:: + + + Computes a matrix-vector product with a general band matrix. + + + .. container:: section + :name: GUID-870EA7B0-09B5-43FF-90A4-6378B5D94B55 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void gbmv(queue &exec_queue, transpose trans, std::int64_t m, std::int64_t n, std::int64_t kl, std::int64_t ku, T alpha, buffer &a, std::int64_t lda, buffer &x, std::int64_t incx, T beta, buffer &y, std::int64_t incy) + + ``gbmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-71614419-BC91-4A1A-B743-FE52767C4926 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The ``gbmv`` routines compute a scalar-matrix-vector product and add + the result to a scalar-vector product, with a general band matrix. + The operation is defined as + + + + + + y <- alpha*op(A)*x + beta*y + + + where: + + + - op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + - ``alpha`` and ``beta`` are scalars, + + + - ``A`` is an ``m``-by-``n`` matrix with ``kl`` sub-diagonals and + ``ku`` super-diagonals, + + + - ``x`` and ``y`` are vectors. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + trans + Specifies op(``A``), the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. + + + m + Number of rows of ``A``. Must be at least zero. + + + n + Number of columns of ``A``. Must be at least zero. + + + kl + Number of sub-diagonals of the matrix ``A``. Must be at least + zero. + + + ku + Number of super-diagonals of the matrix ``A``. Must be at least + zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least (``kl`` + + ``ku`` + 1), and positive. + + + x + Buffer holding input vector ``x``. The length ``len`` of vector + ``x`` is ``n`` if ``A`` is not transposed, and ``m`` if ``A`` is + transposed. The buffer must be of size at least (1 + (``len`` - + 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Buffer holding input/output vector ``y``. The length ``len`` of + vector ``y`` is ``m``, if ``A`` is not transposed, and ``n`` if + ``A`` is transposed. The buffer must be of size at least (1 + + (``len`` - 1)*abs(``incy``)) where ``len`` is this length. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + +.. container:: section + :name: GUID-4B31584D-BC63-4032-A4A7-61BF3F163165 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Buffer holding the updated vector ``y``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst new file mode 100644 index 0000000000..f124c2cf79 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst @@ -0,0 +1,235 @@ +.. _gemm-usm-version: + +gemm (USM Version) +================== + + +.. container:: + + + Computes a matrix-matrix product with general matrices. + + + .. container:: section + :name: GUID-7885D940-FAC1-4F37-9E1C-A022DED99EBD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event gemm(queue &exec_queue, transpose transa, transpose transb, std::int64_t m, std::int64_t n, std::int64_t k, T alpha, const T \*a, std::int64_t lda, const T \*b, std::int64_t ldb, T beta, T \*c, std::int64_t ldc, const vector_class &dependencies = {}) + + The USM version of ``gemm`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-14237C95-6322-47A4-BC11-D3CDD2118C42 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The gemm routine computes a scalar-matrix-matrix product and adds + the result to a scalar-matrix product, with general matrix inputs. + The operation is defined as + + + + + + C <- alpha*op(A)*op(B) + beta*C + + + where: + + + ``op(X)`` is one of ``op(X) = X``, or ``op(X) = XT``, or + ``op(X) = XH``, + + + ``alpha`` and ``beta`` are scalars, + + + ``A``, ``B`` and ``C`` are matrices: + + + ``op(A)`` is an ``m``-by-``k`` matrix, + + + ``op(B)`` is a ``k``-by-``n`` matrix, + + + ``C`` is an ``m``-by-``n`` matrix. + + + .. container:: section + :name: GUID-D89C4959-F0C2-4E91-8853-9225F0772DF0 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + transa + Specifies the form of ``op(A)``, the transposition operation + applied to ``A``. See + :ref:`onemkl_datatypes` + for more details. + + + transb + Specifies the form of ``op(B)``, the transposition operation + applied to ``B``. See + :ref:`onemkl_datatypes` + for more details. + + + m + Specifies the number of rows of the matrix ``op(A)`` and of the + matrix ``C``. The value of m must be at least zero. + + + n + Specifies the number of columns of the matrix ``op(B)`` and the + number of columns of the matrix ``C``. The value of n must be + at least zero. + + + k + Specifies the number of columns of the matrix ``op(A)`` and the + number of rows of the matrix ``op(B)``. The value of k must be + at least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + Pointer to input matrix ``A``. If ``A`` is not transposed, + ``A`` is an ``m``-by-``k`` matrix so the array ``a`` must have + size at least ``lda``\ \*\ ``k``. If ``A`` is transposed, ``A`` + is an ``k``-by-``m`` matrix so the array ``a`` must have size + at least ``lda``\ \*\ ``m``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + The leading dimension of ``A``. Must be at least m if ``A`` is + not transposed, and at least k if ``A`` is transposed. It must + be positive. + + + b + Pointer to input matrix ``B``. If ``B`` is not transposed, + ``B`` is an ``k``-by-``n`` matrix so the array ``b`` must have + size at least ``ldb``\ \*\ ``n``. If ``B`` is transposed, ``B`` + is an ``n``-by-``k`` matrix so the array ``b`` must have size + at least ``ldb``\ \*\ ``k``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + The leading dimension of ``B``. Must be at least k if ``B`` is + not transposed, and at least n if ``B`` is transposed. It must + be positive. + + + beta + Scaling factor for matrix ``C``. + + + c + The pointer to input/output matrix ``C``. It must have a size + of at least ldc\*n. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + The leading dimension of ``C``. It must be positive and at + least the size of m. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-EEF5C7D0-D206-4961-809F-55DCA3E93F68 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Pointer to the output matrix, overwritten by + ``alpha*op(A)*op(B) + beta*C``. + + + .. container:: section + :name: GUID-AC72653A-4AC8-4B9D-B7A9-13A725AA19BF + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``beta`` = 0, matrix ``C`` does not need to be initialized + before calling ``gemm``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/gemm.rst b/source/elements/oneMKL/source/domains/blas/gemm.rst new file mode 100644 index 0000000000..8e529b1e88 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gemm.rst @@ -0,0 +1,216 @@ +.. _gemm: + +gemm +==== + + +.. container:: + + + Computes a matrix-matrix product with general matrices. + + + .. container:: section + :name: GUID-7885D940-FAC1-4F37-9E1C-A022DED99EBD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void gemm(queue &exec_queue, transpose transa, transpose transb, std::int64_t m, std::int64_t n, std::int64_t k, T alpha, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, T beta, buffer &c, std::int64_t ldc) + + ``gemm`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``half`` + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-14237C95-6322-47A4-BC11-D3CDD2118C42 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The gemm routines compute a scalar-matrix-matrix product and add the + result to a scalar-matrix product, with general matrices. The + operation is defined as + + + + + + C <- alpha*op(A)*op(B) + beta*C + + + where: + + + ``op(X)`` is one of ``op(X) = X``, or ``op(X) = XT``, or + ``op(X) = XH``, + + + ``alpha`` and ``beta`` are scalars, + + + ``A``, ``B`` and ``C`` are matrices: + + + ``op(A)`` is an ``m``-by-``k`` matrix, + + + ``op(B)`` is a ``k``-by-``n`` matrix, + + + ``C`` is an ``m``-by-``n`` matrix. + + +.. container:: section + :name: GUID-D89C4959-F0C2-4E91-8853-9225F0772DF0 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + transa + Specifies the form of ``op(A)``, the transposition operation + applied to ``A``. See + :ref:`onemkl_datatypes` + for more details. + + + transb + Specifies the form of ``op(B)``, the transposition operation + applied to ``B``. See + :ref:`onemkl_datatypes` + for more details. + + + m + Specifies the number of rows of the matrix ``op(A)`` and of the + matrix ``C``. The value of m must be at least zero. + + + n + Specifies the number of columns of the matrix ``op(B)`` and the + number of columns of the matrix ``B``. The value of n must be at + least zero. + + + k + Specifies the number of columns of the matrix ``op(A)`` and the + number of rows of the matrix ``op(B)``. The value of k must be at + least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + The buffer holding the input matrix ``A``. If ``A`` is not + transposed, ``A`` is an ``m``-by-``k`` matrix so the array ``a`` + must have size at least ``lda``\ \*\ ``k``. If ``A`` is + transposed, ``A`` is an ``k``-by-``m`` matrix so the array ``a`` + must have size at least ``lda``\ \*\ ``m``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + The leading dimension of ``A``. Must be at least m if ``A`` is not + transposed, and at least k if ``A`` is transposed. It must be + positive. + + + b + The buffer holding the input matrix ``B``. If ``B`` is not + transposed, ``B`` is an ``k``-by-``n`` matrix so the array ``b`` + must have size at least ``ldb``\ \*\ ``n``. If ``B`` is + transposed, ``B`` is an ``n``-by-``k`` matrix so the array ``b`` + must have size at least ``ldb``\ \*\ ``k``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + The leading dimension of ``B``. Must be at least k if ``B`` is not + transposed, and at least n if ``B`` is transposed. It must be + positive. + + + beta + Scaling factor for matrix ``C``. + + + c + The buffer holding the input/output matrix ``C``. It must have a + size of at least ldc\*n. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + The leading dimension of ``C``. It must be positive and at least + the size of m. + + +.. container:: section + :name: GUID-EEF5C7D0-D206-4961-809F-55DCA3E93F68 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + The buffer, which is overwritten by + ``alpha*op(A)*op(B) + beta*C``. + + +.. container:: section + :name: GUID-AC72653A-4AC8-4B9D-B7A9-13A725AA19BF + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``beta`` = 0, matrix ``C`` does not need to be initialized before + calling ``gemm``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/gemm_batch.rst b/source/elements/oneMKL/source/domains/blas/gemm_batch.rst new file mode 100644 index 0000000000..11034ab68f --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gemm_batch.rst @@ -0,0 +1,440 @@ +.. _gemm_batch: + +gemm_batch +========== + + +.. container:: + + + Computes groups of matrix-matrix product with general matrices. + + + .. container:: section + :name: GUID-7885D940-FAC1-4F37-9E1C-A022DED99EBD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + **Group API** + + + .. cpp:function:: void gemm_batch(queue &exec_queue, buffer &transa_array, buffer &transb_array, buffer &m_array, buffer &n_array, buffer &k_array, buffer alpha_array, buffer &a_array, buffer &lda_array, buffer &b_array, buffer ldb_array, buffer &beta_array, buffer &c, buffer &ldc_array, std::int64_t group_count, buffer &group_size_array) + + **Strided API** + + + .. cpp:function:: void gemm_batch(queue &exec_queue, transpose transa, transpose transb, std::int64_t m, std::int64_t n, std::int64_t k, T alpha, buffer &a, std::int64_t &lda, std::int64_t stridea, buffer &b, std::int64_t ldb, std::int64_t strideb, T beta, buffer &c, std::int64_t ldc, std::int64_t stridec, std::int64_t batch_size) + + ``gemm_batch`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-14237C95-6322-47A4-BC11-D3CDD2118C42 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The gemm_batch routines perform a series of matrix-matrix operations + with general matrices. They are similar to the gemm routine + counterparts, but the gemm_batch routines perform matrix-matrix + operations with groups of matrices. The groups contain matrices with + the same parameters. + + + For the group API, the operation is defined as + + + :: + + + offa = 0, offb = 0, offc = 0 + for i = 0 … group_count – 1 + transa, transb, m, n, k, lda, ldb, ldc, alpha, beta and group_size at position i in transa_array, transb_array, m_array, n_array, k_array, lda_array, ldb_array, ldc_array, alpha_array, beta_array and group_size_array + sizea = transa == onemkl::transpose::N ? lda * k : lda * m; + sizeb = transb == onemkl::transpose::N ? ldb * n : ldb * k; + sizec = ldc * n; + for j = 0 … group_size – 1 + A, B, and C are matrices of size sizea, sizeb and sizec at offset offa, offb and offc in a, b and c. + C := alpha * op(A) * op(B) + beta * C + offa += sizea, offb += sizeb, offc += sizec + end for + end for + + + For the strided API, the operation is defined as + + + :: + + + for i = 0 … batch_size – 1 + A, B and C are matrices at offset i * stridea, i * strideb, i * stridec in a, b and c. + C = alpha * op(A) * op(B) + beta * C + end for + + + where: + + + - op(X) is one of op(X) = X, or op(X) = X\ :sup:`T`, or op(X) = + X\ :sup:`H` + + + - ``alpha`` and ``beta`` are scalars + + + - ``A``, ``B``, and ``C`` are matrices + + + - The a, b and c buffers contains all the input matrices. The stride + between matrices is either given by the exact size of the matrix + (for the group API) or by the stride parameter. The total number + of matrices in a, b and c buffers is given by the + + |image0| + + for the + group API or by the ``batch_size`` parameter for the strided API. + + + Here, op(``A``) is ``m``\ ``x``\ ``k``, op(``B``) is + ``k``\ ``x``\ ``n``, and ``C`` is ``m``\ ``x``\ ``n``. + + +.. container:: section + :name: GUID-863264A0-4CE9-495F-A617-102E46D7A41A + + + .. rubric:: Input Parameters - Group API + :name: input-parameters---group-api + :class: sectiontitle + + + transa_array + Buffer holding ``group_count onemkl::transpose`` value. + + + For the group ``i``, ``transa`` is the ``i``\ th element in the + transa_array buffer and specifies the form of ``op(A)`` used in + the matrix multiplication. See + :ref:`onemkl_datatypes` for more + details. + + + transb_array + Buffer holding ``group_count onemkl::transpose`` value. + + + For the group ``i``, ``transb`` is the ``i``\ th element in the + transb_array buffer and specifies the form of ``op(B)`` used in + the matrix multiplication. See + :ref:`onemkl_datatypes` for more + details. + + + m_array + Buffer holding ``group_count`` integer. For the group ``i``, ``m`` + is the ``i``\ th element in the m_array buffer and specifies the + number of rows of ``op(A)`` and ``C``. Must be at least zero. + + + n_array + Buffer holding ``group_count`` integer. For the group ``i``, ``n`` + is the ``i``\ th element in the n_array buffer and specifies the + number of columns of ``op(B)`` and ``C``. Must be at least zero. + + + k_array + Buffer holding ``group_count`` integer. For the group ``i``, ``k`` + is the ``i``\ th element in the k_array buffer and specifies the + number of columns of ``op(A)`` and rows of ``op(B)``. Must be at + least zero. + + + alpha_array + Buffer holding ``group_count`` scalar element. For the group + ``i``, ``alpha`` is the ``i``\ th element in the alpha_array + buffer and specifies the scaling factor for the matrix-matrix + product. + + + a + Buffer holding the input matrices ``A``. The total size of the + buffer ``a`` must be at least the sum of the sizes of all the + matricies ``A``. That is, + + + |image1| + + + where + ``sizeai = lda_array[i] * (transa == onemkl::transpose::N ? k : m)`` + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + lda_array + Buffer holding ``group_count`` integer. For the group ``i``, + ``lda`` is the ``i``\ th element in the lda_array buffer and + specifies the leading dimension of ``A``. Must be at least ``m`` + if ``A`` is not transposed, and at least ``k`` if ``A`` is + transposed. Must be positive. + + + b + Buffer holding the input matrices ``B``. The total size of the + buffer ``b`` must be at least the sum of the sizes of all the + matricies ``B``. That is, + + + |image2| + + + where + ``sizebi = ldb_array[i] * (transb == onemkl::transpose::N ? n : k)`` + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + ldb_array + Buffer holding ``group_count`` integer. For the group ``i``, + ``ldb`` is the ``i``\ th element in the ldb_array buffer and + specifies the leading dimension of ``B``. Must be at least ``k`` + if ``B`` is not transposed, and at least ``n`` if ``B`` is + transposed. Must be positive. + + + beta_array + Buffer holding ``group_count`` scalar element. For the group + ``i``, ``beta`` is the ``i``\ th element in the beta_array buffer + and specifies the scaling factor for matrix C. + + + c + Buffer holding the input/output matrices ``C``. The total size of + the buffer ``c`` must be at least the sum of the sizes of all the + matricies ``C``. That is, + + + |image3| + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + ldc_array + Buffer holding ``group_count`` integer. For the group ``i``, + ``ldc`` is the ``i``\ th element in the ldc_array buffer and + specifies the leading dimension of ``C``. Must be positive and at + least ``m``. + + + group_count + Specifies the number of groups. Must be at least 0. + + + group_size_array + Buffer holding ``group_count`` integer. For the group ``i``, the + ``i``\ th element in the group_size_array buffer specifies the + number of matrix multiply operations in group ``i``. Each element + in ``group_size_array`` must be at least 0. + + +.. container:: section + :name: GUID-1E4953E6-F7B1-4FEE-BA5A-8C4BD51DC700 + + + .. rubric:: Output Parameters - Group API + :name: output-parameters---group-api + :class: sectiontitle + + + c + Overwritten by the ``m``\ :sub:`i`-by-``n``\ :sub:`i` matrix + ``(alphai*op(A)*op(B) + betai*C)`` for group ``i``. + + +.. container:: section + :name: GUID-D067773A-45A3-4D24-B10A-46E27834947E + + + .. rubric:: Input Parameters - Strided API + :name: input-parameters---strided-api + :class: sectiontitle + + + transa + Specifies ``op(A)`` the transposition operation applied to the + matrices A. See + :ref:`onemkl_datatypes` for more + details. + + + transb + Specifies ``op(B)`` the transposition operation applied to the + matrices B. See + :ref:`onemkl_datatypes` for more + details. + + + m + Number of rows of ``op(A)`` and ``C``. Must be at least zero. + + + n + Number of columns of ``op(B)`` and ``C``. Must be at least zero. + + + k + Number of columns of ``op(A)`` and rows of ``op(B)``. Must be at + least zero. + + + alpha + Scaling factor for the matrix-matrix products. + + + a + Buffer holding the input matrices ``A``. Must have size at least + ``stridea*batch_size``. + + + lda + Leading dimension of the matrices ``A``. Must be at least ``m`` if + the matrices ``A`` are not transposed, and at least ``k`` if the + matrices ``A`` are transposed. Must be positive. + + + stridea + Stride between the different ``A`` matrices. + + + If ``A`` are not transposed, the matrices ``A`` are ``m``-by-``k`` + matrices so stridea must be at least ``lda*k``. + + + If ``A`` are transposed, the matrices ``A`` are ``k``-by-``m`` + matrices so stridea must be at least ``lda*m``. + + + b + Buffer holding the input matrices ``B``. Must have size at least + ``strideb*batch_size``. + + + ldb + Leading dimension of the matrices ``B``. Must be at least ``k`` if + the matrices ``B`` are not transposed, and at least ``n`` if the + matrices ``B`` are transposed. Must be positive. + + + strideb + Stride between the different ``B`` matrices. + + + If ``B`` are not transposed, the matrices ``B`` are ``k``-by-``n`` + matrices so strideb must be at least ``ldb*n``. + + + If ``B`` are transposed, the matrices ``B`` are ``n``-by-``k`` + matrices so strideb must be at least ``ldb*k``. + + + beta + Scaling factor for the matrices ``C``. + + + c + Buffer holding input/output matrices ``C``. Must have size at + least ``stridec*batch_size``. + + + ldc + Leading dimension of ``C``. Must be positive and at least ``m``. + + + stridec + Stride between the different ``C`` matrices. Must be at least + ``ldc*n``. + + + batch_size + Specifies the number of matrix multiply operations to perform. + + +.. container:: section + :name: GUID-98C3DE17-4F5F-41A1-B431-48148153ABBA + + + .. rubric:: Output Parameters - Strided API + :name: output-parameters---strided-api + :class: sectiontitle + + + c + Output buffer, overwritten by ``batch_size`` matrix multiply + operations of the form\ ``alpha*op(A)*op(B) + beta*C``. + + +.. container:: section + :name: GUID-AC72653A-4AC8-4B9D-B7A9-13A725AA19BF + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``beta`` = 0, matrix ``C`` does not need to be initialized before + calling gemm_batch. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-like-extensions` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee1.png + :class: img-middle +.. |image1| image:: ../equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee2.png + :class: img-middle +.. |image2| image:: ../equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee3.png + :class: img-middle +.. |image3| image:: ../equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee4.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/gemm_ext.rst b/source/elements/oneMKL/source/domains/blas/gemm_ext.rst new file mode 100644 index 0000000000..a49fabe8d3 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gemm_ext.rst @@ -0,0 +1,335 @@ +.. _gemm_ext: + +gemm_ext +======== + + +.. container:: + + + Computes a matrix-matrix product with general matrices. + + + .. container:: section + :name: GUID-7885D940-FAC1-4F37-9E1C-A022DED99EBD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + **Standard API** + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void gemm_ext(queue &exec_queue, transpose transa, transpose transb, std::int64_t m, std::int64_t n, std::int64_t k, Ts alpha, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, Ts beta, buffer &c, std::int64_t ldc) + + ``gemm_ext`` supports the following precisions and devices. + + + .. list-table:: + :header-rows: 1 + + * - Ts + - Ta + - Tb + - Tc + * - ``float`` + - ``half`` + - ``half`` + - ``float`` + * - ``half`` + - ``half`` + - ``half`` + - ``half`` + * - ``float`` + - ``float`` + - ``float`` + - ``float`` + * - ``double`` + - ``double`` + - ``double`` + - ``double`` + * - ``std::complex`` + - ``std::complex`` + - ``std::complex`` + - ``std::complex`` + * - ``std::complex`` + - ``std::complex`` + - ``std::complex`` + - ``std::complex`` + + + + + **Offset API** + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void gemm_ext(queue &exec_queue, transpose transa, transpose transb, offset offset_type, std::int64_t m, std::int64_t n, std::int64_t k, Ts alpha, buffer &a, std::int64_t lda, Ta ao, buffer &b, std::int64_t ldb, Tb bo, Ts beta, buffer &c, std::int64_t ldc, buffer &co) + + ``gemm_ext`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - Ts + - Ta + - Tb + - Tc + * - ``float`` + - ``int8_t`` + - ``uint8_t`` + - ``int32_t`` + + + + + .. container:: section + :name: GUID-14237C95-6322-47A4-BC11-D3CDD2118C42 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The gemm_ext routines compute a scalar-matrix-matrix product and + add the result to a scalar-matrix product, with general matrices. + The operation is defined as: + + + :: + + + C ← alpha*op(A)*op(B) + beta*C + + + for the standard API and + :: + + + C ← alpha*(op(A) - A_offset)*(op(B) - B_offset) + beta*C + C_offset + + + for the offset API + where: + + + - op(X) is one of op(X) = X, or op(X) = X\ :sup:`T`, or op(X) = + X\ :sup:`H` + + + - ``alpha`` and ``beta`` are scalars + + + - ``A_offset`` is an ``m``-by-``k`` matrix with every element + equal to the value ao + + + - ``B_offset`` is a ``k``-by-``n`` matrix with every element + equal to the value bo + + + - ``C_offset`` is an ``m``-by-``n`` matrix defined by the co + buffer as described in + :ref:`onemkl_datatypes` + + + - ``A``, ``B``, and ``C`` are matrices + + + Here, op(``A``) is ``m`` x ``k``, op(``B``) is ``k`` x ``n``, and + ``C`` is ``m`` x ``n``. + + + .. container:: section + :name: GUID-863264A0-4CE9-495F-A617-102E46D7A41A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + transa + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + transb + Specifies op(``B``), the transposition operation applied to + ``B``. See + :ref:`onemkl_datatypes` for + more details. + + + offset_type (offset API only) + Specifies the form of ``C_offset`` used in the matrix + multiplication. See + :ref:`onemkl_datatypes` for + more details. + + + m + Number of rows of op(``A``) and ``C``. Must be at least zero. + + + n + Number of columns of op(``B``) and ``C``. Must be at least + zero. + + + k + Number of columns of op(``A``) and rows of op(``B``). Must be + at least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + Buffer holding the input matrix ``A``. + + + If ``A`` is not transposed, ``A`` is an ``m``-by-``k`` matrix + so the array ``a`` must have size at least ``lda``\ \*\ ``k``. + + + If ``A`` is transposed, ``A`` is a ``k``-by-``m`` matrix so the + array ``a`` must have size at least ``lda``\ \*\ ``m``. + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``m`` if ``A`` is + not transposed, and at least ``k`` if ``A`` is transposed. Must + be positive. + + + ao (offset API only) + Specifies the scalar offset value for matrix ``A``. + + + b + Buffer holding the input matrix ``B``. + + + If ``B`` is not transposed, ``B`` is a ``k``-by-``n`` matrix so + the array ``b`` must have size at least ``ldb``\ \*\ ``n``. + + + If ``B`` is transposed, ``B`` is an ``n``-by-``k`` matrix so + the array ``b`` must have size at least ``ldb``\ \*\ ``k``. + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``k`` if ``B`` is + not transposed, and at least ``n`` if ``B`` is transposed. Must + be positive. + + + bo (offset API only) + Specifies the scalar offset value for matrix ``B``. + + + beta + Scaling factor for matrix ``C``. + + + c + Buffer holding the input matrix ``C``. Must have size at least + ``ldc`` \* ``n``. See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least + ``m``. + + + co (offset API only) + Buffer holding the offset values for matrix ``C``. + + + If ``offset_type = offset::fix``, the ``co`` array must have + size at least 1. + + + If ``offset_type = offset::col``, the ``co`` array must have + size at least ``max(1,m)``. + + + If ``offset_type = offset::row``, the ``co`` array must have + size at least ``max(1,n)``. + + + See + :ref:`onemkl_datatypes` for + more details. + + + .. container:: section + :name: GUID-1E4953E6-F7B1-4FEE-BA5A-8C4BD51DC700 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Output buffer, overwritten by alpha\*op(``A``)*op(``B``) + + beta\*\ ``C`` for the standard API and alpha\*(op(``A``) - + ``A_offset``)*(op(``B``) - ``B_offset``) + beta\*\ ``C`` + + ``C_offset`` for the offset API. + + + .. container:: section + :name: GUID-AC72653A-4AC8-4B9D-B7A9-13A725AA19BF + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``beta`` = 0, matrix ``C`` does not need to be initialized + before calling gemm_ext. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-like-extensions` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst new file mode 100644 index 0000000000..2991ea6350 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst @@ -0,0 +1,246 @@ +.. _gemmt-usm-version: + +gemmt (USM Version) +=================== + + +.. container:: + + + Computes a matrix-matrix product with general matrices, but updates + only the upper or lower triangular part of the result matrix. + + + .. container:: section + :name: GUID-7885D940-FAC1-4F37-9E1C-A022DED99EBD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event gemmt(queue &exec_queue, uplo upper_lower, transpose transa, transpose transb, std::int64_t n, std::int64_t k, T alpha, const T\* a, std::int64_t lda, const T\* b, std::int64_t ldb, T beta, T\* c, std::int64_t ldc, const vector_class &dependencies = {}) + + The USM version of\ ``gemmt`` supports the following + precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-14237C95-6322-47A4-BC11-D3CDD2118C42 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The gemmt routines compute a scalar-matrix-matrix product and add + the result to the upper or lower part of a scalar-matrix product, + with general matrices. The operation is defined as: + + + :: + + + C <- alpha*op(A)*op(B) + beta*C + + + where: + + + - op(X) is one of op(X) = X, or op(X) = X\ :sup:`T`, or op(X) = + X\ :sup:`H` + + + - ``alpha`` and ``beta`` are scalars + + + - ``A``, ``B``, and ``C`` are matrices + + + Here, op(``A``) is ``n`` x ``k``, op(``B``) is ``k`` x ``n``, and + ``C`` is ``n`` x ``n``. + + + .. container:: section + :name: GUID-863264A0-4CE9-495F-A617-102E46D7A41A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``C``\ ’s data is stored in its upper or + lower triangle. See + :ref:`onemkl_datatypes` for + more details. + + + transa + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + transb + Specifies op(``B``), the transposition operation applied to + ``B``. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of columns of op(``A``), columns of op(``B``), and + columns of\ ``C``. Must be at least zero. + + + k + Number of columns of op(``A``) and rows of op(``B``). Must be + at least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + Pointer to input matrix ``A``. + + + If ``A`` is not transposed, ``A`` is an ``n``-by-``k`` matrix + so the array ``a`` must have size at least ``lda``\ \*\ ``k``. + + + If ``A`` is transposed, ``A`` is a ``k``-by-``n`` matrix so the + array ``a`` must have size at least ``lda``\ \*\ ``n``. + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``n`` if ``A`` is + not transposed, and at least ``k`` if ``A`` is transposed. Must + be positive. + + + b + Pointer to input matrix ``B``. + + + If ``B`` is not transposed, ``B`` is a ``k``-by-``n`` matrix so + the array ``b`` must have size at least ``ldb``\ \*\ ``n``. + + + If ``B`` is transposed, ``B`` is an ``n``-by-``k`` matrix so + the array ``b`` must have size at least ``ldb``\ \*\ ``k``. + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``k`` if ``B`` is + not transposed, and at least ``n`` if ``B`` is transposed. Must + be positive. + + + beta + Scaling factor for matrix ``C``. + + + c + Pointer to input/output matrix ``C``. Must have size at least + ``ldc`` \* ``n``. See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least + ``m``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-1E4953E6-F7B1-4FEE-BA5A-8C4BD51DC700 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Pointer to the output matrix, overwritten by the upper or lower + triangular part ofalpha\*op(``A``)*op(``B``) + beta\*\ ``C``. + + + .. container:: section + :name: GUID-AC72653A-4AC8-4B9D-B7A9-13A725AA19BF + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``beta`` = 0, matrix ``C`` does not need to be initialized + before calling gemmt. + + + .. container:: section + :name: GUID-D6811C08-B6DC-4190-8ADE-9379FA306668 + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-like-extensions` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/gemmt.rst b/source/elements/oneMKL/source/domains/blas/gemmt.rst new file mode 100644 index 0000000000..e2ceb077d7 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gemmt.rst @@ -0,0 +1,228 @@ +.. _gemmt: + +gemmt +===== + + +.. container:: + + + Computes a matrix-matrix product with general matrices, but updates + only the upper or lower triangular part of the result matrix. + + + .. container:: section + :name: GUID-7885D940-FAC1-4F37-9E1C-A022DED99EBD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void gemmt(queue &exec_queue, uplo upper_lower, transpose transa, transpose transb, std::int64_t n, std::int64_t k, T alpha, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, T beta, buffer &c, std::int64_t ldc) + + ``gemmt`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-14237C95-6322-47A4-BC11-D3CDD2118C42 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The gemmt routines compute a scalar-matrix-matrix product and add + the result to the upper or lower part of a scalar-matrix product, + with general matrices. The operation is defined as: + + + :: + + + C <- alpha*op(A)*op(B) + beta*C + + + where: + + + - op(X) is one of op(X) = X, or op(X) = X\ :sup:`T`, or op(X) = + X\ :sup:`H` + + + - ``alpha`` and ``beta`` are scalars + + + - ``A``, ``B``, and ``C`` are matrices + + + Here, op(``A``) is ``n`` x ``k``, op(``B``) is ``k`` x ``n``, and + ``C`` is ``n`` x ``n``. + + + .. container:: section + :name: GUID-863264A0-4CE9-495F-A617-102E46D7A41A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``C``\ ’s data is stored in its upper or + lower triangle. See + :ref:`onemkl_datatypes` for + more details. + + + transa + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + transb + Specifies op(``B``), the transposition operation applied to + ``B``. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of columns of op(``A``), columns of op(``B``), and + columns of\ ``C``. Must be at least zero. + + + k + Number of columns of op(``A``) and rows of op(``B``). Must be + at least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + Buffer holding the input matrix ``A``. + + + If ``A`` is not transposed, ``A`` is an ``n``-by-``k`` matrix + so the array ``a`` must have size at least ``lda``\ \*\ ``k``. + + + If ``A`` is transposed, ``A`` is a ``k``-by-``n`` matrix so the + array ``a`` must have size at least ``lda``\ \*\ ``n``. + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``n`` if ``A`` is + not transposed, and at least ``k`` if ``A`` is transposed. Must + be positive. + + + b + Buffer holding the input matrix ``B``. + + + If ``B`` is not transposed, ``B`` is a ``k``-by-``n`` matrix so + the array ``b`` must have size at least ``ldb``\ \*\ ``n``. + + + If ``B`` is transposed, ``B`` is an ``n``-by-``k`` matrix so + the array ``b`` must have size at least ``ldb``\ \*\ ``k``. + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``k`` if ``B`` is + not transposed, and at least ``n`` if ``B`` is transposed. Must + be positive. + + + beta + Scaling factor for matrix ``C``. + + + c + Buffer holding the input/output matrix ``C``. Must have size at + least ``ldc`` \* ``n``. See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least + ``m``. + + + .. container:: section + :name: GUID-1E4953E6-F7B1-4FEE-BA5A-8C4BD51DC700 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Output buffer, overwritten by the upper or lower triangular + part ofalpha\*op(``A``)*op(``B``) + beta\*\ ``C``. + + + .. container:: section + :name: GUID-AC72653A-4AC8-4B9D-B7A9-13A725AA19BF + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``beta`` = 0, matrix ``C`` does not need to be initialized + before calling gemmt. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-like-extensions` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst new file mode 100644 index 0000000000..a5afbc8d31 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst @@ -0,0 +1,195 @@ +.. _gemv-usm-version: + +gemv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product using a general matrix. + + + .. container:: section + :name: GUID-EA8D6705-E7C2-42E2-BE80-D9AD83645FCC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event gemv(queue &exec_queue, transpose trans, std::int64_t m, std::int64_t n, T alpha, const T \*a, std::int64_t lda, const T \*x, std::int64_t incx, T beta, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of gemv supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-AE220EED-6066-4881-8B3C-35207BAB0105 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The gemv routines compute a scalar-matrix-vector product and add + the result to a scalar-vector product, with a general matrix. The + operation is defined as + + + + + + y <- alpha*op(A)*x + beta*y + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``m``-by-``n`` matrix, and ``x``, ``y`` are vectors. + + + .. container:: section + :name: GUID-F3E8F201-6033-45A1-A326-CA4CFB631C3A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + trans + Specifies ``op(A)``, the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + m + Specifies the number of rows of the matrix ``A``. The value of + ``m`` must be at least zero. + + + n + Specifies the number of columns of the matrix ``A``. The value + of ``n`` must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + The pointer to the input matrix ``A``. Must have a size of at + least ``lda``\ \*n. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + The leading dimension of matrix ``A``. It must be at least m, + and positive. + + + x + Pointer to the input vector ``x``. The length ``len`` of vector + ``x`` is ``n`` if ``A`` is not transposed, and ``m`` if ``A`` + is transposed. The array holding vector ``x`` must be of size + at least (1 + (``len`` - 1)*abs(``incx``)). See `Matrix and + Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + The stride of vector ``x``. + + + beta + The scaling factor for vector ``y``. + + + y + Pointer to input/output vector ``y``. The length ``len`` of + vector ``y`` is ``m``, if ``A`` is not transposed, and ``n`` if + ``A`` is transposed. The array holding input/output vector + ``y`` must be of size at least (1 + (``len`` - + 1)*abs(``incy``)) where ``len`` is this length. See `Matrix and + Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + The stride of vector ``y``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-1533BCA6-E652-4A08-A82D-162F3CEBDD29 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + The pointer to updated vector ``y``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/gemv.rst b/source/elements/oneMKL/source/domains/blas/gemv.rst new file mode 100644 index 0000000000..1345bcdf03 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gemv.rst @@ -0,0 +1,174 @@ +.. _gemv: + +gemv +==== + + +.. container:: + + + Computes a matrix-vector product using a general matrix. + + + .. container:: section + :name: GUID-EA8D6705-E7C2-42E2-BE80-D9AD83645FCC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void gemv(queue &exec_queue, transpose trans, std::int64_t m, std::int64_t n, T alpha, buffer &a, std::int64_t lda, buffer &x, std::int64_t incx, T beta, buffer &y, std::int64_t incy) + + gemv supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-AE220EED-6066-4881-8B3C-35207BAB0105 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The gemv routines compute a scalar-matrix-vector product and add the + result to a scalar-vector product, with a general matrix. The + operation is defined as + + + + + + y <- alpha*op(A)*x + beta*y + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``m``-by-``n`` matrix, and ``x``, ``y`` are vectors. + + +.. container:: section + :name: GUID-F3E8F201-6033-45A1-A326-CA4CFB631C3A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + trans + Specifies ``op(A)``, the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. + + + m + Specifies the number of rows of the matrix ``A``. The value of + ``m`` must be at least zero. + + + n + Specifies the number of columns of the matrix ``A``. The value of + ``n`` must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + The buffer holding the input matrix ``A``. Must have a size of at + least ``lda``\ \*n. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + The leading dimension of matrix ``A``. It must be at least m, and + positive. + + + x + Buffer holding input vector ``x``. The length ``len`` of vector + ``x`` is ``n`` if ``A`` is not transposed, and ``m`` if ``A`` is + transposed. The buffer must be of size at least (1 + (``len`` - + 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + The stride of vector ``x``. + + + beta + The scaling factor for vector ``y``. + + + y + Buffer holding input/output vector ``y``. The length ``len`` of + vector ``y`` is ``m``, if ``A`` is not transposed, and ``n`` if + ``A`` is transposed. The buffer must be of size at least (1 + + (``len`` - 1)*abs(``incy``)) where ``len`` is this length. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + The stride of vector ``y``. + + +.. container:: section + :name: GUID-1533BCA6-E652-4A08-A82D-162F3CEBDD29 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + The buffer holding updated vector ``y``. + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst b/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst new file mode 100644 index 0000000000..513af99bce --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst @@ -0,0 +1,176 @@ +.. _ger-usm-version: + +ger (USM Version) +================= + + +.. container:: + + + Computes a rank-1 update of a general matrix. + + + .. container:: section + :name: GUID-0DA23698-EB19-4AAF-A5FD-9BB530A9EFE0 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event ger(queue &exec_queue, std::int64_t m, std::int64_t n, T alpha, const T \*x, std::int64_t incx, const T \*y, std::int64_t incy, T \*a, std::int64_t lda, const vector_class &dependencies = {}) + + The USM version of ``ger`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-72E035B0-E1C2-442B-AE9D-2CB873E90FAF + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The ger routines compute a scalar-vector-vector product and add + the result to a general matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`T` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``m``-by-``n`` matrix, + + + ``x`` is a vector length ``m``, + + + ``y`` is a vector length ``n``. + + + .. container:: section + :name: GUID-6953A2E5-0065-425C-986B-15966C793067 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + Number of rows of ``A``. Must be at least zero. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``m`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + a + Pointer to input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``m``, and + positive. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-E2A13688-1D12-4DD0-9752-3557E980ACC0 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated matrix ``A``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/ger.rst b/source/elements/oneMKL/source/domains/blas/ger.rst new file mode 100644 index 0000000000..1a122ce848 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/ger.rst @@ -0,0 +1,154 @@ +.. _ger: + +ger +=== + + +.. container:: + + + Computes a rank-1 update of a general matrix. + + + .. container:: section + :name: GUID-0DA23698-EB19-4AAF-A5FD-9BB530A9EFE0 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void ger(queue &exec_queue, std::int64_t m, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &a, std::int64_t lda) + + ``ger`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-72E035B0-E1C2-442B-AE9D-2CB873E90FAF + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The ger routines compute a scalar-vector-vector product and add the + result to a general matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`T` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``m``-by-``n`` matrix, + + + ``x`` is a vector length ``m``, + + + ``y`` is a vector length ``n``. + + +.. container:: section + :name: GUID-6953A2E5-0065-425C-986B-15966C793067 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + Number of rows of ``A``. Must be at least zero. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``m`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``m``, and + positive. + + +.. container:: section + :name: GUID-E2A13688-1D12-4DD0-9752-3557E980ACC0 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Buffer holding the updated matrix ``A``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst new file mode 100644 index 0000000000..ab90ebc6f0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst @@ -0,0 +1,177 @@ +.. _gerc-usm-version: + +gerc (USM Version) +================== + + +.. container:: + + + Computes a rank-1 update (conjugated) of a general complex matrix. + + + .. container:: section + :name: GUID-5A1B0292-28F6-45EB-95C4-FDA03D8D5062 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event gerc(queue &exec_queue, std::int64_t m, std::int64_t n, T alpha, const T \*x, std::int64_t incx, const T \*y, std::int64_t incy, T \*a, std::int64_t lda, const vector_class &dependencies = {}) + + The USM version of ``gerc`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-6CB627E5-A9C7-488D-8366-E7944A5C889E + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The gerc routines compute a scalar-vector-vector product and add + the result to a general matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`H` + A + + + where: + + + ``alpha`` is a scalar, + + + ``A`` is an ``m``-by-``n`` matrix, + + + ``x`` is a vector of length ``m``, + + + ``y`` is vector of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + Number of rows of ``A``. Must be at least zero. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to the input vector ``x``. The array holding input + vector ``x`` must be of size at least (1 + (``m`` - + 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Pointer to the input/output vector ``y``. The array holding the + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A``\ ust have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``m``, and + positive. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-48944ED2-C10F-4B64-A91A-C9050AD24A92 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated matrix *A*. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/gerc.rst b/source/elements/oneMKL/source/domains/blas/gerc.rst new file mode 100644 index 0000000000..5a9c772ac9 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/gerc.rst @@ -0,0 +1,154 @@ +.. _gerc: + +gerc +==== + + +.. container:: + + + Computes a rank-1 update (conjugated) of a general complex matrix. + + + .. container:: section + :name: GUID-5A1B0292-28F6-45EB-95C4-FDA03D8D5062 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void gerc(queue &exec_queue, std::int64_t m, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &a, std::int64_t lda) + + ``gerc`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-6CB627E5-A9C7-488D-8366-E7944A5C889E + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The gerc routines compute a scalar-vector-vector product and add the + result to a general matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`H` + A + + + where: + + + ``alpha`` is a scalar, + + + ``A`` is an ``m``-by-``n`` matrix, + + + ``x`` is a vector of length ``m``, + + + ``y`` is vector of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + Number of rows of ``A``. Must be at least zero. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``m`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``m``, and + positive. + + +.. container:: section + :name: GUID-48944ED2-C10F-4B64-A91A-C9050AD24A92 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Buffer holding the updated matrix *A*. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst b/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst new file mode 100644 index 0000000000..7b5afbe8d0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst @@ -0,0 +1,178 @@ +.. _geru-usm-version: + +geru (USM Version) +================== + + +.. container:: + + + Computes a rank-1 update (unconjugated) of a general complex matrix. + + + .. container:: section + :name: GUID-5942D28E-EDD6-4759-B19E-FBB51F35125B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event geru(queue &exec_queue, std::int64_t m, std::int64_t n, T alpha, const T \*x, std::int64_t incx, const T \*y, std::int64_t incy, T \*a, std::int64_t lda, const vector_class &dependencies = {}) + + The USM version of ``geru`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-75ECE219-BA77-48E8-B13B-FB504DD60CD4 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The geru routines routines compute a scalar-vector-vector product + and add the result to a general matrix. The operation is defined + as + + + + + + A <- alpha*x*y :sup:`T` + A + + + where: + + + ``alpha`` is a scalar, + + + ``A`` is an ``m``-by-``n`` matrix, + + + ``x`` is a vector of length ``m``, + + + ``y`` is a vector of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + Number of rows of ``A``. Must be at least zero. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to the input vector ``x``. The array holding input + vector ``x`` must be of size at least (1 + (``m`` - + 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``m``, and + positive. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-6E9315E9-DDCF-485D-8BDF-AB4BF8448BE1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated matrix ``A``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/geru.rst b/source/elements/oneMKL/source/domains/blas/geru.rst new file mode 100644 index 0000000000..121e2d13c0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/geru.rst @@ -0,0 +1,154 @@ +.. _geru: + +geru +==== + + +.. container:: + + + Computes a rank-1 update (unconjugated) of a general complex matrix. + + + .. container:: section + :name: GUID-5942D28E-EDD6-4759-B19E-FBB51F35125B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void geru(queue &exec_queue, std::int64_t m, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &a, std::int64_t lda) + + ``geru`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-75ECE219-BA77-48E8-B13B-FB504DD60CD4 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The geru routines routines compute a scalar-vector-vector product and + add the result to a general matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`T` + A + + + where: + + + ``alpha`` is a scalar, + + + ``A`` is an ``m``-by-``n`` matrix, + + + ``x`` is a vector of length ``m``, + + + ``y`` is a vector of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + Number of rows of ``A``. Must be at least zero. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``m`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``m``, and + positive. + + +.. container:: section + :name: GUID-6E9315E9-DDCF-485D-8BDF-AB4BF8448BE1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Buffer holding the updated matrix ``A``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst new file mode 100644 index 0000000000..cbf6ae5b5a --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst @@ -0,0 +1,187 @@ +.. _hbmv-usm-version: + +hbmv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product using a Hermitian band matrix. + + + .. container:: section + :name: GUID-F5FF420B-922B-4552-8F55-6EBCA7177881 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event hbmv(queue &exec_queue, uplo upper_lower, std::int64_t n, std::int64_t k, T alpha, const T \*a, std::int64_t lda, const T \*x, std::int64_t incx, T beta, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of ``hbmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-8AB4BAC9-8124-4B52-8C15-1BC673820EB9 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hbmv routines compute a scalar-matrix-vector product and add + the result to a scalar-vector product, with a Hermitian band + matrix. The operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` Hermitian band matrix, with ``k`` + super-diagonals, + + + ``x`` and ``y`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + k + Number of super-diagonals of the matrix ``A``. Must be at least + zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Pointer to the input matrix ``A``. The array holding input + matrix ``A`` must have size at least ``lda``\ \*\ ``n``. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least (``k`` + + 1), and positive. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``m`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-7261182A-450B-46F5-8C61-7133597D3530 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Pointer to the updated vector ``y``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hbmv.rst b/source/elements/oneMKL/source/domains/blas/hbmv.rst new file mode 100644 index 0000000000..e23481a2a6 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hbmv.rst @@ -0,0 +1,164 @@ +.. _hbmv: + +hbmv +==== + + +.. container:: + + + Computes a matrix-vector product using a Hermitian band matrix. + + + .. container:: section + :name: GUID-F5FF420B-922B-4552-8F55-6EBCA7177881 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void hbmv(queue &exec_queue, uplo upper_lower, std::int64_t n, std::int64_t k, T alpha, buffer &a, std::int64_t lda, buffer &x, std::int64_t incx, T beta, buffer &y, std::int64_t incy) + + ``hbmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-8AB4BAC9-8124-4B52-8C15-1BC673820EB9 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hbmv routines compute a scalar-matrix-vector product and add the + result to a scalar-vector product, with a Hermitian band matrix. The + operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` Hermitian band matrix, with ``k`` + super-diagonals, + + + ``x`` and ``y`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + k + Number of super-diagonals of the matrix ``A``. Must be at least + zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least (``k`` + 1), + and positive. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``m`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + +.. container:: section + :name: GUID-7261182A-450B-46F5-8C61-7133597D3530 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Buffer holding the updated vector ``y``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst new file mode 100644 index 0000000000..7ccb79979d --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst @@ -0,0 +1,234 @@ +.. _hemm-usm-version: + +hemm (USM Version) +================== + + +.. container:: + + + Computes a matrix-matrix product where one input matrix is Hermitian + and one is general. + + + .. container:: section + :name: GUID-F06C86BA-4F57-4608-B0D7-F7B920F867D7 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event hemm(queue &exec_queue, side left_right, uplo upper_lower, std::int64_t m, std::int64_t n, T alpha, const T\* a, std::int64_t lda, const T\* b, std::int64_t ldb, T beta, T\* c, std::int64_t ldc, const vector_class &dependencies = {}) + + The USM version of hemm supports the following precisions: + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-835E7F58-406E-444F-9DFD-121B84C22284 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hemm routines compute a scalar-matrix-matrix product and add + the result to a scalar-matrix product, where one of the matrices + in the multiplication is Hermitian. The argument ``left_right`` + determines if the Hermitian matrix, ``A``, is on the left of the + multiplication (``left_right`` = ``side::left``) or on the right + (``left_right`` = ``side::right``). Depending on ``left_right``, + the operation is defined as + + + + + + C <- alpha*A*B + beta*C + + + or + + + + + + C <- alpha*B*A + beta*C + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is a Hermitian matrix, either ``m``-by-``m`` or + ``n``-by-``n`` matrices, + + + ``B`` and ``C`` are ``m``-by-``n`` matrices. + + + .. container:: section + :name: GUID-922C5F92-38B2-457B-B6C7-3CDD0531F97D + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + Specifies whether ``A`` is on the left side of the + multiplication (``side::left``) or on the right side + (``side::right``). See + :ref:`onemkl_datatypes` for + more details. + + + uplo + Specifies whether ``A``'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for + more details. + + + m + Specifies the number of rows of the matrix ``B`` and ``C``. + + + The value of ``m`` must be at least zero. + + + n + Specifies the number of columns of the matrix ``B`` and ``C``. + + + The value of ``n`` must be at least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + Pointer to input matrix ``A``. Must have size at least + ``lda``\ \*\ ``m`` if ``A`` is on the left of the + multiplication, or ``lda``\ \*\ ``n`` if ``A`` is on the right. + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``m`` if ``A`` is + on the left of the multiplication, or at least ``n`` if ``A`` + is on the right. Must be positive. + + + b + Pointer to input matrix ``B``. Must have size at least + ``ldb``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be positive and at least + ``m``. + + + beta + Scaling factor for matrix ``C``. + + + c + Pointer to input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least + ``m``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-94385C78-968D-4C03-AA5C-7379D5607800 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Pointer to the output matrix, overwritten by + ``alpha``\ \*\ ``A``\ \*\ ``B`` + ``beta``\ \*\ ``C`` + (``left_right`` = ``side::left``) or + ``alpha``\ \*\ ``B``\ \*\ ``A`` + ``beta``\ \*\ ``C`` + (``left_right`` = ``side::right``). + + + .. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``beta`` = 0, matrix ``C`` does not need to be initialized + before calling ``hemm``. + + + .. container:: section + :name: GUID-7D06E101-8760-464B-9812-A40612EF182F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hemm.rst b/source/elements/oneMKL/source/domains/blas/hemm.rst new file mode 100644 index 0000000000..bc597e2289 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hemm.rst @@ -0,0 +1,214 @@ +.. _hemm: + +hemm +==== + + +.. container:: + + + Computes a matrix-matrix product where one input matrix is Hermitian + and one is general. + + + .. container:: section + :name: GUID-F06C86BA-4F57-4608-B0D7-F7B920F867D7 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void hemm(queue &exec_queue, side left_right, uplo upper_lower, std::int64_t m, std::int64_t n, T alpha, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, T beta, buffer &c, std::int64_t ldc) + + hemm supports the following precisions: + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-835E7F58-406E-444F-9DFD-121B84C22284 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hemm routines compute a scalar-matrix-matrix product and add the + result to a scalar-matrix product, where one of the matrices in the + multiplication is Hermitian. The argument ``left_right`` determines + if the Hermitian matrix, ``A``, is on the left of the multiplication + (``left_right`` = ``side::left``) or on the right (``left_right`` = + ``side::right``). Depending on ``left_right``, the operation is + defined as + + + + + + C <- alpha*A*B + beta*C + + + or + + + + + + C <- alpha*B*A + beta*C + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is a Hermitian matrix, either ``m``-by-``m`` or ``n``-by-``n`` + matrices, + + + ``B`` and ``C`` are ``m``-by-``n`` matrices. + + +.. container:: section + :name: GUID-922C5F92-38B2-457B-B6C7-3CDD0531F97D + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + Specifies whether ``A`` is on the left side of the multiplication + (``side::left``) or on the right side (``side::right``). See + :ref:`onemkl_datatypes` for more + details. + + + uplo + Specifies whether ``A``'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for more + details. + + + m + Specifies the number of rows of the matrix ``B`` and ``C``. + + + The value of ``m`` must be at least zero. + + + n + Specifies the number of columns of the matrix ``B`` and ``C``. + + + The value of ``n`` must be at least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``m`` if ``A`` is on the left of the multiplication, + or ``lda``\ \*\ ``n`` if ``A`` is on the right. See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + lda + Leading dimension of ``A``. Must be at least ``m`` if ``A`` is on + the left of the multiplication, or at least ``n`` if ``A`` is on + the right. Must be positive. + + + b + Buffer holding input matrix ``B``. Must have size at least + ``ldb``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be positive and at least ``m``. + + + beta + Scaling factor for matrix ``C``. + + + c + Buffer holding input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least ``m``. + + +.. container:: section + :name: GUID-94385C78-968D-4C03-AA5C-7379D5607800 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + +   + + + + c + Output buffer, overwritten by ``alpha``\ \*\ ``A``\ \*\ ``B`` + + ``beta``\ \*\ ``C`` (``left_right`` = ``side::left``) or + ``alpha``\ \*\ ``B``\ \*\ ``A`` + ``beta``\ \*\ ``C`` + (``left_right`` = ``side::right``). + + +.. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``beta`` = 0, matrix ``C`` does not need to be initialized before + calling ``hemm``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst new file mode 100644 index 0000000000..f7a109c377 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst @@ -0,0 +1,181 @@ +.. _hemv-usm-version: + +hemv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product using a Hermitian matrix. + + + .. container:: section + :name: GUID-152B72DC-F67F-4D7D-96DA-67AE6AD41718 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event hemv(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*a, std::int64_t lda, const T \*x, std::int64_t incx, T beta, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of ``hemv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-0E4AE01A-4FE8-42AC-B236-409F4DD48F88 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hemv routines compute a scalar-matrix-vector product and add + the result to a scalar-vector product, with a Hermitian matrix. + The operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix, + + + ``x`` and ``y`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether *A* is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``m``, and + positive. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-66566E59-9A52-4207-B123-AF45FA3A0FBC + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Pointer to the updated vector ``y``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hemv.rst b/source/elements/oneMKL/source/domains/blas/hemv.rst new file mode 100644 index 0000000000..289cdc0a82 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hemv.rst @@ -0,0 +1,158 @@ +.. _hemv: + +hemv +==== + + +.. container:: + + + Computes a matrix-vector product using a Hermitian matrix. + + + .. container:: section + :name: GUID-152B72DC-F67F-4D7D-96DA-67AE6AD41718 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void hemv(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &a, std::int64_t lda, buffer &x, std::int64_t incx, T beta, buffer &y, std::int64_t incy) + + ``hemv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-0E4AE01A-4FE8-42AC-B236-409F4DD48F88 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hemv routines compute a scalar-matrix-vector product and add the + result to a scalar-vector product, with a Hermitian matrix. The + operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix, + + + ``x`` and ``y`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether *A* is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``m``, and + positive. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + +.. container:: section + :name: GUID-66566E59-9A52-4207-B123-AF45FA3A0FBC + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Buffer holding the updated vector ``y``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/her-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her-usm-version.rst new file mode 100644 index 0000000000..7442b015b9 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/her-usm-version.rst @@ -0,0 +1,170 @@ +.. _her-usm-version: + +her (USM Version) +================= + + +.. container:: + + + Computes a rank-1 update of a Hermitian matrix. + + + .. container:: section + :name: GUID-252B1D4A-30C7-4678-9793-6A0C90DEB04A + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event her(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*x, std::int64_t incx, T \*a, std::int64_t lda, const vector_class &dependencies = {}) + + The USM version of ``her`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A06B7C00-CFD6-4A01-9739-19093823B58E + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The her routines compute a scalar-vector-vector product and add + the result to a Hermitian matrix. The operation is defined as + + + + + + A <- alpha*x*x :sup:`H` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix, + + + ``x`` is a vector of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether *A* is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-89A60481-0763-4608-B346-3CC746467F28 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated upper triangular part of theHermitian + matrix ``A`` if ``upper_lower = upper`` or the updated + lowertriangular part of the Hermitian matrix ``A`` if + ``upper_lower = lower``. + + + The imaginary parts of the diagonal elementsare set to zero. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/her.rst b/source/elements/oneMKL/source/domains/blas/her.rst new file mode 100644 index 0000000000..a13196fb64 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/her.rst @@ -0,0 +1,148 @@ +.. _her: + +her +=== + + +.. container:: + + + Computes a rank-1 update of a Hermitian matrix. + + + .. container:: section + :name: GUID-252B1D4A-30C7-4678-9793-6A0C90DEB04A + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void her(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &a, std::int64_t lda) + + ``her`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-A06B7C00-CFD6-4A01-9739-19093823B58E + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The her routines compute a scalar-vector-vector product and add the + result to a Hermitian matrix. The operation is defined as + + + + + + A <- alpha*x*x :sup:`H` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix, + + + ``x`` is a vector of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether *A* is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + +.. container:: section + :name: GUID-89A60481-0763-4608-B346-3CC746467F28 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Buffer holding the updated upper triangular part of theHermitian + matrix ``A`` if ``upper_lower = upper`` or the updated + lowertriangular part of the Hermitian matrix ``A`` if + ``upper_lower = lower``. + + + The imaginary parts of the diagonal elementsare set to zero. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst new file mode 100644 index 0000000000..20306d9391 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst @@ -0,0 +1,182 @@ +.. _her2-usm-version: + +her2 (USM Version) +================== + + +.. container:: + + + Computes a rank-2 update of a Hermitian matrix. + + + .. container:: section + :name: GUID-4BED3537-E900-4260-A6EB-2F42CB1D3AFB + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event her2(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*x, std::int64_t incx, const T \*y, std::int64_t incy, T \*a, std::int64_t lda, const vector_class &dependencies = {}) + + The USM version of ``her2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-2B939041-9BCC-4AE8-A31D-2CFCA67B9B6A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The her2 routines compute two scalar-vector-vector products and + add them to a Hermitian matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`H` + conjg(alpha)*y*x :sup:`H` + A + + + where: + + + ``alpha`` is a scalar, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix. + + + ``x`` and ``y`` are vectors or length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether *A* is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-34B3837B-4980-458B-AC3A-EEE5F635834C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated upper triangular part of theHermitian + matrix ``A`` if ``upper_lower = upper``, or the updated + lowertriangular part of the Hermitian matrix ``A`` if + ``upper_lower = lower``. + + + The imaginary parts of the diagonal elementsare set to zero. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/her2.rst b/source/elements/oneMKL/source/domains/blas/her2.rst new file mode 100644 index 0000000000..0c100195c8 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/her2.rst @@ -0,0 +1,159 @@ +.. _her2: + +her2 +==== + + +.. container:: + + + Computes a rank-2 update of a Hermitian matrix. + + + .. container:: section + :name: GUID-4BED3537-E900-4260-A6EB-2F42CB1D3AFB + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void her2(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &a, std::int64_t lda) + + ``her2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-2B939041-9BCC-4AE8-A31D-2CFCA67B9B6A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The her2 routines compute two scalar-vector-vector products and add + them to a Hermitian matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`H` + conjg(alpha)*y*x :sup:`H` + A + + + where: + + + ``alpha`` is a scalar, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix. + + + ``x`` and ``y`` are vectors or length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether *A* is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + +.. container:: section + :name: GUID-34B3837B-4980-458B-AC3A-EEE5F635834C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Buffer holding the updated upper triangular part of theHermitian + matrix ``A`` if ``upper_lower = upper``, or the updated + lowertriangular part of the Hermitian matrix ``A`` if + ``upper_lower = lower``. + + + The imaginary parts of the diagonal elementsare set to zero. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst new file mode 100644 index 0000000000..0bac929819 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst @@ -0,0 +1,223 @@ +.. _her2k-usm-version: + +her2k (USM Version) +=================== + + +.. container:: + + + Performs a Hermitian rank-2k update. + + + .. container:: section + :name: GUID-1839F1B0-EFE0-40A4-901E-53E7F9B395C2 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event her2k(queue &exec_queue, uplo upper_lower, transpose trans, std::int64_t n, std::int64_t k, T alpha, const T\* a, std::int64_t lda, const T\* b, std::int64_t ldb, T_real beta, T\* c, std::int64_t ldc, const vector_class &dependencies = {}) + + The USM version of her2k supports the following precisions: + + + .. list-table:: + :header-rows: 1 + + * - T + - T_real + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + + .. container:: section + :name: GUID-6DDD93FE-028E-400C-BBD0-CA13132FAC35 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The her2k routines perform a rank-2k update of an ``n`` x ``n`` + Hermitian matrix ``C`` by general matrices ``A`` and ``B``. If + ``trans`` = ``transpose::nontrans``. The operation is defined as + + + + + + C <- alpha*A*B :sup:`H` + conjg(alpha)*B*A :sup:`H` + beta*C + + + where ``A`` is ``n`` x ``k`` and ``B`` is ``k`` x ``n``. + + + If ``trans`` = ``transpose::conjtrans``, the operation is defined + as: + + + + + + C <- alpha*B*A :sup:`H` + conjg(alpha)*A*B :sup:`H` + beta*C + + + where ``A`` is ``k`` x ``n`` and ``B`` is ``n`` x ``k``. + + + In both cases: + + + ``alpha`` is a complex scalar and ``beta`` is a real scalar. + + + ``C`` is a Hermitian matrix and ``A, B`` are general matrices. + + + The inner dimension of both matrix multiplications is ``k``. + + + .. container:: section + :name: GUID-54538396-B04D-4A2A-8A7D-E503A6F815AD + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A``'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies the operation to apply, as described above. Supported + operations are ``transpose::nontrans`` and + ``transpose::conjtrans``. + + + n + The number of rows and columns in ``C``. The value of ``n`` + must be at least zero. + + + k + The inner dimension of matrix multiplications. The value of + ``k`` must be at least equal to zero. + + + alpha + Complex scaling factor for the rank-2\ ``k`` update. + + + a + Pointer to input matrix ``A``. If ``trans`` = + ``transpose::nontrans``, ``A`` is an ``n``-by-``k`` matrix so + the array ``a`` must have size at least ``lda``\ \*\ ``k``. + Otherwise, ``A`` is an ``k``-by-``n`` matrix so the array ``a`` + must have size at least ``lda``\ \*\ ``n``. See `Matrix and + Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``n`` if ``trans`` + = ``transpose::nontrans``, and at least ``k`` otherwise. Must + be positive. + + + beta + Real scaling factor for matrix ``C``. + + + b + Pointer to input matrix ``B``. If ``trans`` = + ``transpose::nontrans``, ``B`` is an ``k``-by-``n`` matrix so + the array ``b`` must have size at least ``ldb``\ \*\ ``n``. + Otherwise, ``B`` is an ``n``-by-``k`` matrix so the array ``b`` + must have size at least ``ldb``\ \*\ ``k``. See `Matrix and + Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``k`` if ``trans`` + = ``transpose::nontrans``, and at least ``n`` otherwise. Must + be positive. + + + c + Pointer to input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least + ``n``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-48D39D42-B29F-4428-A588-9058570B5D5E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Pointer to the output matrix, overwritten by the updated ``C`` + matrix. + + + .. container:: section + :name: GUID-4A36C03B-4011-4B48-A192-E3873031C1CC + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/her2k.rst b/source/elements/oneMKL/source/domains/blas/her2k.rst new file mode 100644 index 0000000000..98e9cac4ff --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/her2k.rst @@ -0,0 +1,198 @@ +.. _her2k: + +her2k +===== + + +.. container:: + + + Performs a Hermitian rank-2k update. + + + .. container:: section + :name: GUID-1839F1B0-EFE0-40A4-901E-53E7F9B395C2 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void her2k(queue &exec_queue, uplo upper_lower, transpose trans, std::int64_t n, std::int64_t k, T alpha, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, T_real beta, buffer &c, std::int64_t ldc) + + her2k supports the following precisions: + + + .. list-table:: + :header-rows: 1 + + * - T + - T_real + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + +.. container:: section + :name: GUID-6DDD93FE-028E-400C-BBD0-CA13132FAC35 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The her2k routines perform a rank-2k update of an ``n`` x ``n`` + Hermitian matrix ``C`` by general matrices ``A`` and ``B``. If + ``trans`` = ``transpose::nontrans``. The operation is defined as + + + + + + C <- alpha*A*B :sup:`H` + conjg(alpha)*B*A :sup:`H` + beta*C + + + where ``A`` is ``n`` x ``k`` and ``B`` is ``k`` x ``n``. + + + If ``trans`` = ``transpose::conjtrans``, the operation is defined as: + + + + + + C <- alpha*B*A :sup:`H` + conjg(alpha)*A*B :sup:`H` + beta*C + + + where ``A`` is ``k`` x ``n`` and ``B`` is ``n`` x ``k``. + + + In both cases: + + + ``alpha`` is a complex scalar and ``beta`` is a real scalar. + + + ``C`` is a Hermitian matrix and ``A, B`` are general matrices. + + + The inner dimension of both matrix multiplications is ``k``. + + +.. container:: section + :name: GUID-54538396-B04D-4A2A-8A7D-E503A6F815AD + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A``'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies the operation to apply, as described above. Supported + operations are ``transpose::nontrans`` and + ``transpose::conjtrans``. + + + n + The number of rows and columns in ``C``. The value of ``n`` must + be at least zero. + + + k + The inner dimension of matrix multiplications. The value of ``k`` + must be at least equal to zero. + + + alpha + Complex scaling factor for the rank-2\ ``k`` update. + + + a + Buffer holding input matrix ``A``. If ``trans`` = + ``transpose::nontrans``, ``A`` is an ``n``-by-``k`` matrix so the + array ``a`` must have size at least ``lda``\ \*\ ``k``. Otherwise, + ``A`` is an ``k``-by-``n`` matrix so the array ``a`` must have + size at least ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``n`` if ``trans`` = + ``transpose::nontrans``, and at least ``k`` otherwise. Must be + positive. + + + beta + Real scaling factor for matrix ``C``. + + + b + Buffer holding input matrix ``B``. If ``trans`` = + ``transpose::nontrans``, ``B`` is an ``k``-by-``n`` matrix so the + array ``b`` must have size at least ``ldb``\ \*\ ``n``. Otherwise, + ``B`` is an ``n``-by-``k`` matrix so the array ``b`` must have + size at least ``ldb``\ \*\ ``k``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``k`` if ``trans`` = + ``transpose::nontrans``, and at least ``n`` otherwise. Must be + positive. + + + c + Buffer holding input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least ``n``. + + +.. container:: section + :name: GUID-48D39D42-B29F-4428-A588-9058570B5D5E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Output buffer, overwritten by the updated ``C`` matrix. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst b/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst new file mode 100644 index 0000000000..601b115155 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst @@ -0,0 +1,199 @@ +.. _herk-usm-version: + +herk (USM Version) +================== + + +.. container:: + + + Performs a Hermitian rank-k update. + + + .. container:: section + :name: GUID-407B8203-A28D-468B-BA79-87FA865E75A2 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event herk(queue &exec_queue, uplo upper_lower, transpose trans, std::int64_t n, std::int64_t k, T_real alpha, const T\* a, std::int64_t lda, T_real beta, T\* c, std::int64_t ldc, const vector_class &dependencies = {}) + + herk supports the following precisions: + + + .. list-table:: + :header-rows: 1 + + * - T + - T_real + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + + .. container:: section + :name: GUID-539B4E63-9CDF-4834-999A-4133CE5DE1E5 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The herk routines compute a rank-``k`` update of a Hermitian + matrix *C* by a general matrix ``A``. The operation is defined as: + + + + + + C <- alpha*op(A)*op(A) :sup:`H` + beta*C + + + where: + + + op(``X``) is one of op(``X``) = ``X`` or op(``X``) = + ``X``\ :sup:`H`, + + + ``alpha`` and ``beta`` are real scalars, + + + ``C`` is a Hermitian matrix and ``A`` is a general matrix. + + + Here op(``A``) is ``n`` x ``k``, and ``C`` is ``n`` x ``n``. + + + .. container:: section + :name: GUID-7B880A06-4E53-4DE9-B0E6-D70673CF2638 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A``'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. Supported operations are ``transpose::nontrans`` + and ``transpose::conjtrans``. + + + n + The number of rows and columns in ``C``.The value of ``n`` must + be at least zero. + + + k + Number of columns in op(``A``). + + + The value of ``k`` must be at least zero. + + + alpha + Real scaling factor for the rank-``k`` update. + + + a + Pointer to input matrix ``A``. If ``trans`` = + ``transpose::nontrans``, ``A`` is an ``n``-by-``k`` matrix so + the array ``a`` must have size at least ``lda``\ \*\ ``k``. + Otherwise, ``A`` is an ``k``-by-``n`` matrix so the array ``a`` + must have size at least ``lda``\ \*\ ``n``. See `Matrix and + Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``n`` if ``A`` is + not transposed, and at least ``k`` if ``A`` is transposed. Must + be positive. + + + beta + Real scaling factor for matrix ``C``. + + + c + Pointer to input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least + ``n``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-05309970-DEC8-4D87-90AA-958FC101E119 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Pointer to the output matrix, overwritten by + ``alpha``\ \*op(``A``)*op(``A``)\ :sup:`T` + + ``beta``\ \*\ ``C``. The imaginary parts of the diagonal + elements are set to zero. + + + .. container:: section + :name: GUID-F59F26E8-98D9-4DBC-BF0B-B7C6370049C2 + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/herk.rst b/source/elements/oneMKL/source/domains/blas/herk.rst new file mode 100644 index 0000000000..03b510a1fe --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/herk.rst @@ -0,0 +1,175 @@ +.. _herk: + +herk +==== + + +.. container:: + + + Performs a Hermitian rank-k update. + + + .. container:: section + :name: GUID-407B8203-A28D-468B-BA79-87FA865E75A2 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void herk(queue &exec_queue, uplo upper_lower, transpose trans, std::int64_t n, std::int64_t k, T_real alpha, buffer &a, std::int64_t lda, T_real beta, buffer &c, std::int64_t ldc) + + herk supports the following precisions: + + + .. list-table:: + :header-rows: 1 + + * - T + - T_real + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + +.. container:: section + :name: GUID-539B4E63-9CDF-4834-999A-4133CE5DE1E5 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The herk routines compute a rank-``k`` update of a Hermitian matrix + *C* by a general matrix ``A``. The operation is defined as: + + + + + + C <- alpha*op(A)*op(A) :sup:`H` + beta*C + + + where: + + + op(``X``) is one of op(``X``) = ``X`` or op(``X``) = ``X``\ :sup:`H`, + + + ``alpha`` and ``beta`` are real scalars, + + + ``C`` is a Hermitian matrix and ``A`` is a general matrix. + + + Here op(``A``) is ``n`` x ``k``, and ``C`` is ``n`` x ``n``. + + +.. container:: section + :name: GUID-7B880A06-4E53-4DE9-B0E6-D70673CF2638 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A``'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies op(``A``), the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. Supported operations are ``transpose::nontrans`` and + ``transpose::conjtrans``. + + + n + The number of rows and columns in ``C``.The value of ``n`` must be + at least zero. + + + k + Number of columns in op(``A``). + + + The value of ``k`` must be at least zero. + + + alpha + Real scaling factor for the rank-``k`` update. + + + a + Buffer holding input matrix ``A``. If ``trans`` = + ``transpose::nontrans``, ``A`` is an ``n``-by-``k`` matrix so the + array ``a`` must have size at least ``lda``\ \*\ ``k``. Otherwise, + ``A`` is an ``k``-by-``n`` matrix so the array ``a`` must have + size at least ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``n`` if ``A`` is not + transposed, and at least ``k`` if ``A`` is transposed. Must be + positive. + + + beta + Real scaling factor for matrix ``C``. + + + c + Buffer holding input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least ``n``. + + +.. container:: section + :name: GUID-05309970-DEC8-4D87-90AA-958FC101E119 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + The output buffer, overwritten by + ``alpha``\ \*op(``A``)*op(``A``)\ :sup:`T` + ``beta``\ \*\ ``C``. + The imaginary parts of the diagonal elements are set to zero. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst new file mode 100644 index 0000000000..b0b7fc62d2 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst @@ -0,0 +1,181 @@ +.. _hpmv-usm-version: + +hpmv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product using a Hermitian packed matrix. + + + .. container:: section + :name: GUID-C6E4A4A7-5CBE-46ED-A021-8FEAABAA2E93 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event hpmv(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*a, const T \*x, std::int64_t incx, T beta, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of ``hpmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A95C32C5-0371-429B-847C-4EE29FD9C480 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hpmv routines compute a scalar-matrix-vector product and add + the result to a scalar-vector product, with a Hermitian packed + matrix. The operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix supplied in packed + form, + + + ``x`` and ``y`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether *A* is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least (``n``\ \*(``n``\ +1))/2. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + The imaginary parts of the diagonal elements need not be set + and are assumed to be zero. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-416B82CD-C5B8-472A-8347-04997EA6D6E6 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Pointer to the updated vector ``y``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hpmv.rst b/source/elements/oneMKL/source/domains/blas/hpmv.rst new file mode 100644 index 0000000000..f71e4b3929 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hpmv.rst @@ -0,0 +1,157 @@ +.. _hpmv: + +hpmv +==== + + +.. container:: + + + Computes a matrix-vector product using a Hermitian packed matrix. + + + .. container:: section + :name: GUID-C6E4A4A7-5CBE-46ED-A021-8FEAABAA2E93 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void hpmv(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &a, buffer &x, std::int64_t incx, T beta, buffer &y, std::int64_t incy) + + ``hpmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-A95C32C5-0371-429B-847C-4EE29FD9C480 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hpmv routines compute a scalar-matrix-vector product and add the + result to a scalar-vector product, with a Hermitian packed matrix. + The operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix supplied in packed form, + + + ``x`` and ``y`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether *A* is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Buffer holding input matrix ``A``. Must have size at least + (``n``\ \*(``n``\ +1))/2. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + The imaginary parts of the diagonal elements need not be set and + are assumed to be zero. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + +.. container:: section + :name: GUID-416B82CD-C5B8-472A-8347-04997EA6D6E6 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Buffer holding the updated vector ``y``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst new file mode 100644 index 0000000000..d5be662239 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst @@ -0,0 +1,171 @@ +.. _hpr-usm-version: + +hpr (USM Version) +================= + + +.. container:: + + + Computes a rank-1 update of a Hermitian packed matrix. + + + .. container:: section + :name: GUID-61DC4DBA-9357-4129-B8A3-931E2E7335D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event hpr(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*x, std::int64_t incx, T \*a, const vector_class &dependencies = {}) + + The USM version of\ ``hpr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-02B8128C-02CE-4D5C-BE5D-DFD088C90475 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hpr routines compute a scalar-vector-vector product and add + the result to a Hermitian packed matrix. The operation is defined + as + + + + + + A <- alpha*x*x :sup:`H` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix, supplied in packed + form, + + + ``x`` is a vector of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least (``n``\ \*(``n``-1))/2. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + The imaginary part of the diagonal elements need not be set and + are assumed to be zero + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-7261182A-450B-46F5-8C61-7133597D3530 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated upper triangularpart of the Hermitian + matrix ``A`` if ``upper_lower =upper``, or the updated lower + triangular part of theHermitian matrix ``A`` if + ``upper_lower =lower``. + + + The imaginary parts of the diagonal elements are set tozero. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hpr.rst b/source/elements/oneMKL/source/domains/blas/hpr.rst new file mode 100644 index 0000000000..1c0f38a0cf --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hpr.rst @@ -0,0 +1,147 @@ +.. _hpr: + +hpr +=== + + +.. container:: + + + Computes a rank-1 update of a Hermitian packed matrix. + + + .. container:: section + :name: GUID-61DC4DBA-9357-4129-B8A3-931E2E7335D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void hpr(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &a) + + ``hpr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-02B8128C-02CE-4D5C-BE5D-DFD088C90475 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hpr routines compute a scalar-vector-vector product and add the + result to a Hermitian packed matrix. The operation is defined as + + + + + + A <- alpha*x*x :sup:`H` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix, supplied in packed form, + + + ``x`` is a vector of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + a + Buffer holding input matrix ``A``. Must have size at least + (``n``\ \*(``n``-1))/2. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + The imaginary part of the diagonal elements need not be set and + are assumed to be zero + + +.. container:: section + :name: GUID-7261182A-450B-46F5-8C61-7133597D3530 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Buffer holding the updated upper triangularpart of the Hermitian + matrix ``A`` if ``upper_lower =upper``, or the updated lower + triangular part of theHermitian matrix ``A`` if + ``upper_lower =lower``. + + + The imaginary parts of the diagonal elements are set tozero. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst new file mode 100644 index 0000000000..0422134408 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst @@ -0,0 +1,182 @@ +.. _hpr2-usm-version: + +hpr2 (USM Version) +================== + + +.. container:: + + + Performs a rank-2 update of a Hermitian packed matrix. + + + .. container:: section + :name: GUID-9F8EB534-6520-4470-85AC-6AD8F2467AD4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event hpr2(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*x, std::int64_t incx, const T \*y, std::int64_t incy, T \*a, const vector_class &dependencies = {}) + + The USM version of ``hpr2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-16FE1EDC-1A72-4BAB-8AFF-C316C4CE5838 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hpr2 routines compute two scalar-vector-vector products and + add them to a Hermitian packed matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`H` + conjg(alpha)*y*x :sup:`H` + A + + + where: + + + ``alpha`` is a scalar, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix, supplied in packed + form, + + + ``x`` and ``y`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether *A* is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least (``n``\ \*(``n``-1))/2. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + The imaginary parts of the diagonal elements need not be set + and are assumed to be zero. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-9A77A2E0-F610-44EE-A3EE-81327B90A3FD + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated upper triangularpart of the Hermitian + matrix ``A`` if ``upper_lower =upper``, or the updated lower + triangular part of theHermitian matrix ``A`` if + ``upper_lower =lower``. + + + The imaginary parts of the diagonal elements are set tozero. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/hpr2.rst b/source/elements/oneMKL/source/domains/blas/hpr2.rst new file mode 100644 index 0000000000..bfe83d4b6b --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/hpr2.rst @@ -0,0 +1,163 @@ +.. _hpr2: + +hpr2 +==== + + +.. container:: + + + Performs a rank-2 update of a Hermitian packed matrix. + + + .. container:: section + :name: GUID-9F8EB534-6520-4470-85AC-6AD8F2467AD4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void hpr2(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &a) + + ``hpr2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-16FE1EDC-1A72-4BAB-8AFF-C316C4CE5838 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The hpr2 routines compute two scalar-vector-vector products and add + them to a Hermitian packed matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`H` + conjg(alpha)*y*x :sup:`H` + A + + + where: + + + ``alpha`` is a scalar, + + + ``A`` is an ``n``-by-``n`` Hermitian matrix, supplied in packed form, + + + ``x`` and ``y`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether *A* is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + + a + Buffer holding input matrix ``A``. Must have size at least + (``n``\ \*(``n``-1))/2. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + The imaginary parts of the diagonal elements need not be set and + are assumed to be zero. + + +.. container:: section + :name: GUID-9A77A2E0-F610-44EE-A3EE-81327B90A3FD + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + **sycl:** +   + + + + a + Buffer holding the updated upper triangularpart of the Hermitian + matrix ``A`` if ``upper_lower =upper``, or the updated lower + triangular part of theHermitian matrix ``A`` if + ``upper_lower =lower``. + + + The imaginary parts of the diagonal elements are set tozero. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst b/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst new file mode 100644 index 0000000000..20c5a2a1ff --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst @@ -0,0 +1,153 @@ +.. _iamax-usm-version: + +iamax (USM Version) +=================== + + +.. container:: + + + Finds the index of the element with the largest absolute value in a + vector. + + + .. container:: section + :name: GUID-D1ABF76D-DB39-4C23-A217-EA2C7C6D1325 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event iamax(queue &exec_queue, std::int64_t n, const T \*x, std::int64_t incx, T_res \*result, const vector_class &dependencies = {}) + + The USM version of iamax supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std:complex`` + + + + + .. container:: section + :name: GUID-822D7950-256E-406D-9305-61F761080E69 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The iamax routines return an index ``i``\ such that ``x``\ [``i``] + has the maximum absolute value of all elements in vector ``x`` + (real variants), or such that ``|Re(x[i])| + |Im(x[i])|`` is + maximal (complex variants). + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + The index is zero-based. + + + If either ``n`` or ``incx`` are not positive, the routine returns + ``0``. + + + If more than one vector element is found with the same largest + absolute value, the index of the first one encountered is + returned. + + + If the vector contains ``NaN`` values, then the routine returns + the index of the first ``NaN``. + + + .. container:: section + :name: GUID-CE43FE84-2066-4095-BB7E-0691CD045443 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + The number of elements in vector ``x``. + + + x + The pointer to the input vector ``x``. The array holding the + input vector ``x`` must be of size at least (1 + (``n`` - + 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + The stride of vector ``x``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: ARGUMENTS_EC9F05BE9B09443F8BC59207D5EA40F1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + The pointer to where the zero-based index ``i`` of the maximal + element is stored. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/iamax.rst b/source/elements/oneMKL/source/domains/blas/iamax.rst new file mode 100644 index 0000000000..1678b7279f --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/iamax.rst @@ -0,0 +1,132 @@ +.. _iamax: + +iamax +===== + + +.. container:: + + + Finds the index of the element with the largest absolute value in a + vector. + + + .. container:: section + :name: GUID-D1ABF76D-DB39-4C23-A217-EA2C7C6D1325 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void iamax(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &result) + + iamax supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std:complex`` + + + + +.. container:: section + :name: GUID-822D7950-256E-406D-9305-61F761080E69 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The iamax routines return an index ``i``\ such that ``x``\ [``i``] + has the maximum absolute value of all elements in vector ``x`` (real + variants), or such that ``|Re(x[i])| + |Im(x[i])|`` is maximal + (complex variants). + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + The index is zero-based. + + + If either ``n`` or ``incx`` are not positive, the routine returns + ``0``. + + + If more than one vector element is found with the same largest + absolute value, the index of the first one encountered is returned. + + + If the vector contains ``NaN`` values, then the routine returns the + index of the first ``NaN``. + + +.. container:: section + :name: GUID-CE43FE84-2066-4095-BB7E-0691CD045443 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + The number of elements in vector ``x``. + + + x + The buffer that holds the input vector ``x``. The buffer must be + of size at least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incx + The stride of vector ``x``. + + +.. container:: section + :name: ARGUMENTS_EC9F05BE9B09443F8BC59207D5EA40F1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + The buffer where the zero-based index ``i`` of the maximal element + is stored. + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst b/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst new file mode 100644 index 0000000000..c71314123b --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst @@ -0,0 +1,147 @@ +.. _iamin-usm-version: + +iamin (USM Version) +=================== + + +.. container:: + + + Finds the index of the element with the smallest absolute value. + + + .. container:: section + :name: GUID-5D077B60-17B5-4961-AFF7-20D78BFB2A07 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event iamin(queue &exec_queue, std::int64_t n, const T \*x, std::int64_t incx, T_res \*result, const vector_class &dependencies = {}) + + The USM version of ``iamin`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A820CE7B-E983-4D8F-A73A-753FD95BD507 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The iamin routines return an index ``i`` such that ``x``\ [``i``] + has the minimum absolute value of all elements in vector ``x`` + (real variants), or such that \|Re(``x``\ [``i``])\| + + \|Im(``x``\ [``i``])\| is maximal (complex variants). + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + The index is zero-based. + + + If either ``n`` or ``incx`` are not positive, the routine returns + ``0``. + + + If more than one vector element is found with the same smallest + absolute value, the index of the first one encountered is + returned. + + + If the vector contains ``NaN`` values, then the routine returns + the index of the first ``NaN``. + + + .. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + The pointer to input vector ``x``. The array holding input + vector ``x`` must be of size at least (1 + (``n`` - + 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + .. container:: section + :name: GUID-2B160DEB-ADBB-4044-8078-4B613A0DA4E1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Pointer to where the zero-based index ``i`` of the minimum + element will be stored. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/iamin.rst b/source/elements/oneMKL/source/domains/blas/iamin.rst new file mode 100644 index 0000000000..ca5ea696f6 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/iamin.rst @@ -0,0 +1,130 @@ +.. _iamin: + +iamin +===== + + +.. container:: + + + Finds the index of the element with the smallest absolute value. + + + .. container:: section + :name: GUID-5D077B60-17B5-4961-AFF7-20D78BFB2A07 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void iamin(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &result) + + ``iamin`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-A820CE7B-E983-4D8F-A73A-753FD95BD507 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The iamin routines return an index ``i`` such that ``x``\ [``i``] has + the minimum absolute value of all elements in vector ``x`` (real + variants), or such that \|Re(``x``\ [``i``])\| + + \|Im(``x``\ [``i``])\| is maximal (complex variants). + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + The index is zero-based. + + + If either ``n`` or ``incx`` are not positive, the routine returns + ``0``. + + + If more than one vector element is found with the same smallest + absolute value, the index of the first one encountered is returned. + + + If the vector contains ``NaN`` values, then the routine returns the + index of the first ``NaN``. + + +.. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + +.. container:: section + :name: GUID-2B160DEB-ADBB-4044-8078-4B613A0DA4E1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Buffer where the zero-based index ``i`` of the minimum element + will be stored. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst new file mode 100644 index 0000000000..a88492e19b --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst @@ -0,0 +1,142 @@ +.. _nrm2-usm-version: + +nrm2 (USM Version) +================== + + +.. container:: + + + Computes the Euclidean norm of a vector. + + + .. container:: section + :name: GUID-F55A15D5-CCDA-4C44-B86F-C9A5FB36725E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event nrm2(queue &exec_queue, std::int64_t n, const T \*x, std::int64_t incx, T_res \*result, const vector_class &dependencies = {}) + + The USM version of ``nrm2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_res + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + + .. container:: section + :name: GUID-2BF2C965-5A8C-47F1-9C73-FB0E485CE32A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The nrm2 routines computes Euclidean norm of a vector + + + + + + result = ||x||, + + + where: + + + ``x`` is a vector of ``n`` elements. + + + .. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Pointer to input vector ``x``. The array holding input vectro + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-2B160DEB-ADBB-4044-8078-4B613A0DA4E1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Pointer to where the Euclidean norm of the vector ``x`` will be + stored. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/nrm2.rst b/source/elements/oneMKL/source/domains/blas/nrm2.rst new file mode 100644 index 0000000000..dfbf2265c1 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/nrm2.rst @@ -0,0 +1,121 @@ +.. _nrm2: + +nrm2 +==== + + +.. container:: + + + Computes the Euclidean norm of a vector. + + + .. container:: section + :name: GUID-F55A15D5-CCDA-4C44-B86F-C9A5FB36725E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void nrm2(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &result) + + ``nrm2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_res + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + +.. container:: section + :name: GUID-2BF2C965-5A8C-47F1-9C73-FB0E485CE32A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The nrm2 routines computes Euclidean norm of a vector + + + + + + result = ||x||, + + + where: + + + ``x`` is a vector of ``n`` elements. + + +.. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + +.. container:: section + :name: GUID-2B160DEB-ADBB-4044-8078-4B613A0DA4E1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Buffer where the Euclidean norm of the vector ``x`` will be + stored. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst new file mode 100644 index 0000000000..ce18cb96fe --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst @@ -0,0 +1,162 @@ +.. _rot-usm-version: + +rot (USM Version) +================= + + +.. container:: + + + Performs rotation of points in the plane. + + + .. container:: section + :name: GUID-9DD44991-6A55-49EE-BD0C-F13406FFBE52 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event rot(queue &exec_queue, std::int64_t n, T \*x, std::int64_t incx, T \*y, std::int64_t incy, T_scalar c, T_scalar s, const vector_class &dependencies = {}) + + The USM version of ``rot`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_scalar + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + + .. container:: section + :name: GUID-8B7F46D1-5047-4D4C-AF66-F0A3E4AC2BA5 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Given two vectors ``x`` and ``y`` of ``n`` elements, the rot + routines compute four scalar-vector products and update the input + vectors with the sum of two of these scalar-vector products as + follow: + + x <- c*x + s*y + + y <- c*y - s*x + + + + + .. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Pointer to input vector ``y``. The array holding input vector + ``y`` must be of size at least (1 + (``n`` - 1)*abs(``incy``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + + c + Scaling factor. + + + s + Scaling factor. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-2B160DEB-ADBB-4044-8078-4B613A0DA4E1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Pointer to the updated matrix ``x``. + + + y + Pointer to the updated matrix ``y``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/rot.rst b/source/elements/oneMKL/source/domains/blas/rot.rst new file mode 100644 index 0000000000..2dc20bdcec --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/rot.rst @@ -0,0 +1,139 @@ +.. _rot: + +rot +=== + + +.. container:: + + + Performs rotation of points in the plane. + + + .. container:: section + :name: GUID-9DD44991-6A55-49EE-BD0C-F13406FFBE52 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void rot(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, T_scalar c, T_scalar s) + + ``rot`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_scalar + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + +.. container:: section + :name: GUID-8B7F46D1-5047-4D4C-AF66-F0A3E4AC2BA5 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Given two vectors ``x`` and ``y`` of ``n`` elements, the rot routines + compute four scalar-vector products and update the input vectors with + the sum of two of these scalar-vector products as follow: + + + x <- c*x + s*y + + y <- c*y - s*x + + + +.. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Buffer holding input vector ``y``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + + c + Scaling factor. + + + s + Scaling factor. + + +.. container:: section + :name: GUID-2B160DEB-ADBB-4044-8078-4B613A0DA4E1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Buffer holding updated buffer ``x``. + + + y + Buffer holding updated buffer ``y``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst new file mode 100644 index 0000000000..f154a0857e --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst @@ -0,0 +1,145 @@ +.. _rotg-usm-version: + +rotg (USM Version) +================== + + +.. container:: + + + Computes the parameters for a Givens rotation. + + + .. container:: section + :name: GUID-E4B6E693-AC8C-4BB3-A197-3EB9E905B925 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event rotg(queue &exec_queue, T \*a, T \*b, T_real \*c, T \*s, const vector_class &dependencies = {}) + + The USM version of ``rotg`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_res + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + + .. container:: section + :name: GUID-5614B81D-C736-4714-88AB-29B38F9B3589 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Given the Cartesian coordinates ``(a, b)`` of a point, the rotg + routines return the parameters ``c``, ``s``, ``r``, and ``z`` + associated with the Givens rotation. The parameters ``c`` and + ``s`` define a unitary matrix such that: + + + The parameter ``z`` is defined such that if \|\ ``a``\ \| > + \|\ ``b``\ \|, ``z`` is ``s``; otherwise if ``c`` is not 0 ``z`` + is 1/``c``; otherwise ``z`` is 1. + + + .. container:: section + :name: GUID-C2003328-15AA-4DF0-A417-40BECCA7DEA3 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed + + + a + Pointer to the ``x``-coordinate of the point. + + + b + Pointer to the ``y``-coordinate of the point. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-3B7937E3-2DF7-49A3-8F1E-2C9406BB4E88 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the parameter ``r`` associated with the Givens + rotation. + + + b + Pointer to the parameter ``z`` associated with the Givens + rotation. + + + c + Pointer to the parameter ``c`` associated with the Givens + rotation. + + + s + Pointer to the parameter ``s`` associated with the Givens + rotation. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/rotg.rst b/source/elements/oneMKL/source/domains/blas/rotg.rst new file mode 100644 index 0000000000..3110a60a8a --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/rotg.rst @@ -0,0 +1,125 @@ +.. _rotg: + +rotg +==== + + +.. container:: + + + Computes the parameters for a Givens rotation. + + + .. container:: section + :name: GUID-E4B6E693-AC8C-4BB3-A197-3EB9E905B925 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void rotg(queue &exec_queue, buffer &a, buffer &b, buffer &c, buffer &s) + + ``rotg`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_res + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + +.. container:: section + :name: GUID-5614B81D-C736-4714-88AB-29B38F9B3589 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Given the Cartesian coordinates ``(a, b)`` of a point, the rotg + routines return the parameters ``c``, ``s``, ``r``, and ``z`` + associated with the Givens rotation. The parameters ``c`` and ``s`` + define a unitary matrix such that: + + + The parameter ``z`` is defined such that if \|\ ``a``\ \| > + \|\ ``b``\ \|, ``z`` is ``s``; otherwise if ``c`` is not 0 ``z`` is + 1/``c``; otherwise ``z`` is 1. + + +.. container:: section + :name: GUID-C2003328-15AA-4DF0-A417-40BECCA7DEA3 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed + + + a + Buffer holding the ``x``-coordinate of the point. + + + b + Buffer holding the ``y``-coordinate of the point. + + +.. container:: section + :name: GUID-3B7937E3-2DF7-49A3-8F1E-2C9406BB4E88 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Buffer holding the parameter ``r`` associated with the Givens + rotation. + + + b + Buffer holding the parameter ``z`` associated with the Givens + rotation. + + + c + Buffer holding the parameter ``c`` associated with the Givens + rotation. + + + s + Buffer holding the parameter ``s`` associated with the Givens + rotation. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst new file mode 100644 index 0000000000..98b8bc6a8d --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst @@ -0,0 +1,192 @@ +.. _rotm-usm-version: + +rotm (USM Version) +================== + + +.. container:: + + + Performs modified Givens rotation of points in the plane. + + + .. container:: section + :name: GUID-F8F2E2EB-1704-454D-BE45-C055D6F4E7D6 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event rotm(queue &exec_queue, std::int64_t n, T \*x, std::int64_t incx, T \*y, std::int64_t incy, T \*param, const vector_class &dependencies = {}) + + The USM version of ``rotm`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-856650C6-2998-4452-A34A-DF6CB801087D + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Given two vectors ``x`` and ``y``, each vector element of these + vectors is replaced as follows: + + + | + | |image0| + + + for ``i`` from 1 to ``n``, where ``H`` is a modified Givens + transformation matrix. + + + .. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Pointer to the input vector ``x``. The array holding the vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + yparam + Pointer to the input vector ``y``. The array holding the vector + ``y`` must be of size at least (1 + (``n`` - 1)*abs(``incy``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + + param + Pointer to an array of size 5. The elements of the ``param`` + array are: + + + ``param``\ [0] contains a switch, ``flag``, + + + ``param``\ [1-4] contain *h\ 11*,\ *h\ 21*, *h\ 12*,\ *h\ 22* + respectively, the components ofthe modified Givens + transformation matrix ``H``. + + + Depending on the values of ``flag``, thecomponents of ``H`` are + set as follows: + + + | ``flag =``\ ``-1.0``: + | |image1| + + + | ``flag =``\ ``0.0``: + | |image2| + + + | ``flag =``\ ``1.0``: + | |image3| + + + | ``flag =``\ ``-2.0``: + | |image4| + + + In the last three cases, the matrix entries of 1.0, -1.0, 0.0 + are assumed based on the value of ``flag`` and are not required + to be set in the ``param`` vector. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-062D805B-68FF-41F6-8D9A-329C92A77EA3 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Pointer to the updated array ``x``. + + + y + Pointer to the updated array ``y``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee1.png +.. |image1| image:: ../equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee2.png +.. |image2| image:: ../equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee3.png +.. |image3| image:: ../equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee4.png +.. |image4| image:: ../equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee5.png + diff --git a/source/elements/oneMKL/source/domains/blas/rotm.rst b/source/elements/oneMKL/source/domains/blas/rotm.rst new file mode 100644 index 0000000000..4d025c4eaf --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/rotm.rst @@ -0,0 +1,170 @@ +.. _rotm: + +rotm +==== + + +.. container:: + + + Performs modified Givens rotation of points in the plane. + + + .. container:: section + :name: GUID-F8F2E2EB-1704-454D-BE45-C055D6F4E7D6 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void rotm(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer ¶m) + + ``rotm`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-856650C6-2998-4452-A34A-DF6CB801087D + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Given two vectors ``x`` and ``y``, each vector element of these + vectors is replaced as follows: + + + | + | |image0| + + + for ``i`` from 1 to ``n``, where ``H`` is a modified Givens + transformation matrix. + + +.. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + + param + Buffer holding an array of size 5. The elements of the ``param`` + array are: + + + ``param``\ [0] contains a switch, ``flag``, + + + ``param``\ [1-4] contain *h\ 11*,\ *h\ 21*, *h\ 12*,\ *h\ 22* + respectively, the components ofthe modified Givens transformation + matrix ``H``. + + + Depending on the values of ``flag``, thecomponents of ``H`` are + set as follows: + + + | ``flag =``\ ``-1.0``: + | |image1| + + + | ``flag =``\ ``0.0``: + | |image2| + + + | ``flag =``\ ``1.0``: + | |image3| + + + | ``flag =``\ ``-2.0``: + | |image4| + + + In the last three cases, the matrix entries of 1.0, -1.0, 0.0 are + assumed based on the value of ``flag`` and are not required to be + set in the ``param`` vector. + + +.. container:: section + :name: GUID-062D805B-68FF-41F6-8D9A-329C92A77EA3 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Buffer holding updated buffer ``x``. + + + y + Buffer holding updated buffer ``y``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee1.png +.. |image1| image:: ../equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee2.png +.. |image2| image:: ../equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee3.png +.. |image3| image:: ../equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee4.png +.. |image4| image:: ../equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee5.png + diff --git a/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst new file mode 100644 index 0000000000..6541880c4b --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst @@ -0,0 +1,185 @@ +.. _rotmg-usm-version: + +rotmg (USM Version) +=================== + + +.. container:: + + + Computes the parameters for a modified Givens rotation. + + + .. container:: section + :name: GUID-DF41021D-C145-495B-A717-45FB5F36E676 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event rotmg(queue &exec_queue, T \*d1, T \*d2, T \*x1, T \*y1, T \*param, const vector_class &dependencies = {}) + + The USM version of ``rotmg`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-5525F11C-A739-487E-A7CC-6886A088035D + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Given Cartesian coordinates (``x``\ :sub:`1`, ``y``\ :sub:`1`) of + an input vector, the rotmg routines compute the components of a + modified Givens transformation matrix ``H`` that zeros the + ``y``-component of the resulting vector: + + + | + | |image0| + + + .. container:: section + :name: GUID-21946B3A-A859-4293-8EE7-965328AA6717 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + d1 + Pointer to the scaling factor for the ``x``-coordinate of the + input vector. + + + d2 + Pointer to the scaling factor for the ``y``-coordinate of the + input vector. + + + x1 + Pointer to the ``x``-coordinate of the input vector. + + + y1 + Scalar specifying the ``y``-coordinate of the input vector. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-1C0481DB-BB35-4DB7-941F-649EDAA77C6F + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + d1 + Pointer to the first diagonal element of the updated matrix. + + + d2 + Pointer to the second diagonal element of the updated matrix. + + + x1 + Pointer to the *x*-coordinate of the rotated vector before + scaling + + + param + Pointer to an array of size 5. + + + The elements of the ``param`` array are: + + + ``param[0]`` contains a switch, ``flag``. The other array + elements ``param[1-4]`` contain the components of the array + ``H``: ``h``\ :sub:`11`, ``h``\ :sub:`21`, ``h``\ :sub:`12`, + and ``h``\ :sub:`22`, respectively. + + + Depending on the values of ``flag``, the components of ``H`` + are set as follows: + + + | ``flag =``\ ``-1.0``: + | |image1| + + + | ``flag =``\ ``0.0``: + | |image2| + + + | ``flag =``\ ``1.0``: + | |image3| + + + | ``flag =``\ ``-2.0``: + | |image4| + + + In the last three cases, the matrix entries of 1.0, -1.0, and + 0.0 are assumed based on the value of ``flag`` and are not + required to be set in the ``param`` vector. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee1.png +.. |image1| image:: ../equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee2.png +.. |image2| image:: ../equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee3.png +.. |image3| image:: ../equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee4.png +.. |image4| image:: ../equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee5.png + diff --git a/source/elements/oneMKL/source/domains/blas/rotmg.rst b/source/elements/oneMKL/source/domains/blas/rotmg.rst new file mode 100644 index 0000000000..64d6543eab --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/rotmg.rst @@ -0,0 +1,165 @@ +.. _rotmg: + +rotmg +===== + + +.. container:: + + + Computes the parameters for a modified Givens rotation. + + + .. container:: section + :name: GUID-DF41021D-C145-495B-A717-45FB5F36E676 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void rotmg(queue &exec_queue, buffer &d1, buffer &d2, buffer &x1, buffer &y1, buffer ¶m) + + ``rotmg`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-5525F11C-A739-487E-A7CC-6886A088035D + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Given Cartesian coordinates (``x``\ :sub:`1`, ``y``\ :sub:`1`) of an + input vector, the rotmg routines compute the components of a modified + Givens transformation matrix ``H`` that zeros the ``y``-component of + the resulting vector: + + + | + | |image0| + + +.. container:: section + :name: GUID-21946B3A-A859-4293-8EE7-965328AA6717 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + d1 + Buffer holding the scaling factor for the ``x``-coordinate of the + input vector. + + + d2 + Buffer holding the scaling factor for the ``y``-coordinate of the + input vector. + + + x1 + Buffer holding the ``x``-coordinate of the input vector. + + + y1 + Scalar specifying the ``y``-coordinate of the input vector. + + +.. container:: section + :name: GUID-1C0481DB-BB35-4DB7-941F-649EDAA77C6F + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + d1 + Buffer holding the first diagonal element of the updated matrix. + + + d2 + Buffer holding the second diagonal element of the updated matrix. + + + x1 + Buffer holding the *x*-coordinate of the rotated vector before + scaling + + + param + Buffer holding an array of size 5. + + + The elements of the ``param`` array are: + + + ``param[0]`` contains a switch, ``flag``. the other array elements + ``param[1-4]`` contain the components of the array ``H``: + ``h``\ :sub:`11`, ``h``\ :sub:`21`, ``h``\ :sub:`12`, and + ``h``\ :sub:`22`, respectively. + + + Depending on the values of ``flag``, the components of ``H`` are + set as follows: + + + | ``flag =``\ ``-1.0``: + | |image1| + + + | ``flag =``\ ``0.0``: + | |image2| + + + | ``flag =``\ ``1.0``: + | |image3| + + + | ``flag =``\ ``-2.0``: + | |image4| + + + In the last three cases, the matrix entries of 1.0, -1.0, and 0.0 + are assumed based on the value of ``flag`` and are not required to + be set in the ``param`` vector. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee1.png +.. |image1| image:: ../equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee2.png +.. |image2| image:: ../equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee3.png +.. |image3| image:: ../equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee4.png +.. |image4| image:: ../equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee5.png + diff --git a/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst new file mode 100644 index 0000000000..9aaf69379d --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst @@ -0,0 +1,187 @@ +.. _sbmv-usm-version: + +sbmv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product with a symmetric band matrix. + + + .. container:: section + :name: GUID-BEDE7E82-C168-498D-BF65-085BBCEF9A27 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event sbmv(queue &exec_queue, uplo upper_lower, std::int64_t n, std::int64_t k, T alpha, const T \*a, std::int64_t lda, const T \*x, std::int64_t incx, T beta, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of ``sbmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-4F227157-1724-4D1F-AFAB-58C722CA8D08 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sbmv routines compute a scalar-matrix-vector product and add + the result to a scalar-vector product, with a symmetric band + matrix. The operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` symmetric matrix with ``k`` + super-diagonals, + + + ``x`` and ``y`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + k + Number of super-diagonals of the matrix ``A``. Must be at least + zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least (``k`` + + 1), and positive. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-ABBEA4DA-7B4C-489A-8063-BDC09FBB1ADD + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Pointer to the updated vector ``y``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/sbmv.rst b/source/elements/oneMKL/source/domains/blas/sbmv.rst new file mode 100644 index 0000000000..b28b9b0274 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/sbmv.rst @@ -0,0 +1,164 @@ +.. _sbmv: + +sbmv +==== + + +.. container:: + + + Computes a matrix-vector product with a symmetric band matrix. + + + .. container:: section + :name: GUID-BEDE7E82-C168-498D-BF65-085BBCEF9A27 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void sbmv(queue &exec_queue, uplo upper_lower, std::int64_t n, std::int64_t k, T alpha, buffer &a, std::int64_t lda, buffer &x, std::int64_t incx, T beta, buffer &y, std::int64_t incy) + + ``sbmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-4F227157-1724-4D1F-AFAB-58C722CA8D08 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sbmv routines compute a scalar-matrix-vector product and add the + result to a scalar-vector product, with a symmetric band matrix. The + operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` symmetric matrix with ``k`` + super-diagonals, + + + ``x`` and ``y`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + k + Number of super-diagonals of the matrix ``A``. Must be at least + zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least (``k`` + 1), + and positive. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + +.. container:: section + :name: GUID-ABBEA4DA-7B4C-489A-8063-BDC09FBB1ADD + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Buffer holding the updated vector ``y``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst b/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst new file mode 100644 index 0000000000..f6e53db454 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst @@ -0,0 +1,146 @@ +.. _scal-usm-version: + +scal (USM Version) +================== + + +.. container:: + + + Computes the product of a vector by a scalar. + + + .. container:: section + :name: GUID-178A4C6A-3BA5-40F7-A3D6-4B6590B75EB4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event scal(queue &exec_queue, std::int64_t n, T_scalar alpha, T \*x, std::int64_t incx, const vector_class &dependencies = {}) + + The USM version of ``scal`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_scalar + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``std::complex`` + - ``std::complex`` + * - ``std::complex`` + - ``std::complex`` + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + + .. container:: section + :name: GUID-8DDCA613-2750-43D0-A89B-13866F2DDE8C + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The scal routines computes a scalar-vector product: + + + + + + x <- alpha*x + + + where: + + + ``x`` is a vector of ``n`` elements, + + + ``alpha`` is a scalar. + + + .. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + alpha + Specifies the scalar ``alpha``. + + + x + Pointer to the input vector ``x``. The array must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + .. container:: section + :name: GUID-B36EBB3E-C79B-49F8-9F47-7B19BD6BE105 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Pointer to the updated array ``x``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/scal.rst b/source/elements/oneMKL/source/domains/blas/scal.rst new file mode 100644 index 0000000000..97075eac60 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/scal.rst @@ -0,0 +1,131 @@ +.. _scal: + +scal +==== + + +.. container:: + + + Computes the product of a vector by a scalar. + + + .. container:: section + :name: GUID-178A4C6A-3BA5-40F7-A3D6-4B6590B75EB4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void scal(queue &exec_queue, std::int64_t n, T_scalar alpha, buffer &x, std::int64_t incx) + + ``scal`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - T_scalar + * - ``float`` + - ``float`` + * - ``double`` + - ``double`` + * - ``std::complex`` + - ``std::complex`` + * - ``std::complex`` + - ``std::complex`` + * - ``std::complex`` + - ``float`` + * - ``std::complex`` + - ``double`` + + + + +.. container:: section + :name: GUID-8DDCA613-2750-43D0-A89B-13866F2DDE8C + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The scal routines computes a scalar-vector product: + + + + + + x <- alpha*x + + + where: + + + ``x`` is a vector of ``n`` elements, + + + ``alpha`` is a scalar. + + +.. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + alpha + Specifies the scalar ``alpha``. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + +.. container:: section + :name: GUID-B36EBB3E-C79B-49F8-9F47-7B19BD6BE105 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Buffer holding updated buffer ``x``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst new file mode 100644 index 0000000000..2859434f2d --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst @@ -0,0 +1,109 @@ +.. _sdsdot-usm-version: + +sdsdot (USM Version) +==================== + + +.. container:: + + + Computes a vector-vector dot product with double precision. + + + .. container:: section + :name: GUID-2DDFDC38-65FA-40F5-AACB-8E383623EF4A + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event sdsdot(queue &exec_queue, std::int64_t n, float sb, const float \*x, std::int64_t incx, const float \*y, std::int64_t incy, float \*result, const vector_class &dependencies = {}) + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sdsdot routines perform a dot product between two vectors + with double precision: + + + |image0| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vectors ``x`` and ``y``. + + + sb + Single precision scalar to be added to the dot product. + + + x + Pointer to the input vector ``x``. The array must be of size + at least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and + Vector + Storage <../matrix-storage.html>`__ + for more details. + + + incx + Stride of vector x. + + + y + Pointer to the input vector ``y``. The array must be of size + at least (1 + (``n`` - 1)*abs(``incxy``)). See `Matrix and + Vector + Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector y. + + + dependencies + List of events to wait for before starting computation, if + any. If omitted, defaults to no dependencies. + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Pointer to where the result (a scalar) will be stored. If + ``n`` < 0 the result is ``sb``. + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. |image0| image:: ../equations/GUID-9B91DAAE-72DD-4799-9983-12B021993ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/sdsdot.rst b/source/elements/oneMKL/source/domains/blas/sdsdot.rst new file mode 100644 index 0000000000..11414fd5ba --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/sdsdot.rst @@ -0,0 +1,93 @@ +.. _sdsdot: + +sdsdot +====== + + +.. container:: + + + Computes a vector-vector dot product with double precision. + + + .. container:: section + :name: GUID-2DDFDC38-65FA-40F5-AACB-8E383623EF4A + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void sdsdot(queue &exec_queue, std::int64_t n, float sb, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &result) + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sdsdot routines perform a dot product between two vectors with + double precision: + + + |image0| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vectors ``x`` and ``y``. + + + sb + Single precision scalar to be added to the dot product. + + + x + Buffer holding input vector ``x``. The buffer must be of size + at least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and + Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Buffer holding input vector ``y``. The buffer must be of size + at least (1 + (``n`` - 1)*abs(``incxy``)). See `Matrix and + Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + result + Buffer where the result (a scalar) will be stored. If ``n`` < 0 + the result is ``sb``. + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. |image0| image:: ../equations/GUID-9DB212E1-03E2-430C-8B1F-8F5CBD4F2ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst new file mode 100644 index 0000000000..28b3d9f0fa --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst @@ -0,0 +1,177 @@ +.. _spmv-usm-version: + +spmv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product with a symmetric packed matrix. + + + .. container:: section + :name: GUID-BCC82B03-92EB-4D73-B69C-8AE8646FBEAC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event spmv(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*a, const T \*x, std::int64_t incx, T beta, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of ``spmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-D27BBFFF-79F4-4236-96A6-B305FA1858B0 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The spmv routines compute a scalar-matrix-vector product and add + the result to a scalar-vector product, with a symmetric packed + matrix. The operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, supplied in packed + form. + + + ``x`` and ``y`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least (``n``\ \*(``n``\ +1))/2. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-23FF1F5C-5560-40B6-807D-B6352FA320D6 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Pointer to the updated vector ``y``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/spmv.rst b/source/elements/oneMKL/source/domains/blas/spmv.rst new file mode 100644 index 0000000000..0b1690df5c --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/spmv.rst @@ -0,0 +1,153 @@ +.. _spmv: + +spmv +==== + + +.. container:: + + + Computes a matrix-vector product with a symmetric packed matrix. + + + .. container:: section + :name: GUID-BCC82B03-92EB-4D73-B69C-8AE8646FBEAC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void spmv(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &a, buffer &x, std::int64_t incx, T beta, buffer &y, std::int64_t incy) + + ``spmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-D27BBFFF-79F4-4236-96A6-B305FA1858B0 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The spmv routines compute a scalar-matrix-vector product and add the + result to a scalar-vector product, with a symmetric packed matrix. + The operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, supplied in packed form. + + + ``x`` and ``y`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Buffer holding input matrix ``A``. Must have size at least + (``n``\ \*(``n``\ +1))/2. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + beta + Scaling factor for vector ``y``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + +.. container:: section + :name: GUID-23FF1F5C-5560-40B6-807D-B6352FA320D6 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Buffer holding the updated vector ``y``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst new file mode 100644 index 0000000000..eabc3746dc --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst @@ -0,0 +1,164 @@ +.. _spr-usm-version: + +spr (USM Version) +================= + + +.. container:: + + + Performs a rank-1 update of a symmetric packed matrix. + + + .. container:: section + :name: GUID-34904813-AFD9-4349-9DAC-A7221FBE9F97 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event spr(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*x, std::int64_t incx, T \*a, const vector_class &dependencies = {}) + + The USM version of ``spr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-E387B33A-CA59-45D8-BB01-31DF76C82A0D + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The spr routines compute a scalar-vector-vector product and add + the result to a symmetric packed matrix. The operation is defined + as + + + + + + A <- alpha*x*x :sup:`T` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, supplied in packed + form, + + + ``x`` is a vector of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least (``n``\ \*(``n``-n))/2. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-9FBC2F3B-EB8F-4733-ABBA-08D5685A761B + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated upper triangularpart of the symmetric + matrix ``A`` if ``upper_lower =upper``, or the updated lower + triangular part of thesymmetric matrix ``A`` if + ``upper_lower =lower``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/spr.rst b/source/elements/oneMKL/source/domains/blas/spr.rst new file mode 100644 index 0000000000..0112706b6a --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/spr.rst @@ -0,0 +1,145 @@ +.. _spr: + +spr +=== + + +.. container:: + + + Performs a rank-1 update of a symmetric packed matrix. + + + .. container:: section + :name: GUID-34904813-AFD9-4349-9DAC-A7221FBE9F97 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void spr(queue &exec_queue, uplo upper_lower, std::std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &a) + + ``spr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-E387B33A-CA59-45D8-BB01-31DF76C82A0D + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The spr routines compute a scalar-vector-vector product and add the + result to a symmetric packed matrix. The operation is defined as + + + + + + A <- alpha*x*x :sup:`T` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, supplied in packed form, + + + ``x`` is a vector of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + a + Buffer holding input matrix ``A``. Must have size at least + (``n``\ \*(``n``-n))/2. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + +.. container:: section + :name: GUID-9FBC2F3B-EB8F-4733-ABBA-08D5685A761B + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + **sycl:** +   + + + + a + Buffer holding the updated upper triangularpart of the symmetric + matrix ``A`` if ``upper_lower =upper``, or the updated lower + triangular part of thesymmetric matrix ``A`` if + ``upper_lower =lower``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst new file mode 100644 index 0000000000..e0d1aacf38 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst @@ -0,0 +1,175 @@ +.. _spr2-usm-version: + +spr2 (USM Version) +================== + + +.. container:: + + + Computes a rank-2 update of a symmetric packed matrix. + + + .. container:: section + :name: GUID-44B72132-1EC0-41FA-9189-4596CFD651B0 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event spr2(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*x, std::int64_t incx, const T \*y, std::int64_t incy, T \*a) + + The USM version of\ ``spr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-3AF7EB4D-B3FE-4C0A-B7A0-6E286D4C642F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The spr2 routines compute two scalar-vector-vector products and + add them to a symmetric packed matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`T` + alpha*y*x :sup:`T` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, supplied in packed + form, + + + ``x`` and ``y`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least (``n``\ \*(``n``-1))/2. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-9796BA93-31FB-40B9-B139-219905913736 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated upper triangularpart of the symmetric + matrix ``A`` if ``upper_lower =upper`` or the updated lower + triangular part of thesymmetric matrix ``A`` if + ``upper_lower =lower``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/spr2.rst b/source/elements/oneMKL/source/domains/blas/spr2.rst new file mode 100644 index 0000000000..ca78f30acd --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/spr2.rst @@ -0,0 +1,156 @@ +.. _spr2: + +spr2 +==== + + +.. container:: + + + Computes a rank-2 update of a symmetric packed matrix. + + + .. container:: section + :name: GUID-44B72132-1EC0-41FA-9189-4596CFD651B0 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void spr2(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &a) + + ``spr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-3AF7EB4D-B3FE-4C0A-B7A0-6E286D4C642F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The spr2 routines compute two scalar-vector-vector products and add + them to a symmetric packed matrix. The operation is defined as + + + + + + A <- alpha*x*y :sup:`T` + alpha*y*x :sup:`T` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, supplied in packed form, + + + ``x`` and ``y`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + + a + Buffer holding input matrix ``A``. Must have size at least + (``n``\ \*(``n``-1))/2. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + +.. container:: section + :name: GUID-9796BA93-31FB-40B9-B139-219905913736 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + **sycl:** +   + + + + a + Buffer holding the updated upper triangularpart of the symmetric + matrix ``A`` if ``upper_lower =upper`` or the updated lower + triangular part of thesymmetric matrix ``A`` if + ``upper_lower =lower``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst b/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst new file mode 100644 index 0000000000..e29e5923ea --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst @@ -0,0 +1,148 @@ +.. _swap-usm-version: + +swap (USM Version) +================== + + +.. container:: + + + Swaps a vector with another vector. + + + .. container:: section + :name: GUID-F0DF0055-DF25-4EC7-8FF2-48D4FA91E42E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event swap(queue &exec_queue, std::int64_t n, T \*x, std::int64_t incx, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of swap supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-FE88C4B7-4C74-41F8-94DE-E62888DD3BA4 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Given two vectors of ``n`` elements, ``x`` and ``y``, the swap + routines return vectors ``y`` and ``x`` swapped, each replacing + the other. + + + + + + y <- x, x <- y + + + .. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Pointer to the input vector ``x``. The array must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Pointer to the input vector ``y``. The array must be of size at + least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-106AC665-DCBA-40ED-8779-0D9017064855 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Pointer to the updated array ``x``, that is, the input vector + ``y``. + + + y + Pointer to the updated array ``y``, that is, the input vector + ``x``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/swap.rst b/source/elements/oneMKL/source/domains/blas/swap.rst new file mode 100644 index 0000000000..3d45427796 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/swap.rst @@ -0,0 +1,128 @@ +.. _swap: + +swap +==== + + +.. container:: + + + Swaps a vector with another vector. + + + .. container:: section + :name: GUID-F0DF0055-DF25-4EC7-8FF2-48D4FA91E42E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void swap(queue &exec_queue, std::int64_t n, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy) + + swap supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-FE88C4B7-4C74-41F8-94DE-E62888DD3BA4 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Given two vectors of ``n`` elements, ``x`` and ``y``, the swap + routines return vectors ``y`` and ``x`` swapped, each replacing the + other. + + + + + + y <- x, x <- y + + +.. container:: section + :name: GUID-A615800D-734E-4997-BB91-1C76AEEE9EC2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + Number of elements in vector ``x``. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector x. + + + y + Buffer holding input vector ``y``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector y. + + +.. container:: section + :name: GUID-106AC665-DCBA-40ED-8779-0D9017064855 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Buffer holding updated buffer ``x``, that is, the input vector + ``y``. + + + y + Buffer holding updated buffer ``y``, that is, the input vector + ``x``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-1-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst new file mode 100644 index 0000000000..f0d0a498d8 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst @@ -0,0 +1,232 @@ +.. _symm-usm-version: + +symm (USM Version) +================== + + +.. container:: + + + Computes a matrix-matrix product where one input matrix is symmetrica + nd one matrix is general. + + + .. container:: section + :name: GUID-BFE36A6B-941E-4B49-AB0E-CFB687B1AD64 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event symm(queue &exec_queue, side left_right, uplo upper_lower, std::int64_t m, std::int64_t n, T alpha, const T\* a, std::int64_t lda, const T\* b, std::int64_t ldb, T beta, T\* c, std::int64_t ldc, const vector_class &dependencies = {}) + + symm supports the following precisions: + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-E8FE37B0-C527-4AA6-B57F-AE3F4843F23A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The symm routines compute a scalar-matrix-matrix product and add + the result to a scalar-matrix product, where one of the matrices + in the multiplication is symmetric. The argument ``left_right`` + determines if the symmetric matrix, ``A``, is on the left of the + multiplication (``left_right`` = ``side::left``) or on the right + (``left_right`` = ``side::right``). Depending on ``left_right``, + the operation is defined as + + + + + + C <- alpha*A*B + beta*C, + + + or + + + + + + C <- alpha*B*A + beta*C, + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is a symmetric matrix, either ``m``-by-``m`` or + ``n``-by-``n``, + + + ``B`` and ``C`` are ``m``-by-``n`` matrices. + + + .. container:: section + :name: GUID-70716375-C54E-4AA6-94DC-65AF79D46BB2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + Specifies whether ``A`` is on the left side of the + multiplication (``side::left``) or on the right side + (``side::right``). See + :ref:`onemkl_datatypes` for + more details. + + + upper_lower + Specifies whether *A*'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for + more details. + + + m + Number of rows of ``B`` and ``C``. The value of ``m`` must be + at least zero. + + + n + Number of columns of ``B`` and ``C``. The value of ``n`` must + be at least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + Pointer to input matrix ``A``. Must have size at least + ``lda``\ \*\ ``m`` if ``A`` is on the left of the + multiplication, or ``lda``\ \*\ ``n`` if ``A`` is on the right. + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``m`` if ``A`` is + on the left of the multiplication, or at least ``n`` if ``A`` + is on the right. Must be positive. + + + b + Pointer to input matrix ``B``. Must have size at least + ``ldb``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be positive and at least + ``m``. + + + beta + Scaling factor for matrix ``C``. + + + c + Pointer to input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least + ``m``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-DD569858-5D3C-4565-8BAB-FE548427DCF2 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Pointer to the output matrix, overwritten by + ``alpha``\ \*\ ``A``\ \*\ ``B`` + ``beta``\ \*\ ``C`` + (``left_right`` = ``side::left``) or + ``alpha``\ \*\ ``B``\ \*\ ``A`` + ``beta``\ \*\ ``C`` + (``left_right`` = ``side::right``). + + + .. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``beta`` = 0, matrix ``C`` does not need to be initialized + before calling ``symm``. + + + .. container:: section + :name: GUID-060660BF-6923-449B-B952-961D0A2EA688 + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/symm.rst b/source/elements/oneMKL/source/domains/blas/symm.rst new file mode 100644 index 0000000000..c14d9d2bf5 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/symm.rst @@ -0,0 +1,206 @@ +.. _symm: + +symm +==== + + +.. container:: + + + Computes a matrix-matrix product where one input matrix is symmetric + and one matrix is general. + + + .. container:: section + :name: GUID-BFE36A6B-941E-4B49-AB0E-CFB687B1AD64 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void symm(queue &exec_queue, side left_right, uplo upper_lower, std::int64_t m, std::int64_t n, T alpha, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, T beta, buffer &c, std::int64_t ldc) + + symm supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-E8FE37B0-C527-4AA6-B57F-AE3F4843F23A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The symm routines compute a scalar-matrix-matrix product and add the + result to a scalar-matrix product, where one of the matrices in the + multiplication is symmetric. The argument ``left_right`` determines + if the symmetric matrix, ``A``, is on the left of the multiplication + (``left_right`` = ``side::left``) or on the right (``left_right`` = + ``side::right``). Depending on ``left_right``, the operation is + defined as + + + + + + C <- alpha*A*B + beta*C, + + + or + + + + + + C <- alpha*B*A + beta*C, + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is a symmetric matrix, either ``m``-by-``m`` or ``n``-by-``n``, + + + ``B`` and ``C`` are ``m``-by-``n`` matrices. + + +.. container:: section + :name: GUID-70716375-C54E-4AA6-94DC-65AF79D46BB2 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + Specifies whether ``A`` is on the left side of the multiplication + (``side::left``) or on the right side (``side::right``). See + :ref:`onemkl_datatypes` for more + details. + + + upper_lower + Specifies whether *A*'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for more + details. + + + m + Number of rows of ``B`` and ``C``. The value of ``m`` must be at + least zero. + + + n + Number of columns of ``B`` and ``C``. The value of ``n`` must be + at least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``m`` if ``A`` is on the left of the multiplication, + or ``lda``\ \*\ ``n`` if ``A`` is on the right. See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + lda + Leading dimension of ``A``. Must be at least ``m`` if ``A`` is on + the left of the multiplication, or at least ``n`` if ``A`` is on + the right. Must be positive. + + + b + Buffer holding input matrix ``B``. Must have size at least + ``ldb``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be positive and at least ``m``. + + + beta + Scaling factor for matrix ``C``. + + + c + Buffer holding input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least ``m``. + + +.. container:: section + :name: GUID-DD569858-5D3C-4565-8BAB-FE548427DCF2 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Output buffer, overwritten by ``alpha``\ \*\ ``A``\ \*\ ``B`` + + ``beta``\ \*\ ``C`` (``left_right`` = ``side::left``) or + ``alpha``\ \*\ ``B``\ \*\ ``A`` + ``beta``\ \*\ ``C`` + (``left_right`` = ``side::right``). + + +.. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``beta`` = 0, matrix ``C`` does not need to be initialized before + calling ``symm``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst new file mode 100644 index 0000000000..6b9e2cc492 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst @@ -0,0 +1,177 @@ +.. _symv-usm-version: + +symv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product for a symmetric matrix. + + + .. container:: section + :name: GUID-1E9C9EA9-0366-420E-A704-AB605C8ED92A + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event symv(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*a, std::int64_t lda, const T \*x, std::int64_t incx, T beta, T \*y, std::int64_t incy, const vector_class &dependencies = {}) + + The USM version of ``symv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-DE8D8321-D53D-4226-A940-CDE0E720EC95 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The symv routines routines compute a scalar-matrix-vector product + and add the result to a scalar-vector product, with a symmetric + matrix. The operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, + + + ``x`` and ``y`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``m``, and + positive. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-E16C8443-A2A4-483C-9D46-FF428E80FEB0 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Pointer to the updated vector ``y``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/symv.rst b/source/elements/oneMKL/source/domains/blas/symv.rst new file mode 100644 index 0000000000..8d59ed90a7 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/symv.rst @@ -0,0 +1,154 @@ +.. _symv: + +symv +==== + + +.. container:: + + + Computes a matrix-vector product for a symmetric matrix. + + + .. container:: section + :name: GUID-1E9C9EA9-0366-420E-A704-AB605C8ED92A + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void symv(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &a, std::int64_t lda, buffer &x, std::int64_t incx, T beta, buffer &y, std::int64_t incy) + + ``symv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-DE8D8321-D53D-4226-A940-CDE0E720EC95 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The symv routines routines compute a scalar-matrix-vector product and + add the result to a scalar-vector product, with a symmetric matrix. + The operation is defined as + + + + + + y <- alpha*A*x + beta*y + + + where: + + + ``alpha`` and ``beta`` are scalars, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, + + + ``x`` and ``y`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``m``, and + positive. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + +.. container:: section + :name: GUID-E16C8443-A2A4-483C-9D46-FF428E80FEB0 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Buffer holding the updated vector ``y``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst new file mode 100644 index 0000000000..33ed8e4727 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst @@ -0,0 +1,168 @@ +.. _syr-usm-version: + +syr (USM Version) +================= + + +.. container:: + + + Computes a rank-1 update of a symmetric matrix. + + + .. container:: section + :name: GUID-E620D36F-6B4E-40A6-8BDA-3D625DEF55A8 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event syr(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*x, std::int64_t incx, T \*a, std::int64_t lda, const vector_class &dependencies = {}) + + The USM version of ``syr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-E154DE4B-4559-4471-B92B-46AF8777AC97 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The syr routines compute a scalar-vector-vector product add them + and add the result to a matrix, with a symmetric matrix. The + operation is defined as + + + + + + A <- alpha*x*x :sup:`T` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, + + + ``x`` is a vector of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-C03D1215-FD77-4AD8-8FA2-C48A5D8B938C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated upper triangularpart of the symmetric + matrix ``A`` if ``upper_lower =upper`` or the updated lower + triangular part of thesymmetric matrix ``A`` if + ``upper_lower =lower``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/syr.rst b/source/elements/oneMKL/source/domains/blas/syr.rst new file mode 100644 index 0000000000..e3ff12e6bf --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/syr.rst @@ -0,0 +1,146 @@ +.. _syr: + +syr +=== + + +.. container:: + + + Computes a rank-1 update of a symmetric matrix. + + + .. container:: section + :name: GUID-E620D36F-6B4E-40A6-8BDA-3D625DEF55A8 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void syr(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &a, std::int64_t lda) + + ``syr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-E154DE4B-4559-4471-B92B-46AF8777AC97 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The syr routines compute a scalar-vector-vector product add them and + add the result to a matrix, with a symmetric matrix. The operation is + defined as + + + + + + A <- alpha*x*x :sup:`T` + A + + + where: + + + ``alpha`` is scalar, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, + + + ``x`` is a vector of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + +.. container:: section + :name: GUID-C03D1215-FD77-4AD8-8FA2-C48A5D8B938C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Buffer holding the updated upper triangularpart of the symmetric + matrix ``A`` if ``upper_lower =upper`` or the updated lower + triangular part of thesymmetric matrix ``A`` if + ``upper_lower =lower``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst new file mode 100644 index 0000000000..02e85862e3 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst @@ -0,0 +1,180 @@ +.. _syr2-usm-version: + +syr2 (USM Version) +================== + + +.. container:: + + + Computes a rank-2 update of a symmetric matrix. + + + .. container:: section + :name: GUID-580F2222-D47E-43A3-B9A2-037F353825D5 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event syr2(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, const T \*x, std::int64_t incx, const T \*y, std::int64_t incy, T \*a, std::int64_t lda, const vector_class &dependencies = {}) + + The USM version of ``syr2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-CDA05459-F2FE-4933-A552-D6E52EC46D13 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The syr2 routines compute two scalar-vector-vector product add + them and add the result to a matrix, with a symmetric matrix. The + operation is defined as + + + + + + A <- alpha*x*y :sup:`T` + alpha*y*x :sup:`T` + A + + + where: + + + ``alpha`` is a scalar, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, + + + ``x`` and ``y`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Pointer to input/output vector ``y``. The array holding + input/output vector ``y`` must be of size at least (1 + (``n`` + - 1)*abs(``incy``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incy + Stride of vector ``y``. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-6992A39F-8AB7-42D9-B126-4F8ECF9C1ECE + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Pointer to the updated upper triangularpart of the symmetric + matrix ``A`` if ``upper_lower =upper``, or the updated lower + triangular part of thesymmetric matrix ``A`` if + ``upper_lower =lower``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/syr2.rst b/source/elements/oneMKL/source/domains/blas/syr2.rst new file mode 100644 index 0000000000..6459801cfb --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/syr2.rst @@ -0,0 +1,157 @@ +.. _syr2: + +syr2 +==== + + +.. container:: + + + Computes a rank-2 update of a symmetric matrix. + + + .. container:: section + :name: GUID-580F2222-D47E-43A3-B9A2-037F353825D5 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void syr2(queue &exec_queue, uplo upper_lower, std::int64_t n, T alpha, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &a, std::int64_t lda) + + ``syr2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-CDA05459-F2FE-4933-A552-D6E52EC46D13 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The syr2 routines compute two scalar-vector-vector product add them + and add the result to a matrix, with a symmetric matrix. The + operation is defined as + + + + + + A <- alpha*x*y :sup:`T` + alpha*y*x :sup:`T` + A + + + where: + + + ``alpha`` is a scalar, + + + ``A`` is an ``n``-by-``n`` symmetric matrix, + + + ``x`` and ``y`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + n + Number of columns of ``A``. Must be at least zero. + + + alpha + Scaling factor for the matrix-vector product. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + y + Buffer holding input/output vector ``y``. The buffer must be of + size at least (1 + (``n`` - 1)*abs(``incy``)). See `Matrix and + Vector Storage <../matrix-storage.html>`__ + for more details. + + + incy + Stride of vector ``y``. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + +.. container:: section + :name: GUID-6992A39F-8AB7-42D9-B126-4F8ECF9C1ECE + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Buffer holding the updated upper triangularpart of the symmetric + matrix ``A`` if ``upper_lower =upper``, or the updated lower + triangular part of thesymmetric matrix ``A`` if + ``upper_lower =lower``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst new file mode 100644 index 0000000000..107fab7e59 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst @@ -0,0 +1,221 @@ +.. _syr2k-usm-version: + +syr2k (USM Version) +=================== + + +.. container:: + + + Performs a symmetric rank-2k update. + + + .. container:: section + :name: GUID-EED2648B-6435-4DD1-AC36-21039DFC61DD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event syr2k(queue &exec_queue, uplo upper_lower, transpose trans, std::int64_t n, std::int64_t k, T alpha, const T\* a, std::int64_t lda, const T\* b, std::int64_t ldb, T beta, T\* c, std::int64_t ldc, const vector_class &dependencies = {}) + + The USM version of syr2k supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-1FB46B8F-1B13-4A6B-A3A5-0A5B34049068 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The syr2k routines perform a rank-2k update of an ``n`` x ``n`` + symmetric matrix ``C`` by general matrices ``A`` and ``B``. If + ``trans`` = ``transpose::nontrans``, the operation is defined as: + + + + + + C <- alpha*(A*B :sup:`T` + B*A :sup:`T`) + beta*C + + + where ``A`` is ``n`` x ``k`` and ``B`` is ``k`` x ``n``. + + + If ``trans`` = ``transpose::trans``, the operationis defined as: + + + + + + C <- alpha*(A :sup:`T`*B + B :sup:`T`*A) + beta*C + + + where ``A`` is ``k`` x ``n`` and ``B`` is ``n`` x ``k``. + + + In both cases: + + + ``alpha`` and ``beta`` are scalars, + + + ``C`` is a symmetric matrix and ``A``,\ ``B`` are general + matrices, + + + The inner dimension of both matrix multiplications is ``k``. + + + .. container:: section + :name: GUID-3EBEFBDD-93AF-4376-9BA2-A7042179BF13 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A``'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies the operation to apply, as described above. + Conjugation is never performed, even if ``trans`` = + ``transpose::conjtrans``. + + + n + Number of rows and columns in ``C``. The value of ``n`` must be + at least zero. + + + k + Inner dimension of matrix multiplications.The value of ``k`` + must be at least zero. + + + alpha + Scaling factor for the rank-2\ ``k`` update. + + + a + Pointer to input matrix ``A``. If ``A`` is not transposed, + ``A`` is an ``m``-by-``k`` matrix so the array ``a`` must have + size at least ``lda``\ \*\ ``k``. If ``A`` is transposed, ``A`` + is an ``k``-by-``m`` matrix so the array ``a`` must have size + at least ``lda``\ \*\ ``m``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``n`` if ``trans`` + = ``transpose::nontrans``, and at least ``k`` otherwise. Must + be positive. + + + b + Pointer to input matrix ``B``. If ``trans`` = + ``transpose::nontrans``, ``B`` is an ``k``-by-``n`` matrix so + the array ``b`` must have size at least ``ldb``\ \*\ ``n``. + Otherwise, ``B`` is an ``n``-by-``k`` matrix so the array ``b`` + must have size at least ``ldb``\ \*\ ``k``. See `Matrix and + Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``k`` if ``trans`` + = ``transpose::nontrans``, and at least ``n`` otherwise. Must + be positive. + + + beta + Scaling factor for matrix ``C``. + + + c + Pointer to input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details + + + ldc + Leading dimension of ``C``. Must be positive and at least + ``n``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-5779F783-54BC-4887-9CBB-96B8EC9F00E9 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Pointer to the output matrix, overwritten by the updated C + matrix. + + + .. container:: section + :name: GUID-855544CC-E576-4B68-9DC6-99E3B69129D4 + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/syr2k.rst b/source/elements/oneMKL/source/domains/blas/syr2k.rst new file mode 100644 index 0000000000..e5687c856a --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/syr2k.rst @@ -0,0 +1,196 @@ +.. _syr2k: + +syr2k +===== + + +.. container:: + + + Performs a symmetric rank-2k update. + + + .. container:: section + :name: GUID-EED2648B-6435-4DD1-AC36-21039DFC61DD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void syr2k(queue &exec_queue, uplo upper_lower, transpose trans, std::int64_t n, std::int64_t k, T alpha, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, T beta, buffer &c, std::int64_t ldc) + + syr2k supports the following precisions: + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-1FB46B8F-1B13-4A6B-A3A5-0A5B34049068 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The syr2k routines perform a rank-2k update of an ``n`` x ``n`` + symmetric matrix ``C`` by general matrices ``A`` and ``B``. If + ``trans`` = ``transpose::nontrans``, the operation is defined as: + + + + + + C <- alpha*(A*B :sup:`T` + B*A :sup:`T`) + beta*C + + + where ``A`` is ``n`` x ``k`` and ``B`` is ``k`` x ``n``. + + + If ``trans`` = ``transpose::trans``, the operationis defined as: + + + + + + C <- alpha*(A :sup:`T`*B + B :sup:`T`*A) + beta*C + + + where ``A`` is ``k`` x ``n`` and ``B`` is ``n`` x ``k``. + + + In both cases: + + + ``alpha`` and ``beta`` are scalars, + + + ``C`` is a symmetric matrix and ``A``,\ ``B`` are general matrices, + + + The inner dimension of both matrix multiplications is ``k``. + + +.. container:: section + :name: GUID-3EBEFBDD-93AF-4376-9BA2-A7042179BF13 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A``'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies the operation to apply, as described above. Conjugation + is never performed, even if ``trans`` = ``transpose::conjtrans``. + + + n + Number of rows and columns in ``C``.The value of ``n`` must be at + least zero. + + + k + Inner dimension of matrix multiplications.The value of ``k`` must + be at least zero. + + + alpha + Scaling factor for the rank-2\ ``k`` update. + + + a + Buffer holding input matrix ``A``. If ``A`` is not transposed, + ``A`` is an ``m``-by-``k`` matrix so the array ``a`` must have + size at least ``lda``\ \*\ ``k``. If ``A`` is transposed, ``A`` is + an ``k``-by-``m`` matrix so the array ``a`` must have size at + least ``lda``\ \*\ ``m``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``n`` if ``trans`` = + ``transpose::nontrans``, and at least ``k`` otherwise. Must be + positive. + + + b + Buffer holding input matrix ``B``. If ``trans`` = + ``transpose::nontrans``, ``B`` is an ``k``-by-``n`` matrix so the + array ``b`` must have size at least ``ldb``\ \*\ ``n``. Otherwise, + ``B`` is an ``n``-by-``k`` matrix so the array ``b`` must have + size at least ``ldb``\ \*\ ``k``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``k`` if ``trans`` = + ``transpose::nontrans``, and at least ``n`` otherwise. Must be + positive. + + + beta + Scaling factor for matrix ``C``. + + + c + Buffer holding input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details + + + ldc + Leading dimension of ``C``. Must be positive and at least ``n``. + + +.. container:: section + :name: GUID-5779F783-54BC-4887-9CBB-96B8EC9F00E9 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Output buffer, overwritten by the updated C matrix. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst new file mode 100644 index 0000000000..fd2b28d82a --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst @@ -0,0 +1,190 @@ +.. _syrk-usm-version: + +syrk (USM Version) +================== + + +.. container:: + + + Performs a symmetric rank-k update. + + + .. container:: section + :name: GUID-F8123F9B-A182-4BDB-A1A3-90FEC4F56231 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event syrk(queue &exec_queue, uplo upper_lower, transpose trans, std::int64_t n, std::int64_t k, T alpha, const T\* a, std::int64_t lda, T beta, T\* c, std::int64_t ldc, const vector_class &dependencies = {}) + + The USM version ofsyrk supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-8E133139-EE58-44B8-A507-2263BDD1399B + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The syrk routines perform a rank-k update of a symmetric matrix + ``C`` by a general matrix ``A``. The operation is defined as: + + + + + + C <- alpha*op(A)*op(A)T + beta*C + + + where: + + + op(``X``) is one of op(``X``) = ``X`` or op(``X``) = + ``X``\ :sup:`T` , + + + ``alpha`` and ``beta`` are scalars, + + + ``C`` is a symmetric matrix and ``A``\ is a general matrix. + + + Here op(``A``) is ``n``-by-``k``, and ``C`` is ``n``-by-``n``. + + + .. container:: section + :name: GUID-96D007CC-23F0-46FA-9085-6DBFC5BB30E6 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A``'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies op(``A``), the transposition operation applied to + ``A`` (See + :ref:`onemkl_datatypes` for + more details). Conjugation is never performed, even if + ``trans`` = ``transpose::conjtrans``. + + + n + Number of rows and columns in ``C``. The value of ``n`` must be + at least zero. + + + k + Number of columns in op(``A``). The value of ``k`` must be at + least zero. + + + alpha + Scaling factor for the rank-``k`` update. + + + a + Pointer to input matrix ``A``. If ``trans`` = + ``transpose::nontrans``, ``A`` is an ``n``-by-``k`` matrix so + the array ``a`` must have size at least ``lda``\ \*\ ``k``. + Otherwise, ``A`` is an ``k``-by-``n`` matrix so the array ``a`` + must have size at least ``lda``\ \*\ ``n``. See `Matrix and + Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``n`` if ``A`` is + not transposed, and at least ``k`` if ``A`` is transposed. Must + be positive. + + + beta + Scaling factor for matrix ``C``. + + + c + Pointer to input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least + ``n``. + + + .. container:: section + :name: GUID-E14CE68E-2E28-48BB-8FD7-B84A21563BDA + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Pointer to the output matrix, overwritten by + ``alpha``\ \*op(``A``)*op(``A``)\ :sup:`T` + + ``beta``\ \*\ ``C``. + + + .. container:: section + :name: GUID-51B6F59C-258D-4C3A-9054-04C16E09F421 + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/syrk.rst b/source/elements/oneMKL/source/domains/blas/syrk.rst new file mode 100644 index 0000000000..d097db2ddf --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/syrk.rst @@ -0,0 +1,172 @@ +.. _syrk: + +syrk +==== + + +.. container:: + + + Performs a symmetric rank-k update. + + + .. container:: section + :name: GUID-F8123F9B-A182-4BDB-A1A3-90FEC4F56231 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void syrk(queue &exec_queue, uplo upper_lower, transpose trans, std::int64_t n, std::int64_t k, T alpha, buffer &a, std::int64_t lda, T beta, buffer &c, std::int64_t ldc) + + syrk supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-8E133139-EE58-44B8-A507-2263BDD1399B + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The syrk routines perform a rank-k update of a symmetric matrix ``C`` + by a general matrix ``A``. The operation is defined as: + + + + + + C <- alpha*op(A)*op(A)T + beta*C + + + where: + + + op(``X``) is one of op(``X``) = ``X`` or op(``X``) = ``X``\ :sup:`T` + , + + + ``alpha`` and ``beta`` are scalars, + + + ``C`` is a symmetric matrix and ``A``\ is a general matrix. + + + Here op(``A``) is ``n``-by-``k``, and ``C`` is ``n``-by-``n``. + + +.. container:: section + :name: GUID-96D007CC-23F0-46FA-9085-6DBFC5BB30E6 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A``'s data is stored in its upper or lower + triangle. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies op(``A``), the transposition operation applied to ``A`` + (See + :ref:`onemkl_datatypes` for more + details). Conjugation is never performed, even if ``trans`` = + ``transpose::conjtrans``. + + + n + Number of rows and columns in ``C``. The value of ``n`` must be at + least zero. + + + k + Number of columns in op(``A``).The value of ``k`` must be at least + zero. + + + alpha + Scaling factor for the rank-``k`` update. + + + a + Buffer holding input matrix ``A``. If ``trans`` = + ``transpose::nontrans``, ``A`` is an ``n``-by-``k`` matrix so the + array ``a`` must have size at least ``lda``\ \*\ ``k``. Otherwise, + ``A`` is an ``k``-by-``n`` matrix so the array ``a`` must have + size at least ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``n`` if ``A`` is not + transposed, and at least ``k`` if ``A`` is transposed. Must be + positive. + + + beta + Scaling factor for matrix ``C``. + + + c + Buffer holding input/output matrix ``C``. Must have size at least + ``ldc``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldc + Leading dimension of ``C``. Must be positive and at least ``n``. + + +.. container:: section + :name: GUID-E14CE68E-2E28-48BB-8FD7-B84A21563BDA + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Output buffer, overwritten by + ``alpha``\ \*op(``A``)*op(``A``)\ :sup:`T` + ``beta``\ \*\ ``C``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst new file mode 100644 index 0000000000..1d3ba77b1e --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst @@ -0,0 +1,183 @@ +.. _tbmv-usm-version: + +tbmv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product using a triangular band matrix. + + + .. container:: section + :name: GUID-BAC06253-0516-4F7F-97E6-C4CBA2DBB1A2 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event tbmv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, std::int64_t k, const T \*a, std::int64_t lda, T \*x, std::int64_t incx, const vector_class &dependencies = {}) + + The USM version of ``tbmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-4279E883-09A1-48F0-B9DA-8A1E86886B17 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tbmv routines compute a matrix-vector product with a + triangular band matrix. The operation is defined as + + + + + + x <- op(A)*x + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular band matrix, with (``k`` + 1) diagonals, + + + ``x`` is a vector of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. + See + :ref:`onemkl_datatypes` for + more details. + + + n + Numbers of rows and columns of ``A``. Must be at least zero. + + + k + Number of sub/super-diagonals of the matrix ``A``. Must be at + least zero. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least (``k`` + + 1), and positive. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-0B96A584-2EC7-484C-9FB0-C632053F0461 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Pointer to the updated vector ``x``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/tbmv.rst b/source/elements/oneMKL/source/domains/blas/tbmv.rst new file mode 100644 index 0000000000..eb5f7acf03 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/tbmv.rst @@ -0,0 +1,160 @@ +.. _tbmv: + +tbmv +==== + + +.. container:: + + + Computes a matrix-vector product using a triangular band matrix. + + + .. container:: section + :name: GUID-BAC06253-0516-4F7F-97E6-C4CBA2DBB1A2 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void tbmv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, std::int64_t k, buffer &a, std::int64_t lda, buffer &x, std::int64_t incx) + + ``tbmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-4279E883-09A1-48F0-B9DA-8A1E86886B17 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tbmv routines compute a matrix-vector product with a triangular + band matrix. The operation is defined as + + + + + + x <- op(A)*x + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular band matrix, with (``k`` + 1) diagonals, + + + ``x`` is a vector of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies op(``A``), the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. See + :ref:`onemkl_datatypes` + for more details. + + + n + Numbers of rows and columns of ``A``. Must be at least zero. + + + k + Number of sub/super-diagonals of the matrix ``A``. Must be at + least zero. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least (``k`` + 1), + and positive. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + +.. container:: section + :name: GUID-0B96A584-2EC7-484C-9FB0-C632053F0461 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Buffer holding the updated vector ``x``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst new file mode 100644 index 0000000000..493610a9e1 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst @@ -0,0 +1,185 @@ +.. _tbsv-usm-version: + +tbsv (USM Version) +================== + + +.. container:: + + + Solves a system of linear equations whose coefficients are in a + triangular band matrix. + + + .. container:: section + :name: GUID-4AC7186F-2D61-44C2-95BC-5981E750A021 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event tbsv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, std::int64_t k, const T \*a, std::int64_t lda, T \*x, std::int64_t incx, const vector_class &dependencies = {}) + + The USM version of ``tbsv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-5AF4221C-AB14-4F9B-97A8-CAA78DF05E36 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tbsv routines solve a system of linear equations whose + coefficients are in a triangular band matrix. The operation is + defined as + + + + + + op(A)*x = b + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular band matrix, with (``k`` + 1) diagonals, + + + ``b`` and ``x`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. + See + :ref:`onemkl_datatypes` for + more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + k + Number of sub/super-diagonals of the matrix ``A``. Must be at + least zero. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least (``k`` + + 1), and positive. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-24B3C6B8-7FBD-4B24-84F2-242635B3026E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Pointer to the solution vector ``x``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/tbsv.rst b/source/elements/oneMKL/source/domains/blas/tbsv.rst new file mode 100644 index 0000000000..73aab67bdf --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/tbsv.rst @@ -0,0 +1,162 @@ +.. _tbsv: + +tbsv +==== + + +.. container:: + + + Solves a system of linear equations whose coefficients are in a + triangular band matrix. + + + .. container:: section + :name: GUID-4AC7186F-2D61-44C2-95BC-5981E750A021 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void tbsv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, std::int64_t k, buffer &a, std::int64_t lda, buffer &x, std::int64_t incx) + + ``tbsv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-5AF4221C-AB14-4F9B-97A8-CAA78DF05E36 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tbsv routines solve a system of linear equations whose + coefficients are in a triangular band matrix. The operation is + defined as + + + + + + op(A)*x = b + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular band matrix, with (``k`` + 1) diagonals, + + + ``b`` and ``x`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies op(``A``), the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. See + :ref:`onemkl_datatypes` + for more details. + + + n + Number of rows and columns of ``A``. Must be at least zero. + + + k + Number of sub/super-diagonals of the matrix ``A``. Must be at + least zero. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least (``k`` + 1), + and positive. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + +.. container:: section + :name: GUID-24B3C6B8-7FBD-4B24-84F2-242635B3026E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Buffer holding the solution vector ``x``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst new file mode 100644 index 0000000000..2d01ab3837 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst @@ -0,0 +1,173 @@ +.. _tpmv-usm-version: + +tpmv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product using a triangular packed matrix. + + + .. container:: section + :name: GUID-5785B6D6-DB9C-43FA-B98A-009D5E077A9D + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event tpmv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, const T \*a, T \*x, std::int64_t incx, const vector_class &dependencies = {}) + + The USM version of ``tpmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A045480A-2EC1-4C73-A836-468324FCC85A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tpmv routines compute a matrix-vector product with a + triangular packed matrix. The operation is defined as + + + + + + x <- op(A)*x + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular band matrix, supplied in packed form, + + + ``x`` is a vector of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. + See + :ref:`onemkl_datatypes` for + more details. + + + n + Numbers of rows and columns of ``A``. Must be at least zero. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least (``n``\ \*(``n``\ +1))/2. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-180038D9-902F-4B20-AB6B-E38F2A6C83E4 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Pointer to the updated vector ``x``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/tpmv.rst b/source/elements/oneMKL/source/domains/blas/tpmv.rst new file mode 100644 index 0000000000..f8bd2b136a --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/tpmv.rst @@ -0,0 +1,150 @@ +.. _tpmv: + +tpmv +==== + + +.. container:: + + + Computes a matrix-vector product using a triangular packed matrix. + + + .. container:: section + :name: GUID-5785B6D6-DB9C-43FA-B98A-009D5E077A9D + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void tpmv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, buffer &a, buffer &x, std::int64_t incx) + + ``tpmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-A045480A-2EC1-4C73-A836-468324FCC85A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tpmv routines compute a matrix-vector product with a triangular + packed matrix. The operation is defined as + + + + + + x <- op(A)*x + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular band matrix, supplied in packed form, + + + ``x`` is a vector of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies op(``A``), the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. See + :ref:`onemkl_datatypes` + for more details. + + + n + Numbers of rows and columns of ``A``. Must be at least zero. + + + a + Buffer holding input matrix ``A``. Must have size at least + (``n``\ \*(``n``\ +1))/2. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + +.. container:: section + :name: GUID-180038D9-902F-4B20-AB6B-E38F2A6C83E4 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Buffer holding the updated vector ``x``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst new file mode 100644 index 0000000000..90cfb3c2f2 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst @@ -0,0 +1,176 @@ +.. _tpsv-usm-version: + +tpsv (USM Version) +================== + + +.. container:: + + + Solves a system of linear equations whose coefficients are in a + triangular packed matrix. + + + .. container:: section + :name: GUID-230CF8CA-B38D-4CB6-9917-029FEF53EBED + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event tpsv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, std::int64_t k, const T \*a, T \*x, std::int64_t incx, const vector_class &dependencies = {}) + + The USM version of ``tpsv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-7AD9F8E2-1343-4A6D-8C6A-F68D934292B7 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tpsv routines solve a system of linear equations whose + coefficients are in a triangular packed matrix. The operation is + defined as + + + + + + op(A)*x = b + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular band matrix, supplied in packed form, + + + ``b`` and ``x`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. + See + :ref:`onemkl_datatypes` for + more details. + + + n + Numbers of rows and columns of ``A``. Must be at least zero. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least (``n``\ \*(``n``\ +1))/2. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + x + Pointer to the ``n``-element right-hand side vector ``b``. The + array holding the ``n``-element right-hand side vector ``b`` + must be of size at least (1 + (``n`` - 1)*abs(``incx``)). See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-F515C77C-1E84-424B-A00A-874ACBEFBF9E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Pointer to the solution vector ``x``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/tpsv.rst b/source/elements/oneMKL/source/domains/blas/tpsv.rst new file mode 100644 index 0000000000..0ec419bd0c --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/tpsv.rst @@ -0,0 +1,153 @@ +.. _tpsv: + +tpsv +==== + + +.. container:: + + + Solves a system of linear equations whose coefficients are in a + triangular packed matrix. + + + .. container:: section + :name: GUID-230CF8CA-B38D-4CB6-9917-029FEF53EBED + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void tpsv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, std::int64_t k, buffer &a, buffer &x, std::int64_t incx) + + ``tpsv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-7AD9F8E2-1343-4A6D-8C6A-F68D934292B7 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tpsv routines solve a system of linear equations whose + coefficients are in a triangular packed matrix. The operation is + defined as + + + + + + op(A)*x = b + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular band matrix, supplied in packed form, + + + ``b`` and ``x`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies op(``A``), the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. See + :ref:`onemkl_datatypes` + for more details. + + + n + Numbers of rows and columns of ``A``. Must be at least zero. + + + a + Buffer holding input matrix ``A``. Must have size at least + (``n``\ \*(``n``\ +1))/2. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + x + Buffer holding the ``n``-element right-hand side vector ``b``. The + buffer must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + +.. container:: section + :name: GUID-F515C77C-1E84-424B-A00A-874ACBEFBF9E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Buffer holding the solution vector ``x``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst new file mode 100644 index 0000000000..44f06e9a3e --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst @@ -0,0 +1,231 @@ +.. _trmm-usm-version: + +trmm (USM Version) +================== + + +.. container:: + + + Computes a matrix-matrix product where one input matrix is triangular + and one input matrix is general. + + + .. container:: section + :name: GUID-15B16EFC-8B31-4459-88DC-A8C5EF6C9932 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event trmm(queue &exec_queue, uplo upper_lower, transpose transa, diag unit_diag, std::int64_t m, std::int64_t n, T alpha, const T\* a, std::int64_t lda, T\* b, std::int64_t ldb, const vector_class &dependencies = {}) + + trmm supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-E1AAECF3-E29D-411F-B052-2F2E8080F3A1 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The trmm routines compute a scalar-matrix-matrix product where one + of the matrices in the multiplication is triangular. The argument + ``left_right`` determines if the triangular matrix, ``A``, is on + the left of the multiplication (``left_right`` = ``side::left``) + or on the right (``left_right`` = ``side::right``). Depending on + ``left_right``. The operation is defined as + + + + + + B <- alpha*op(A)*B + + + or + + + + + + B <- alpha*B*op(A) + + + where: + + + op(``A``) is one of op(``A``) = *A*, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``alpha`` is a scalar, + + + ``A`` is a triangular matrix, and ``B`` is a general matrix. + + + Here ``B`` is ``m`` x ``n`` and ``A`` is either ``m`` x ``m`` or + ``n`` x ``n``, depending on ``left_right``. + + + .. container:: section + :name: GUID-DE8B0FD7-11E3-42BC-99ED-3A07040FA6CB + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + Specifies whether ``A`` is on the left side of the + multiplication (``side::left``) or on the right side + (``side::right``). See + :ref:`onemkl_datatypes` for + more details. + + + uplo + Specifies whether the matrix ``A`` is upper or lower + triangular. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + unit_diag + Specifies whether ``A`` is assumed to be unit triangular (all + diagonal elements are 1). See + :ref:`onemkl_datatypes` for + more details. + + + m + Specifies the number of rows of ``B``. The value of ``m`` must + be at least zero. + + + n + Specifies the number of columns of ``B``. The value of ``n`` + must be at least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + Pointer to input matrix ``A``. Must have size at least + ``lda``\ \*\ ``m`` if ``left_right`` = ``side::left``, or + ``lda``\ \*\ ``n`` if ``left_right`` = ``side::right``. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``m`` if + ``left_right`` = ``side::left``, and at least ``n`` if + ``left_right`` = ``side::right``. Must be positive. + + + b + Pointer to input/output matrix ``B``. Must have size at least + ``ldb``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``m`` and + positive. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-1F1FF9D8-3833-4C9E-9CAC-53BA1791DCF1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + b + Pointer to the output matrix, overwritten by + ``alpha``\ \*op(``A``)\*\ ``B`` or + ``alpha``\ \*\ ``B``\ \*op(``A``). + + + .. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``alpha`` = 0, matrix ``B`` is set to zero, and ``A`` and ``B`` + do not need to be initialized at entry. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/trmm.rst b/source/elements/oneMKL/source/domains/blas/trmm.rst new file mode 100644 index 0000000000..2dbbc85b0f --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/trmm.rst @@ -0,0 +1,208 @@ +.. _trmm: + +trmm +==== + + +.. container:: + + + Computes a matrix-matrix product where one input matrix is triangular + and one input matrix is general. + + + .. container:: section + :name: GUID-15B16EFC-8B31-4459-88DC-A8C5EF6C9932 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void trmm(queue &exec_queue, uplo upper_lower, transpose transa, diag unit_diag, std::int64_t m, std::int64_t n, T alpha, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb) + + trmm supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-E1AAECF3-E29D-411F-B052-2F2E8080F3A1 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The trmm routines compute a scalar-matrix-matrix product where one of + the matrices in the multiplication is triangular. The argument + ``left_right`` determines if the triangular matrix, ``A``, is on the + left of the multiplication (``left_right`` = ``side::left``) or on + the right (``left_right`` = ``side::right``). Depending on + ``left_right``. The operation is defined as + + + + + + B <- alpha*op(A)*B + + + or + + + + + + B <- alpha*B*op(A) + + + where: + + + op(``A``) is one of op(``A``) = *A*, or op(``A``) = ``A``\ :sup:`T`, + or op(``A``) = ``A``\ :sup:`H`, + + + ``alpha`` is a scalar, + + + ``A`` is a triangular matrix, and ``B`` is a general matrix. + + + Here ``B`` is ``m`` x ``n`` and ``A`` is either ``m`` x ``m`` or + ``n`` x ``n``, depending on ``left_right``. + + +.. container:: section + :name: GUID-DE8B0FD7-11E3-42BC-99ED-3A07040FA6CB + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + Specifies whether ``A`` is on the left side of the multiplication + (``side::left``) or on the right side (``side::right``). See + :ref:`onemkl_datatypes` for more + details. + + + uplo + Specifies whether the matrix ``A`` is upper or lower triangular. + See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies op(``A``), the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. + + + unit_diag + Specifies whether ``A`` is assumed to be unit triangular (all + diagonal elements are 1). See + :ref:`onemkl_datatypes` for more + details. + + + m + Specifies the number of rows of ``B``. The value of ``m`` must be + at least zero. + + + n + Specifies the number of columns of ``B``. The value of ``n`` must + be at least zero. + + + alpha + Scaling factor for the matrix-matrix product. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``m`` if ``left_right`` = ``side::left``, or + ``lda``\ \*\ ``n`` if ``left_right`` = ``side::right``. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``m`` if + ``left_right`` = ``side::left``, and at least ``n`` if + ``left_right`` = ``side::right``. Must be positive. + + + b + Buffer holding input/output matrix ``B``. Must have size at least + ``ldb``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``m`` and positive. + + +.. container:: section + :name: GUID-1F1FF9D8-3833-4C9E-9CAC-53BA1791DCF1 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + b + Output buffer, overwritten by ``alpha``\ \*op(``A``)\*\ ``B`` or + ``alpha``\ \*\ ``B``\ \*op(``A``). + + +.. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``alpha`` = 0, matrix ``B`` is set to zero, and ``A`` and ``B`` do + not need to be initialized at entry. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst new file mode 100644 index 0000000000..75a8615735 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst @@ -0,0 +1,178 @@ +.. _trmv-usm-version: + +trmv (USM Version) +================== + + +.. container:: + + + Computes a matrix-vector product using a triangular matrix. + + + .. container:: section + :name: GUID-15041079-C2F5-4D3C-85C2-262E184F7FFE + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event trmv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, const T \*a, std::int64_t lda, T \*x, std::int64_t incx, const vector_class &dependencies = {}) + + The USM version of ``trmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-420DC613-E11B-48A8-B73F-55B55EBFC3B7 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The trmv routines compute a matrix-vector product with a + triangular matrix. The operation is defined + + + + + + x <- op(A)*x + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular band matrix, + + + ``x`` is a vector of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. + See + :ref:`onemkl_datatypes` for + more details. + + + n + Numbers of rows and columns of ``A``. Must be at least zero. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + + x + Pointer to input vector ``x``. The array holding input vector + ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-7BF1D5C9-EB8C-4BD6-B0E7-A66DAC3221F9 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Pointer to the updated vector ``x``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/trmv.rst b/source/elements/oneMKL/source/domains/blas/trmv.rst new file mode 100644 index 0000000000..14476e1e84 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/trmv.rst @@ -0,0 +1,155 @@ +.. _trmv: + +trmv +==== + + +.. container:: + + + Computes a matrix-vector product using a triangular matrix. + + + .. container:: section + :name: GUID-15041079-C2F5-4D3C-85C2-262E184F7FFE + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void trmv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, buffer &a, std::int64_t lda, buffer &x, std::int64_t incx) + + ``trmv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-420DC613-E11B-48A8-B73F-55B55EBFC3B7 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The trmv routines compute a matrix-vector product with a triangular + matrix. The operation is defined + + + + + + x <- op(A)*x + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular band matrix, + + + ``x`` is a vector of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies op(``A``), the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. See + :ref:`onemkl_datatypes` + for more details. + + + n + Numbers of rows and columns of ``A``. Must be at least zero. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + + x + Buffer holding input vector ``x``. The buffer must be of size at + least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + +.. container:: section + :name: GUID-7BF1D5C9-EB8C-4BD6-B0E7-A66DAC3221F9 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Buffer holding the updated vector ``x``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst new file mode 100644 index 0000000000..231b80d0cd --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst @@ -0,0 +1,227 @@ +.. _trsm-usm-version: + +trsm (USM Version) +================== + + +.. container:: + + + Solves a triangular matrix equation (forward or backward solve). + + + .. container:: section + :name: GUID-6F8E0E22-B30A-4825-B508-CEDE0CAC8B90 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event trsm(queue &exec_queue, side left_right, uplo upper_lower, transpose transa, diag unit_diag, std::int64_t m, std::int64_t n, T alpha, const T\* a, std::int64_t lda, T\* b, std::int64_t ldb, const vector_class &dependencies = {}) + + The USM version of trsm supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-AE6CFEF4-4058-49C3-BABC-2B05D6594555 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The trsm routines solve one of the following matrix equations: + + + + + + op(A)*X = alpha*B, + + + or + + + + + + X*op(A) = alpha*B, + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``alpha`` is a scalar, + + + ``A`` is a triangular matrix, and + + + ``B`` and ``X`` are ``m`` x ``n`` general matrices. + + + ``A`` is either ``m`` x ``m`` or ``n`` x ``n``, depending on + whether it multiplies ``X`` on the left or right. On return, the + matrix ``B`` is overwritten by the solution matrix ``X``. + + + .. container:: section + :name: GUID-0BBDCB60-8CDE-4EBD-BDE5-F7688B4B29F4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + Specifies whether ``A`` multiplies ``X`` on the left + (``side::left``) or on the right (``side::right``). See + :ref:`onemkl_datatypes` for + more details. + + + uplo + Specifies whether the matrix ``A`` is upper or lower + triangular. See + :ref:`onemkl_datatypes` for + more details. + + + transa + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + unit_diag + Specifies whether ``A`` is assumed to be unit triangular (all + diagonal elements are 1). See + :ref:`onemkl_datatypes` for + more details. + + + m + Specifies the number of rows of ``B``. The value of ``m`` must + be at least zero. + + + n + Specifies the number of columns of ``B``. The value of ``n`` + must be at least zero. + + + alpha + Scaling factor for the solution. + + + a + Pointer to input matrix ``A``. Must have size at least + ``lda``\ \*\ ``m`` if ``left_right`` = ``side::left``, or + ``lda``\ \*\ ``n`` if ``left_right`` = ``side::right``. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``m`` if + ``left_right`` = ``side::left``, and at least ``n`` if + ``left_right`` = ``side::right``. Must be positive. + + + b + Pointer to input/output matrix ``B``. Must have size at least + ``ldb``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``m`` and + positive. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-7AC6C3B9-7A31-4E0B-B770-FD607E7F9BE5 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + b + Pointer to the output matrix. Overwritten by the solution + matrix ``X``. + + + .. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``alpha`` = 0, matrix ``B`` is set to zero, and ``A`` and ``B`` + do not need to be initialized at entry. + + + .. container:: section + :name: GUID-62B7F7F4-12F9-4308-82FE-1C76E0B9C4CE + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/trsm.rst b/source/elements/oneMKL/source/domains/blas/trsm.rst new file mode 100644 index 0000000000..958d231db6 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/trsm.rst @@ -0,0 +1,205 @@ +.. _trsm: + +trsm +==== + + +.. container:: + + + Solves a triangular matrix equation (forward or backward solve). + + + .. container:: section + :name: GUID-6F8E0E22-B30A-4825-B508-CEDE0CAC8B90 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void trsm(queue &exec_queue, side left_right, uplo upper_lower, transpose transa, diag unit_diag, std::int64_t m, std::int64_t n, T alpha, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb) + + trsm supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-AE6CFEF4-4058-49C3-BABC-2B05D6594555 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The trsm routines solve one of the following matrix equations: + + + + + + op(A)*X = alpha*B, + + + or + + + + + + X*op(A) = alpha*B, + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``alpha`` is a scalar, + + + ``A`` is a triangular matrix, and + + + ``B`` and ``X`` are ``m`` x ``n`` general matrices. + + + ``A`` is either ``m`` x ``m`` or ``n`` x ``n``, depending on whether + it multiplies ``X`` on the left or right. On return, the matrix ``B`` + is overwritten by the solution matrix ``X``. + + +.. container:: section + :name: GUID-0BBDCB60-8CDE-4EBD-BDE5-F7688B4B29F4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + Specifies whether ``A`` multiplies ``X`` on the left + (``side::left``) or on the right (``side::right``). See + :ref:`onemkl_datatypes` for more + details. + + + uplo + Specifies whether the matrix ``A`` is upper or lower triangular. + See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies op(``A``), the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. + + + unit_diag + Specifies whether ``A`` is assumed to be unit triangular (all + diagonal elements are 1). See + :ref:`onemkl_datatypes` for more + details. + + + m + Specifies the number of rows of ``B``. The value of ``m`` must be + at least zero. + + + n + Specifies the number of columns of ``B``. The value of ``n`` must + be at least zero. + + + alpha + Scaling factor for the solution. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``m`` if ``left_right`` = ``side::left``, or + ``lda``\ \*\ ``n`` if ``left_right`` = ``side::right``. See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of ``A``. Must be at least ``m`` if + ``left_right`` = ``side::left``, and at least ``n`` if + ``left_right`` = ``side::right``. Must be positive. + + + b + Buffer holding input/output matrix ``B``. Must have size at least + ``ldb``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + ldb + Leading dimension of ``B``. Must be at least ``m`` and positive. + + +.. container:: section + :name: GUID-7AC6C3B9-7A31-4E0B-B770-FD607E7F9BE5 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + b + Output buffer. Overwritten by the solution matrix ``X``. + + +.. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``alpha`` = 0, matrix ``B`` is set to zero, and ``A`` and ``B`` do + not need to be initialized at entry. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-3-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/trsm_batch.rst b/source/elements/oneMKL/source/domains/blas/trsm_batch.rst new file mode 100644 index 0000000000..0cf82ce211 --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/trsm_batch.rst @@ -0,0 +1,436 @@ +.. _trsm_batch: + +trsm_batch +========== + + +.. container:: + + + Computes groups of matrix-matrix product with general matrices. + + + .. container:: section + :name: GUID-6F8E0E22-B30A-4825-B508-CEDE0CAC8B90 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + **Group API** + + + .. cpp:function:: void trsm_batch(queue &exec_queue, buffer &left_right_array, buffer &upper_lower_array, buffer &trans_array, buffer &unit_diag_array, buffer &m_array, buffer &n_array, buffer &alpha_array, buffer &a_array, buffer &lda_array, buffer &b_array, buffer ldb_array, std::int64_t group_count, buffer &group_size_array) + + **Strided API** + + + .. cpp:function:: void trsm_batch(queue &exec_queue, side left_right, uplo upper_lower, transpose trans, diag unit_diag, std::int64_t m, std::int64_t n, T alpha, buffer &a, std::int64_t lda, std::int64_t stridea, buffer &b, std::int64_t ldb, std::int64_t strideb, std::int64_t batch_size) + + ``trsm_batch`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-AE6CFEF4-4058-49C3-BABC-2B05D6594555 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The trsm_batch routines solve a series of equations of the form op(A) + \* X = alpha \* B or X \* op(A) = alpha \* B. They are similar to the + trsm routine counterparts, but the trsm_batch routines solve linear + equations with groups of matrices. The groups contain matrices with + the same parameters. + + + For the group API, the operation is defined as + + + :: + + + offa = 0, offb = 0 + for i = 0 … group_count – 1 + left_right, uplo, trans, unit_diag, m, n, lda, ldb, alpha and group_size at position i in left_right_array, uplo_array, trans_array, unit_diag_array, m_array, n_array, lda_array, ldb_array, alpha_array and group_size_array + sizea = left_right == onemkl::side::L ? lda * m : lda * n; + sizeb = ldb * n; + for j = 0 … group_size – 1 + A and B are matrices of size sizea and sizeb at offset offa and offb in a and b. + if (left_right == onemkl::side::L) then + computes X such that op(A) * X = alpha * B + else + computes X such that X * op(A) = alpha * B + end if + B := X + offa += sizea, offb += sizeb + end for + end for + + + For the strided API, the operation is defined as + + + :: + + + for i = 0 … batch_size – 1 + A and B are matrices at offset i * stridea and i * strideb in a and b. + if (left_right == onemkl::side::L) then + computes X such that op(A) * X = alpha * B + else + computes X such that X * op(A) = alpha * B + end if + B := X + end for + + + where: + + + - op(``A``) is one of op(``A``) = ``A``, or op(A) = ``A``\ :sup:`T`, + or op(``A``) = ``A``\ :sup:`H` + + + - alpha is a scalar + + + - ``A`` is a triangular matrix + + + - ``B`` and ``X`` are ``m`` x ``n`` general matrices + + + - The a and b buffers contains all the input matrices. The stride + between matrices is either given by the exact size of the matrix + (for the group API) or by the stride parameter. The total number + of matrices in a and b is given by the + + |image0| + + for the strided + API. + + + ``A`` is either ``m`` x ``m`` or ``n`` x ``n``,depending on whether + it multiplies ``X`` on the leftor right. On return, the matrix ``B`` + is overwrittenby the solution matrix ``X``. + + +.. container:: section + :name: GUID-863264A0-4CE9-495F-A617-102E46D7A41A + + + .. rubric:: Input Parameters - Group API + :name: input-parameters---group-api + :class: sectiontitle + + + left_right_array + Buffer holding ``group_count onemkl::side`` value. + + + For the group ``i``, ``left_right`` is the ``i``\ th element in + the left_right_array buffer and specifies whether ``A`` multiplies + ``X`` on the left (``side::left``) or on the right + (``side::right``). See + :ref:`onemkl_datatypes` for more + details. + + + uplo_array + Buffer holding ``group_count onemkl::uplo`` value. + + + For the group ``i``, ``uplo`` is the ``i``\ th element in the + uplo_array buffer and specifies whether ``A`` is upper or lower + triangular. See + :ref:`onemkl_datatypes` for more + details. + + + trans_array + Buffer holding ``group_count onemkl::transpose`` value. + + + For the group ``i``, ``trans`` is the ``i``\ th element in the + trans_array buffer and specifies the form of ``op``\ (``A``) used + in the matrix multiplication. See + :ref:`onemkl_datatypes` for more + details. + + + unit_diag__array + Buffer holding ``group_count onemkl::diag`` value. + + + For the group ``i``, ``unit_diag`` is the ``i``\ th element in the + unit_diag_array buffer and specifies whether ``A`` is assumed to + be unit triangular (all diagonal elements are 1). See + :ref:`onemkl_datatypes` for more + details. + + + m_array + Buffer holding ``group_count`` integer. For the group ``i``, ``m`` + is the ``i``\ th element in the m_array buffer and specifies the + number of rows of ``B``. Must be at least zero. + + + n_array + Buffer holding ``group_count`` integer. For the group ``i``, ``n`` + is the ``i``\ th element in the n_array buffer and specifies the + number of columns of ``B``. Must be at least zero. + + + alpha_array + Buffer holding ``group_count`` scalar element. For the group + ``i``, ``alpha`` is the ``i``\ th element in the alpha_array + buffer and specifies the scaling factor for the matrix-matrix + product. + + + a + Buffer holding the input matrix ``A``. The total size of the + buffer ``a`` must be at least the sum of the sizes of all the + matricies ``A``. That is, + + + |image1| + + + where + ``sizeai = lda_array[i] * (left_right == onemkl::side::L ? m : n)`` + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + lda_array + Buffer holding ``group_count`` integer. For the group ``i``, + ``lda`` is the ``i``\ th element in the lda_array buffer and + specifies the leading dimension of ``A``. Must be at least ``m`` + if ``A`` is not transposed, and at least ``k`` if ``A`` is + transposed. Must be positive. + + + b + Buffer holding the input matrix ``B``. The total size of the + buffer ``b`` must be at least the sum of the sizes of all the + matricies ``B``. That is, + + + |image2| + + + See `Matrix + Storage <../matrix-storage.html>`__ for + more details. + + + ldb_array + Buffer holding ``group_count`` integer. For the group ``i``, + ``ldb`` is the ``i``\ th element in the ldb_array buffer and + specifies the leading dimension of ``B``. Must be at least ``n``. + Must be positive. + + + group_count + Specifies the number of groups. Must be at least 0. + + + group_size_array + Buffer holding the group_count integer. For the group ``i``, + ``ldb`` is the ``i``\ th element in the group_size_array buffer + specifies the number of matrix multiply operations in + group\ ``i``. Each element in group_size_array must be at least 0. + + +.. container:: section + :name: GUID-1E4953E6-F7B1-4FEE-BA5A-8C4BD51DC700 + + + .. rubric:: Output Parameters - Group API + :name: output-parameters---group-api + :class: sectiontitle + + + b + Output buffer, overwritten by the ``total_batch_count`` solution + matrices ``X``. + + +.. container:: section + :name: GUID-D067773A-45A3-4D24-B10A-46E27834947E + + + .. rubric:: Input Parameters - Strided API + :name: input-parameters---strided-api + :class: sectiontitle + + + left_right + Specifies whether the matrices ``A`` multiply ``X`` on the left + (``side::left``) or on the right (``side::right``). See + :ref:`onemkl_datatypes` for more + details. + + + uplo + Specifies whether the matrices ``A`` are upper or lower + triangular. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies ``op(A)``, the transposition operation applied to the + matrices ``A``. See + :ref:`onemkl_datatypes` for more + details. + + + unit_diag + Specifies whether the matrices ``A`` are assumed to be unit + triangular (all diagonal elements are 1.). See + :ref:`onemkl_datatypes` for more + details. + + + m + Number of rows of the ``B`` matrices. Must be at least zero. + + + n + Number of columns of the ``B`` matrices. Must be at least zero. + + + alpha + Scaling factor for the solutions. + + + a + Buffer holding the input matrices ``A``. Must have size at least + ``stridea*batch_size``. + + + lda + Leading dimension of the matrices ``A``. Must be at least ``m`` if + left_right = ``side::left``, and at least ``n`` if left_right = + ``side::right``. Must be positive. + + + stridea + Stride between the different ``A`` matrices. + + + If left_right = ``side::left``, the matrices ``A`` are + ``m``-by-``m`` matrices, so stridea must be at least lda\*\ ``m``. + + + If left_right = ``side::right``, the matrices ``A`` are + ``n``-by-``n`` matrices, so stridea must be at least lda\*\ ``n``. + + + b + Buffer holding the input matrices ``B``. Must have size at least + ``strideb*batch_size``. + + + ldb + Leading dimension of the matrices ``B``. Must be at least ``m`` + and must be positive. + + + strideb + Stride between the different ``B`` matrices. Must be at least + ldb\*\ ``n``. + + + beta + Scaling factor for the matrices ``C``. + + + c + Buffer holding input/output matrices ``C``. Must have size at + least ``stridec*batch_size``. + + + ldc + Leading dimension of ``C``. Must be positive and at least ``m``. + + + stridec + Stride between the different ``C`` matrices. Must be at least + ``ldc*n``. + + + batch_size + Specifies the number of triangular linear systems to solve. + + +.. container:: section + :name: GUID-98C3DE17-4F5F-41A1-B431-48148153ABBA + + + .. rubric:: Output Parameters - Strided API + :name: output-parameters---strided-api + :class: sectiontitle + + + b + Output buffer, overwritten by ``batch_size`` solution matrices + ``X``. + + +.. container:: section + :name: GUID-AC72653A-4AC8-4B9D-B7A9-13A725AA19BF + + + .. rubric:: Notes + :name: notes + :class: sectiontitle + + + If ``alpha`` = 0, matrix ``B`` is set to zero, and the matrices ``A`` + and ``B`` do not need to be initialized before calling trsm_batch. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-like-extensions` + + + +.. container:: + + +.. |image0| image:: ../equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee1.png + :class: img-middle +.. |image1| image:: ../equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee2.png + :class: img-middle +.. |image2| image:: ../equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee3.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst new file mode 100644 index 0000000000..43dec2458f --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst @@ -0,0 +1,180 @@ +.. _trsv-usm-version: + +trsv (USM Version) +================== + + +.. container:: + + + Solves a system of linear equations whose coefficients are in a + triangular matrix. + + + .. container:: section + :name: GUID-9BA4C1B6-479B-41B1-BCA8-7826F40DA952 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: event trsv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, std::int64_t k, const T \*a, std::int64_t lda, T \*x, std::int64_t incx, const vector_class &dependencies = {}) + + The USM version of ``trsv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-D500B67B-5DD6-4471-B0BD-53FD9A3C7BF2 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The trsv routines compute a matrix-vector product with a + triangular band matrix. The operation is defined as + + + + + + op(A)*x = b + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular matrix, + + + ``b`` and ``x`` are vectors of length ``n``. + + + .. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for + more details. + + + trans + Specifies op(``A``), the transposition operation applied to + ``A``. See + :ref:`onemkl_datatypes` for + more details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. + See + :ref:`onemkl_datatypes` for + more details. + + + n + Numbers of rows and columns of ``A``. Must be at least zero. + + + a + Pointer to input matrix ``A``. The array holding input matrix + ``A`` must have size at least ``lda``\ \*\ ``n``. See `Matrix + and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + + x + Pointer to the ``n``-element right-hand side vector ``b``. The + array holding the ``n``-element right-hand side vector ``b`` + must be of size at least (1 + (``n`` - 1)*abs(``incx``)). See + `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + + dependencies + List of events to wait for before starting computation, if any. + If omitted, defaults to no dependencies. + + + .. container:: section + :name: GUID-7E0AF44F-2D83-41A3-A58E-50400ECDBD9A + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Pointer to the solution vector ``x``. + + + .. container:: section + :name: GUID-FE9BC089-7D9E-470F-B1B6-2679FBFC249F + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/blas/trsv.rst b/source/elements/oneMKL/source/domains/blas/trsv.rst new file mode 100644 index 0000000000..e1dba6e43c --- /dev/null +++ b/source/elements/oneMKL/source/domains/blas/trsv.rst @@ -0,0 +1,157 @@ +.. _trsv: + +trsv +==== + + +.. container:: + + + Solves a system of linear equations whose coefficients are in a + triangular matrix. + + + .. container:: section + :name: GUID-9BA4C1B6-479B-41B1-BCA8-7826F40DA952 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void trsv(queue &exec_queue, uplo upper_lower, transpose trans, diag unit_nonunit, std::int64_t n, std::int64_t k, buffer &a, std::int64_t lda, buffer &x, std::int64_t incx) + + ``trsv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-D500B67B-5DD6-4471-B0BD-53FD9A3C7BF2 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The trsv routines compute a matrix-vector product with a triangular + band matrix. The operation is defined as + + + + + + op(A)*x = b + + + where: + + + op(``A``) is one of op(``A``) = ``A``, or op(``A``) = + ``A``\ :sup:`T`, or op(``A``) = ``A``\ :sup:`H`, + + + ``A`` is an ``n``-by-``n`` unit or non-unit, upper or lower + triangular matrix, + + + ``b`` and ``x`` are vectors of length ``n``. + + +.. container:: section + :name: GUID-E1436726-01FE-4206-871E-B905F59A96B4 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Specifies whether ``A`` is upper or lower triangular. See + :ref:`onemkl_datatypes` for more + details. + + + trans + Specifies op(``A``), the transposition operation applied to ``A``. + See + :ref:`onemkl_datatypes` for more + details. + + + unit_nonunit + Specifies whether the matrix ``A`` is unit triangular or not. See + :ref:`onemkl_datatypes` + for more details. + + + n + Numbers of rows and columns of ``A``. Must be at least zero. + + + a + Buffer holding input matrix ``A``. Must have size at least + ``lda``\ \*\ ``n``. See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + lda + Leading dimension of matrix ``A``. Must be at least ``n``, and + positive. + + + x + Buffer holding the ``n``-element right-hand side vector ``b``. The + buffer must be of size at least (1 + (``n`` - 1)*abs(``incx``)). + See `Matrix and Vector + Storage <../matrix-storage.html>`__ for + more details. + + + incx + Stride of vector ``x``. + + +.. container:: section + :name: GUID-7E0AF44F-2D83-41A3-A58E-50400ECDBD9A + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + x + Buffer holding the solution vector ``x``. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** :ref:`blas-level-2-routines` + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/dense_linear_algebra.inc.rst b/source/elements/oneMKL/source/domains/dense_linear_algebra.inc.rst new file mode 100644 index 0000000000..54a864cfba --- /dev/null +++ b/source/elements/oneMKL/source/domains/dense_linear_algebra.inc.rst @@ -0,0 +1,19 @@ +.. _onemkl_dense_linear_algebra: + +Dense Linear Algebra +--------------------- + +This section contains information about dense linear algebra routines: + +:ref:`matrix-storage` provides information about dense matrix and vector storage formats that are used by oneMKL :ref:`onemkl_blas` and :ref:`onemkl_lapack`. + +:ref:`onemkl_blas` provides vector, matrix-vector, and matrix-matrix routines for dense matrices and vector operations. + +:ref:`onemkl_lapack` provides more complex dense linear algbra routines, e.g., solving dense systems of linear equations, least square problems, eigenvalue, singular value problems, and Sylvester's equations. + +.. toctree:: + :hidden: + + matrix-storage.rst + blas/blas.rst + lapack/lapack.rst diff --git a/source/elements/oneMKL/source/domains/dft/dft.rst b/source/elements/oneMKL/source/domains/dft/dft.rst new file mode 100644 index 0000000000..7ce802acba --- /dev/null +++ b/source/elements/oneMKL/source/domains/dft/dft.rst @@ -0,0 +1,49 @@ +.. _onemkl_dft: + +Fourier Transform Functions +--------------------------- + +.. container:: + + + - `onemkl::dft::Descriptor `__ + Creates an empty descriptor for the templated precision and + forward domain. + - `onemkl::dft::Descriptor::Init `__ + Allocates the descriptor data structure and initializes it with + default configuration values. + - `onemkl::dft::Descriptor::setValue `__ + Sets one particular configuration parameter with the specified + configuration value. + - `onemkl::dft::Descriptor::getValue `__ + Gets the configuration value of one particular configuration + parameter. + - `onemkl::dft::Descriptor::commit `__ + Performs all initialization for the actual FFT computation. + - `onemkl::dft::Descriptor::computeForward `__ + Computes the forward FFT. + - `onemkl::dft::Descriptor::computeBackward `__ + Computes the backward FFT. + +**Parent topic:** :ref:`onemkl_domains` + +.. toctree:: + :hidden: + + mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain + mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init + mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue + mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue + mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit + mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype + mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype + diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst new file mode 100644 index 0000000000..ea4f348162 --- /dev/null +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst @@ -0,0 +1,160 @@ +.. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit: + +onemkl::dft::Descriptor::commit +=================================================================== + + +.. container:: + + + Performs all initialization for the actual FFT computation. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: onemkl::dft::ErrCode descriptor.Commit (cl::sycl::queue &in ) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_dfti_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + This function completes initialization of a previously created + descriptor, which is required before the descriptor can be used + for FFT computations. The cl::sycl::queue may be associated + with a host, CPU, or GPU device. Typically, committing the + descriptor performs all initialization that is required for the + actual FFT computation on the given device. The initialization + done by the function may involve exploring different + factorizations of the input length to find the optimal + computation method. + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + All calls to the onemkl::dft::Descriptor::setValue function to change configuration + parameters of a descriptor need to happen after + onemkl::dft::Descriptor::init and before + onemkl::dft::Descriptor::commit. Typically, a committal function call + is immediately followed by a computation function call (see + `FFT Compute + Functions `__). + + + The function returns onemkl::dft::ErrCode::NO_ERROR when it + completes successfully. See `Status Checking + Functions `__ + for more information on the returned status. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - deviceQueue + - cl::sycl::queue + - Sycl queue for a host, CPU, or GPU device. + + + + + .. container:: section + :name: GUID-AD3394E9-6864-4509-A178-6BA8CFB88A2C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - status + - onemkl::dft::ErrCode + - Function completion status. + + + + + .. container:: section + :name: GUID-3D8228F8-5900-441B-AE87-B63DDB82E9BA + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + The function returns a value indicating whether the operation + was successful or not, and why. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Return Value + - Description + * - onemkl::dft::ErrCode::NO_ERROR + - The operation was successful. + * - onemkl::dft::ErrCode::BAD_DESCRIPTOR + - DFTI handle provided is invalid. + * - onemkl::dft::ErrCode::INCONSISTENT_CONFIGURATION/ onemkl::dft::ErrCode::INVALID_CONFIGURATION + - An input value provided is invalid. + * - onemkl::dft::ErrCode::UNIMPLEMENTED + - Functionality requested is not implemented. + * - onemkl::dft::ErrCode::MKL_INTERNAL_ERROR + - Internal MKL error. + + + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Fourier Transform + Functions `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst new file mode 100644 index 0000000000..5237a7b799 --- /dev/null +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst @@ -0,0 +1,186 @@ +.. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype: + +onemkl::dft::Descriptor::computeBackward +============================================================================================= + + +.. container:: + + + Computes the backward FFT. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: onemkl::dft::ErrCode descriptor.computeBackward (cl::sycl::buffer &inout , cl::sycl::event\* event = nullptr) + + .. cpp:function:: onemkl::dft::ErrCode descriptor.computeBackward (cl::sycl::buffer &in , cl::sycl::buffer &out , cl::sycl::event\* event = nullptr) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_dfti_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::dft::Descriptor::computeBackward function + accepts the descriptor handle parameter and one or more data + parameters. Given a successfully configured and committed + descriptor, this function computes the backward FFT, that is, + the + `transform `__ + with the minus sign in the exponent, δ = -1. + + + The FFT descriptor must be properly configured prior to the + function call. + + + The number of the data parameters that the function requires + may vary depending on the configuration of the descriptor. This + variation is accommodated by variable parameters. + + + Function calls needed to configure an FFT descriptor for a + particular call to an FFT computation function are summarized + in `Configuring and Computing an FFT in + C/C++ `__. + + + The function returns onemkl::dft::ErrCode::NO_ERROR when it + completes successfully. See `Status Checking + Functions `__ + for more information on the returned status. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - inout, in + - cl::sycl::buffer + - Sycl buffer containing an array of length no less than specified at onemkl::dft::Descriptor::init call. + + + + + The suffix in parameter names corresponds to the value of the + configuration parameter onemkl::dft::ConfigParam::PLACEMENT as + follows: + + + - inout to DFTI_INPLACE + + + - in to DFTI_NOT_INPLACE + + + .. container:: section + :name: GUID-AD3394E9-6864-4509-A178-6BA8CFB88A2C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - inout, out + - cl::sycl::buffer + - Sycl buffer containing an array of length no less than specified at onemkl::dft::Descriptor::init call. + * - Event + - cl::sycl::event\* + - If no event pointer is passed, then it defaults to nullptr. If a non-nullptr value is passed, it is set to the event associated with the enqueued computation job. + * - Status + - onemkl::dft::ErrCode + - Function completion status. + + + + + The suffix in parameter names corresponds to the value of the + configuration parameter onemkl::dft::PLACEMENT as follows: + + + - inout to DFTI_INPLACE + + + - out to DFTI_NOT_INPLACE + + + .. container:: section + :name: GUID-3D8228F8-5900-441B-AE87-B63DDB82E9BA + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + The function returns a value indicating whether the operation + was successful or not, and why. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Return Value + - Description + * - onemkl::dft::ErrCode::NO_ERROR + - The operation was successful. + * - onemkl::dft::ErrCode::BAD_DESCRIPTOR + - DFTI handle provided is invalid. + * - onemkl::dft::ErrCode::INCONSISTENT_CONFIGURATION/ onemkl::dft::ErrCode::INVALID_CONFIGURATION + - An input value provided is invalid. + * - onemkl::dft::ErrCode::UNIMPLEMENTED + - Functionality requested is not implemented. + * - onemkl::dft::ErrCode::MEMORY_ERROR + - Internal memory allocation failed. + + + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Fourier Transform + Functions `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst new file mode 100644 index 0000000000..9d35d282a5 --- /dev/null +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst @@ -0,0 +1,185 @@ +.. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype: + +onemkl::dft::Descriptor::computeForward +============================================================================================ + + +.. container:: + + + Computes the forward FFT. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: onemkl::dft::ErrCode descriptor.computeForward (cl::sycl::buffer &inout , cl::sycl::event\* event = nullptr) + + .. cpp:function:: onemkl::dft::ErrCode descriptor.computeForward (cl::sycl::buffer &in , cl::sycl::buffer &out , cl::sycl::event\* event = nullptr) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_dfti_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::dft::Descriptor::computeForward function + accepts one or more data parameters. With a successfully + configured and committed descriptor, this function computes the + forward FFT, that is, the + `transform `__ + with the minus sign in the exponent, δ = -1. + + + The FFT descriptor must be properly configured prior to the + function call. + + + The number of the data parameters that the function requires + may vary depending on the configuration of the descriptor. This + variation is accommodated by variable parameters. + + + Function calls needed to configure an FFT descriptor for a + particular call to an FFT computation function are summarized + in `Configuring and Computing an FFT in + C/C++ `__. + + + The function returns onemkl::dft::ErrCode::NO_ERROR when it + completes successfully. See `Status Checking + Functions `__ + for more information on the returned status. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - inout, in + - cl::sycl::buffer + - Sycl buffer containing an array of length no less than specified at onemkl::dft::Descriptor::init call. + + + + + The suffix in parameter names corresponds to the value of the + configuration parameter onemkl::dft::ConfigParam::PLACEMENT as + follows: + + + - inout to DFTI_INPLACE + + + - in to DFTI_NOT_INPLACE + + + .. container:: section + :name: GUID-AD3394E9-6864-4509-A178-6BA8CFB88A2C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - inout, in + - cl::sycl::buffer + - Sycl buffer containing an array of length no less than specified at onemkl::dft::Descriptor::init call. + * - Event + - cl::sycl::event\* + - If no event pointer is passed, then it defaults to nullptr. If a non-nullptr value is passed, it is set to the event associated with the enqueued computation job. + * - Status + - onemkl::dft::ErrCode + - Function completion status. + + + + + The suffix in parameter names corresponds to the value of the + configuration parameter onemkl::dft::PLACEMENT as follows: + + + - inout to DFTI_INPLACE + + + - out to DFTI_NOT_INPLACE + + + .. container:: section + :name: GUID-3D8228F8-5900-441B-AE87-B63DDB82E9BA + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + The function returns a value indicating whether the operation + was successful or not, and why. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Return Value + - Description + * - onemkl::dft::ErrCode::NO_ERROR + - The operation was successful. + * - onemkl::dft::ErrCode::BAD_DESCRIPTOR + - DFTI handle provided is invalid. + * - onemkl::dft::ErrCode::INCONSISTENT_CONFIGURATION/ onemkl::dft::ErrCode::INVALID_CONFIGURATION + - An input value provided is invalid. + * - onemkl::dft::ErrCode::UNIMPLEMENTED + - Functionality requested is not implemented. + * - onemkl::dft::ErrCode::MEMORY_ERROR + - Internal memory allocation failed. + + + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Fourier Transform + Functions `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst new file mode 100644 index 0000000000..224fecff92 --- /dev/null +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst @@ -0,0 +1,156 @@ +.. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue: + +onemkl::dft::Descriptor::getValue +===================================================================== + + +.. container:: + + + Gets the configuration value of one particular configuration + parameter. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: onemkl::dft::ErrCode descriptor.getValue (onemkl::dft::ConfigParam param , ...) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_dfti_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + This function gets the configuration value of one particular + parameter. Each configuration parameter is a named constant, + and the configuration value must have the corresponding type, + which can be a named constant or a native type. For available + configuration parameters and the corresponding configuration + values, see + `DftiGetValue `__ + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + All calls to getValue must be done after init, and before + commit. This is because the handle may have been moved to an + offloaded device after commit. + + + The function returns onemkl::dft::ErrCode::NO_ERROR when it + completes successfully. See `Status Checking + Functions `__ + for more information on the returned status. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - param + - enum DFTI_CONFIG_PARAM + - Configuration parameter. + * - value_ptr + - Depends on the configuration parameter + - Pointer to configuration value. + + + + + .. container:: section + :name: GUID-AD3394E9-6864-4509-A178-6BA8CFB88A2C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - value + - Depends on the configuration parameter + - Configuration value. + * - status + - std::int64_t + - Function completion status. + + + + + .. container:: section + :name: GUID-3D8228F8-5900-441B-AE87-B63DDB82E9BA + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + The function returns a value indicating whether the operation + was successful or not, and why. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Return Value + - Description + * - onemkl::dft::ErrCode::NO_ERROR + - The operation was successful. + * - onemkl::dft::ErrCode::BAD_DESCRIPTOR + - DFTI handle provided is invalid. + * - onemkl::dft::ErrCode::INCONSISTENT_CONFIGURATION/ onemkl::dft::ErrCode::INVALID_CONFIGURATION + - An input value provided is invalid. + * - onemkl::dft::ErrCode::UNIMPLEMENTED + - Functionality requested is not implemented. + + + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Fourier Transform + Functions `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst new file mode 100644 index 0000000000..5eb69078b7 --- /dev/null +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst @@ -0,0 +1,167 @@ +.. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init: + +onemkl::dft::Descriptor::Init +================================================================= + + +.. container:: + + + Allocates the descriptor data structure and initializes it with + default configuration values. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: onemkl::dft::ErrCode descriptor.init (dimension ) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_dfti_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + This function allocates memory for the descriptor data + structure and instantiates it with all the default + configuration settings for the precision, forward domain, and + dimensions of the transform. This function does not perform any + significant computational work, such as computation of twiddle + factors. The function + `onemkl::dft::Descriptor::commit `__ + does this work after the function + `onemkl::dft::Descriptor::setValue `__ + has set values of all necessary parameters. + + + The interface supports a single std::int64_t input for 1-D + transforms, and an ``std::vector`` for N-D transforms. + + + The function returns onemkl::dft::ErrCode::NO_ERROR when it + completes successfully. + + + .. rubric:: Input Parameters: 1-Dimensional + :name: input-parameters-1-dimensional + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - dimension + - std::int64_t + - Dimension of the transform 1-D transform. + + + + + .. container:: section + :name: GUID-E04D8261-79E2-4282-A499-CC437D91378F + + + .. rubric:: Input Parameters: N-Dimensional + :name: input-parameters-n-dimensional + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - dimensions + - std::vector + - Dimensions of the transform. + + + + + .. container:: section + :name: GUID-AD3394E9-6864-4509-A178-6BA8CFB88A2C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - status + - onemkl::dft::ErrCode + - Function completion status. + + + + + .. container:: section + :name: GUID-3D8228F8-5900-441B-AE87-B63DDB82E9BA + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + The function returns a value indicating whether the operation + was successful or not, and why. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Return Value + - Description + * - onemkl::dft::ErrCode::NO_ERROR + - The operation was successful. + * - onemkl::dft::ErrCode::INCONSISTENT_CONFIGURATION/ onemkl::dft::ErrCode::INVALID_CONFIGURATION + - An input value provided is invalid. + * - onemkl::dft::ErrCode::UNIMPLEMENTED + - Functionality requested is not implemented. + * - onemkl::dft::ErrCode::MEMORY_ERROR + - Internal memory allocation failed. + + + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Fourier Transform + Functions `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst new file mode 100644 index 0000000000..7156acb673 --- /dev/null +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst @@ -0,0 +1,178 @@ +.. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue: + +onemkl::dft::Descriptor::setValue +===================================================================== + + +.. container:: + + + Sets one particular configuration parameter with the specified + configuration value. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: onemkl::dft::ErrCode descriptor.setValue (onemkl::dft::ConfigParam param , ...) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_dfti_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + This function sets one particular configuration parameter with + the specified configuration value. Each configuration parameter + is a named constant, and the configuration value must have the + corresponding type, which can be a named constant or a native + type. For available configuration parameters and the + corresponding configuration values, see `Config + Params `__. + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + An important addition to the configuration options for DPC++ + FFT interface is onemkl::dft::FWD_DISTANCE, + onemkl::dft::BWD_DISTANCE. The FWD_DISTANCE describes the distance + between different FFTs for the forward domain while + BWD_DISTANCE describes the distance between different FFTs for + the backward domain. It is required for all R2C or C2R + transforms to use FWD_DISTANCE and BWD_DISTANCE instead of + INPUT_STRIDE and OUTPUT_STRIDE, respectively. + + + The onemkl::dft::setValue function cannot be used to change + configuration parameters onemkl::dft::ConfigParam::FORWARD_DOMAIN, + onemkl::dft::ConfigParam::PRECISION, DFTI_DIMENSION since these + are a part of the template. Likewise, + onemkl::dft::ConfigParam::LENGTHS is set with the function call + onemkl::dft::Descriptor::init. + + + All calls to setValue must be done after init, and before + commit. This is because the handle may have been moved to an + offloaded device after commit. + + + Function calls needed to configure an FFT descriptor for a + particular call to an FFT computation function are summarized + in + `DftiSetValue `__. + + + The function returns onemkl::dft::ErrCode::NO_ERROR when it + completes successfully. See `Status Checking + Functions `__ + for more information on the returned status. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - param + - onemkl::dft::ConfigParam + - Configuration parameter. + * - value + - Depends on the configuration parameter + - Configuration value. + + + + + .. container:: section + :name: GUID-AD3394E9-6864-4509-A178-6BA8CFB88A2C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - status + - onemkl::dft::ErrCode + - Function completion status. + + + + + .. container:: section + :name: GUID-3D8228F8-5900-441B-AE87-B63DDB82E9BA + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + The function returns a value indicating whether the operation + was successful or not, and why. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Return Value + - Description + * - onemkl::dft::ErrCode::NO_ERROR + - The operation was successful. + * - onemkl::dft::ErrCode::BAD_DESCRIPTOR + - DFTI handle provided is invalid. + * - onemkl::dft::ErrCode::INCONSISTENT_CONFIGURATION/ onemkl::dft::ErrCode::INVALID_CONFIGURATION + - An input value provided is invalid. + * - onemkl::dft::ErrCode::UNIMPLEMENTED + - Functionality requested is not implemented. + + + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Fourier Transform + Functions `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst new file mode 100644 index 0000000000..d3afe73022 --- /dev/null +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst @@ -0,0 +1,78 @@ +.. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain: + +onemkl::dft::Descriptor +=========================================================== + + +.. container:: + + + Creates an empty descriptor for the templated precision and forward + domain. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: onemkl::dft::Descriptor descriptor + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_dfti_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + This constructor initializes members to default values and does + not throw exceptions. Note that the precision and domain are + determined via templating. + + + .. rubric:: Template Parameters + :name: template-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - PRECISION + - onemkl::dft::Precision + - onemkl::dft::Precision::SINGLE or onemkl::dft::Precision::DOUBLE are supported precisions. Double precision has limited GPU support and full CPU and Host support. + * - DOMAIN + - onemkl::dft::Domain + - onemkl::dft::Domain::REAL or onemkl::dft::Domain::COMPLEX are supported forward domains. + + + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Fourier Transform + Functions `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/discrete_fourier_transforms.inc.rst b/source/elements/oneMKL/source/domains/discrete_fourier_transforms.inc.rst new file mode 100644 index 0000000000..0414b2c2fd --- /dev/null +++ b/source/elements/oneMKL/source/domains/discrete_fourier_transforms.inc.rst @@ -0,0 +1,12 @@ +.. _onemkl_discrete_fourier_transforms: + +Discrete Fourier Transforms +---------------------------------- + +The :ref:`onemkl_dft` offer several options for computing Discrete Fourier Transforms (DFTs). + +.. toctree:: + :hidden: + + dft/dft.rst + diff --git a/source/elements/oneMKL/source/domains/domains.rst b/source/elements/oneMKL/source/domains/domains.rst new file mode 100644 index 0000000000..e03191c815 --- /dev/null +++ b/source/elements/oneMKL/source/domains/domains.rst @@ -0,0 +1,13 @@ +.. _onemkl_domains: + +oneMKL Domain Interfaces +======================== + +This section describes the Data Parallel C++ (DPC++) interface. + +.. include:: dense_linear_algebra.inc.rst +.. include:: sparse_linear_algebra.inc.rst +.. include:: discrete_fourier_transforms.inc.rst +.. include:: rng/random_number_generators.inc.rst +.. include:: vm/vector_math.inc.rst + diff --git a/source/elements/oneMKL/source/domains/equations/GUID-0026D841-74F3-43C0-8EB5-F9E4107EF95D-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-0026D841-74F3-43C0-8EB5-F9E4107EF95D-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..8a622995267193813ce3df5bffde45c1263470fd GIT binary patch literal 924 zcmZ?wbhEHb{LEm?@PUEh|Ns9C3=BFz%m5N$VEW(Ezw-23{>5{)-0I$ZZ_jW3wnrY* zo^>vJb!yu??&F_)u7B%&{wt1+k)MZ4a^L;@4j;DuQ_ChFtMOXCO5r!9y zc6TOwe(YhJp8v}9(DP~A9y3_%wd{Z1o_YM=r!Z-SsmnU9)86@6+97tFt4!_jKI6`1|)a8{co!Hmtd4xvzIN_nN$AX-i`w z{7v@RJ&f_|TPJ8O_noatdKypEy7JFoOoh|=6zr8Ra_IS(b3RlFx!-z7_tn#L*DV{A zWy4%9=0z^=X5EO4Bz?fFO3^?iclbffgR4eW)&Cl{S^QjFD;T=xM|6&%$$h168>(Nx0y`aI`{If($!|+q4#!G zuYY+oQ%ml$d)?h<53+vrg&Ip$#d`2?8#+(e~-L* zam7+_U7zjlZ*TAHuKxdSF9U<(e{SEzl8lhbf>Z+o!~d*|46IBp!M-7;3=G2InR$*m zIZlbinaR%iDX9U8>8ZsGf~+B#xv9kpeyQaOLHW6fc|Z~8{L-S#)FO}=gCKKoWo}Y_ z4uc?zZ-|0xMM+U2gAfCUqP}ati@syP7Xg0vc*lTG@^V17D8D1a7uPSUU;3Tmfh+-j zXAsrz`b8_=<4ZqS!~saxdjO>zwc=gkUB7^kBR>x#0}}%i6EhPt12Y2?BaqF&$iTwD zzy%U-Gy)NNAVL9|U};^(>;@Fn017r&fMhfom{{6u8ElyuxEX*3Ffo*M7(y5wM!+n< z#4v;DJrh$?Dv;Gw1R~Oa1VaA|j`u(%j6kAEAEcP^Ju?FrTt83%D$l^p$jHD2RSH%Q XvKivKCU9m$i3KAz5l{wXV6X-N1zKQw literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-02486559-84D2-4880-8EAB-2085A5BE2D10-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-02486559-84D2-4880-8EAB-2085A5BE2D10-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3dd71939b314d5c4e3030df9f988c91e3ea89586 GIT binary patch literal 2613 zcmbW0c|6oxAIE<`vzqH-EMvX4p=K;)-@;9@47rT#Oq4BD7g>`+qAP=I88wIu2^U>^ zqmX?qvKy2wTV%K?%Wa-64Peayr;WpXy#atgkOzAC#_-#=OmsKH`#x1 zq1jvsoFS?6d8L@;{GUIXZ;>-uz%NZ5p?W?)KM@?NJl9XD zs`$FlkmlG%kjF!o#Yj$0qdfz_jq&?>Hq;Zv1uJ6#9U&F#R`QOF0RO_I~8r`>ELrJ^sfD{ zH=8>iA*+XPsU2!nM|reo4Y>`JnLB@SYVcJWalt#zrD}T;*SJ3*xcXH{39%ItEMTFl zo$>;0aqOXg(WJAPhxJw~lc13Au675D(b0Qt3Pq+us`k%C11=LUR@lX zU{W($3Y+FKiocBY;Y*EU8Wz``JXwd82@3z{kK*A?!iwficSes{5Kpy=gdr)kPXs%(U? zyn;44bQ$&_HQyRhHLfxLM&QZ)k`=l}jta@2KHN*u+%X?)Z@-#)ApdHTZY{e69f z`L5PnRgyssFjFxuKNx0a0>vt-=QNz)kkk}w_{j(tBr@Cs5 zoIr~pbP};onk>R>@kVtRYWJW5S8g~+GR-@#sh6F)ckQ$6hrr6Dy0qUwkn7pZ1eHeecm}k0js?H_UhDwB2 zG+#GZJNNQNSGy*k>+1H+!E?Ly$|~pOYM40$t{4KCvCoHm1ucQDjX$`l*${r~#G&0= zceHV_VMy_8p-N{dbeQ4o(=8&G&^`TFtj{(B z`2`1TK=gNrep7JT&rBXG=1=K?iqCrd=ogBMDSH=w_{e-C*-z^yPcMgF7c&@Y1o!vZ zC0cHEW*7T^p^w%xl4;?OT;FIM?nqlMwceZQ#n}wh;Kag|g`szB+S+z!1#3q(^>loq zBBO4sY@3FaT54rWacG1_5f)LO`P@xLwTOLXhH^1+M{MqZG0pBs#SwSd*uh9<*x+2>JTZfPZa(#YkvP3v{s z{KFQ#`p$<=MQ)@9)?PB@j8!hYx|add0Z{izTkx2Q^=JON88_1X><^mWs5{qA8<;F1 zXPpc4O`o4eTo(C6U3;3(?ao1J)XBzrfZS1iB*h>=Wc0Q z+!60sh=LI5W5GP=6$d`D>DdUQ$!o1{E*8%$(R&#Y4~#GOX%4J4Htc0p7DTJKw2AtM z7yQV}zULBA^~;^#ZsUoWM!1CA6mTMr{GuxUphYyEhkJG3psZwlS93petR#@r39B1d zwbv_>>v5K1g%9XwnDz=q0=E1lm;g8sF4R`Nf}t1Ie+ioL)2(}aqBw+pUgpfEpuO-! z^tr$S8IIGhr{@e&FO>wWL1VUD%RfceSj^bf;upuhP2FsfO>u2XxzznC*IKbfCarAy UDP-w_w%{o7G)#baT9P&S57qdS`~Uy| literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-02EEA5FC-8F46-4034-86D9-99900F93373C-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-02EEA5FC-8F46-4034-86D9-99900F93373C-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..7220f68cfdf284f8fe250d6d4dd2c24f474ec300 GIT binary patch literal 914 zcmZ?wbhEHbRAp3T_`tyM|Nnmm1_m7adigQac2^gVZ3|9BB=6`5X3Tgd zzWDO9856H-Z2eLh;dxEdO>3s6RZ`Xg$(L0pckEJ?ex2@dQ&uW2=%$eK13RtYFo-OT@UR(RIfIP@ms;OZ9`C)kNX!qCXbCi(8#J`fnwl z5cX4Y;hekb4?~wi&{D&ve*D=x`>E@ZyUMpcdCuEfqsi+ZXosuEuaRNdJZW0I&S}{-k{&PIH(O=j zebtm}qW#uq_1`yE2_jcFX5Ze|YrXy5-96R6|MA-F`0(&Zx3qnqj0+=!;(u=6#FC7V z%7Rn_1H=EUj0~(yF2TMbrVI?i;hA}kIXO;=#hJ;@`6;OZiRr1u41%m7nYpRO3Vx~O z3PJg~iFrT~=ls&5%+w-~7=s{laAj^%ehz~mi*Ja6Yeh*>B7+bEhoZh~zl*+Oz!w32 z_jt#EPx5j=wkW?N!xz^ts$cq@;(;syerFKX@A^e6-s4L@Si}KH*Lwh^9JS(I;$6Rh zkRv}2BLfoy6B9ENGXpaN6C;q#z{tSDz`z9(Z!`uGdLTjpnP6#M#_Yz-Aj81G&BzE; z$kHaHq|3z6VF*mqTtLMd3`}hd%@rUmnjl$Q23uwZE(V~4O>$QVO;KWD*nD7KHT>3mIlG0o62tvlvRO7_k8z H0Rq+lfdoyt literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-03C78F41-D16C-4BFE-B087-BE4F5A6A0ee1.png b/source/elements/oneMKL/source/domains/equations/GUID-03C78F41-D16C-4BFE-B087-BE4F5A6A0ee1.png new file mode 100644 index 0000000000000000000000000000000000000000..64d43300eb1830fb350bbd3a886075fd7979598a GIT binary patch literal 2329 zcmeHI`#%#3AD-rxOLI6P+|}mRVlIU(;w*EQ%g8I&5oafCgmO7d&8-p= zlS{N*VrIu^L@i+9=FOG|k?9u9{a z8X7{Q(I5~gJUpCCCPSgnecQkH?*jiH3rvA#$M>5^5j|Wz0d`B%1OPy0$Qfzxl{mAG zUBND#Q7RH3T+2$f(nj`tX0F=s67oB#S+bo)HLJ%kTx81-H$)5gHEs9U7NoSSC%JFP z9#-C)FY(4l8;mMm;iLsR|2^PYeUp@)4%JQ%R544LFg#0{lPSFXTE|mGrlLTIthgm_ zfN^lE1U;Q#zFV>M<9?BXH7Cu4w;3_dCiTVu?Sjft!!)|-L@ zNcAVsrtTj8o`T|}$#iXynemRjJhl5V`{a3!qf@qZuGbL+bX;g2$)t#})e$6NP^xld+mgtv$Cv%3n^8(s}mPsqP7P6idu_fm^PaTn*u- zVs$GXp9{)9`-(G6Qz_{GSk8X%3%wvh&**AH@sgJM=NbkvX!Tyq$v%#X)Ay42EXnwP z(3WZgji_))MD{?(m^|42ij->jdlMD&h2Q(I#$I_%u<5XNYAu)676xX49DUYjl$Ls& zty?a))QAiM9i{C=B5 z%iU+cltalj8yV&Ap)#u6n75Jjp#cAY-F(L^$$LJU_vVU$k5O0EsanLl)`*#~L%~4Z zk%Q*Bp2x0knSe1kNawm8DoR zTKV0TD<2kL_UJ}!4)JFg>m5r~!Yxr&b-895G);|%Og9QLACM)MUoO+YqQV|PF`a{Z zIr(WVahtwSey!to0ETF>ZU)Q z=+bj=HyqwAr$iETMp#eIC<^25S3~=8N;{%`=jBP`g3a<36TcEhORbngxTt^C78;@>5xouq{KeXufs<3Xx;@k zwba!u9Y(b~+450T+rZTIto6th>wyzHTJf9nG5%gTL(dE!|d;!VhuRnB>FTlR#i-nQInT*48j7BOYH6tDR0Mqn8&n>BWVST^uc>7 z+Gsf4tGH{T*dKOjJvhulEG=qeYy`yLsftv9>dnU^?3<$b;kyA5y{doZv4t@>mpVLX zdE#ocjT`W-fKy2;e4XH8GkyHOzSTDl(Zvr3Ji1!E>GF{fDzoFy%9wKQTlkd?baL6D zrrO!w5B7Yk%AK*-m)x9Gb2eO1BtbFE79#tzbvhEhb literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-04615D14-A026-4BF0-ACD6-0FC822FEC64E-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-04615D14-A026-4BF0-ACD6-0FC822FEC64E-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..952be18657547f8438bfefe669902accb5c5dc8c GIT binary patch literal 1511 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 Bpe6tS literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-081A19C4-609F-4736-BCCF-D680013A2775-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-081A19C4-609F-4736-BCCF-D680013A2775-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..410e26c9fd0665f4967af6506f68b0d8065d9486 GIT binary patch literal 2145 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 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-0A406EAC-6A1D-4D81-977C-08C018161E3F-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-0A406EAC-6A1D-4D81-977C-08C018161E3F-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8355ef08169284e544e1ec2c7bea451a85c8a54d GIT binary patch literal 3108 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 Uerd3$WAc}fGG&SS5d%K|2l0S3IsgCw literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-0B9A59CC-C914-429D-AF87-93B16DABD291-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-0B9A59CC-C914-429D-AF87-93B16DABD291-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdd79355c0d7a0e34f22aa81ea90215b12446b95 GIT binary patch literal 20475 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 E0pCwjhyVZp literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-0C4BC54F-4C29-4577-80AA-BCBCD291582A-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-0C4BC54F-4C29-4577-80AA-BCBCD291582A-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4903f92db0e6fc6e1805ade544a9188e43982b9e GIT binary patch literal 2064 zcmbV~2{aqn8h~#WNn|o@Y!R`J1i@IwUJO;Wq@JRkR_W8Bsv1OxMnlyaEv35HX_?w; z8yuBPN{xLfrejbHYDtPtTSk~CRFD_*-kEpKoOjNfdH+4%z5luYf9|>8xmWa)XdYmX zIZ_+}1Ofq(;sHclaM&S|dJzB$MF*e&05AYN-~b}d_5ev1qiUBwF^sK@3)27LS*g#o-9b8ma_Eq7n|L_Nf|C zQ%hS%TR~ONP>*b=LDnYk9|A!lk!TcJ291^>6L19bUk*__kU{}t5DkN<1E>@PCIu07 z162SZ5@O$d<$nhR3KQQKiIPNrByM110Tcp*LE$h72{>Hb9V4y-xRiwSC!g6NWIX(k z>S3}*3HOUp#3KzIawmrQB;)hpiIQlXJYIpIp{YgI)-f?PGq*ToX@Atg(aD)|?Bo}x zPJ5p5^7g+Fa53-_HRuXG;wmFD>KZfY#?9oETd5hDS=l+cdHDq;rDf%hD=Mq1pER=A z-*TQdHFtJ(_w@EX?;jW$eK|Hh@zdlKm-l*Map}#^Z{Mx0|N4&&!RFS7?R_r@fc;DB zce6iuNr}Cna5xN(-1mY&8Dd~kaEVVoLrB|sApOE*)Qu8QvPbS0H*`o6jZg69&W8`9 zaU>J2#@fExZ)Sf^Eb;#``(5lmUQ+-AgNPpwCIxK4_TyCYBj_J#+}I5~&KIOJYJxq( zyxxviExDQ`-%v)vGAL@mNDM`;*z273Ue{h{vj`;B3(bY{i$W(s&QRknmlG=jxvR9^ z=-1zYsENeA&$nE9Ecd=H(`&6ScdIOp){d}{Cf6NbPw>c|COv7s)00)l@KyD$&$2N# z;}l0eYi~7J!(4Ni=$g@W_b9XHPRe1vTA)Z;O<=q&GLx)ODe?ZV@GCnpnP=ErOx?3v z(`Q+%w7=0#N9!tf`6(Bc>9}hy^Sna!Q4XE{r-=Q&PQ(heI$Ljk6SP{zGLeD&5TCR!gfoz4ywIztgcoDWDYo}S6LT157`w- zL}_)j-E zmoGPVV?|K$c~_5ed3x>b5+48gGP9o|XWdRPhcn|nLm6_&dVX%|@^zQpVvN+^Cxg7{ zy|bIgTTZ#8U3^!bm?Pm68xWy!hHj0uu6{GWnaX?6!3gHPF!zi@eW3aUM3n2bg!d{l zkXZ`HI62kTTuFop@#9>Zgn0w>msHEuTRW7xLE0{xCs{(RU7jqMoh8fmp>+*0E3C!5 z8}K4o$a7?{LqKFj*VLD(EZthgb8O+c2Uj>RlE1&SN%MXGt2X@lz(FKC%-gMfF4^0$ zCa{XSr?P%IWXUCkB%}?7+{YU|R6tp%edS1ojnrhXO?0bbB4w6s`PuK{e1)MR&?o|> zgZjG<7%@E|{?|78yx-OQ(5k!j-h;nbE66Y23huGIQ)^SS?lng(2%MsE^O@C`LpCtQ zDN~U|=0kVHT<46NFtEKKKm>M3w)~8!*2_DtHa!AcTWRr!t!kglhd>3(Qp$(X3 zF*~=Nk|sKBw1-KftToamp^#~RnKYd>*f4oZqm1EeXfXuC*Sn8>)5fCLOsle9O~pKx zPhP=2iMry@~MruzR9yMKK^B{yH7!@NwYe**=MPIAtue|CF`!i)zt>4 z(Am(i^jZ1|dPnc8h(kkou)a$aF!#5_ppX{CWCR~++BL9y8B))C+O&3&Q+YIhhIU1+p!Wkj+@It4`Vco+Es&_*j0WVA z)c?xR#73c2*OcjOZLLpFV1;)@zR8G+EM4gUg%l6^N%0Vp=l3emtu)?UeC%+Ma&vQQ zE1UmAWo|fi>e}EFE%wo-qg3K)wf8s zFRy>7KQ!R~ictk|)>2AzCIvV|j#u&D_X)mM+R;|#q=W_tZSu}DyK#FecdTeOhM5V- bthVO2?fvkmQdq)a)l(i0vfzIJ5l#LRWQco` literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-0EDD2BB7-A284-495A-84F6-8A210AC499CD-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-0EDD2BB7-A284-495A-84F6-8A210AC499CD-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..2164c686197d330a94a057ce22ce6bebd9051f1a GIT binary patch literal 1656 zcmZ?wbhEHbv|zGf_`tyM|Nnmm1_m7rv)8Nf^vbE**TikVv#xXH z1+Rm=Mn`g-+qGXco4x*a>iL&qrh9qM9#5)0!_QC=o~EYuqbOqe4v&q~HCTT9xFKZu zFd|}y^05;)Gb7DHZ?=D(@M3$Xndiz^H?5w}m^773+~c>~ZUrgB>>Zj-?F(KPa6QXD zu&cZKc013TUu)Q_CQ0rQbI;Y?JG<8A?Dw+@5}lS7lV&B_@bI1WWBGklHbQpIHMN*o zyZ>3Qk6&k3(|3Pg-U}7Zoc0M_W(}KCZhkzzJZ@jbO(`>#9nU7Xw*UXZcW<#o+O>lM zJ`-eTix@2Ql7H`&vn4%W$z>+LbCvYZ!Zf{!f9;ldA9H(tYN2`5qzfGzRLqPnuisemR`@%_Fb#K`_|fzqH7#F zuWwt|d%Qeh?UHQYuR^cX^paFN@87HKSv2pczKs7pqm-XhuC!0pp1fw$oAnQ)_8r?8 zxUJ{H=@iv^r@C4b&QoW%bYFY7b8=?hjXiG{&0YBF{UiJBg||(-S8Oj@w14jFegd4ik*q^XqGAP~MEabNBxF>2WEThrhnH_Sc`@ zivRmJ%&)w-RWzoo^Q)6v!}G7lABb%eS?pL@z94N5%d zO3RoX?yBw$sfh6`YW*T_WmNfMQj^NP7ct4l-m*RD%XK}$t0nzzdV9CR#Fpeq&J)-l zT1_%Zf6~QZRQaetf8Y1Vt8ApkGFN#CXsw*h{x9solz@GrOBc*Nv^Z;>;HIwRrkqtf1gfla zSFK)nM9kWMqTlhn74Z{J*kx;Pxx0XA*?h~26RWq}n#3_{{pGZ3(WSTT*xv0ZuZm{b z@O0K{`PSfhVcNT^BE7qIe43WAbkY0^)$fg8eUtXu(i|ABd0^h3Y=eCVH%1g3>QQ*J zLHIad&b?iN&P*?kUc3|KwT3DCO=}mYA5T#^@BEWGCsnOq$r=2ugPX^wX-Fc#msrX?)7)~-MURHytnjhc>3AW>v8qG zWjB)geamj9&F?K?WKjIi?VDJV5mH%@YG7dapOuk;mB}U8H^h{IK{z}!&oL**DX};+ z**QNYH6SrPwU|MWH6$}PwOGL~wOk=6KQ}QCDB_%7T9lbu1QKHqWDc&(P0G(<5M=QU zQE;s&DN1AzV&G8JckOr4cMSLIlyi2_67Z7sf=V4@EVqjuoW@2VwW?*6jvKbf|SQr?%K;q4A zKtX9n25v?M4n`&>hWbRHV3Q652T&rVe2A4mQ^7_vH0eWahVgZPGBcRo zLkW-@SlUvRHiO*?^a;>v1CU-+We5#4V`U+^3Y#Smm)bDcKwJuRowQJXa>a(-6`T6;Eb#>+B9GQjXj1odzwiJ5r(VBuBX@Qx1M{&P zg)ye4%O6fy^5w!W6~Tu8?=QSn-&`&dFzNXf$6dtf2DTV zB~FHmrpveOe!ewJ{=J}hnpnL??di=dtOm^%hb{iZtmgX|_cHR%Q};~)8PDZ@E$FR1 zmLssdxIxveukOq<$%o(lxECnC+#owWi|gX~cg0KmWMA%hddBNlw!~GT`qF)mCZ-sF z*4nOVK3~H*$zf0W>y;PxIj%gZvoO+&+w_crnY`ZY^yXbFt1dnHP`-7;0?Fr#%}#zx zyP3$6b)EIkg^QCyZ*DFzvJF?>wDmwh2kYE~nWf)Yx2BUheiqN8%&DgM># z(o0cdo*%ZCDqMVJqpkSE@8(u*?H#JwS1#3SPB-T6d-$-u$LwzDDdie=Wn25mxu=%* z#OtL$dD6kJCKB?g@TjU{9&7NgdYt|2MxPYU4h2r5ExakDpcj z)p>nM&4K7Wi{@Vs{`+X9O|8oI#p@n6yiayFy5lu-Z{@Y9-*U^Za%a8!Ydhn`)4fTN s`;UB|H*@Dtx6j!@9oy<#|KI-1KI`nMkeKplaZnEMboFyt=akR{0J`2rD*ylh literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-11B96BA7-C321-446D-A7B6-8D84C8CBC076-low.png b/source/elements/oneMKL/source/domains/equations/GUID-11B96BA7-C321-446D-A7B6-8D84C8CBC076-low.png new file mode 100644 index 0000000000000000000000000000000000000000..f0f8001cf6dbda27fcabd20c7ce66554c31c2b04 GIT binary patch literal 14435 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 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-12315BD9-4F4D-42B0-A9B5-68A22D40756D-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-12315BD9-4F4D-42B0-A9B5-68A22D40756D-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f89f612eee7e6f4333891c5b8a8c56c60c2592f GIT binary patch literal 6971 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 Dw&hec literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-19F7C7EA-5657-4016-87A6-4E2721994C56-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-19F7C7EA-5657-4016-87A6-4E2721994C56-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..c54c63d6591e27462baa20515a48cd75fc13229e GIT binary patch literal 1248 zcmZ?wbhEHboWW?y@PUEh|Ns9C3=BFz%m5N$VEW(Ezw-23{>5{)-0I$ZZ_jW3wnrY* zo^>vJb!yu??&F_)u7B%&{_EWLfBhUR4M!Gz>`>vId}i6_nKE3{FRc37^^`+4=#3dS zUw1QGR?;ft;9WdlfAGH7y_?EVTULKY`sa@S{?6OWFN9WXgKaSqq)+m`3nf1!BDskJ&4O#Bn1Wr!BRh3m8{juX>1zWX)_Kb%bozXcm zrr$Lw*J=&dZ^veBc%~= z*5lZ$2Z3A$x(eP5w`cGzJ}IEf>sjn3^o+aS!XWL+^bhk5#O2uATG+2F?3m?gX=dUz zMPy0ePOA?hTR&?CIcK*-ef_EXz;c84(rXIQTUU#%x4(P#$sz-}T?*ux|^AnywQ)Z??s?x=GnonnO8is75)vexwYHx$Jxtkzu)ROW@uf{XS?gm z%PZ=qr>*qW_;{%&OFL}V^<|}7AEx(ye>*Ap@}tek-03Y-w_Mx%Ds=JtNck_1){6a( zzjcXO$n~4%_WPmVOG7xa7+SaS#sAv)Emn5+StbSZeA{c&)rGT!1LE0*j^1{ka<}D@ znxs^m;hXcfiQ+;4X8sB>cO&f}8`ZTw81 za5<@obowUqtGJQo%#nVaFw-&1^CRQn`ImP|j@NA~3T}Rx^FFQT^ z(*!Sdrq6qGHe>$0x__3O!9`47D-11}A~P11v@On9-1q2f#*&F#Dw#{Gv?``7owch> zsjE4UD{IA~KCi5m%jR`uty-lN$iSfZpW8RFBqOAw~m0Y#kiON%m7i$G!wg3Q5{ zxk>ps41z4aAquV)B}Iu0LJS;=`mX&h`i=o#1o++K9Rohe%K_P<{EiG?T)(J(>350; zvIO{@K~%r%7p-`YFa2N<2OwSV0hDsoig$^3{Q^Rc{5*^dObkp+%uLJ-%nVG7KsEy- z0}BHK7f8H007x`xfLIYgX=w%qZm@7B0|O%?0~ZrZn=OMaP%;~&Op^h^XJ+6AO7Caj z0Gh{AzneLSnL!p=BgnLDV2QxR#MG1u(pUi^3P1$VCYClKC0!<#7O*}H3qiI3-3PN$ z5oiq14jl#^hzLs?htfHqwaj2O9R_g84nqXf2+o|r^qz^OTMd{4nHZ*3gNRz7c??Z@ RpaKgeI*r&wKw=CG)&MU3+;ji{ literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-1D36B5CE-3BF3-4762-926B-05C5527FAE45-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-1D36B5CE-3BF3-4762-926B-05C5527FAE45-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..847d0e1ad4b9c2ab810810faa1dcea65d747067a GIT binary patch literal 474 zcmZ?wbhEHbjAf8#_`tyM|Nnmm1_s5SEQ~;kK?g*DWEhy1wDhk${g!|6oGrJyH{aXy zo4@Umhu^`@WsWCjz3ra+!RKVjO1Ia(w;Jx>kPO&Cy%hpL0hqiwdIb1zEVb#}w@@GItD&6jRCer4&8wrdi{ zXS|qxHKIaUe8*(Xg(=62erN_yk0|Td`6=~O#MKlg%P%iil`&dJmsxAiK7IT3Z*G}C z(Ljg)=k`r3$q1<|NHs7pe9p?qz{=zj>>Farz#tr+ndg|3s(<|gImFbJ~vhA6mJloTa02r+Od z>bv&4=sN~{5#V=^cMSL>F9&3c@;fqoas8tDrQazY$P(ap22uU4U$o*qzVw4d9DsDa z2T;mUE8ZpE^$Q3&^7Ak5{)-0I$ZZ_jW3wnrY* zo^>vJb!ywY*DOU0*UOZYznuMk;2rm_hIun5YVasox+e$CI=8O+@W^u?R4A!`ya4N6q`qEHdjvnAtv!OLNVjPmKhtr ztZ)}x=^VLoLA&L`N`-sLM)y=z4-|lvon0?ikosVZ7CUdauiuLk+J9D3BoSa8> zwcdXJ_vhNhoW*1FPCNM%8)fq~(FRz?O^CYNB}5MW>nhiB$F z=Hxgf7H1|q=cl9wB&MepGYGPVWag$8EBK|BD+J}|CguS}obyYIGE<8{Vhn=J!Iim5 z`8f=NEWRNMt`#Lki3~yv9E$qtpW+q!74_ZY9Rohe%Q*&o5#@Je_~QCS^-I4~Jdh>8 z?+m0q$tx`V#03;n1PTB}`8~dff9VH`OU1jyyM6&7M}8hg1||k3CT1pP24)5(Mj)Gk zk%5JQfeR?k(x%Oz4J751mO|MK&6z-D+zdc9Obi{yP}&5TreLBhEeDtjK+=i~jX6L? djd?(#Ndu(Z5JVV&xSF6;h!$W*Y@!fRYXDih_oe^< literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-281DBA27-691A-4B62-A255-FC33EA28D8D5-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-281DBA27-691A-4B62-A255-FC33EA28D8D5-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd1a85df986adbc2d1029c57147e274b6e925771 GIT binary patch literal 6113 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 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-2D60A1A4-9522-40FC-AEEA-B64EB795144C-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-2D60A1A4-9522-40FC-AEEA-B64EB795144C-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..689e680dc7ead5242ead8aeee8c4f6dd4648e180 GIT binary patch literal 1514 zcmZ?wbhEHb+{@_0@PUEh|Ns9C3=BFz%m5N$VEW(Ezw-23{>5{)-0I$ZZ_jW3wnrY* zo^>vJb!yu??&F_)u7B%&{_EWLfBZaL?MD`U%-~{~aAw(O&aE1YudMoN6|-te@S5vK zuhtz`G(44~w)%9(mtV1k(=U9eYR^0G{zTb4{{Oe~2ka3$6gZqRUI?4rP;Jdvuw#eB zOGD3{lhZ0sa5l_b`Ftm%RF|^ZD~aV3vZAhb1-{DKeC3yiqV;OF>WQnhi>(E99{zrP zRQqUF&Elihe**U8wC=g}%tLo>*iJ&7~I_5$}gSEE-}l5) z0}uDBae`{c*{XO|G#0h&IQb)-M?>!ikJR6Z0S~GS)s973wl6X8uh_lSV{zx7pKV+{ zY^RoowLer)y;@d#rGj5i``?d8J*N^+Dn~F|o%E_((HI%3#ar}K!a4I>t8h%s*K5lX zztwJkI%)5Q6KOdrah56*8=E2$=l$X=QTGqv>QtMwTvcnvLi5DpVF%ZBV`NbL&+VI7k`Yo_kZNFH_@9-LftAT6*f+$Kfk8MtGtV(6$0@NmGub&m zB{d*1J++uYkToPTH?>&7FST4DC_gtb4=CcCUs{xzS_Bef5M&On%uUMAVGv~T4N-8d zC@D&05Mtm^)OYQ7(RU2^BEat+?-=k&UJl3><#%NG;`&APOTSY*kR`zH45Ip7zi7pK zeCY>^H~{H-51^EzR=i8R>lYAmnlu@hSlVnEY(aW~+8BWfm>6a-y=VFlCXt8^1CV+h zs5FuUNHvwXAUCnJ*)Z5JF@UWD8V&RfcGEiyL28ARbfNx1;x`w7oT>@*y9~(hKtC}v zurY&8g4m$VpbfOa5Liw!O#AQyNc{c*EIC0T1NUDM!doDxu(YKrZ3YJ#!cgq)Lg)js oxWK9*p$f5@L+KpQm>`e?^+3fn5CHA31~X7npb?uQSdhUQ08u?ZVE_OC literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-2F91B385-0AC2-41D3-AE61-48F63A7DBB02-low.png b/source/elements/oneMKL/source/domains/equations/GUID-2F91B385-0AC2-41D3-AE61-48F63A7DBB02-low.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f19a23946120856d9a489a657812737c0a953c GIT binary patch literal 2645 zcmV-b3aa&qP)`001xu0ssI2okWy-00001b5ch_0Itp) z=>Px#32;bRa{vGi!~g&e!~vBn4jTXf3HnJyK~#8N?Oi>3;xG_(_AG=VA18nlu-j0j zO$Q}u=qS_CKuJ1Usx*NUkQ4Bwz`jd%BpdJ__DGg&qdYg8HPX|}d$KHz?a{-}&yR-# z41fVJ00x|9;E&VZ!8tGh2EYIq5DZ|fM?U}qU;qrb&j7}H_cexxU;qq&0c&IZe)13< zlRan#17H9QfC0-46c4)A#(Lq^ct=luf7Zj4hrw#_@L=)|U>uMPwt=aqbbBn(v%h*R z8w}XM)bq4Gmgw2WY*Ur88OZ4n_ua>Kd)IQelCvQ)?W#2oV0yDkDIG`BmO&h80YI`ivcA;WL8w}XM z)N`{vmgw2dl)^huxm3K4KhDhHnfTsqL&K zOK6R1Lt#FwN=frtSYlN}WlNUu>E+vO12fyYrB?W`mJ|tt!p1K;HB33yQg9W$3E%VkTc)IOKuLySBengrUQ zbUvPNWiIex`6a`SXay;&P{r=d5%op$Y zu>6uX7_fnh;nOm{o@6n+pqp|7QHMJoQ__v z+u_~ul}ha=f8W1eALW|h?|U+`v!?)3Vu2H6&Scvv1B@b4mzirdOj`SdK`s&HQo>YX z=~B4ByHda+PXqt7Js!P&@A;`)3dAqKhh>*k(pS2iR!61JI(|6s&$C=PbK&LhQAB6>JW zU3cPpPcgo-XY$Cr2`E?oZ%-R}H|@Q@F2w8ol`%d4+k2MF9m3pxiou?TS>6#8y(YX=d;VD$O)s=#Bd0$N52^Tr7EC+lA(nK`tQO``C|yIhf+Bw8y_& zdU9TktYT;O}r_2|j#@g}1-TvNnU zpRx05C_R2Ho!4gzlvzR3qh<2ZaC)tvjwxpz*&A}fgu2Yi%WNk79J{FE)o}VNoJU;# z$OSC+RFj9)!s~{?OmJqgSR+||(`VE%v-%psK9L^X!Y7B~r`KyVOwc@6N#`6{}QR53Od_GF$8-epcV?8D`TFW}d!PG41H9YLyxf ziZ<(kGy9Jva1GevEAH~E{DY!^;xa65MZ*RrX|h=66-X(o)v-QY&yDYXcr4ntZtjjG@_o%+(k@L6_e~>+!^`Vj?<*8hbj5 zXhw!Ks?lrv;_G~IsJV5orDYWF66U{GFL-uKS;yn0d@faXINK8(Ra{BjGVzOkZ)wM9 zpR8Jn)HAQ=jTf$!5^qw|2fT+VRxz$gd&3_n?xfI;$XY|Z-bwj6PIZQ(o}Ju6oYqmM zeg>d;{hZg(q9d|mUSC6BK@(sA41j@#8Nj^0VFA!Q7ytucpaupo)*B#MZr`3x_8H~{ zHNF*%0doOif&qwbg2mQhI4mn-I7WIKWlulN(hp&2v|n_sWEnGJGe9ab0MRQF*v{(C z%8Gfti4M2_I9?yZp11BDyu>zhyzb|lSpb+Y02uW%0MYB`yoMItl@(*Xf$l?_dG(?V zUc}bD+b6Mgum9}zpa03%En_E_v5jF2v%2T()`oLiBso*JWAp9*(ss0)W8)7ytvUVW5T>4ic8OMr{}Z2Ec%e z3~pnW-PTS^qnYK{T*w8r(! z>ziW)ErS7N1{}#@tL!%_IL$x}@p`BEgL4it;7ATz2bFteWTX?erCBSIJA2bRE6dAx+ zuSgh*-z5W8@)w>`9(RUA?{oV#p06pNX=1r>m(;-MU%~*!`d=dSFLzTnf1!BQ{(E#d z95zo;Fh>$esY}B!|NcXyGu^K!ohc45&~66m`)(F3fq}*t(92)wFUMh~Qh8A7(&&GL zc203A)0r-5ZyFq6pxq4M{rYy_ieViX00Usa1Oxv8pUt8|0x8%000000NkvXXu0mjf D(MK0o literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-32A750B8-7BCC-409B-BD48-E88FBEF86D32-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-32A750B8-7BCC-409B-BD48-E88FBEF86D32-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c35a12613f9c11d8c53483926c31bb82dca6b4b8 GIT binary patch literal 2290 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 Mf$v`i2>10r07Zr~w*UYD literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-41F8B94B-EEFA-4308-925A-D2DF486FBF8B-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-41F8B94B-EEFA-4308-925A-D2DF486FBF8B-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..342dcbd49f93654ca4e8a7ac8a94f86b9a71c975 GIT binary patch literal 841 zcmZ?wbhEHb^kGnB_`tyM|Nnmm1_m7e^ndhr*^&giq9q62J!g*_(`=ZM$FYxyEhX!8R5VX2YJ8aqq zCf~SJ6CX+S)#tzctkqb3I;|vz&#^7-%)9NZ(*v1VMcGeWom^3I-EsMJ)@@~%GZa-m zXKZ&=m)z+Zyl~pKo0>^G4;yqs(<|gIm0HvJsON%m7i$IbLf-Jrv3a%9;MTrbT3>=F3uKh0hjsaf;_}$|j13t;i z0okJbjtpO1zo>rccZvtH1o)jnRKM#Nt$2?w{a_IXAYJbPlycOHcZqlX0z!`bJd6xL z$OHroObm>Sj10^`J_`c_7bB40TnXe#Gca(2IhhPV1q@tFEN!+7w#*D{AeBHhiI{4D zig*~NefYt|FzxpbP~@S6jq!gQ`-`R!TO~t110{Pq8%14R1y~3=gcK#_ z73U5{)-0I$ZZ_jW3wnrY* zo^>vJb!yu??&F_)u7B%&{wt1+k)MZ4a^L;@4j;DuQ_ChFtMOXCO5r!9y zc6TOwe(YhJp8v}9(DP~A9y3_%wd{Z1o_YM=r!Z-SsmnU9)86@6+97tFt4!_jKI6`1|)a8{co!Hmtd4xvzIN_nN$AX-i`w z{7v@RJ&f_|TPJ8O_noatdKypEy7JFoOoh|=6zr8Ra_IS(b3RlFx!-z7_tn#L*DV{A zWy4%9=0z^=X5EO4Bz?fFO3^?iclbffgR4eW)&Cl{S^QjFD;T=xM|6&%$$h168>(Nx0y`aI`{If($!|+q4#!G zuYY+oQ%ml$d)?h<53+vrg&Ip$#d`2?8#+(e~-L* zam7+_U7zjlZ*TAHuKxdSF9U<(e{SEzl8lhbf>Z+o!~d*|46IBp!M-7;3=G2InR$*m zIZlbinaR%iDX9U8>8ZsGf~+B#xv9kpeyQaOLHW6fc|Z~8{L-S#)FO}=gCKKoWo}Y_ z4uc?zZ-|0xMM+U2gAfCUqP}ati@syP7Xg0vc*lTG@^V17D8D1a7uPSUU;3Tmfh+-j zXAsrz`b8_=<4ZqS!~saxdjO>zwc=gkUB7^kBR>x#0}}%i6EhPt12Y2?BaqF&$iTwD zzy%U-Gy)NNAVL9|U};^(>;@Fn017r&fMhfom{{6u8ElyuxEX*3Ffo*M7(y5wM!+n< z#4v;DJrh$?Dv;Gw1R~Oa1VaA|j`u(%j6kAEAEcP^Ju?FrTt83%D$l^p$jHD2RSH%Q XvKivKCU9m$i3KAz5l{wXV6X-N1zKQw literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-428BFB7A-6E88-4D12-9707-885C02A93A8E-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-428BFB7A-6E88-4D12-9707-885C02A93A8E-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f14817bb0b1701c37518f3626a2aba7061bfe02 GIT binary patch literal 6234 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%0D8`G}|cpB3jQfgQ$z=P7P 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 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-42AF2BFE-F8F1-4F96-A4E0-05D4FB5A7ee1.png b/source/elements/oneMKL/source/domains/equations/GUID-42AF2BFE-F8F1-4F96-A4E0-05D4FB5A7ee1.png new file mode 100644 index 0000000000000000000000000000000000000000..b985bb00631b587dba31372c62a69981c28029bc GIT binary patch literal 1707 zcmeAS@N?(olHy`uVBq!ia0vp^RX}Xc!3-q7IIc@!U|?nl@CkAK`t|Gf?c1xWK(g1a zU3>cU>G9*oXU?42+1a^b#R`6Yep_2xU0q!tAD`&x=dK&o-=n? z1AW3+666=m;PC858Zcu-db&7@Ye2iWkPWbXG1PaT;0P| zb-gM;E{^f;)RdpgYaG{gh&U9n=2xE1pQOR)|-@LP&W8Hhf&N=U|H_ca96uUB2Z{fi==H+@9gJ;}XV$-U> z_tLqB3E!?R?G9I5x#3N%ZcUQs&Vp@)vvx8paf~h!x#TNowLwrl;O5GQeTvrIuhNXY z?s;6(H8~Yi-RrZ?aO=iI*;9P1Z`Lf`xGtkIiK8b;;pqY%wyY92dDWvVyi7}2zuz}v z&h%b!byM``s;)PUorUY4bQpy$D7y7MkY&B60PD^s@xQ@FyZWd0zljTcyeFb_|6d#a z?~kV_Wvt3P?bemd?dfc(aZW)$EUS2(wsp}Nq zt=F>zxA^jJF_x(1m|ZD9O2Pa-T zX0)kJw@&?Jf4$hQfQlPQ2Afy?>bA9hI(gD*9)G`fnet^#*SID;>b}M>%a2jKpy`P4 z{*2qV8STm$`O0&Aw|cx)7~mEn0cw^oEH0nRC+I zoSGiycs_4k%~@&whvUq1!R2Yi%Y)xd`guX_^;_qJ(&{&x$~MIuX}@?diV!6zCU(Wi?kEWmSIJ{ww|NgwwyYoa2P5$-&uk+_= z+y7WyynRW{Pl{uQSBkRh?=$=R)wU}A{yDGxwZ>k9IiBDC8J5b6-Zv_+zbCqMf|k^# zb9puLtBPq$ZRC^7^^5L8FQLEqs{qHV>v~8nlg+bH0JOYNkm(oP>B$0 zPvjKk5F)jeoKHn4#1@m+`)|D0bN_H(_w~K*U%sE~dtG0a3*H_guPzS&03bLA8v+0z z0ou9UWF>cY5wm^@0FVT@IJw%ct*!BRyqTF93kwT6o!-&WQBY98=kvqD!dNU83WeJF zfB5jBkB<)=4tH{LQczIXQU0BO3H*N$2<@#C?l_USLckLNnAwj(003wnXJh3WJ+$ci zDd4^tG}rssc=Ye>BYL|*S1Q{Lesvyz=a4$+UEtQl^riWE9lNj3*7iz5lXu4V91O>ZRyL{|=Zbx&7pT+I}&>5woA-4GQ!Yt%;eGLck% zp$3YaIOGqd>6xATNhUkTL3h`xrj=2zPbul)mvd?$)5F-~gu~dGGm>R*pEz8eaHZPb znVud0-TH%nes8^b#lfxv&OdeHdl@Oev6DDCgFBQ$J^*t9yl^MJgn)Qa;*~QsPZo@< z)&dMGV*ILZSnLmt@e*I{t}e<^zh?7JAZq)T*^s<+Jv$tKD51M>(#e&MXAG zO<#1&(4HAA&m47ftie6-Jd^s4@dM7~aH<}oMtd8MZY7i3;rp0~Ln=9UaYg*k%w>qeb=(piZoKto?R%X;%^{LbHSV6ar5CQcEqaqouce;4LB? zs2≪C*_xh}j_?vy>Ex{8+_P$-s8&ZM-LkVi@zhZZ{`_b{KfFO3qU&H+eHD4*~7j z-hbn~F_fY_=!=#z{#5Mel#{PcX$iC=3UrZo1*%+$;Pm$PKHaq&+NFCcuyq^ZsFv8} z^deT{Bk)4B{tNpaq=<$+!Z&*jK2>YdmRn6TOW^VU3G0ebf=wP8 ziwU=gIvbg$(c<6sV}&P_Xs0J8Zw%7Lp|wa@5mCPex3qat?Sk|P5qs*O<TAX-&!Ru2ZU=(pBQXoaT^do|9iX z1b;q|;zb7T$ELP4-+otS1=@#PIWKU@FK~aO;I0v`O^{_nN~A+c16r-#=Ta(~?Hw9D z2smKbx5+xQz zraoE`$wgOskN6J@VW>BiCSw>m7`-1g*PrY0BHd7!`e6lb$@fZ~+=Wf;m6bUjnZW|y z>OZd}wf%tfs{nprG|MAXFzgl*8)pBP$(A!WA`mU}+d7>@3Fleu0UmmJtR=A|e~Wt4 zvAmw^x!v{pRFOC?cMY`)86&1_&U}+=Q)cRcondVBNq><$?BLT5VIAX{UK|6aFQT6t zQIO9Uu)DebEq_z%iwmRb=A3;<3PVfFbc3f?{Sb0A}z`BFJ0nd943cXs!_aAAdk)V zxs2$~jI8K&E&QDKs+)dqOrkT*Hx2ijE)_r$=XT9I9!29GHj#%ufJd^uOO3G64FhA46 z=i9DDA=fK5X|w?tI@l4gz6!PqWMJ5)0#5sTC2p80)Y!dD_?C{n(!J9?2x3f>2Rbf0 z{RPjM<pe`{OaDk1M+6NFdN-q2QZ^;;oL(9+0oEZ6End5BnHczZcN&f{< C&xZ&A literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-482EEED2-95DF-4AA3-A484-E2CC41F29ee2.png b/source/elements/oneMKL/source/domains/equations/GUID-482EEED2-95DF-4AA3-A484-E2CC41F29ee2.png new file mode 100644 index 0000000000000000000000000000000000000000..dd0491c687760bddbe1470aca6aa96ac1e778d6a GIT binary patch literal 2901 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 Ru;8DUV`J%ft=`-}>2E1|GxGod literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-4835D5B4-6232-45CD-9A49-0264F8B0DBF4-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-4835D5B4-6232-45CD-9A49-0264F8B0DBF4-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4d54db714e845c6fb507dc66a48223338efc127 GIT binary patch literal 920 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 C_tlR8 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee1.png b/source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee1.png new file mode 100644 index 0000000000000000000000000000000000000000..159240a3d22a24138b3e1ee54daa23f45d33fc6f GIT binary patch literal 1628 zcmeAS@N?(olHy`uVBq!ia0vp^yMb7igBeI3<$k-Gfq|JJz$e7@>({S9k*cby?c29M zefo68iWM_w&Ww(ZK7RaoXJ@Cat?jjI*Rr#-<>cgie0+3ub@}=Ef$B%WXb23C5Qx-X zng#R;V@Z%-FoVOh8)?9d!R6`V7*cWTZA53@Z37~snzuQIn??qP! zJe};S5&!Vq{8z6nD-~_?{#5_}w5agm%Cm2;K8sJbKQlIzsDCXs%Ib?T}Y>nSNva%!nfYeaHSE`paY;Z`|g{;Mm;$IN?(2>f$(o z=S)J&W}C2Fgg zzpweVBS+*)V&q}jptax9j|x_aX6nrHJGE}{2afwco@l9B)$vBl*KT^m)b0G@j%U*9 zrtOIv*7U7^vG!8${c=Ah@pI=N$?3d^{V-3R=Wg;%hBcAau10GoYy=7~b zp0Mmj)$d!M-m7>Jsk6rSQoh}clZE$>SoC?{d$eWdG3~3>MKvCC9efY$n5DRO`;{)G zycnK!Csa%mxdo&r+?JW{XTi8_1Z+98@2gZL~c4xEXv?GttovxT? zIE9Pt)vIr>la=K8Dk~!I+PDR5Z{0h8HOJC_8|qbFwd8)`)RFNBxwnyN>W@tRoZVqO zS)sAB_c8U)jtF?_nl)u>V7^-WX{9zL%Wq~avKF!eUu@Fdri)B!;|e=;^Wyvy$*=DV z?vHxRvf931f6bcL2Uo1ydC{bCowZ8lPvsSI-HmFUX?j*4bX6{DSH7-Vcl(ByMck|~ zlUS*1$3F}5U%a{GTP@%2Cfk*>)#`%Rtk}mNd+^A#rWNsW-+xTpt`}^(BVeJ=tAC|C zy0b2PufBFw;DPo`g-n)@0_8$aZq=&3>e}-6;pyVWS5E^rrsua@fB)xY%+C+J?A|}N gZTt1p{7(C=c#}}m2l>8-EJ2yw)78&qol`;+01WTI1^@s6 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee2.png b/source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee2.png new file mode 100644 index 0000000000000000000000000000000000000000..abc61e806cf1bb91d9ad91479a37e76be010fb8c GIT binary patch literal 1610 zcmeAS@N?(olHy`uVBq!ia0vp^TY*@XgBeKPK6F=tfq|JJz$e7@>({S9k*cby?c29M zefsqH@#8C2tcZ?|o;h=7XJ_ZNYu9{yd~9uPv$M110e>Lk){`P;6pVIqHeABtJ!tBdF zUB76Nc>mBXU#=Ff_h> zwL4b1)oO=uh`LPV*>!zQQgWh&iN-PGGua(=?=DvI%&?wx#-EWRK(+ip>2{rz^Hm!+ zy-5;!ky;dcg@@PlXKn3D4V%YY_kMP(o;>e6$Gzdxvq>){8Cc_g&sGpU`fc9Fxw>U} zcP&oLu1m{(q`Cc_;`M!Or5|r>m|~gfDHc?okSf2`<#{jv#`JT{3l`+%&j?=k(6~V) z<2<|Vvbi5suN|MU``**IgYI0Dclj|N-M!9e3Zukk$7O-f4@{d|?ZEbif~HT-3`K9y0cjh#Ack!Z2A|k za(?rd*{|2c91!L<4qQ~T?Bj2%1>(=-lpp7&yu;Z|Yp?o!Yq=RH}a5V{8A?Y3I2j zLPM_z89#|WE;oUV>zCfauqd{oFZ0TnDq_rwpECx`S6c4$nB%}U!3`^sZ#p_P znC;_3_t4!>?@oWSy4&3GldsHy@V8y(E}BhC+rEtd;B21Sh$8ND%n6Lo6~c84q?uh5 zYg2Y!>%OV@rD*3*ndaGo6(9MQI8D6rt37h_qRX$Rueo#hS@Apeviv_XZRUMKOHa<0 zS6{nM#bnmUxf{Ml+1k7f$mRW|bHrFUlmEv(L$=}{t<(PgeZBSQKW2vz%c7?*s+~bu N+tbz0Wt~$(695Kus)qmo literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee3.png b/source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee3.png new file mode 100644 index 0000000000000000000000000000000000000000..6ca5e88f77cf028f672fed19cb901a0674deb9f8 GIT binary patch literal 1791 zcmeAS@N?(olHy`uVBq!ia0vp^yMS1hgBeI_oot)Rz`)E9;1lBd_3KxlNL5wU_U+rB zK7D%p`0<%DXGTXyU%Pg#v$J!>iWS+}*|xT}K0ZEja&o%5y8Qh7K=q?wGz5l62t-BP z?*aORu_VYZn8D%MjWl4!SnKKH7*cWTZA53^Vk?21+i#gU6#xI9KDqnw^=-T=Jcm=Z z%zm+V&6a6w6FIl7K7IA7FT=my|8*PeXDA=qyu0YXeQR{b_Jq0r56Yy}>wbB0kICxa zKau46sL7w-*+%jgwuTsAo6@bLx3*U9dgI%lrx#!SWc+E_GnTr>xto`NjxgV2wc*v( z3+3AT14{yP{(HR$T7J55=5?-T-eo*5*W2yga!cj@cHJBD4Ia;I6CP~N@0dNU@WzaV z>*m{UPiDGuJoN4%g+)A{4|BcbQ{Fv$vS828FIzh&ea%$QOyYTahAol(<>e)sGU_3} zf==Y6#je=IwzGS?kmgOBM`0W8E?fP$vbDy1!Im4dG$(g&$>#9(<#~Q#(v2x;&-bac z&Nwvha8OpLtHML2&P&o{TjL=y?<-4S{DGa;u^CafIQLFTWS{7Hd%0LjYJARq z6JF(KirW{MXI{OnEbM)D(%L!8ekw`K=Pp<@Rdjp$shTpOg$a+p^WH6tNeepa?r7ej zqntTO^v!Gk%&3iqLYkL+s*`KIrIaqd_>wR}L<}PM_JU2_ou6T*>m6NGuXIbXTelCg%x8}+h3+I>}xohIrEaUn1zrRe~v|-s1 z?LR7K?=C74+KNtud(Wnj-W}G6oJ1+IbQ`Sl5(;wD+IoiyYu%UiCfs^)YeHLe>=V z1Izz*`u|^Rn|wF@&6?Y8aduj@T_uWlJ?|JNWwbF(==fyGwkKxthgg2^C!5%Gva|i> zJyU+UwB$_po8w|S_E%Wym#?1C%5k63;i{S8><{6rH=mfio%@sNOUXrpc}eVZ%Q)WD zCB5^~do9}T7iY34K<<}U)2Z1FYu07@y0^$rey#St=fKJ@bLL1in)z^es|#(E&t{c> zWNtg1w|RNe(cfR03r$W&&U)D~(_xw($Gt=^v)Bu4z=O`^lHGd^4y#@^tlcS?83{1OVRe3i|*6 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee4.png b/source/elements/oneMKL/source/domains/equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee4.png new file mode 100644 index 0000000000000000000000000000000000000000..7b2111b11dd21d037d92d64800448d42b56e2a07 GIT binary patch literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^lYm&2gBeK9%W^1WU|?nl@CkAK`t_@=t?kpNPq%O1 zUR70f{P^)}*RDlJN3U41LRVMU$H!;p%$eEQ*`1x8K#lzT{Bm+~K*lH-4T0ei0*^JT z%7H#%ED7=pW^j0RBaMN9sm9aAF{I+w)9}~R7Ax?yDR4wt|NfW1b9w3Bg4qpzx$c?a z-*=Rrf5xw=@?)Yt=adP}Tscv#_BX$@#!rnBz1jc8>YUTch@$L++mFAPV$(n2dB^W5 zAA}10oRviHOR0LsWNp1(Sdj5Kc2W5Id2eIWXDciW7vIm__2q))4{W1) ze;Ot&&fLbCZu*f|Yui1KmHdydBFH_E`s=G>hCar_SBFLbvN+exdLqwF_<2yI*+E z>QC36VSez#vW0tHQ*J%mx_z@o=Od-VeT(M4mE6N|!do%z?ZV`z0v`@6P^;X=u(Z4cTN8y_StuG+@E7&(!!yaV$Qrh$6P3%c;Z~qr4P}5r^P##%zIvPNju&A zLRvu7`;3VXW>$)JpYe&Z*thMGrc&bcPj(NF##*22UiqvfJtR# zaJA{xeG|g&75>ZWXmxh&e0+E1I(IF$Wrr5emC^LN@$Tol2{%rOJy`hB{gH2t%)0ey l^-mveP@CSu?)T68C(FdR<84Q5pNN36m#3?r%Q~loCIIkYbRPf! literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-5159E8DD-25FF-473A-86AA-1E71FFCD018C-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-5159E8DD-25FF-473A-86AA-1E71FFCD018C-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b7f737c660a037875a53eaf9debc131afadce793 GIT binary patch literal 3086 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 RSMhtfB_sfo_lM{c{{*E4b$tK; literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-5193801D-8E3B-43A2-989E-09A8431FD34E-low.png b/source/elements/oneMKL/source/domains/equations/GUID-5193801D-8E3B-43A2-989E-09A8431FD34E-low.png new file mode 100644 index 0000000000000000000000000000000000000000..2a64154c27373fb4a0f28c35d2e4a22be9edc0d0 GIT binary patch literal 16158 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 JrMy}A{{f@}nZ5u3 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-51FA6703-70D8-4D01-B7AB-A163F4CDFC94-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-51FA6703-70D8-4D01-B7AB-A163F4CDFC94-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32656a1770ad48433ad15b875284326a966ec91e GIT binary patch literal 2566 zcmbW1c|6ox8^F)_&1SNVZR|sg22GY*k$t(A;r3p9Uq&`-kC>$ z2|&UTNCX^-L?BTpBpM@t!Eke9g!%Y+1aQJ)VmM(@Q3+`RUP4k{N>o&KudKY{9wlWZ zaXd+lL{uXXm54h@U?>y{gT@G9FhWELQ3>MT7WTgY77e7p8wj==aA9E(7RK%bcmQAs z4(|@~e+0$_aqf#kb7OXK0vZGW7Yu^9;1B`VDkwjihv29kE*KYuqYxI3kW)tr8rh&cf`xW##G-|bGm2{3xaEJbT@vv;(}xjN*gr}5 zx`Xxy+0TJp{J+Tl0{br)6YxMV&gVf`U;w_e0gm;_YN@KS*ncCwwT#eBk3b~zBTB^V zW_|5QN}XP`L)KkiU-TcUs(4U2{bg$)ZBuG>;z#+hN<)OOjUhs0Wuo0Rq+4HUVE;?; z=zxzH#&yQE^2kcZoGvMzZR`4^Uh~c5tfSbiATy$a-?>pA;kL*(e?N1;3NLi*=t#r!!GZ3I z0q5H}UKHi!l+N|!U4qD|4%rR+avwH8r^Saw`gKI94^~G{}Z|no@RybRklo}&`r9V$-p;h*ZLI8 zImhUB)39=v-`C8&c0a5)9jno(!IqW;1o@b&?$;rJRbJ;#f#Vx53jHh4bov3DbD&jY zmd9f1l&p^y)6s!=#zf%h*&DHIl~1A!Ms6qQW87T*srD^>i*(f!L8=OY%^o?f-6jb+ zErObAGlf~Sk6q`7fUtwXwBz>6vR~PN=`?;LH)bU?(qN$uPiwU;`0dTH&Bjziaq+g< z&>QAamA-{bSzCsMp*^~l)x77dANA@xMBm#tq_-=`g(p9?9`@0WR`n@;ZrfO|pzK_5 zaFdA$E&u8%k7N}s85c(d(66CtYXLGUO@SXP!tTQ;k?^Ap@5eS?vbu-U$&e(KvpfjM_a9o2+ZqC+ozI8y?AiOZ{MAn;H%&N zVF4x20H@++H%9pMcKjF4p?4e6+a^^NF&LE(ExeqvB)r}_SMkxQD&u6xG6TwV4$?4e}4#No!8^5f}Uq%BQNx*wJ1IF+inoUbEd zOC}r%a?9Bo3A-RYb#%+Yota&DieY&wlbh*%HrsS>ZHz$eg1sa}l}l>ID?W}EsjYG2 zV@*t_mX(gp+l@4Eg}#cXZ=twPlQ$?5{UGisY!RzszJJ;! zX~Ul+O<-UHG}RPr>oOOsVC06DgDkCs%A&ct7JDzT>P%>vLAbr)h5;^MI(lg0~-huobnWO5NfO3^_IFs;q)u zbRnzrE$hbd@U&#Uk$UF`Da1Z`X=MsdbK+9QuS`Z1q5~L|*XIwH#NKx6q9_P8)SP@G z^h7d2(9FoCYEXUMJzApb?l}6@`=w+VvG8hYB9~b9*a1nJqOQjJi7CSc8L^aP%V|gq zk|qhmdcv=EgnXhLlNk^U{N#$axX&2$Y1*`*w1ktF=_A3u!A*Npzx){Ne(%}$ZI#oQ zcbc=`r}L(bbphGmGu_N3n$jh8-qP{1*k_&dooB-LNb_ll6qy1~mRpC!DJto3RodE2 zBRZqh0k<+*Y7rBEw6m%Wpu}84WiCk``7@zZRngK)`}Krm`U8iEVrQ%Bkp=ZJ!HIK5 znBH7w?*oqQ{71U7Sbgh*qTHacQ4>sov5p+&j_1bP*-ei=v%!~8ENL6)_{v(#1$%! zF+}|&FZL|5!Psv>z9hVxDe&B Nw_+O5XNYIN{Wm#lc-a5| literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-5F24679E-82BB-4ECB-AC87-02FC7CF3C77F-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-5F24679E-82BB-4ECB-AC87-02FC7CF3C77F-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d94da88bab73b17ed44507a0b3f3db2976dcc2d8 GIT binary patch literal 2604 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 U5ce-{zXZzXp00i_>zopr0OFsfmjD0& literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee4.png b/source/elements/oneMKL/source/domains/equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee4.png new file mode 100644 index 0000000000000000000000000000000000000000..00cf06979d20f563dc6add404b542d712dfcb1cd GIT binary patch literal 1656 zcmeAS@N?(olHy`uVBq!ia0vp^RX}XX!3-qNd7l?yU|?nl@CkAK`t_@=t?l;h+n+vt z3Q|;6b^Q48YuB#LoH;W(I(o&56+S*bot>Th{QTM3*>ZAny1KeRWuss;1cpZlv`RRa z1AW3+666=m;PC858Zcw1dAc};RNQ(Sal34>0ne28W;2%j|37`Vrf`6fx_G)g*w>0*atg<^~x%*i->%D)T zm#USwXqv|vGbRIhFDU*2re(<`PVMaDzckkm3S+M%)t)^XRf2tRBaPyr$VSn>NgkO#S z_dlH%IQTM|bAqBWkGSsYHfFrZ?sTF&pQUom(gPQQIQ-PHWs$4W{v`r| ztVhqU%(F1eFgyE^8iZ?W!Y zLoNB0Kd$YJb6tP^Pu{lVPbYWuoW1gTv-`J`H|EtcopwD{Xk%a}3n~aaUHx3vIVCg! E090DE5C8xG literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee5.png b/source/elements/oneMKL/source/domains/equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee5.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5f4e31bec205752e1b4c5840a75be2d314e1a6 GIT binary patch literal 1530 zcmeAS@N?(olHy`uVBq!ia0vp^c|fes!3-o#8~K4GGedw+i0jv{U#qIBwr}4K6tT6n zefsq2@#DvJb#-UXoXOA6f9=|}?Ck6nD^^5DNBj8r$jQldc6I_)j)Kt;7#<D z&?k%~L4Lsu4$p3+F)%Q#@N{tuskrqvB76EG10LVY>;V@({{MfrFl5D++w4i24=yZz z{BGvvnhyoO897zO!Yn_|ir;+_>bP_spDM@o+cr0|zqPU4pM7RefkmPI^}3v-js(9Q zlLUp+X9(|$_W657;BZgDp7}C~XZ2^zo3%4OX~uz`0`ae*;7lu8@%H(18{5uAuI;%(&b5;|w4|mK-j4~se?-8U>3_-Hzk3T> z|4;dsA}6`*LZM%m@|Qi#2cr`zZi%g9FYnWRkF zm@lbw&RaFXyYlo>mB(9eyiW<>*?Da9Y{jq6`{zg;lF6`qB7OYz(YIH1ml(Wx#PfH; zKl#owjwN6_%5(_gsH%euL*~NN~;Z440hAAF{dr@||^g zxOpsOi#<- z%1ke>Z%LCpW~<0nohF@;?owth{=h2#^H!ega#r8=EnWR*<2CJD;vKF#uF34-E8lRs za{uQL!+BmDRt8#)!H4=oGXJj0cy9N%{zLcr1#7>qRaY(es`xVVYI?i&A7l4zJmL5M zM%#bCdh?-;`33Lh3Bo(RT}u)VzZBSNcKnaH-lv1PSARWR*7dN)`{8X{TZ@mD5%qgK zOU_9L9GAHGZQFuf{RvSwtywR18tuNsXR@uMxh*a8+4{eWn-^8si5&lXZIbfS&kx_^ d{CgI2NdCg*N9(S9@c#$Oik_~1F6*2UngCNphW-Em literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee1.png b/source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee1.png new file mode 100644 index 0000000000000000000000000000000000000000..96492de34dc55efcc652d35161284b297d1f4227 GIT binary patch literal 1414 zcmeAS@N?(olHy`uVBq!ia0vp^VL)ue!3-onzP;1Qz`)E9;1lBd_3PKFs;ceVw?BRQ zG&(x^+O=!Pk00;s?6kGD<>%+0IdkTU6)S*Rbai#*F!SEt`BT5KTT8oid4Jtp|`|N5Cz=1OegRoF0r zrP1W$;SUKK2X{`Z3g&)bDxO?w7-n21bX?o`=#Iqei#J98Nd5Zybl^>1nfT-=!8{?| ze8#D-J+xT$p6&khtf?(9efq=6Yp!{9UJJM$^T7Xh*|tyWJu@F(OyznbslK#gO72{q zgFcgeKQ7NX>NsykP8)mVQRyAgCs*5rnH*$bl~ZzjxSWx94Qr^N()J^VbN0S$KD_(h zblGD2>AD{cZvXy}{Psmalb~13lg8Nh&orCE$`-t0UvN#jLa+Mn>@~-vWhYeU z7-oO?wU|u0U7zmfgvhzC=5Kyyp1M3^s-J9eS5i_%+WqS+B?q(EjHFY3BPqe?k z{_OpH-u8uA&tLl#>MdKa?c1Z@?$3{jAIjMkQ2pW8%X7Rkn~x})D`@s*Zt(OHjX!9Z z`_E?YRqqe2XRJSPz0~z+O5WA;&S&$61L7y6n@wwjf?S1b6o0p}`Bmr~Tr6nuZDL1$ z$o!>0O0okC^V{DZ2sGiYnN%vucQ`=vQV4gc9|^$2>fvOQo< z<`?k_tF!Z)e;tT5Q16ruwtN(&Wis`OTMonSN|AyPzWM z<)@iaFruHFOU6;JOjyle&n;mqS z|CyX&V3Q4BzC+*pDIGUw-}bBM*SvPnx<}FQ0v`^6k)(FFxjn{Phoi(3m0ZqVmy1bDyEE|8|!Rhjx~vgzwOas5pG; zO|6oJ#&6$k7xo^Fy1C{1GZmgmF$#MQN4;%2^^WO{hqKtF!qjXPZhCvq*1j^(@MYZ-eWt>y zQ0kH4?yeVyO5f@)libSlK|AVEkklKkWyhSY%Ov(2C~I)qJzHePW;easRP(wh|4!eQ zjk*p-*|T~gdo1r?eSPY&&apXy7v6O0&h=Y2Yx}%}J(oMLSaa=Ud^}TojYXT&{=SW~ zzRg*){nwt7t!I<>*lp(I+HJF2$EWEje*x`Q`b~CfOw($qiq7Bxw2Z^V$ZAdtQr}hb$>q%)MRpGU~bXmj{`*H2gN+ z2rE~OdiSy`g8yo`fIuvB*}4XwjUjITEAsB`tlP$5+tayh3y;rq-v2_oFXd_r8me*J1|YrB2>cA)t2 zuCucfsB#pHhQRO$fh|8A zjstzdSQ6wH%;50sMj9|UhE&{o8gV;mm4U#Wvr{>;{{PoLpSe}4$eJ^#gH@m7 zN6|M&?jt-W&!wbuf7s9dsO+Cg^bz%oVpW-+uGvPh`<`OGup{7SXlqkHulB`FH#7b? zTTYKH5?gm+w?$aNoT>M|EnRuy-CO0Py2bsm8(F;lDziG+4eD}EKiL>DOO>l6YOPvw z@v-YkMV?!XZ~TZnocBW`WY$|I*+hZ4lgwQ%T|A=L^5gRa;pM!I_ZX!c@Pr2(IOg)}h^$_>ia=k<;RCpycbAB6_R+e%eD)S8ujXaTXFHiWoIQ8!;G@!M7X;FODDl`Wk+WNqljJpj`QwIM8Cxm@-Yvdh8-682 zNN%mKk@ z@9XCEN@jaz9+_m#R^O`kzwcl?<683{IsV^$W!K3~yyAT7)4IEVG-K=1KRDJ3PyaXH z;p4H?6Eau=Sw+$AaX;vW8a;*UdCL>&NTGYJSqPZ%S8FyoklkhkJz%-I^*o;k)3y zL$@!4==@k3bynkVQgrgI;N#nMPwe@!{`Jm#lIQ2D{#JOlouez{hsyL5H73s<%Cq-; U5ce-{zXZzXp00i_>zopr0OFsfmjD0& literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee4.png b/source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee4.png new file mode 100644 index 0000000000000000000000000000000000000000..00cf06979d20f563dc6add404b542d712dfcb1cd GIT binary patch literal 1656 zcmeAS@N?(olHy`uVBq!ia0vp^RX}XX!3-qNd7l?yU|?nl@CkAK`t_@=t?l;h+n+vt z3Q|;6b^Q48YuB#LoH;W(I(o&56+S*bot>Th{QTM3*>ZAny1KeRWuss;1cpZlv`RRa z1AW3+666=m;PC858Zcw1dAc};RNQ(Sal34>0ne28W;2%j|37`Vrf`6fx_G)g*w>0*atg<^~x%*i->%D)T zm#USwXqv|vGbRIhFDU*2re(<`PVMaDzckkm3S+M%)t)^XRf2tRBaPyr$VSn>NgkO#S z_dlH%IQTM|bAqBWkGSsYHfFrZ?sTF&pQUom(gPQQIQ-PHWs$4W{v`r| ztVhqU%(F1eFgyE^8iZ?W!Y zLoNB0Kd$YJb6tP^Pu{lVPbYWuoW1gTv-`J`H|EtcopwD{Xk%a}3n~aaUHx3vIVCg! E090DE5C8xG literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee5.png b/source/elements/oneMKL/source/domains/equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee5.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5f4e31bec205752e1b4c5840a75be2d314e1a6 GIT binary patch literal 1530 zcmeAS@N?(olHy`uVBq!ia0vp^c|fes!3-o#8~K4GGedw+i0jv{U#qIBwr}4K6tT6n zefsq2@#DvJb#-UXoXOA6f9=|}?Ck6nD^^5DNBj8r$jQldc6I_)j)Kt;7#<D z&?k%~L4Lsu4$p3+F)%Q#@N{tuskrqvB76EG10LVY>;V@({{MfrFl5D++w4i24=yZz z{BGvvnhyoO897zO!Yn_|ir;+_>bP_spDM@o+cr0|zqPU4pM7RefkmPI^}3v-js(9Q zlLUp+X9(|$_W657;BZgDp7}C~XZ2^zo3%4OX~uz`0`ae*;7lu8@%H(18{5uAuI;%(&b5;|w4|mK-j4~se?-8U>3_-Hzk3T> z|4;dsA}6`*LZM%m@|Qi#2cr`zZi%g9FYnWRkF zm@lbw&RaFXyYlo>mB(9eyiW<>*?Da9Y{jq6`{zg;lF6`qB7OYz(YIH1ml(Wx#PfH; zKl#owjwN6_%5(_gsH%euL*~NN~;Z440hAAF{dr@||^g zxOpsOi#<- z%1ke>Z%LCpW~<0nohF@;?owth{=h2#^H!ega#r8=EnWR*<2CJD;vKF#uF34-E8lRs za{uQL!+BmDRt8#)!H4=oGXJj0cy9N%{zLcr1#7>qRaY(es`xVVYI?i&A7l4zJmL5M zM%#bCdh?-;`33Lh3Bo(RT}u)VzZBSNcKnaH-lv1PSARWR*7dN)`{8X{TZ@mD5%qgK zOU_9L9GAHGZQFuf{RvSwtywR18tuNsXR@uMxh*a8+4{eWn-^8si5&lXZIbfS&kx_^ d{CgI2NdCg*N9(S9@c#$Oik_~1F6*2UngCNphW-Em literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-684BB993-83CA-4605-BD49-E493806C1ee1.png b/source/elements/oneMKL/source/domains/equations/GUID-684BB993-83CA-4605-BD49-E493806C1ee1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c745c1a2b9dbbb395b5f75736ee8cbf507bd6e6 GIT binary patch literal 2727 zcmeHJ`9Bj51D+!ZW0Z2AA?D82%f`Yhxi?)qYmxVShnnGAtImY0|RxFaJY1OkDhyYluFfjnYNjF<7m}|`Jchsr!nr<;t zN^{Z}hf@Uc1FPPMMS?s*#IqZ{6Hiy9Ulwb+Hab=`S|#P(U6MbSTeF#`^q1;|ewKSK z%qXsHeU)2cEIpAQT=>sRz^sIUo^hd_e z0Y<}U+yJt9h?ik`L9Jtm$)RpTv;69g57Zu1c9wQc#=rXonI5OA2k5nU^&v#<%N{B= z?iK%zVw4aGEIYpPp4(DwjACC73-$eo`Wp{o( z>NC&h3Bp!8RrRUNbF|o~;n*B5LtX5xBkx73h>P+wjI~~oC6mSs4Er1b{`FfR7Nose zq?~oLNqK2Q@T5uqb0$WG7I|$BkD3m|t;aFgI4jCV06lgX<#}Lk<<2h-N z`+nv-SWPD(==Z(l1-5AEOl@?LG?|%az-S~^DfwUI50{&dE5hIzGa9nLNj6e}mn(<* zNbu2PHPz`m3ftIQA_pvW+s`Y2NY{H(!B5`Y{b^Tz3E#ilg^S2>-9MSlkqVA|yd2I( ze6r>*+lp~`SYgBaj!T)JNPPcXEn#XCAVXJ6cGA~HaSW`#ge~@T%~Uj6%kY59j;0HD zENfOO%XAm4Pc?h0NZ=xOoRA8VROt^}t|pmoAH*4aJUWg_t#JoRT>Gn)J}2I&m@E*j zEDC#JL2`Vf-4U<-CDHj!bz>}vK8uIGJXCGlmRy3IB2L;{kIvdn@;p~y+>*rOQ?V_I3FLf~ z2)Z`|2i`7^n1;nyIP9!6KXtxXuxBLW^=~g_aS2b48lG1FYjOh!eTxd6ey8FXIO_8! zagRKkd35`iYdV^@qhL-8lCX5czkR=8Q^FZ?kNi>_aB1V+CSMyi5y<3V>V3n*ucdBZ zqoxzTqqz@d?G>f%<`ov#t$d~BDcq9tv9z!X=eHlGqto44mA2vg+GzhatwDo~JOvm1 zTiobZ5F1Hvkl??X5f;50)PW;m-6E3Vp_l;9=K^8l*z=>1(`ibSKy+~alg!rW4bfAQ zARw$Qn92>Fuu;P~ZZxpt*_LMrOHMw&%erK2hzNe0$S`9}@*JfDiVdMvK9*b~xxT}e zbl!Z0Q~H~e%Jtj#EqI&9F7g@6$OO+{Tr*yGwXxTI-zI6c{&BR8^ES9ONkdsgjEiq5 zOSWe2W%V^9ax`qozD1hpFqD2H9oFw}!5z}$BGoom$-RmgbWM?KmO33LV2csW_TgWN z2;HyW6EL_g{ozN&PfkdBgp79CEx@lU6p5qpO8breh@6CO& zGRn^wBi&8(pN^*+eB=dYQcYTvklm+r7yL z0dzgyw|g3a9l;(cSF)Z^rfKW3+{i{i;;g!=%gdp{^YJ(TDv?<~dvv*3Pcja(Eo?xD z#Dhw>PJ+~?Iz1k^>oNVuoW_3a1joFP^$A#pum-b)xbeoRKx}~zOMmQ^O6b+o51j13 z-7BYe7XE-mmson^g#y3Dh!55+mo0$yD~2>mdxS=1{Bo5Al{}|2847Fqp+&Qb1U}MR zEthWiuh&4HevsCg_xz^;`3JfgBIg;kG2rvnE)DC0bd9MN+R9Ywsm*MM%LLZ}qNXJ1 z&9m}|b08!+qr~1UzbcKNiF1Q-Dv! zjtpmFy$s47PlT}w=E&|(vm}t(Tju9Em4u8R6RDGYXUd_eVgF4}_4AOfP zzgAO7$n4^|pX-N~OlaFqUI|@zRRL7`Dsk@Al|z!< zpHR%nJAkqe>o>APo@jbgNp!2;wu5oEP7=Iec#Z5<<+VQoXC){2!^deS+jHf&OB2`J ztrJf9=&hUPf*`$Pnd6I9Ete0W`W@n?T-KZ4Yt;fRxOv&$^Qj3 C_tlR8 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-6ABD7CD8-8E05-409D-B84F-9B88E4CDE9DB-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-6ABD7CD8-8E05-409D-B84F-9B88E4CDE9DB-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..386e8d1a40c0fbb7f82105a45c8a62b4c5ef7607 GIT binary patch literal 745 zcmZ?wbhEHbe8?cf@PUEh|Ns9C3=BFz%m5N$VEW(Ezw-23{>5{)-0I$ZZ_jW3wnrY* zo^>vJb!ywY*(^l@7fpNgH|KtsFn{9S3Mcjtg)XASdz}q4ue^ylJ)c!;7UPCBS)X@( zTy})VXp*(l>OIdkhs#UEncsFrMfLK=AITN?WG;_?1=X5 zM5!L@bRVA7>8goUr`%Vp$+;fc#;H43h3#kW)oZ+$xHamkWp~$}ab!C;?ynO3TX3=X;4LfLUKJHl7;?{9m zL(j%?;zC#N-UuNX%M%Zlc&f-B{PSSbHJ?iT!wZu?t?PGK;PvmtCH9gGuSJ$q^mI>} zBp+B2_}O)#l$+GGRl*bU{&JbExv??j^eo$Mv$eOj=G@*@%Wb~y4ikgoe{SEzl8lhb zf>Z+o!~d*|46IBp!M-7;3=G2InR$*mIZlbinaR%iDX9U8>8ZsGf~+B#xv9kpeyQaO zLHW6fc|Z~8{L-S#)FO}=gCKKoWo}Y_4uc?zZ-|0xMM+U2gAfCUqP}ati@syP7Xg0v zc*lTG@^V17D8D1a7uPSUU;3Tmfh+-jXAsrz`b8_=<4ZqS!~saxdjO>zwc=gkUB7^k zBR>x#0}}%i6EhPt12Y2?BaqF&$iTwDzy%U-Gz1ZPAVL9^NCk0=KtvjdNCpuaK%%(< z#L{G7vS(?tWw2#p=l~kQ(k7&&%fv8)={-;mO(%*bh>|97%0&rIBQ`EjYGz=t1_1L* B5(fYP literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-6F53C93C-0634-4E53-8874-5ACBD4C9AA3E-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-6F53C93C-0634-4E53-8874-5ACBD4C9AA3E-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..70bf0d73301904d3880eb902af976a0249c0d0d0 GIT binary patch literal 2073 zcmbtVX;72b8a_$b5yRSI*drjD0=8f%K?z|K!=iu@q++5Gf@}t43!4FBSVJu$sGxvs zWh+EkET||^Gy*Lx$UcC`A_^9f2mAEFj0Ncc z+z-45Kp+qR0F0my2oV4mB(p1c?~uhe?hK}JMq553nG=pVQz@lyo;S=(KV2leT+WzY z?c#4Bw@F=UFZ!EhD+Yg7`av?oiOs9{nA#c8sH}T+d_96YS-+xSPVCMx`z*uO=sDep zB|n(s6Ib^cH?~jufsRO)zirdqPg7?7zvp5OR_q*bpjmK~BPzTkQG<*6c21;RME}Z3 zgEyQ5{zrWugU;V(lu0Kab2*$MnqWA>WN5YF^aQXc^%MQbvI^Rdh>lsCE zV^m*~FtjO*!mCzz3LeP%U-LKB)=4-2-aAe2aF){r+2f36>m#=bTBg+8?1z`}bibI$fBH-RNQp<@;@OzLNTn9{R1>SDa(?p6KLJz!&M?re ztClq6J+7$8?WDVp47Sc>jb%3<>|bWlBS&kF;AfXr#WBCu+NT_PFB5@rbm4mJD09n; zl$qkdME9G2yV5?zsn<0&>C2^k!z;21h|7OFJ9fr(ts!EhWJ$I6?_-vIVk$bsu`+3X zH9b1A@o0T?@rTZU*E3h!cq>}%lIh`hdT~USv_79d-<5~cs8h3Co_I?=>xw*Ze{H2B zkjHi4`LBdb+c^r9YE+{^aMrbRyQ+V`VkS1;;A^&ydn}a%lXKAW;%HvYJ6DQP@Jw3k zT)v+CvboQP{te2!AVO?=Q*W|SOm3EW&-&hxGsUkb22%gH9W`jakH#O3z{s6OrSDXW zyhYb5C@T8N<@rTzmmkbUwUe<^A17T^n%y)n5XcwRGqq0WlXA%IWsh@N^N%hjPv^PIA4A8`=G`g&KC1(#;)fs3GQDu;y~;0d zOwv?tuTgU}2`{|7wQpobOce$1Igh$^$fYfE+VfgbTUk+AJnDEJo{af}QEH#<@079p zY>dUPI9D##BuL*e7xthAm0w>yAL9}l5s2BH&8>bKP|!1LfUGC#_>vf++zrZ3oYl+P;?E5xn`dhPBi#Y*qfPs*R2?1~6ex{f zEK}1ROb{$jIWk>i$YBN@Cqag|f}DOntUPbSq5t6C^JE!L!&xl_R(hF-eyq|m!u^pcUStkM;h zU5l~Wo-`kVt#eI3*Tja9e)@)_GLL27lW&?4IDA22Na88x`MJ#Ss$#VT)>G_!EdW{q zX=hTnzejW^#l*x^APNJba9ek04>JH1h}2+QV4w{tjCu+ma+=~s@}qxnAn}{{ECOASA&cN5!*KSETaL8>i z00(e50*(L(0Ea;_fB_Kzq+mb-4u^vTdk9y70cj|QL3un0QZS65DWwjv8A(9*P^lmtuK@qAprJ+zC7&QLn{!I`- z8VE6v1c|mb2`y~OHhV%Z703~G%+Uu>1yuk!6?PGct3yCKp`riKn|9$K7ryYt1cTD8 z@)R^@^Msonzml;`gjR(I|BCqEY4MjmzH0e@q+3q00K4T>cyhY%5`@;aE=Yu_jxK@X fP0fGhB1}VI2*E-UF!l&v`Y(Rjy<(df0G9s%Fpo(c literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-6FB20CE7-1E2A-4340-995F-0E621DEF0E2D-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-6FB20CE7-1E2A-4340-995F-0E621DEF0E2D-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a70fd70888bd6d56d5cf374273c0a62a46b73bd6 GIT binary patch literal 1989 zcmbW!2T)Vl8VB%m(~EB*^rj#XO;8_*hz&(#gLDCf0165sYfz+j1VjaiEYg;JMppV- zfY4dm1JOVb(WOL6;sT)yC_!Nj5XgpoZ}!c+*_l_qJO6XPIp>=@_cup8C>{mUmSz@a z0D>S8E_r~M4~|p9Y2E->Sm*!@000hvJpw?IZnI$a5I{-Z`jWsU{qOtFH#P@>SS;RL zdB7B)5J(gffkGisXfz6glg8n&Se)EfQd^`I<&=~Zs(j$_{q|J{&Xfzs!!O7xqvLqD+71IA);%9(>0sFvpIHU<+1PD%m#4Ml= z0ECoyH_87j2nLt@FB*fz;Uxn#(f|g*;V=Xoi9{eI)7K^E06{>?Y~O2wlC}3hYX->a z-$={DXq~8Nm3Qb7Xz%k3jK|^>6qS@!h&y(Y$T|l54G$bVblCK3irGnX3(M1I9G$4n zF0L27E_r`*ndTD|91{OMt(tI(T|TFKY3bNRb5m2 zQ(b+-^B1hPc6P_h&fY%G+x~&UAufMxd}4BHdglG?;-}9`%fEgRuB>jlAOQad>krw# zxd;*$41s_n(3>s@7A6UtfIx2Fi;^+1M|%XwYU$el>bt7ye)?Q;;wdj|I46toTa z#Kle8@3Q|67XN?A{($|<#RXg7kmT~<1YitSf25OgVSkdZ;H(iP5yUTbvN=FqBv!h! z)3p65M0Qpy{kw}QwgZ^0z zk|KA~HM@07V^nAl6(}5;SsTk;bJ0h;Dm9=~XtL?s&#+6KIo}(3Hw{=b@Ww-`6pn#! zEVX<7YU(>T3k*Iea4by9Pc10}6ETR)K>LjQYn10o70i?|HgG~Ji~A_KtmUVsD`W3H z1q*|1U00qO)P6b8Wi*t#C(EHCK(-w(WBZ{KW4Y=OhnqO27CtPcC^}rZ=sQ868TJ+S zTBg54nahy3;tg(*+NCSBx5Oxyy7|3uI{do#ocpO_wq|ZJ{;2D0j~>>j&_O5TQ4KaoAI{{15I9bplzZS z`<^Y*(%hWgM|^_b8QF84xr3d5)!mZPVU(G6x(h1sH$R9Boer>z6a#EHlg(=3O1H|t z&MJCj?Yj^>*LJ3^_S#ct@&(6%DXN2GqG>CISx*#;97{hGlP=CBy^wIe)t4aN?}@ay}fAI5H2`{!4I zH#}RHJ9ZZQ<7#oCHJ!q{Z6kxjM+Em0HeO7}`mI;3YrW=8L=dpYKK3<+25>G8H=Jz@ zZm3}lpVndP8(j5FEAYp(a%WA+OB(TqZ@TXvHwN2<6@vFA1&i9NK4Nfry>@QRb@hDJ z20yxGMA;%S$Sb;}u|aJqSIVcPOiq|+C1BnTDVZBM@73p9yHXY5yW^KGLX0CK=YHI1 z*ppxzO`cgzRMa8e!f&%XY$oRi{L%q`GW5bhHF(M+HO9}2Wl1f3`QH5I4Oahhj=qP~ z&{EW?YU_HZBb^f-G3UPF+;aubgtT!R-FC)8(zR-J`Pi%PE7l)$R&2bv5<4#{My-#N z^jDIL>euSnkqdLrj>!pYR|neNiB0{Yzl?`)nygAmDJx3}<{p)H6};Uedf3S)zFp9G zy6fLJ;&8ii1S1Kt<;!k9YioXIIkDAKpPPSv?6%U)jeZk)yiQedy8RHJ+FSc^EaHPV zojh5a{%X{}sVrkQ4qIW8C_!BHBU6eh2Bquac zq`BI%E)}CK1}!RKVxZY02AJkDF)$rTGG1u^K@2*oA;p``TW7Y(4lJ+x*(SJz`1;IR zJ-AyOuiSlPVeiQ}Lv~|!h>_P1#VO78=Y^Ez*wt+!3o(c>SlFO2vwC;N_bU}WJbPb@ zV#ct`o6xvWg@ghlv%yi2i@lsr2c$pAuGZ*)MO9XY$h3Rld05(6p(T$MI;_TV8#N{V z!mHnB)_6nHfP$|>5VJ?iTerO(Q&nEJfuHW1U$|6W-%yisUg@R)#ENi806;GnU90dnB^V*w=T6fa*a(3iU$ghA>6|0CmYMCrWrxtk0WCIvv)R?c?O4& zSBF+t-J}HI@n`>zleL%N_-!HTd-%@3fB$~{`nA80C-o&n^?x24OUL(v;WSsST)CQI zDZc__Q|hf#;Dd|$`S}eE4SBD5kOu}{90Y%b27ywPEA>B#vlFp(<}&c1-xAP)h}~%UU@D|_zod~ zz(QvTx7%SP{762l?N2}s_$s%xx9^Ak`I)tFTO6};K`6e4ZpQ}$L@f8@h|jlSs!%K1 zwVqB}Y0Q1uZA^cj&+8IpnayZRNa_C!f4sQ0B}?B4DsDYU#`kYt#2RW1ce#%be34AKH<+}vx+>9o z!VtNq1vPgPabG(+I?Ca>R{UY&lk4JqoQeuvnFu1{^tK_nTX<_m>$Z43rWhrYAW~p4 zE+rM;qEM$fR=7;n!_^HUMSGUouat8%>DDYEw3=+#i=I@PJDu4O$Vnp+TJh~_mYM8O z^V9%KI=0>s4}`Tli+RgSQ*q_dYXOejqbVk}p2D>)Qat}F5==qJWGkv1$NNu~gk%`{ zAf&7@E(##$O!%6Q5WTt7<`wDmFR+O4cCW+GBh3{{n*(DF>2w0~iurH<;L^D9gE|F* zQ1|fX_S}%rP;$GPuOJc6gQx87!Y5&^>(k)( zf~Gs}$sWv($^ZkBg5yryzcfA+?mdQdQUXa19iZ%VoTRH8*-5}*{)j*c4~z1#`C0W4 zZg-6abHu9tDjkAFew!}{K-&B-4mVSvKJs9|HTLypVj5~ycn|* zY1rAke`se`8ah)_P7-BmaW+{+GPlHg8TxQ*ZhxyW+2a{3DD~Ef+e;-)%od`0*xm1a z>f7B7AalkwaPka-V0jTP$Y%)C?v+QMRLy@_-lN;Z3Rmrf3fzPmB#ADUM2`DMXF!vI zQBO^cV&?swdIZZN53UgGkLd>b!(KbuRu!V?%l&ox@^~~m2f1Q%CRH1^bfa`7Mc89| z6t07#bl)}H^V^D+hZgS#WOyGho<;AmT?J*&vXHx`(@k1F zU_BFPK!60Z`?9z9m}b{5>ATL$^mGW4bfe1$6eWZuM(NFD^3~#+f{4<{1tnjLbbGrj zl4i6p%(MKe34(}9qd}%L*XlE>R-_9MOWt{L-+V%2$2JaEd@wBe?FGwk_T1v~B6#GL zaTo8K$-ll_3mR2V8PA$26;aiE#6R7i8&&jR7kqs@`8twgtPn{M(QGC5|FgXjDKJ+U zZ1ZjNgYcQQl(mJacwvlLDJMF@V{hbX4mq4S#?BrU9Ls4-FWV?0~-^<`IG;k z6@uB9>A|(-&=U2Np`a4>qWWfeHKU{J@f8QSzu@tGZA}krdKV7*_zed2y`oBwOdu zGN4(Epe^QZSCj;&>J}0RUCB{k+V;^D`BD>bIQN zRz$Cult0vzfc-1YQ=Rxuc8m=&XXFs?_}+c4dn;gY*dyGbJZljf$2Y}h3y;%xOKq&v z^2`T^ga{^Bu+qwQ0Y^+f(+}%vs8w?Uqz+n|9t%_c4bL2&$U8bW zr3ByB$rsY1t+tP5VlT!ijg%3E%8HI4f2;leYr4PZEinYf*{V7RAPYT<3+2Wm7ah>P zstri11_PglBoIZL<-zToeAfO(DdnW3r(Zi0D&NjLd$&-n4(jNNy0>0&A;yk0^4?Wd zo~N1;c&I&!g7EzHXt*k`7_`K;-apjIjZOZ`au}fA6YZQex%4pD1&E)`cA-eco)(L%SZ5XdLwd-~zE97;t>uf@@geB7_F~k& z7JcNMGKWkA9dMV|7q;}BwA~M+qtjAK7*n2&`4apN0?hvS?{3w)P96W`C`a$w+rANH zA=N_90OON?^Z!HU0jTnYJL9_Unspc)RD7(XietLe8b8pb9b`fZh9a@<{ zx@juifY@=v_>BVG0iSu!on)P4+CWNTzQwA3pDo{j;4969X#_m1fgve6fy`fXwBl2#9%tvQ!JD3Q>cY1X(~%CYXf0DE5nFN@LNjnpw2xh-`vt1hrPb>cU?wQ-`q zZ5>tl;P@r;0^hnBYb~O&`3G((V=Ww0Uh%F7GRKy;$*@JHfDP<~aZN$U%A8C4>*A1E zW0bpzD7SoT0m!1jP3Zm^|MUo`aIQ6H`sd}XRg2zTqNSw8J(Cg>`Bz@5J!oZ|m&9Vl zT@rA(H>aImvt!F=V)nxNBZD8F+y))`Gx!3JQW+Ggk+T2&5i zFceNH8xyeBA$rCI_&h8mu>>A)`^P>rUp(|{16&_S{Agb}KafcW9%`JO876DrZMYb4 zi~qAvtmaJarJqFVI|;7RE85Pxx+~Pi?$4)aN}`roPDqE)L&U zv?|}`^^MSTVjB;`XATd*2|~12 z9Zh*^FYcuf(Jpd!1v!%W4QXP+)LGjnktu@-Y#H40UYQp~t4dfz+;GM$GUyWD)WiD6 z9|vmc<~nC^bjr^*`&aGpbx1@GgxL?iWO?bj@St=cpz9y;t)X;ao}$Ovty6uhn^c48 zU&)+dhKFS=U&F<7NIX&r76lj3_i*?Y1f$2&^P$1uyR678{|Y9@;ta4OxO8V+KI4~u z3Cu_#QDLI!xjap8pd;s`&j)s3oD4)|rZSV>W(uGdRX0U|4l=15eR zgKAne6~{>)AGhj!GoZI%h|3MPv(8+1(zv)TpXbeC&w7L~d7s&t>T|pF9>G*pA1c6) z_HL*@5^l~3!YmH{DVw&I2trCVWa|(}3!qI%nR}$yPxh#sj_G`FnJ4)EDpm@9(Ygr5 zn08qo`bt`EW0=uBl{r<70(#rSFUDH|ERHjVa(UgX?kYYKA9vNu_8)F1eqUmwW@8PF(3f~?z{ySlnI zXm5+dd2HK?P&(G#kKmF#LDbYAvroZO$Qj95B9eBnD#c7Es@~^rv>9k z7!@|8>#G%DvRk3vT`F#FH#~Y1qQt1Rn5yQOp0)8Ru&lK-K|>Zrs^R2%hvyATUd(-{G1RlX;qw zchDqb+YH!v)v!@$Rrj{V<+CLav#^Vtv0_+#9-_qhW?qo4(B0H~)`5yUk-haQHZBxVmzb3H(1sBwN}aDbJ5R5bz-I!OvFGBV zkBfq<5;$?6zuO~6(DI%Vzw8c&0FNPGIa)x7$7W(0!zzC&lG$Kv2gUI(8wEIjC1DdN z&q7lp#DaLF(<#v%u~0OKN@6HEa)5N+3YAeQba&#R=p&EZe0M6T2IiNAyj~~^Spn`q zlk!&hFn!%u4+GVH$9*fdKXupZJu)#d@m{mi!2tRZuHWY8y)LhL=#}INFQ(a5A5j0% zY^LGa|MWBS>k2DECWZy+dVt1A@14~LVT!jcYaZ^6y`c6^fPL+v%7VGxwIQ5?GRyxD h%3usR^UvXS1U#MMeyz2LmWt~DLp`)^HPSKae*no;thN9E literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-75532DED-BE44-4D85-B9C0-99C825778ee1.png b/source/elements/oneMKL/source/domains/equations/GUID-75532DED-BE44-4D85-B9C0-99C825778ee1.png new file mode 100644 index 0000000000000000000000000000000000000000..b985bb00631b587dba31372c62a69981c28029bc GIT binary patch literal 1707 zcmeAS@N?(olHy`uVBq!ia0vp^RX}Xc!3-q7IIc@!U|?nl@CkAK`t|Gf?c1xWK(g1a zU3>cU>G9*oXU?42+1a^b#R`6Yep_2xU0q!tAD`&x=dK&o-=n? z1AW3+666=m;PC858Zcu-db&7@Ye2iWkPWbXG1PaT;0P| zb-gM;E{^f;)RdpgYaG{gh&U9n=2xE1pQOR)|-@LP&W8Hhf&N=U|H_ca96uUB2Z{fi==H+@9gJ;}XV$-U> z_tLqB3E!?R?G9I5x#3N%ZcUQs&Vp@)vvx8paf~h!x#TNowLwrl;O5GQeTvrIuhNXY z?s;6(H8~Yi-RrZ?aO=iI*;9P1Z`Lf`xGtkIiK8b;;pqY%wyY92dDWvVyi7}2zuz}v z&h%b!byM``s;)PUorUY4bQpy$D7y7MkY&B60PD^s@xQ@FyZWd0zljTcyeFb_|6d#a z?~kV_Wvt3P?bemd?dfc(aZW)$EUS2(wsp}Nq zt=F>zxA^jJF_x(1m|ZD9O2Pa-T zX0)kJw@&?Jf4$hQfQlPQ2Afy?>bA9hI(gD*9)G`fnet^#*SID;>b}M>%a2jKpy`P4 z{*2qV8STm$`O0&Aw|cx)7~mEn0cw^oEH0nRC+I zoSGiycs_4k%~@&whvUq1!R2Yi%Y)xd`guX_^;_qJ(&{&x$~MIuX}@?diV!6zCU(Wi?kEWmSIJ{ww|NgwwyYoa2P5$-&uk+_= z+y7WyynRW{Pl{uQSBkRh?=$=R)wU}A{yDGxwZ>k9IiBDC8J5b6-Zv_+zbCqMf|k^# zb95{)-0I$ZZ_jW3wnrY* zo^>vJb!yu??&F_)u7B%&{%aj84o7$IGNq&Zo>fd&6 zsydkRW=D@()a9IemYa3g-9B$=&S!M#?7YXnlea%->k!gdF(pA_AxHax3JKM(<{v8- znszEb^{70S~U8ptX3>Op10tyNy1p6%k~^fvUK9kC;AcE{{1+*zk~e#kBq z`xBM@XF|^LKU!%|R))&7v+J^~zG;5+bk(cyr?zh;PORSGJ9o|^t!s+0JmFkla_3V*}3$N>sXWFLz;L+sSuD96D?eu&jt23;hW*lh} zVV<{oNg(H8C4p$J9M=m8KGQkAy58z2O6}<6e;)hTa*evrLgQ~!eLSvQy139Mzw#m5 zx_LX7-{|?q_$5POkKU#ot%hY2Q_Vf1`%4dbiQQZ2lX1DIAa!a$^!5_|b8EZBpX}ON z`J3&l$C>xU@%hJ#LJvuAX zd-HbShDm|xS#LLOel4-V`FxtP_5HVZ7o~poTm1X`o4`Ze()N8eJ3l==GrL=ZfkE*< zw{K!eMo48rs)2#we^y2YRwkEV-w;y<2I26`Jja|Ir^MpSWas>p)PThF)M5rf){xBH z)M5p{)N+NO{M^JmponvRX;Efs5lD@W56eQIUrk<-;v>q>lf88{Z8>fmH@vqi0XI!q80D)r5`Nf0Ho_ZfKrZH z@hdK@6fpwP%nV#$E=x=H0pmtuOz(kufQ$|Uh;2YeFz^Bm&{p~c%1tOiZ^R}A J5@TSn1^{_=Prd*E literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-7AE86F5B-8BE2-42D5-B6C7-AF9FF41CCE11-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-7AE86F5B-8BE2-42D5-B6C7-AF9FF41CCE11-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34c3e69961790b1d9b3b57e47a752f1196b8e866 GIT binary patch literal 2599 zcmbW23pCW*9>@3i&&#A?24g((m>D%mC6Y%amGMXq?JBJdQ^mQAysJ5Naw!M2_g1JI=ZH+;#4{Yu$72Z?E6}{np;!wb%aaz1RK;UkOKm z)B#fqQvid(K!~UT;V3Ysg`9N8-6J@I=W(@;KQPdVWB+7pq=dY{^ zflw%1?O%ia00~DR5pX0DfkdH@Xp9sFBQB1S!AeR<$;l9jaxw&h!a8*o1x2zFfuO3X zN?yNVqsB&gmCah4saopPjnvgeU?>y{gT_c>Fw#^7f&%q_Heo%$p@A;A3BgD}3d3-%>y_NfmhqM7b$J+ zf+G3JXkSUbk0$RcX^^$)oT2EP_Ky(95afvR3hL`OP&aC9*WIC~Z(z9Jgl1}HZgJqK zt)0DtBmJ1G+ZlHc&$C_ufkEekLzovLqoS|I#Ky(5QhrRmnU;R*b{0GPLC(Y6y!_I# zaxSmpQDxQR#-`?$C#`KyySjUN`}$uE@JGkqz7xFv@Ns-%_RHM-*M(mfzb&nD!2t9- z)*od5#)T7ciNWCz9JR^?6AKnOgo7j0wjuF*tx+z1(j@IGXqkP<_e&bY$vQSOvZwt! zF$Bu?QT5qXwBN}78d${tMfL~Szqt570)mMy55j>xU@0e_dQa?6u2EEo=zWoT5t+$c zP#kaxjF^0i|Av=Ub8;Ew{iLLf-DXV4{rOI)-iY^9uwA!}WUP}EB6?nD;=p8~jy4_X zI29bq_C8XXV^iW77v>8B-+a>uQxk&XEw_Y# z{rMx5pA}C9tIiPuNv~pWKJr$+>fs=q|7WSp$n{ z4qa?pv`blHZ*ro=;KAZ*j~n{>BYyoxmq#*DZ@it5^A`?0&eD#cV}+2fVFY)4*P9r~6E?nowm)VYM9L-rAz5=t4^f*cGEXWp&t~ z#h~z)tybLLbEKN$wDyV=Rr~|GBc8*_7UOU*rNszy)$qNtg7MJ~Lc`crtoN@=8)ClS z!S);z0(Z}&M&H`v&A&Iz9o&|i6o%iRDZ4&%?W5e?{ZZx11s;7tii@=!eg(q`-CmA6 zkLN}Z?c}dCFp94-DnW^rBlSG^xXI{}JvwN4vl{DYK#=!tz82(ceplA{Z~)8Wpx>+c zw>zfCm{acY8wEU;i5oo&b4uG3qB=W}b6d$h3UkMW0P7Vwb~qY0`!H6)v?~ZDO+2S} zPns@v?^1>jcI5EhJ=6xJcTo34QC^i1qxG{7uZC`YFDW(2_sP`Q=d&wr zTGrjOh3Pm~Symn{gEy~lySFAxxu=dhT2))|OSf-%rMnOqKN20OLoDg)aDA$#IzB1w z8shWqgyxlXkS_HK;wb4+<%c=Li#r~# zIdt?;T`xJ>N7t^jCjRZ2K|ywU#m#2Z@q^j0FJITxi&d>Xzt-QEyo|E$K37uRzRZXm z@*S`68DPIo4EX5-ImZCR)#yCjlaLfEpu6?ZIOj`ZLZ3+O--ylYeokV_`L$upi4x1a zg4AWn#62HfX5OrzJ%r%hQ+_9@*M%F@zxAB&7E4wsoxi&jUSF@#)oSsAIcS)u-v(Z0 zl>}A$;@ShR-=C*`EX(nE*n5@o!fAF+s8Szyt%_}J_m-)(k71oGY3S^Bv=IZ;uxCh|x2inSOI1o>x+PTw-Ia zUsqmOILw|2IM!YMOmT8~vZ5l9s5zB==M|^*gBq+JbItz;Ly33cAq8ob)xEU_CmYxy zk*)pPGd$nap~13E z`;{?F*UxTB;WaA}6z+`5WAB7#7c)${*K;dsEYp?c)si{y%dA|T6>kZyYa_K9YCpFh z8#e5Bj%hX`CVes-d^1p$apI%}gMG3?!L(10iVln|_}gzZ&~+Gbg%(HPcVU*rv0Wi(ybEoe#d$UiYDS4LlV^vK2Z zsjjoPhdoz1y*}kBd6sJ4$TI4(t>GMb8o>>2IQ)VWDarEB(Cc{tvTfnu7Zb3DMburgOveL(o&V5J4KwJV6!rpxi^v z{IY(yf0Puq(V}N_&?Suyn{L4z=Vvv`SPI`E)aU+>BjKidm2kH=Z5W--49X5cH6HW1 zFPC!BBj@<>4&{;86!TO^H#`=-D>9x6-TP-D`43U7sPG|wV##hgBbWApern&s+>=K| zi$e#BTUD<`Fj2Z*qWY6xbvM&H?=?lPlUYJ}IjAwcDUOuvc5TMYjHdt5FEY7V#tM;7 K%?jTm9QZq6HF)y? literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-7CA9B2F2-8D7C-4955-8EA8-D67616FB5B08-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-7CA9B2F2-8D7C-4955-8EA8-D67616FB5B08-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..a43d0e7184bcdf2bfe9953b9972e05d7ba51fa08 GIT binary patch literal 1515 zcmZ?wbhEHb+`(wd@PUEh|Ns9C3=BFz%m5N$VEW(Ezw-23{>5{)-0I$ZZ_jW3wnrY* zo^>vJb!yu??&F_)u7B%&{_EWLfBZaL?MD`U)ZkGNJ>_5gF@|rk?5Z!nI3oI^0>yV7 zeY8(;(~lkl{j28;qE2($S@{_Ik`bXOpBc5MkozY;?I%&B_iN)g+;Wv~u zIZG^WOqi*1c;!dWnMsvpE5DX%U5t=;U>U8p4zQ0 zkjqjyiN&*&$+oU!!z4$qft(yqqh&V39F>prY3TBh6d+iI7RRL7z|H?I~g-Cvhg zPc5sGbF-~7ez`j-a*bcps!+wntD<}N88LIl9iEpXWVTf6w60u8%A8xw-P03|c2&PQ zHRYA6xYo9;*Oxy2-mYV^rFG&rm5hr97j?}p7qq?xFt z^6aT)(c9%-&iZOwI_03J$f^!;w-XC&xBKvXE=!X*w8kc}_m^?p&A$HfWV_1A($U+0 zKbfl?_&#ddtc~IS-w9N_U$|{^w)y+HTHaYk2Y2^Z-YWn6WNM=G`BNb^b6z(bRr_Cl zC!W(`rHWMf+>OiU)GWQ~e!uwtO_RCV3{8!49$cTy<7znif@8}igE}r0DAvA^Y1>@# zBGIq=s;PX?=DX>4>V@8wC-y#Fp}x3IY1xd&937fw%FX}oh6=c5Jk*eh-u>a~j7h$F zl_y;7r%jd9OyA48)boXabO6PO)8!pG_+~ z_wreI%)5-1Y1TfHx8^D_dGYAwJe&DUv|TJyVbKAOQ_C0Ew1_`Yj%hm~zmO^D*X_A8 zZfU%nZR^*;GJ8Ygs+Ik{Y`4y@v}v-7=qSZ|*!*lFk;mUV8{iZ_ebU(&kUZmhI>t;mjJ(>;1_^+m6pcg3tbcCqxS zs%7ezRx0YPczS4O^xXG;8LHcF?2?Y@`*}_}d&!F?#s~Y~ygMCS&3c`C!-~yq(t-Oo zp1gH@`zp2QNuK&aIfZtfx5NsoEwoO)%-~x5vCyL-XM3d2OB0{i6CzQ?MrS6oefK|Z zCZCgemgn=H&wcu@Wxja3h@aKCLx6c%I6O1YF(=0yWccFxMfFR+Q#_C*!0!yA`dz3R>Kl%rO>OT6nB5OU<_VPs%p zU}9osVrF1wU}6Na85kK@7#KJi96&OS$si&HM5KX;JP?r&B8osnE{Mxe zOPei&Ei(i6HwK_NObi`{P}&Gst}!z(0ue+Ms8E|h8>lB0q!Dab8cYFDJ46@IRG@lh z1}=mloQw{PjG#gi=s+fhX&}3&X#%-OY=|4cb_1D0O1g0KP+Ws%H;|i5fdiNrW-z@6 Rx&tK@7_o_hoXWsp4FJ=cLVo}N literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-7F65198B-719A-44FB-8983-BBD3C196A663-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-7F65198B-719A-44FB-8983-BBD3C196A663-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4892b7a4f321428e7f8a15ed78cf6a2474e21445 GIT binary patch literal 4979 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 F{2Q1exX=Iq literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-817D9F12-6BD9-4B74-BFA0-39A03D0660C3-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-817D9F12-6BD9-4B74-BFA0-39A03D0660C3-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb320aa07991c5beef18bf5770dd9b0e1d54cc6e GIT binary patch literal 4260 zcmb`K2T+qsyT{)U2oMkfDN+Q4prJ`edX*4FrAQA&rG^d)1_Wt`B1($~5I7(mly)Ex zs(?p|geF}AQ9=`G5(K14ZanvX-<^AB?%Xo>dFQ{ov->O8=H9bt?B zKp+r+p?v_A4CoqS(Cz?WY%B>d0RR970CRc(L~H#rI&%;Jq16gBfobi(`_-wx904ko z`m3A;3;+l{1B8Jd0%3qKGD4W3>`*8(Gn9+%EGs)N*ZK3jTs%Dd7sQ461;hk-ctoT{ z#4cTykd)vPmXVWz%ZbA!;J+pTF)}hjnV{#O&~tEp9)9@$+NfOs2NR$Nx&Q`=0(2Z8 zFb9a*4G04Oh=IoY3;Ev+Lp{+$-(?gH6%(vA@N|CnP>e!an~!BQxtoc1}@oNoiSm z#jDr#xQ0f2Q*%q}U+=nmdi&n@6UN3TCa0!9&Jf89i%ZKZUsk`aQFgxX?(P3LI6V5r z1p>hTiuF&j|HQ>X3jdqJa69+(nYobn6pZ?gXxSj_*4?4Mx&&P4=R!64et19Jd6z)@Keynyb%l@xEU zHmrU-KRUQ_&Fu3{U%zJ?_>fwSlZwG0F7{&RV-LyVXMYX>zUFqPLX&r<8_p=&;EXM1 z%^H)o#D53Yup)QP(;)&70XIF(K!)7hq`&NmLxJ#&;y8W;2VzVOaNRUycyRn$LUyb2P=1l!y0xb?{N1BfEOhJ zQoP0#F8=(^*I(s{&Uz~O=}6b+M9~{q%?f_`ypLz-W2GzqfH)G~rbPt=JBSehFGT>p>_h;p@Cy|kuno(iyF!qzv`vl3;UBgo09 z{>JF={(V1I`qBX2AcdWoK1eG2frbU{rh+rmy8WECQ@MxCUUhG=43UJAUUhZ+-ll|c z91M~B1VUI7=E0ps?O6*W&y+T8-aghGt&(nhv?{H1NN%6-F*?#}?91%dAFR3X{vv%e zcZR{jjVl|0Mh+cV*_cm)xw;(_4N`9|54O~aPA*KchH%v1bxm_c4B9?XIn%|>YJ~)j zw380MS@74s{mk!dOlCoC8g%ifM^q1&7Yk(NZD8%Lfbu8QU<`7&W|`rgTL4M8=#$;d zn$Ed!tx)tUFN+zcuUYm{C|{>})QwSNchNw8K5v2DoIoC&0W?KEj#hwQZ)Njcni zG&$wy#Q%&v<&>4t!JQ1}HhufN?Emv~9&UityK&#_^NH?pXt zjZq|P*~;FqZ}4dbX>8T$YTabJl}4OObVGVGt_tk!OGwCr*na=YdVPr!s_cOJoRkM$v-zNdtk)6=sE&?+2}P z&Ex1nAA`KDqoDAjC{-3&_Jd9B9IZl2NsUs*e@tu>UnJqZylPnQ=h6$^z*6OJ#%Z_D#uo7RmKgw zVw*R)_{1#BP5xv)ikacD|1IyNgPZrs1G&|APZU+s>00$*Io2tZ#y2_V;E4M?F5U^m zPj_#3A*WZE>QxzwMjcLHEgC7eHvguzwXHs8ZNU!qC^#sMX=uQY4!M}3_a=%YC7gi-z^z5i&LB*= z?X+KQNyqkSt-ps#VIZplVai?VTGWdhJ{B%w&tX@(H&oFoF@(aAU|j|-b6r83ZvV5+ zPIIe|VcUDvjnj$YT1wAnQFF-mP3FdYDV|{PZ|)Y*Haf8A7ogG8-dla8IGB|K<8_Qo z4QroP|08oaM((kjVT^~1*aJRdCAJ&?A$4q2S4iq1+4`-<_VLQYZKlH@Mvm|kR zDt~6vowW38#4NPb0w*dH;b$o@eBL9Okr-anHXa_Fam()4vK&&ri0R;HQ%1|JTXHjp zDPQ(p!@*rTWM|CFQ*NCT$<&RJT~qvFuz z{AkJc!q;R?97_0#i)_AuBmo89;shPGx;^&VJ%WP?9pLt`v(d`3P(;>M`|>z{zs*Zg zMFz@*Y$sdSYaWNzmVpg*K-%2AUu9T)_UnTf;$pXYS;8xO@38P5rDRpDsx~oB1ep|0 z;hLQh3t?NkO)wXl)>AxU+>fZ;uia03>iaceV^g$FV3E`e0m%5gS!4Q|AH7%czGjTr zleIU1`$IavwSwl}_mqIK$t^nw%Eqaxrvv-OA=zd-~Ys z7}?XhYp@@j{vt1ZYfe8Vpe=>e4WRCMXz=n>fOSxRwoLe1NNL$0Ur%>X%Ne@paW_UK zUD~gCNeF@w+#9wkPf$i)Da>@{$Hc6tk{k;&1pq7%WR)}vdAk~*w=3Fe4+pA#`XljE zz80T$OjZ|dIKdu|l#7?>)G&FrDW>#`g?)4l@B%iQQ+6$}(@0HYDi9}BOa=PZ`~7zP z&#!mLQ)J4c{iL1s$NY-xQPn2h#5T?6q41sZtr}DKNNig3u-e7CZ$BQ&*%60=LzT=> zy2-G50@*^z96M+V0L-xIoDN1G%3}|cL z6YOk@b-a&z+ydBiPT6&y3V%N&cb>razMbkAorpy8=zRJ9F7m*9{qxD=H&WL+o+GKi zZ)tXCOsqdBH5<(4eS3IcoN(CbiGMGwhI7_}|U2y-*`L|&M4F3s!wYea>- zl1Z}CGyp?9qZHEgUA#CsUTRpqf0jlCWPmWncX^Cvqe`&TPq{-=Wh2D)>gzjOb9Zw+ zvi7swoqvC}$fsQZU8|_7 zKvLwKqeDQ2&W4#!p5QvA0KDpX2A4TJi?lGBhqd~a8%YQXCy0{zay7S0w3G& zt-R^1YsW6YtDoMKexA6@&>bDCAp(Ws*|Spbhdy#*Zg?~HSjh7z%#M&X#UEx5;~h@t z#XP^4C9m{48Xvop)#bNzkG8eINe2;^D$6}{*rH_I5k}|Jvn7!{8JV+PPCI z!O1!QJ`ZZ%dJiR4bD1$-r07$DUi*+}f7y3Km-?(GbG};G`U^@*YY1l2zyD*4N&Sar zSn#g--zoW5TK+HPu}-8VVV92s!4YVIcE2$@2PICjqeDe{071ZSJceybRjk_6Tvv!? zVLkhVugvj835&jciy~I`lH4|sb=AqReT0>lXAm+C;gD)~dl6G=iMK)ToxR}TEw-T& zW}WfM$=1RD>NpzrmisTs%~^gvw^a8NysL$sK6{~E=C!Zx_?S=;Eao28gPVLld)z9*9@p(LYYjKX}o;vC$KGlnGxAszg%2otoB&4{G_D+LYNU_*f0 z#&X;z_z|;DFiOgMT_SJ=HP>C=dm!?xl8%juagD*g>agJ{y77gw5%$2LD_;59o9sJc zE5{!aIO+~lrAv0dL`Si*m>p^F~+{jGJ}|`V~Ej^ZKkrNED2*Pq1`TPX;3OELP#Q6ijZg+v>fp3D7lCkdbMx`?N%HecYHvku)&8H2)c}MMzz7UNAqs#)7y=cBu$qA! z01!?#`zHQB48j40al*L}+&sMO2~|RX0|JF|z@VI*F!oMBqS)gACd?_abvqF*YIlT7 zAy7;^CixyhaaTp7_<^29w2o&`EH{tD7D*}TZA!{2s%kjh9e6$coxAs#nweWz?zKPY z;OInhcJcB)dhGa#lc$2ugoK8LM?_w@7U9ARuhg<+gqx5GtxcfC!Ce@?Fi$|>dp)JJWYx&%_PJKRNI|&m}V=-63I$iT0U4^9pw*BnxG|-0IBPQzb9? zo*vrtXw`#8#J1cj##o7*&dudWP+_Y)gnZnK9#y%(OEz|hmD@?k@xH!h7yK?!0MOqh z0F}Hy>5*Jp4*DI1=G9aOPeP7QkkUO@Mlk!e&3Q^HTb~HaPIAfI8YAdA>ODHY|7@G@ zI1BK8p;oeh*X|;#DDF>uqBe$hW+)}kg1mNz=;8bmA(-8&>?jd+8uX=Hrck|8CO5vn z*TCd@i*z}J8Pn!U;%qI^F>gcUrB}}@Uz(RU>#I^f{oYR&;uQ!i%~~P!*~iVf7bexk z4bq6%Mw{$e7g?(RlHAy@>ca7n+0JP)h1{n|slMFNEYFPp{Fv^68maU4eUwT}4$-{! z0-F==weqb*U0vp+*kj{^F_QsJdgyBXHdEPk@Kr6Ruy}W&YuTHQc8v=$xDE(u3)j^7 zAR#1&S?H89kJM#+`Apa$)Dm)MTvthyaR$!XEDL7qskFzSAjm%8;^&~bnTlHXHZSJw z^xGP=fs7&-M(l>ww|=``S6gAvSUl}kzW1I`2noBYZxF;mPXHhCYU(f6-5f4|Sugm( zx}v18mI{GDeXM&_={cdf%AbsOIysZ^@4wAvZuD`MXNcC{4bVZ7U<-k1>*n_Dqammh z94+EgEU=it0`JTh@f%PUSUVafAsUr$U43_6%RM4laeZ|{xbubpUCRIFcVv#B{XjIv zj(r({hf~7+c?_SC7*ThSDMNu&qEXJ&N}E@`%ZkvU+s##f>!CoZIi7Z4tQg6ylyqd@Pbc@XCH} zso(7~t$ue=nVH(nPaaYmWC2qR^YJ7hl=gV%zN_a5W-K{OFO`QUpv(J{AHKCLlLTyozRfzu>J3 zi2g{tr|VGpq(io%Bj3YITjfojSrj$|2;O`cu8cBus;Hp$l}=PuC3VJW6ELI{OU&!G zZMRY^JuT5GmP(ah7yQ2SAKNd`I%6fu`7F!{ANUX#<9$+GL~ASq-TXN-rU3veKLT%j znX_@t@Q&$$bx$46vnRz-@P-y|^@>GrLTKu>6(_#MvX`!uig=n-uXa)r8rm7Ejpm75i=+6X z7}c)sLEZD|J5BQtyY_y8t>{RJXCl_q6r$tW8#2(S&IES0DR?1Ee#;KwRH_^^s2V5f zr^_$sQctP-sqwKaEEv5-T{2lnb3r~+Y_Y>DK~*2UW8A!hAWP0?7_X4}ebP0N;q5N& zExOB-y^LGNK_DU0vPdC`tIn1DQ07TA0xA zNQ=L}SU{r)EK#ptEiWb-AOV+Tu?o~=U*EPq=0MFm%_^yah81iF|3jT<3Ee%&)Gk_^ zya>S-xA|@8?5Eg81yDl=*CKsKi85}(h)zpM^u;3zJ0HVRxTV~x5qu3Zb_B`uGKT1rWq8iOq=9()$iW#Kd&{5QXS=22q!yx^toFVDb9EU$H*ke}TQsnjJ z;lIYNz19XG9%2i2-8(1{``g1k$rK+g!#70Yh7V;JeRyjXFvvG(UD}xNaMag9@} zij$=&5VQMFi8nD;UPdP7N8D%RH`&0>Z|k9Eg=C5qe(=$HTWfeNcEp+>lXZW-^Mf4$ z`K$Y)&%(29$H!75qGYrD#T=Irg@`q+ytrk$N9}L}|43+Rdpj(l<_zzaCDp+KXW2#9 z!aBH5!I6CzwafQ2(gp+R9E65rU4>%6Npr%cVy=f=buMYne;)el-fC&o-OiteBZjn3 z*iZP5)&>0B*97*>7a%v1mo=2S8EZe?KfMoJGwxoEH_Xm{RadigQac2^gVZ3|9BB=6`5X3Tgd zzWDO9856H-Z2eLh;dxEdO>3s6RZ`Xg$(L0pckEJ?ex2@dQ&uW2=%$eK13RtYFo-OT@UR(RIfIP@ms;OZ9`C)kNX!qCXbCi(8#J`fnwl z5cX4Y;hekb4?~wi&{D&ve*D=x`>E@ZyUMpcdCuEfqsi+ZXosuEuaRNdJZW0I&S}{-k{&PIH(O=j zebtm}qW#uq_1`yE2_jcFX5Ze|YrXy5-96R6|MA-F`0(&Zx3qnqj0+=!;(u=6#FC7V z%7Rn_1H=EUj0~(yF2TMbrVI?i;hA}kIXO;=#hJ;@`6;OZiRr1u41%m7nYpRO3Vx~O z3PJg~iFrT~=ls&5%+w-~7=s{laAj^%ehz~mi*Ja6Yeh*>B7+bEhoZh~zl*+Oz!w32 z_jt#EPx5j=wkW?N!xz^ts$cq@;(;syerFKX@A^e6-s4L@Si}KH*Lwh^9JS(I;$6Rh zkRv}2BLfoy6B9ENGXpaN6C;q#z{tSDz`z9(Z!`uGdLTjpnP6#M#_Yz-Aj81G&BzE; z$kHaHq|3z6VF*mqTtLMd3`}hd%@rUmnjl$Q23uwZE(V~4O>$QVO;KWD*nD7KHT>3mIlG0o62tvlvRO7_k8z H0Rq+lfdoyt literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-8AD223ED-624A-4390-9514-D8EF20BD04EE-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-8AD223ED-624A-4390-9514-D8EF20BD04EE-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d3a12f01a9d6e6e93309e53090fdbe900aecb32 GIT binary patch literal 2685 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 L{_pRBu0H>No${p4 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-8F2DCE6A-CB54-4CEA-A5EB-937893A3DB34-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-8F2DCE6A-CB54-4CEA-A5EB-937893A3DB34-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..570584179b6dc09995bcdb7be4a422ecdd19ebff GIT binary patch literal 2188 zcmd5-hgXwV8^1|F0)a1}sBFRzLn;D684@fJLQ;?+L{JnkK)}d|EP+xA1_B+fS zECRsgasdEGpbzjO0M3m{dC)b7&d>RAFo8Wr?4jD3THa2=22}+r(droO>Ok7 zZKH*SVplk=z&bHb`%vW1x0fRe{nvSt*z`gDJ9q zCPb97ud3-^95f9~K;?IdcJ;-yWc1gC*m~ASXjO z?=$ZRkMb=U{Shpv3Ko$GjsrD@e#dM_{IX8IKc!_%7`B;g!ZV}E+BbElfA zj{WEaE^B6lSK2LgXg@jWd{=%mO5OPhssLHI?N{uoLTz@JM|V>_S)K8!9L4L zf`40j>_8sZGQl={T7+`xyWdw1V+=-U)|br2YGdB`3RtXPzt%tSIysF%BH?*lA-IqFqyK&L=O~Dlg)oY<~R)M+()C2s=_1ePn}TFV_jFp z2Fu8~^%vy9A{FnBBFPR9=<`H-^4ZY%LpPK<&SE8=W*#fZ$PQ4!xdycsVRK36wWU(+ zRI*GT7I8P?e@prSSB>@g=|sphwskSHFsgX#oL5=%yyBeUoxAajFX|5jkKC4K>C@{H zq^Rz9TdxfT2YQ`Lr>!Y0q#<_Rw!lWe=K!!NE1#|+b)mK#t+Fe36Bzdx*om1ai{Wt=g%UFGBu+v_gcdz>0+ zQX@*?elfZ_G}YLj@Z4AUonBo=DDA(J@URLR5WZ8pD;k-z4ho66MjCA-I3J>0r^K zuJ{Kr)KD8-|lg+$2B4|5oVr$lMdTgb8k zJ=JnIzJWZkn?9r?@nZ4W()p5-vDI2dnpz&7F5SaOvSpNJvj6M_*@f6P!i-PKH?#Tj zTx9!K;s7XcQRX!N%hcejbPWwnEXUFg+dU~Fs`7vCKn67jynmgSO zi1AYyUUWZ<1w9aB&Ge#qLlGlpfG>mY%ZmXqgiWxQGt(1@@tIRGq#%D^8rTbv3hJa3 zV|AhxM-)wVB3doU%R%;jG!bw}oI{+HQ%;a2iZ7zIiZaZbig zBo1#8(ZVnQ2XHt7jsOS%he0-g0X_hPU;qh+!$FuE6qkkp6y(Do|63Y_h&Td}5SlNv z96{UhAhQDD3}7%I1o>D9!i@~#0aYPXv;i>SaYM8)2!Q}70BP)2?;21o0>}VJ1j>I( zK)T19D~Q$Lb$#UD kiN7)bMg0F}?aoI41ZX~C+U^C0K*#^Q4g8*?J3*lT2f+tutpET3 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-8F8B1A27-FCBD-4E61-ACC0-459C9EBAE376-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-8F8B1A27-FCBD-4E61-ACC0-459C9EBAE376-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3c443bdca824abfc294b262360dcc4090f659b0 GIT binary patch literal 616 zcmZ?wbhEHbY+x{D_`tyM|Nnmm1_m7HO%>pr&^6PwZj4Iif-kEN3j)_94YcorhHH*U52+v4yo zRn-q3S*X})Uyj>m^}_ARy$xUf%+P)Lg57Y&4UzAP7Ejg1XElbcGW;%#VEM zI2rOR!%5@j%b%RHZYG!?Z(Y2~dv)niWY=xF6E>CL-JEOvEybz66_bEt~X z=5Ec}(aEd@(=6pWZolj_^@P! z-cP~v(vnkCbsR+)7!?0=`zDrTgj5!!8W$ov4US}xk6BWZeku##5upTC^NMPB*q}f99)^3l%K;O$l@EK z;95~ql*k~&z@ezG{wZFuUs2yZ-Z9{lyqsge7g2skhA*yPRKN5)#RFLa{LVn?lf1&x zPh3DTMW6ssl;7iv_?Ld5xKzALyz3Vba^&Y>WME=oVq#`uW?*JuVg#}o7#Ua?7`TAq zEN$8h+CWlHX(^BtQqpB&XwC#G<7NP=VPa`Hz+3=gFf`_Xh&-S%O&UN}hargIHUN@M QnxJHZ7Bog|q7YGQ0MB&dYybcN literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-904ADCA4-1F33-4C30-90AD-128AA11689FF-low.png b/source/elements/oneMKL/source/domains/equations/GUID-904ADCA4-1F33-4C30-90AD-128AA11689FF-low.png new file mode 100644 index 0000000000000000000000000000000000000000..53012958e32abac83c240aea51c1d8be0d869d6d GIT binary patch literal 2380 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 U7T1AOElP+Qv5A0EG6RD(0JDAuc>n+a literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-96DF4ACE-8587-423F-B50A-E9A58BE272F9-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-96DF4ACE-8587-423F-B50A-E9A58BE272F9-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b9ca33a71b12884c8d7a71283b573dae4714adb GIT binary patch literal 2116 zcmc&#c|4oh8a{~#f?B55sglFrAtE&;9p)zw^E4eV_B3=Y8LEzTfY&wy`oa@;wdr z2CD$D*=zuS2J`|B0^sZvW<~#7q2m1e6W1DMTDF9!v$*W})Y7HChwu2GuG@`$NMHCo z^l?{607ZLJv_`jMz+olt`O;69IVf*12ET3ea%ia9N|uTjehmn|McixcTH43BijBy(x6_#nDBn_1^Lk)wqic6wKW! zxN`Qhv@}uz_I=#7$)?6f{vor=Agw57gb|-6W7=*KuSAg~R0rpKkw}&NWvV+ep(QVN zREC-d8^`Yrek&3-eMz}*z{b|X)Ugvy9*)8LP?A>A1=)_dJ)6ZjTCW8zZ{ZFfxf?!u zGU=fD&A3d#nfnoJ!8W7ncBdjt@}aVd(PQ-%Jq(STPR>?=bDdO`@g7ERU8z>CX1u6s z?7EU8Q*LEC|LKj=(GtQ5Ox=PG&fg2<^a~%)WH?qUPbdSC!fE(ar4^dfk$VDc6E3240R7uXgdbcX;{J> z@w!P}XO@5DFCs-o%Yxn$k+n}MnD=WpJRX$196~s%#Yoh=rHki;PoS*oNW*$4Hu537!!6}^5QaG=~5o*8E!MF+f&?xOhH(xpO6ndP>IqC z3wjmzLzm>M3<+5`L~LzMK|dW||Di9;qa(;evh6u;EIT?B;h|X|5EbEtZ%4N{mi6NR>{`}tDi;!(?wBVS=_3qIQBiCNUCLV zSj3e8TRRVBg`%Ts?xTKhTGl*E88gbXGE(J*^sp1ikB6(Mf!0fvZi3|n#l1$j9OxE* z5tFWGqdk^lt^IhWgOX?C{!^#p;2D5a{F*RcE4^BxQSfs9NfD!Q9hDpY3csOR+VQSI zv)Q{S1eZTh+v}Y?GE108j#VDZTp(j~pA>4dKIpV3=r`KIs^ z`$pMjK$i4i<;mO|-pzBz8k?HUZy)+OHol_O!}!8=n$^@&R-?n#?+;#O#FLv>hT;o< zWFKgG)-L2o5wDkEQr6qmhAHncGAk5TCsr$Aqs5t=@Zo`fUBbt#h?Rs*Jj1YZbN?Cr$cgf{9{I~}KAo()!8SvZB~7x}h)u3-1>tD-#}Y;J zG;?mWwjNJZL4~}EIiJJonNxaaxQ_Rjhb66^k<*uWp?wRJ6~%qE&si>1wx?sec{oMM z?%6VmP|@>T__EIA_<`@Z8-p?tr*-bi889|GkKkX^PlwKC|N7>M$|z4NzS>W=n%*^d zC;@%VE2U5TF>kjv<9u3xMzPc|y<5LhM~oW)1vbCEZ`3)Li{V6VZ5=i@3~<9wIorGZ z3xKcOg2OPOp%%W8!Twls0MW@eh!_b(xLtxt#7KDuVvIbVO!5tb5G?sZL@+Ueg8>mP z=Zhpiawrf%*t^JE#zsZ>0#U%Lpk>KCrG;@~2@6^KV4T+FWFcQn2m@G_tfMTZg%9Kj z3t>4E(~_m;gJUuG5OZiw#6e3KHJ?*HmMqS|2noOd9KhjRa4x_F;4sJsFn|C61p~Zr zI2bd*?35{)-0I$ZZ_jW3wnrY* zo^>vJb!yu??#Ye<*S{HE{&M#Ffp^^hijD{eoKV*4^|=3Trj=R#g%?*cCrsONU3`Ky zQ+Z_QYm0AxXP#eo^WfgJ^$#MaOwxPa@%hh*ef}Spvu7wwdowJd*A|d1uKc9=VbTe#M<8cjwi3el+5zj35JNhwR`g$9m z_$K)Yt4;Kq%l2Ap=9;M8Re!m@IWjUR{^#~hEXfF|EJ!slF#ONT$iT|v66_lS3~k}? z%sj`O9H+$M%w*^Ml+=L4^weSoLDrDW+|*(PztnPtp#0p#JfMhkerZu=Y7t0`L6AAP zGB+tdhe43VH$=g;qNFI1L5P7vQD6O2ykftizI(i5z$bY*$AB-Q{EiG?T)(J(>350; zvIO{@fz&5?g{7akfMSY30iYCL4q@2=HD4U@<6R3=v0jP$FrR4x~0f@oSVFFB5FkyxcL$I_W jLt_q5t}zctG--fT8G;A{5LXkF3>i=Z%!o}CB5Dl)EOP=V literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-9932E129-264C-42F7-A75D-00E3705ABB80-low.png b/source/elements/oneMKL/source/domains/equations/GUID-9932E129-264C-42F7-A75D-00E3705ABB80-low.png new file mode 100644 index 0000000000000000000000000000000000000000..1b75bd7490af4d5b203efff8e846f71c3f42ccb8 GIT binary patch literal 2877 zcmV-D3&Qk?P)Px#32;bRa{vGi!~g&e!~vBn4jTXf3gSsbK~#8N?Oi=~@;VSTZ!M65!wO&pd}*lC z(m@GLI?8l3P?C-|Rhq;rAS=j80p3gA$Tr{~*=S@9*yOrN;#gNRcdj*-EK9B5-(L?0 z7ytuc01SYECNuC~lZ}V%U;qq&0Wbgt6az?R&;b|#17H9QG@bz@v&M%I4uAnL00zK- zSTggct@xPwpcxE+0Wbgtz$*q)=6O6Ib9!1?CdWoCE;3AFzv{c@XpSX`jnF3L;|x`tx6O=AvbTOjjJa!fBMq> zT=l*0ec;At=YT56u8p*IwLX?uyHHe6!nLMg+L0;Yot-81DJ8*)1ZJ&Tl{l5vrj>If zr(-e;)>9h$qhl~#uLmy208@qr>lbe^8$R?LnNR&>$ADqq+dZb8ze1MK;DSViS+EkW zH3jqT#lTX69UD=p21Q)L)Vfi342t{a#YjC8)@TMSVqW_!{=%;>3jYD#6_4--mzdMTx$xZogO5-BTHCO zGqhX+Q(LtJClZ))_p)I`@|Ov@d2K~y@`xAavUB=Ue`Ruz9b>tCm6>^xtmQ!5rfbcg z(FG*^$d)iWEUu1Zi(L(qh>0NCnD+c7{o@3s%u{M=`s$dhR-X=@S&q(eV9k}FjblN> z#t?%cY_XjhF&JWASqvAf;zZ5VatTab-R3GXwLCXFF4sn7Z+}B%mXHiFt6Ww>T@_eW zRwDYvn3*IKy))}Qw4=5_O>dcuvUBOfe^nc1q!Huqb5B5}%yVSv@Q{;Cf&iNgk%P55s|1!B{><}CJ}uz%&LQ=Mdev@JTCUk z_^rE(KME(g)-3a82JJo(1V7Lr{o+T?&~njjwLIa?InD9SP(=Ft~! zDWW#=E~B@@=W+a#<0-fH$ZEq_~7`Rqh&?_hg zTTU{`^>n|4ztE7Lx=pyA>X?j`Y7eUuk`rrLH)*m>EpJ;aY~%9GvizFKEb7}{c>R{_ z`A6N1{28+pcDyPaKRq2$^;I#|L-=VnW8CAbjLCEBd~0WOS@d-UJ#@NY&(0_prLuhL z;>fNi58?neCk6+YY|r9{iV`v0%qlxy+?2}Qm2@J0QKnWNvitBz!=wvXO{?Mr)|$zD zE=#s8x3w+h)H%wD^wOeBtcPGx5Db6;FaQR?Kphyk!rF|{C){;#7B*ao0SftAv+)m< za3%ihQ%!*qsu&0rRbj8$Wy|Gsot_!lFn;^)JuOC$9a<@?-IkmV*z9mM*7_iz2bRO( z+~N~lC13MUwVmI~!?g?DCuR*LQ6sCQZ@?9Z|Q$7x(0N`MR;F#s(U z5{aIfBaHzD41fVJ00wTy0D5M(;~q7G0Wbgtz0xiA12HDLfss7WC1zzk@K8AK#A zCSkhEgZ+0e-qDnLW1Y9|f<7=iJbC@6$8c7D;^Zo^6RLxn0Z}gopoDtGqsi7lOWf!o znQetnFrdGe8-H7AfTIyucM&8xU0K&}~fD&#Vg1a#QT4IM1$&5`| zt^lR2rw7mXX*I&b&sUVx{OQYUZ`28VT9q<&auT1cUM&!6#{iU2yO1>2AZUpnx+)9G zpzLuQj?>N(@!ssT8%w+^OSJz?xM6$xB*?oz2EvUgj{A-1f(|9zU(kg-f|l6CVm2c` z|DyyL00UqE4AhK)D-1JY%Z8f89Oi%lFaQRc$w0|2FxTmsVatYQ3I|q$0WbgtZq0z{ zE->tYN$UcCbjyZY3jy^vgMmM`wMR380xN64fblLc*XfznfDxDg25QX!w)UuXcwk)p z8Mwkbv-*<&3&Ft68Nk*aHxB^}Xf^}rnKe6pupSJ60WbgthynD>AOkQU#Q+vQmtq#U zU?9f;k{Lt+2Ba7mZs;rNc!ADS9qrk6)t|&`d1`8=l{^z02c`d#G8DLAp!p0SnKeI# z@SwH~*erZb$!_!>B<}mD53?P}^ih0y~{|s0z zeBK^zR6ZLF#y_LYEZlg(3l82h_2^z-mfrJ@7D&5)^57vD;4y$?#^VcDg8^d(sw{lI z&(zW$4!w`JugPLVTQa0Ne8%SBLNIXG3?P}^b$H?2Eg7&~_*{K*_A}b;cH3?|-WYm8 zyDvnq+WdF5BZI%D9T{+d0Wc6VfMfDc0K3BPTv0M_de~ab>9E_`-O?q`F~7V{?JsS;zn|X;IfVv6_+Cfe|kh3 zTNY-15AU3O^SI{Imq9DG8EEcuit_5n61{wD*2Yy6ByXE!CwD(Tu;bQ_%w=BctD;-H zgLOWpNwgJ+S-zQO8e4T{woc05uD8<`{CN8I&)E;sS$cU3ZI}H!bZ=vf$8CjWa(@GS z<-NFhYL-;q^5-W>eC&p6!{Wr+@1YhskrVE*J4<7d=wd&h?p0zjtIt z;KC~lbn1gxe|(C$+My(v_J_+%XLFH2?X@LQS6tS1IsKhmyRv7&fi<@MPQR^OGR?P# z?^HT+WLxg#?cas?TDyN}8f{Em`qp+vg?7}E76#$EUj_zhll|7Z&0833_~b;hJHKX@wf*|J!PWcTG@smme$R4;p!*+x z*ZH$b#+~}(p1^f&&2=8PFQO+DB-|gCc;@o@{phphan+D(<@L%~=>8#d$HJ7&HaiqL z)RGp4*48u@Cw0eeIT9zLnfGmB_kSIZYniL3W-RVyJi9QdU;W>Vs0mK9A|6+{>%HX4 z^09l_J~62YomAyY{>2I|h6a;CGLA4EQ832V{%#J2HH6 z{i6D%-zgr*65w|RQT?u8wBkL!^n*nlfONeFP|8s&-X-4k3kW&#^Dr_nF)%SPGchwT zGcYj%*$j*fEDQ`>KyjAVWz23&42>EnbK4MBtV9;vuFiD3rgd!SlZJAfe@qxFd`}-Rgt5GA}B=>0*4fp03je91r;M*MF=Oz*$E&e zAV`y9p-5Mx7=);F1e7L-;CbYQdvET|yO}q0?|nP}-JRY4ezU*X*$L~Y6t`s^#2%dUEeSQKA*o) z^MDCJz~Bft41s_nkVpgyEs9193!`ycwu*>K;3Op_aCp4bHYHgpB1syLms6D^DR1AQ zvV$PIOKlffO^LjNypaTgL?Y2Bv=|yKMwY@$k^kr5KL;2T&;sdDhyoD8K%f{1zX`|! z0D%j5H<14o5Fw~wzetoYdXvCVAqs>bP^b_L3WvjB0{1z=Jb+=~Sb23LgqWQNQXvqh zaWVBiiey|`FK*wxpt#pFh$)Q5OGpx=l$5uVcc^G;Y3u0f?K3f@n3-Ex9z1f?;h3Wn z)%nE9Q(iQ0AK&1R(6I1`GiNWw#Ky%ZBqp)aez~5WaU=8BEOvHI?t{Gif=6ZL6_r(w zt7{q>n_e`xw6?YP^!B~s_P-q%92p%OpP2kOH9fQVWoh~A%D2_E?;BhY0R1P{pJadG z!U(v8U@#~Qxxoby3Ks~9fx+d~5m+NTq(`8bg2qJ@&N%gcX}vIMul<6!XHYj9uc$eq zw77xx2ie~PWBy-ce}es+YY>P)A%eq$V!%(}du|f>p3r|trML+G=GFB`#N9J1!~u^G z=BIY-8dhB1&10nUmbAl$KLstw zN+N>|arj`XZwY-6ky$v9ozKW~ei4ps2cedtY9bJlE=gCp;L};H6?O<~U^T~ zQI`BBHQDl=bxAEPMOSw?u;1Xq@Ll8(-3_rEsi#jZyv(p_Ok}K3t0$>Pj+RR;9^dbEr;O4kufP!$ChPfm_H$8;MU$k96VdNB3-@fBU{Y{>SYtea?K~ z<$c6ptu4voN7ItEdfv73*zKy~%6B(E&O6W_Q~p~ajT=f_ecBaR_~CM|uhV{)Jf@@r z;bJ|bB#u!HN^PCUVPJ}!S3G)V)+=epL?z4gBsB|tT*C}Xc6TJ@wUYXzCZCN+yy1hX z$i?lyul7D$!$|*oVlrUqscY%;@R^hk;DAqxj;^mKyDg_vq;*5os1>i>hHo+j8ovPAA%r^oq`z z>2L0gNhccr=rm?}LknK})9QM$Goy3@H=Jdm^eCv?(*IR69`;pPAttr?^Vk&!H;L7- zt+=U|Ic}~)E^j+${7;nsV&?BDdse~^kEt>nbVwM}RTQi5cZPk37d?xa=LBfpgt?Hf z-fn$t(V!3=TdyC>>-(5uF1lR>-BvhJXQat^E~%&F5elvO7E4iTOajWr;`m8 z0z{^}M#o0=j#0HR^lcoEA@wHFc9VjTCDa|tyC7p00%|Z@Fmb+d?Amw9C>=gv68K#)kWHx~ z^zNroM)#-s&y#An6Rf%S`rY>%amqb3eI<_n39<5I3(C27t@U+vvdXmuOPc~D2j5wQ z&eF^mtuw-=<~?%EM?Up19%YBB!|3s_d0E^w#@r5|0Vehj^!)3q91@?d2; z=~urLt9{lriS^8m4!q#w;_}3Nc(USwPr6S3xBh?tX*DX(a(^i`^_4L+T3m8`IE2s! z79IBlhZjZ#)m}1NM5Y$|Xm?M)Sf-cj?5->lb~tuLI#JP%i6jKna14JeICB{f8FR}WZJqdZ zg+X!eoC?%i8tc&8Uk%Tn%Vsn%h4t5&iWLj84fM+$kvC0yl`E?1tZv8<7cOSL5K@>osFb=8VbkQr>T=~Mlfz6-r#iml_u8edO{hndKWR3G2> zMFa9WB5Q8t9L@5zW^G%@+Pr;a_1u^#E&0Q?q=o}C9g_s*=%`k+uDxtHhaEn;DdLAw zmh*9|eEL357hmn5))e*!Uak6X`Y|fato^)qlsY-oHDXk!RJp#jVsD*8c0`<2$Mx-tcd|0HrHltmgornNNU8TK z#SSjr7%;uOWTW7>lO->rA?*$=>UOZKuY4`))6Q1=QDN=tL&UsOx^kElbC_3B z+iK*4_dYU^1@6r}%J_$Y>2&T=%VX^}tkN+8>=JXU+-Q>E&C5yx|4oI3J}Wg(uSe$2 zV9szIQ=Zf<&h31vW6#k*k>u_ey>u2VRVjY(U~nd^4ZeKb&r(wdU7Iv&kxeD(W4gN! T?~`^P52WBAzJlL!D}Uf0IHy#_ literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-9B0556B7-20F4-4EC9-875B-F6654CAC0C73-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-9B0556B7-20F4-4EC9-875B-F6654CAC0C73-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2ec84826498a4df38f7f299e2732570d4ed0db5 GIT binary patch literal 1372 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 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-9BCB2B87-3DED-4764-A182-30A4FAA4A2E2-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-9BCB2B87-3DED-4764-A182-30A4FAA4A2E2-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e0e25a5d4dc1ead9b8171856b7f2eb1c212f257 GIT binary patch literal 770 zcmZ?wbhEHbe8V8c@PUEh|Ns9C3=BFz%m5N$VEW(Ezw-23{>5{)-0I$ZZ_jW3wnrY* zo^>vJb!ywYZq}j)C**V=7MNTvTYg)yY5U>)!Ycxb-ic1vneArlWSy}(WVU6)6ZWjf zi;h?tU9fRky(fK%@PU2n9{H4Zt;@OPT9IsY$9VELcD8bnRD~7lGk%!6XGm0ZFmsrB zp4{NxC}H{KgY(K4&MZ<{Qm?+J%vfo4RQY7Y^cx&EEF?O!UhjNW=CrE8eC2E}8*81I zIk&mnm+Xu@G5eVmZ>G%MSJ_wgs9L`9ZLg_)!Fy)U+uOCiaZx^Z_eD>im&}(V`aCpt zzR#=AcC~qr?g`bL;)VqOj;`A1G2bMs{SRN$?&P=ewi>US zj!cqRclUUUlII+i<$ba~&8NL)u5joi|9Jr)}u9qo~}uH&)XbeoAm@jth3Vo63wWkITef#H8vMg~?Umtfxz zQw9d%@XS2NoE)db;>={{{FKyy#Prl+20_-4%-qys1;5mCg`oW0#5|ygbAD-2W@-^g zj6sk&xH2~>KZik(#WzI3wW6dbkwJ)oLs8$g-$mas;EMpid%R=7CwVy_Ta@3C;fw1R z)i3={@j#XUzcYyHcm1Lj@A0J{EaCv9>pg%{j#}|9@vdJ$$dR9ik%5VUiHVtsnSq&s zi4n+VU}RunVBi9YH>QG!A`p=VB9cKwCWy!b5oI7k14uMifLNLgOe}4-47NaKDuW4- fL}qu_VYZn8D%MjWh-Z76DHe$B>F!ZzEq$nr*-{O*dY`>C?abopW=9_-;@2@nE*} zverG^Uy**|0rP3Aeg2=Aa<)J0s*coc?zPGb+$ON9W7pkf6SE#J(A%at+o<7`-aNf< zk+VA)c4e4p&i>1%@H_XFuSVZqHoLc%?cVYyr%#PdnN_;v?T3|Gi>3$0%>JgBcf!VR z<)?RF7yO@lFCary%*She&eiw33e3fve}(^RTj_KBzV*~>*Y8CoTd)fc<#@?O6*FFkQFWP%%+kfA%75#sAKV0$f&yxaQSHtWDdp{dpnl0Q| zzIDWLdXK{v@w0abjZL zFXOns$HtZ#gvy8%1v%f?T>AX=#;F1k6LqXF-CUT~tbAh@OQOF+S?KZz+4kq}G;i9M z*-Q@L&g@M+>3#nE&a2v`6)bCaO1}&346oUIvF(Oi$#M_5($0iQZ=I$eIO0M}^E@4PXN$c?LSC3Vlwe>sAZ|2#3N|l~=xqyA%eWRs6yZ9H? ze*JkNXY#>G>GJFH%MREDJPK!3ym?tBah9IM4K6q5kbj{E8$}z}o!gL7rvI^bd-aEi zlo%_Swu_ETi`mu)g?ULly7jj5#^j%#mafyR6((j(5NYUDnf3Ck@u#J4nbIatj=C6k zZ<%s2!viIp4$s1Ek6<4pxsy+2C|9eS>A=4y{Y&jD@j`?@js>q6) z&fI)&a#Bg=yh)CM9P{0K>>KeqV)-jZwn(pqlWBF5R;T`-mg>Bvad;d2t>s%QkeMy>QRSEm%r0q5-*LH3bd8i+@cCop)-?iSY ve~*1pyL5j|l>4^KuNlJeOY3g^&$4HnJx}BE`I44yP?6{9>gTe~DWM4f0x~ys literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-A3054E0D-CFC1-44E8-89F7-B5A232903EE9-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-A3054E0D-CFC1-44E8-89F7-B5A232903EE9-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1b5c59cdfe02ba32c09a064c4c9a5e4dce78924 GIT binary patch literal 4208 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 GHvMnEsn5Cq literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-A3089763-5ACF-46DB-AFFF-197043DD5932-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-A3089763-5ACF-46DB-AFFF-197043DD5932-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f0b88af268b9689df35950c47f305ea82c5c041 GIT binary patch literal 837 zcmZ?wbhEHb^kGnB_`tyM|Nnmm1_m7d)~=3XU{L(e?VDJV5mH%@YG7dapOuk; zjol^KH^hvAQ8+v^&oL**DX};+**QNYH6SrPwU|MWH6$}PwOGL~wOk=6KQ}RtL6AAP zGB+td2Poy7Us{xzS_G105M=QUQE;s&DN1AzV&G8JckOr4cMSLIlyi2_67Z7sf=V4?3LM9+! zU}9ioWMp6l@>v)dxEO)_=1L$}nt_2E%*kW`Dq!GZVrjEwuw`ao2dM4fFcehY>fZg*jMD{D3qlZ6=&w>*(w?887SG?*(mDjD!@X}A*3iVuQ(^M zB)`bP6bM1$zCK0@8qPVH1xfjdMJbwkB`G;jaRnni17s-&1zlY`n_QqC1)xQF#kT4h zB_#z``ugSN<$C4Ddih1^`i7R47WyD#!Gy1mI#5GVemRgVE=>ZGnRb;n`alxI%7n1= zp;GyFwm^Y=xQ2W?HRTE;V*?9o6k(V-iRk9|LJiV~S_so`3Dpl3hf_dDqJ@rYUJ5u^ SK>kDxTq8DaP=GTqSOWkTSr5zr literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-A43FDBB0-21D0-4087-AAD9-4289019DD4C3-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-A43FDBB0-21D0-4087-AAD9-4289019DD4C3-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cb89f8b8f63919d212af28e61537c993c43e041 GIT binary patch literal 1796 zcmZ?wbhEHb>|!uw_`tyM|Nnmm1_m77!)P<9r(o1%GJ`^2mR zn`(~dtqrWxxa>Ws#zI~@EyK|e-j^n}{j3qZxIv#u%zShAgu`=v< z`!@EQ=F2k6cPoqL1eiOHUUc$u`8Ic#L7{@1@~R$*(ric9t9s4y z@hv8S{=G*uqase7me6}R$A#(RiY3DS(ms<`r(Mfjv2nS@JZsNVp%8-?8YVvWGdD|$ zsJPC#RuX6Y>Pp1rHG2AtXWhPPU*F&-wTwri``q>|0ZEru?L3woxQ4|xcTT!^);-5c z$IPcCm&5#a6$RKUQ+#L{NVV9U(F1k%Y0(gS1xnLy=<2<3Meni1-SlysRH*gz(uDuSs2 z8p<&3!w(?w`v*`-lMW7bAiGnQHZw7F7+~56GYq5%Y#}=V3*Uh({7KM48wMMQg~0sC zFs&MtIZ@-<_`i*PMQ)BlS!z*nW`3TnlA)e~lD(acqOPt2EJZkk6eZ>r=OmWo7de;$ zAxPZU$4EiLIVZCqDL=6&MN_XNB?l_5V5Db&Eajk}t7~VI3)G{Kl384klUQl1o|KcH zoUN_^v^cNWRz0Jnq`*pFzr4I$uiRKKzbIYb(9+UEA7l-f@bys#8c>v94kU|9lYnHV zU8RjakOZ+ZAuN5URKA@pP#_XbVgdSEhz#KDR%$SO-{sZvYK**k&&U1 zHHv}xb|7J614mS0m_u9|px!(?AOQ|F zeUL|i9EhKx9*6q-KRifrxfEtTE{|KltVN9>T*e_h2njb!3O#OMVC)QY0X~ldy$^|c jc%XpYs}AP^lN(yPcg;%yCwNc_M$I-xY+~TN#9$2oOU6q4 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-A5408434-7126-4EEC-8AD1-856204EBF263-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-A5408434-7126-4EEC-8AD1-856204EBF263-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78d8abfdea7d9921f764cd29f879b5c1fe1560a4 GIT binary patch literal 4745 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 OdZ2}Xv;Pu^Ir(4Lsz!4F literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-A984CAB6-AB6E-41AC-885E-DE4A33635480-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-A984CAB6-AB6E-41AC-885E-DE4A33635480-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2a978d991ee3445268ce8064c41d00a5bb56303 GIT binary patch literal 12102 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 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-ABAAF79E-E46B-4053-8A64-9CC8B9C84A3F-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-ABAAF79E-E46B-4053-8A64-9CC8B9C84A3F-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45811b95bf9f2af4465839998284a7443435c90e GIT binary patch literal 3514 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 Q=9b40kNJP=?5A`82B#rUJOBUy literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-ACF0A9F7-1A40-490B-BF70-EE6C63C21738-low.png b/source/elements/oneMKL/source/domains/equations/GUID-ACF0A9F7-1A40-490B-BF70-EE6C63C21738-low.png new file mode 100644 index 0000000000000000000000000000000000000000..cf281cc7b3096ee68290dcf210f8135d01d008c1 GIT binary patch literal 14426 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 R0rh}zN^B>Ar-gYMr2Q4WWeJa|3z`Z|NrTIi zsSD>Ye_QXieS5{-xIZjU?l5quJ=D$r`CEm1`Kmmpb!Ru7I`O2@Do$51uR=}n|^ork3-M-0n)m+85mt`HRO25{y$hIt5(;(+D z@!lh@qWFV*3ZB-Mb+k(Z=BWcSE>l&DD2Y zx80*YCa%n56mW4WdT7ZKt8ET`rpGflWW_6w z^k}me-F|Dym$KML)Kv6BrFikF`>WmV%2kv|ulO+K(6vR9o3dt@Y;@_l%`%~F3GWUj zcb}8%jwc^Dj_F!Il(J;C($oZtzoh7fmL60A59cW z`<^8d+!M+_sbChHskWQ2_p)FushX=9%yAoi=L8#x+CT7;t(|_6i|3#Q|FRZcZ8-^( zv-PJ=8S-a}Ze;OiT3^%t!Q|CswF*On863HH=9YDBd8<@>m)%l&g6Isji<7P>TW4nI z@3J;u6Hq86XFXGI+p$N1AsXK|9;(^Gw6b^#``@JEO~zMyrK{YmZ)r&-xBEH$tXpyS z*_HWs4t$tl+TnFGYC?+q-9AyZKc_V}%y~Nh3GV~lmxU_UY=@oCe>6W6@W^Nx%l&2F z7YHfE1?X@v#aT9qZ~3&d?4ED6tEb(@Q(D$8KM#pAfB)8(X|~|K_2cZiSJhHg3%^ZV zxg&3BZ?xt12OT+oi|_tTu~`1Ac!g04`-FC5krjO3KN?jmP+op{QI}$%>eAak9Jp9q z!X?(M>T}e;(rssz$rp3EV*7#LA7W<|pL7lDa$Hfmk8wrKJ&UVfUe7&avi(TH{b!Oh zug;qBCBbKY&i+n~ox1BQ^S@1w>9oIN^wT%9IQ>LVq+#W|toz#!rOguk`f-)tw|nQT zyEY3a=gx}^^jUmU|JP?l?>(Wr)3|C*NB_$Vdet9)Ue_|C$sNn{!B&BYhC3AYP)`?o%wlc)}xts_Vqd( f%xT#EC#;U~>sywY7cx?KL4}H^tDnm{r-UW|KKs+M literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-B2211D34-A472-4FB8-9CFB-1E11AF4F0ee1.png b/source/elements/oneMKL/source/domains/equations/GUID-B2211D34-A472-4FB8-9CFB-1E11AF4F0ee1.png new file mode 100644 index 0000000000000000000000000000000000000000..554076c8721839a9a5d0ac569b7839ba2c9a300b GIT binary patch literal 1732 zcmeAS@N?(olHy`uVBq!ia0vp^)j({{!3-p&n~z2@FfcO&_=LEA{rYwL_U%B>Ar-gYMr2Q4WWeJa|3z`Z|NrTIi zsSD>Ye_QXieS5{-xIZjU?l5quJ=D$r`CEm1`Kmmpb!Ru7I`O2@Do$51uR=}n|^ork3-M-0n)m+85mt`HRO25{y$hIt5(;(+D z@!lh@qWFV*3ZB-Mb+k(Z=BWcSE>l&DD2Y zx80*YCa%n56mW4WdT7ZKt8ET`rpGflWW_6w z^k}me-F|Dym$KML)Kv6BrFikF`>WmV%2kv|ulO+K(6vR9o3dt@Y;@_l%`%~F3GWUj zcb}8%jwc^Dj_F!Il(J;C($oZtzoh7fmL60A59cW z`<^8d+!M+_sbChHskWQ2_p)FushX=9%yAoi=L8#x+CT7;t(|_6i|3#Q|FRZcZ8-^( zv-PJ=8S-a}Ze;OiT3^%t!Q|CswF*On863HH=9YDBd8<@>m)%l&g6Isji<7P>TW4nI z@3J;u6Hq86XFXGI+p$N1AsXK|9;(^Gw6b^#``@JEO~zMyrK{YmZ)r&-xBEH$tXpyS z*_HWs4t$tl+TnFGYC?+q-9AyZKc_V}%y~Nh3GV~lmxU_UY=@oCe>6W6@W^Nx%l&2F z7YHfE1?X@v#aT9qZ~3&d?4ED6tEb(@Q(D$8KM#pAfB)8(X|~|K_2cZiSJhHg3%^ZV zxg&3BZ?xt12OT+oi|_tTu~`1Ac!g04`-FC5krjO3KN?jmP+op{QI}$%>eAak9Jp9q z!X?(M>T}e;(rssz$rp3EV*7#LA7W<|pL7lDa$Hfmk8wrKJ&UVfUe7&avi(TH{b!Oh zug;qBCBbKY&i+n~ox1BQ^S@1w>9oIN^wT%9IQ>LVq+#W|toz#!rOguk`f-)tw|nQT zyEY3a=gx}^^jUmU|JP?l?>(Wr)3|C*NB_$Vdet9)Ue_|C$sNn{!B&BYhC3AYP)`?o%wlc)}xts_Vqd( f%xT#EC#;U~>sywY7cx?KL4}H^tDnm{r-UW|KKs+M literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-B229F6A5-0619-4F06-994B-8A734C356ee1.png b/source/elements/oneMKL/source/domains/equations/GUID-B229F6A5-0619-4F06-994B-8A734C356ee1.png new file mode 100644 index 0000000000000000000000000000000000000000..06b72f14d1739305dd926c516c783ee75a2e6f42 GIT binary patch literal 1948 zcmeHH`&ZHj9L1WIEGJW!`4}uGX_%m5zQ1N34GH3yf+UCsmq~@9nTqdTCXuho*&=ni zQeu^$WHRk=$eDdjT*^`Lk#cl~h-tQp5mR&S-`MGM&b{}Cdw;q2hYvrBgtLS?Kp_x_ zB|b7ddP65S;IeJ=29HEEf)L1NNEDGAVK5kEGFe_;9smGZtyZm83j~6V3BE$Bog6p_=fxWJ}>b9SfJ7yoY-h$mKjZofrQSDB|{)z9KwemAm>ah z#pyF%eg{iVw1Y_<73(oVeBriTZq_#zkMfXlCs~17US-*8t4@a7xpFoE_&{wiAyk&r zlF(Vd{Qe$0ZU6CODQ^xVY`er^gKl@W()K%S-ik2fQ1$TABblDquX7&SEJ7A(LBa|BP!&1&T3%=5o*6Q zq_v8y3yEx;Iy7&Nb3-~z6wY#2-Oux>oGneZ!zc18{i4GwJcA~D-OSr`Bu|%;gsJBx z2Xr&lo|q$kr;c9!kw6_VpDF4ck402{B%!Z!yipimvKMVq19JKL8JUerCj!bYvaaat z=s5@Nv8>rkhsq?_x$z`MZt-sMSGDg~TNHw&(yUjFXH6raurp>kO7;T2AK0h3z@BsN zW~}(=u)oKJ6r^qYCWv-Pw$*gk)6@XZw+BN0sj0io`lHIB^Nigd0?C-c9kdL4aVsjL zIp{PsxVIi7ED5u3v2h|xC4bj)(e+#5eXbwW2mEqTeU0jl?>l)d*&{Dk!nBJ?y7Z2B z-I=~thQQ@TJmc|2lIeP#c#TH)R|-*QX1uBltaPeZ=Jb*UqyHT;%eEYQ^??j)X`^nP zrIR~j*)VB*d^)0mt(C%n=120Zpa_o~a~DF?;q=_DAqqNEcjGFd5%RX0Ddp!Y^*2A! zvPG$`n^OJdkh(tfX`9KZ;^8M-B>W+eb#JF**4Q}uU{6!3@aYX3D#D@0SihJ=l8cU0 zP8KnaG2-`>Z~)D%pDPAC0;j8xUF}b~N_k8BTdPnUAR6@ZRz=)&q9kjY^RJ;&?$Hdu zj;h2mc3cO6S)xr!M7#pM<~vi_!F!zUSO<&;>E-&<8e;bAFRukB{3XQ3An>TXWnjNR z0d^@W!f;wC;aa2kPr@3LIXqvC?u{Wda7x?G(SrL6q1h;3r)plqoz4(~+IuXEbi`(O zuWlr6+0!1EhTM#2UnJJcC&_Z$i5I_>J3*gVQIs&2eGL&&Wb4Jzs*szSpRF{Shz_Ngsu!@0+VUla0`tsSxLgEFH^bNypt%se?4j@vys zMAOECjOKV@!X~)*w(FYVuGEcs<+3EjzmNa?@PKIj_T3Z)w4mvYF<2@Ro}#4)2ARLU z|0Lc$>E%zvZ$^us5cJ>5%>2!nB2PJGg>}ZD|mE5 ylU#>xlbt6OijQE{@_F9(d9LnYSL?d29#EJ~2`cr$2J1)vJxhE9DO?=JyznphHB_Vk literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15e10.png b/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15e10.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d77e0729d270e3a12ef2f56fc8c2dc219391a9 GIT binary patch literal 2464 zcmeHIX*U}P8_f`Vh&^hpc5Fo=j8a7{iG59|B`Hc;C6*{--%Hifpmrs;DwU}zrq+y( zlBQIHu`g34O&CFF(akd6^L~2&!h7cV@SJ<@x#v9R-uvOnc5$*67L*kP006?aHV6~| zz=b`zDk>`Qczknn^QqXx z#KghD0fWJ4YilbiDuTh_Q}W;WH-Z0;1Shn+h4AqwS$2AHwtZUO+jPPPbhx7dX( zZ+sV79hAA_(n2DgoWKIBtuaV>U}zh%PWzpHjPO^2qIO8M1;4Fiot9TS?(1SkM*m6e zc%a^mdFod}r+FzP^QHuD9@!$_)4sXxQxIBk12#-AQMv3QewTLkN{e9M{VZ)JR;+m`~O}6o) zPa_Ak6t@J=fMz6dbBo`hY2ISE`ZHAjtyZ_-W(6tY9}{%<&vzcALRlxBHOP38;ty$A zh2y?}%+;Y(u@z3u_SuSCR&AbrnkDkV)|uxCfD%>}pz{(;t;3jJ2Z<7S^lAYra}=T{ zUR#j(J;dsN%<}RXR$12sH|@-jy%aBuic6p{V8k|T7RoPyIad&5Wb6j2qWk_i4Zq$~ z=;fDn#+8fg>Br4m&;;Ih)R^u3Q1br0#eg?J?#deRocxT{#4SeSP@9DaE(%JGXQy_( z9ARMzM`obvxUOdqK4X$5it(L6#mJDk*H_GVIK00XAya%?+TN7&6-w(Pc6P(Z%6I-I z4QoYZ`%M+J7mws4H5C{t^-{{rB8_2pjnAGhQaduZR>6K(CrCaqxu~%}f@+#`bbU}& z^J-UUVG1VlvsK|v9^D%GdizSM4P7n1L zdXb7n&)0$dlCT5*SM`k-8e((C+@Dah#u!WH(`@A*dX^(oXw%!1gJqhp?C@@UH` zl#w|>8+H^aovJZoeOZ@P8E;;*)M)I=UmyW>D4UJu~>QHg%i%M=J__r`=7W<{?^MMe0 zsZ8>ZmUvZDo#GnTys6*Vv&?NtIS-e}6Hc#RY5`gDp7UFtA-+#5qmfNu)j9p|@>5(K z*W&xK*kSmyDSoA-hGfK}UDSK6$Ad7JuZ=o?MOixa!x9mu)pJS2xXvI=$&dDn_aVM& zwoL~M?ndjQDHcbAR(GyBLFxl{a!iTvI+|$NL0m`WM^m1ea(i9zTD(}$;w`JaL`+yV zQuCRCDJLOt08p2S>KzXV&F#DTjlk;RR_BYRno`(>xgN$pb!E{*coo+=jfmG3%A2IS zi-L+pgD8@QpZ3&uO{!mv^-!Lq2_McTw(OQDA2tXO1(?7?_3<_Y)mrPk(VZ`)0el_T zgqIyGI{Ed5C6#~*R6Ro<-K!6I-X+}*(hmI0Xy$A(o0+DWd1d^x3eu|n+Q-dEJ40=w zo~JO)pug}DH}Vn;AWvZ(mv)`bMd#pvdz3b8pyFUVy070aRrI$UGHG>E!VuHj7yB^z zUD|@I6rN%bAw9Vq1AT04UO;rbE7w_Yyd+sg2?@($~Ih-f4;k94d+sZU-TGf+@`2Dy9i1>qOokrDFdMvU((md z8wL&XXV)bnkB#m z!3(+Og_`ukRa+U2;c+9YG6F@7t;92AscvUn&4cuf9B0c3g9wlkYqiJDIVYGS@m$dj zy{LpCRvrjU|M)WY31R8)X(4(E)7e&G*96A3&y}Chq%TEWM7*W%D@o5K2e~Zc?mb+0 zrjlj4paHT~o7j~6m{6wB3g2w!%h(HVY%&6>H9uTN2*>4jP|gBN>M|tS!*9en-hJO_ rU0Lm$Gy3sF>exrWTE)Ip>+({Txj~{>f^r@|_ zZBgw|I^UKM}0cA(QXb23C5IB?O zbROsv#*!evU&K78&sPUX~XBc;{ED-cfl8V z#+92+mmKwqHYg7X*4&k_MK^2t;z?n%4f29qtrp)id=t3sp4f@pFy;xTteg*S`0}@z zGykrsXDQ$37ds5}+SYE$?eX$*4Qi6uCSSZ}p2q*)C6nd_Z#>J-ENgYVp-AFZOU`4P z$y$?y4jjliW2m5@bRth=U+B!Ve@ao@KKCE_Xy-T_nsquDq~OKLzHJU}t4>RGsj`0K zR#G`@)qii@>`jiYLH7)gh=?1+d}!C4^iZX0i(+{94vBRIQ`?n#&uUFv(zS%epk-J5 z-=B#et@~?!_P%yezJ6R}Do}h+@`uN<>D!+ze^!~}w2kZVCbrbmMi?_-S^fd?MbLB!Ma`U%L6~XCYR3(fBdUZH^zCoFa${l5 zuZ*=1N;77Jv%Qmf=`cBdMS=Uo+PqUeA9ZGKc71hAf9A&~Ti?vHe0Gc~M{Wfaeo6a& zPT%a0%g04b_VJP85_*g4B(&@Qyni}Vylcs7m1)tZPo3aeY8`LET5448?s|XK9@lTD zm|F|kPp;)m+3|bLtL;B*S0~79{&x6J)iH&;Pt2uGS4HnS6(Doy>!vBrQ{&c@u-@+| z@r~|V>~`AM_;kY$R=+w+)$=i*pY5Jl`P$)U+p?OyITe=#_g4sM-&r>6THUMtn_71t z5xRGAkA3cK)fGQ%e)V)$x^me)n0hMpefas+JyF|d{k))*r!&KE^>wLIn=?_pM#6I2 zx{t<6tkt`}c1GU1==~{=ZeQrNUU289_IjV(+!SZKcfX#tZo2#Jd-C0Vhn33Cy-)th Xp6o5I=kLv=4$A4Cu6{1-oD!M&{qyhN z*^ev}q#en|#?EGIt+LZMKu zuC72JP*PG-O-=16`JeoU!2bsVCcj38jwU%4VGqB`X0$Tx$HvC94TC})qCaf91M(_r zPhwUS0&(9Ddv<9vFv1|?uOhrJ0W?_?9^w>O=NH9f>_DhmTG`y2NG){M(CmE~k#LLG zcrkjq*5nytIQ>efMsg3jTV1|H^INA;52h4`3$_rO67?!{Y@Q8+iUye%4UT2;Uzhly z#&WyV@*zuW$yZj9g<8eSzvE*@)Y$FzvCrJF2$GDAoIuAf>L^>s1euqMUmdch<~(I# zR?7VmM3@iBPk=0i%!trylNLG|5*wS9kGxM+a@TxP4iJ5m%m{?`FQuM& zV8sU<{qownS-i|I~z+WPyV%!3SaS42F= zJj7-hd!`~en{X=xiX-#C3pAE=%>sCekgDHjWErm-Q4r^EoIXrZx-<{@eGTK$HFBLX ztTa}%LslTD)NxCIA_Xs&w4mkp9MB&Qd;Ch|<|0)DT^^1ny!bY!^XXSu2LEQ(!P|4R zmtu;9iRu@lloH6XZ{?Xz*jBBzShm_PAo0Pc$`i51q@W{pC_&J}xJc6B zp>3b5K$vz}zOYbWg?kL?DqOYKCm>cJ(@cyf{){)1@M;#*dlrh!d(uq$hsp~a2*ZJN zY-^<1N9)24$c247^(gFmZ%__Hz0uq!mqGQtD1VMcOrYf10e z=z+X?o-;T}%Ay=R62M?2n;aBuu1a)Bqf>lp>-tkZyKZY_TLH8Q(Jn=hM_{Z(Sf zC>BH$4e=PS>mpKz1!oR#egGbiqFh=lVZmb+4^}Fh;N3B$7aJ8Wbt@q8-u1Uf*5U0k z{_EQE?%+KBdUah>X1TxKbJ}cfm9DI_$Pq8v`5k6QkxJ4BymwyeHfaG3RPLQ7Bctr5 zSVhNfa3Ar+4BM{x!Kzciw>a^mDt~nEiR|c(d0ap7(-7Qp0m6HNrLy{+|Jg)FN@3bT zgarA+$!n_HV7Dq-F$P05|NOX{Zx8+M^hV)jr{LzYfy@0bzyk>hVTe5eV0A)kKXtA_ z9~L0s6Y$|@xN3%uQL$thDl`BSDb(hyLa*Fs6z?utixN2bf=%?>-*JB~W(<}Sp#7lk z-O6&vS%kih&DyFja&{HbUW;~j{7veo*jlS3Mt`Amw1+Pw0jixID3clnuguAy9^#+J zS!_L)=9vJjpVw~HM+Q)IU9;M1trmvVe-C5>o71H!&h-e+FQ9@rGui^JCJj4P_SI(8 znBJjjh{0ZDoE9;^Hk@x8qF|ysDTo-hw8fiL(I8YLcum0iwAC zGfq(wcQ<-eM83{krYecgO$niV?r^=yQq*)LvL6mtl0SUvpB-sDkUL=ygW_P~j_jvSJI|&{AOfIKxn5>^46YSHCji z2DW^jhy){@W854<^60RhQ)@b|cn{*6 zD5u}~^V{(gW(3|Q89?Ip^n?fJmndThu-*h$|SfMW0>|3DA^H z7Og!4_`Ixf!@!2uE>;v~N)T{mikGC$iz-Sth*+LWe_GXu2)4;npHK|7#y@lr$!`@Y z>&!o8%|9h99w zYKp|0WfqQg%1t07?qgv!^v#5GIJbFEtC*1Wszr@2ci>0Go%k^0w)O1(RLzyG@iH3g zP1cnsDJ>Ac-T1E^V`jL8NZZf`T<4f4M8cLERay1@A3Trt0j zo%KvZ9s`AIG1HY#Krip*IuvXjv$xyN5#+TK)Z34li17VAN|bYBUXvy_t36wOnUjZF z{BZylDZl4uwG*0oLOWd#C92U((5}sNt+JY_M^u%RHSnC+5G>v1dE1zC(Zq79?G{_% z$%Jz z=WB&OJj4nG=}1NC-X0zZnX7ea%De*V3~m*3;`v9$tzY^u^^uqhoG?%P%8&e)ty`5* zlq3*xFwVhyn4s(FKK=IbjvTp-Bb;q8-5jr6bd_GO5;UaZ*afoDyilteQ>2X0+$TnU z@msAQjHDz9BXQxCZ<;1=ASO~={aw5Puxs)@n>Q#oJ(}~b$9P*xMaj79fi^*(o8T9(LtcD}wo-`UOU&aV0sqqcn9$pZ+WPmJ|JkIi%7y$0T3Y3< z?BkgSleK&>YH^A{uHc6HQE1sIfm}#lJN?&{Fm)ocoT)cn(kkb^(y3Rt2a})PWxtXi z46Zh6z)!U%QPAtuBj+l&978cHF!cvgZ-_hUzxoo>exqkMdYjJBR2N?7k{`wte^?+G53!G zn@MnTq7e6~DSm2P(CEHFbk&KN#veCIa?zaL%F*#LWfw00xPOngOiyD;aI=Wp0gB;O_{F5LacQ)!bOJ&4VaD|cM>FTdS8KDVUHXWSysaijR6 z7iv8-^g)#A#(*Sqap?n^K_oZ<&cD1Mrbqu~S7@(L0U1a0Z3hx+c7nb^#Hs+D+1Rml7tiJ0w-tRyCcz?u5?)|fl z*)bjo7H9C{*YwsE^@AW4yUAPV(38zQ4K36iWvEwK_$_+5-P@mV&CMXtchX5up6@!Ro#F4gDi3R+hNj>RQz_ka2D`>`nRybq1rJwd)sb#-;3EB^&6D6oVHu~GjAIR z$(j~!om%)_vCqje>(>U%xol;NFx!)k*g@yg&q+pxP*myc&mQZJb0|FtmmTd?KqNHo chbtxN*dx&78D1u+{m)AeGlfIzjlJ&t4^O$OkpKVy literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee2.png b/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee2.png new file mode 100644 index 0000000000000000000000000000000000000000..bb47a01f142f5461e7c8a24975a90eba8f2e847b GIT binary patch literal 3195 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 OQxFH(xduDm#Qy-dYGlm- literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee4.png b/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee4.png new file mode 100644 index 0000000000000000000000000000000000000000..159142641fc5a7a83830f6cc63b7935f9cda2d0c GIT binary patch literal 11194 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 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee5.png b/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee5.png new file mode 100644 index 0000000000000000000000000000000000000000..f60afb1ba7f87f8d2ba091841237e3b47c72258b GIT binary patch literal 7775 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 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee6.png b/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee6.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b6c94769ef09d41b9183044ac4227450eadb3c GIT binary patch literal 8060 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 NtfZ+}E^qnqe*kKTedGWD literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee7.png b/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee7.png new file mode 100644 index 0000000000000000000000000000000000000000..eda6084f6ef7cc263036b5577ffeace7dbeaea31 GIT binary patch literal 3109 zcmeHJ`#Tei7oTe-L*X@)Hj(S*wOm^+&1Hry#`LnurAZ?+v{-J5nB=x{8B@uNxl85F zLvG16H6gOiwRBN><*nR_8$ZP9}KW65-0YM2!-RYE&$8Lw-*6`{o`osGp-R+ zpFBU&Dk=~A0i2!lXLs?1(ahemsMh2Yn2KBa%vA$|V17mRRIT?#&_y8#NvFnnZfhb> z^^G2C87ykQBO$9e9(%^qID_vtc;yGE5_;%S-p9E4cRbq~yK~venk%QkWUOR)(N3jX zb}|TtuM&paP&GY0Rec*vIKt+#7sSeZxWy0}o(^)(eyua8HX&hL(oA$$ElMu;c;15Z zbU6&s_5jxr@v63wu8vt0)G?*yFT=Aq%b&7jNqwb1t9|Hbp1jxBGS+uT1D64sT1vS- zYG`S&I9!Lhtn_)wXQxBf7SvLfQ7fvY?_))G+7wer-7WjbmU#ou_M(0^x{9%%;-v4_ z*-={y_igh}a+!zK*te3|Qvz1do!SMcWJ$H(Z7*9-y_AnC*+p7C&iXvo+L&i+- zl_4HyHTBNXJzY$;(h{j&x_FjPL2E^lE)=VJZ|k?zJcYAEirB0L(b@6H5B6eDe8PF= zxEPG5dfcULiFN@y9;D4Jv))vp6T;=eTQb5Q!rp-K%5$rQlb#VnY8ZAb{vW58hkw-uS7A-vc@Z)0 zlaH?|_XFp}Lq(cyM1lM73Piy2urgHNA+DK(IrApo5@`!RE;D0423`no?U&nyU$4L` z#HvmwSlJ~G2}<7ttoUt`-SW^C__12=&-aR!GHd##F&7bw!^IgTFSNELpBmdZNTT=* zmo|xBvcT`NqeOkWvaAx5?BV-BaUnpQ9U^a7a+OPzRj{@#bIqGmyUjs&HbUp8gO7Bd zh81tzf}GXIIPARB9cPZlnW!m*CdP7&D;e8P)hmt;PQ4>9lGpSr6~7OJ7CF4V;zl9% zE9`b9MGYJ+$~g(`43o0?NQe*^O-bFI8Mt2LK*aRNxOGt=8iGW*O3k04`I79pyzDDh zBP^ko-!s}3E{(()}<-*4t{bZ5K}Fmi%Ooq_sfSULGCpp&fAMfGLF z*ErYcM42_t%|<qrr9V-vG158=(v&=}|GZ$J$wDFY+4I-h=7T^fT$Xpeba0SKinzl-5mH8#TtC&; zUU|f#aA*YM9@?6U*T8Nz5c^T7CV+G5x~3n#s!^UPy_e-7L3dTWt~g~9la=wo%mfuA zRbUBAU|QX`myEZjK!O-0^o z80M=hyz<)5rMSL(@K+9Tzx>#6lV+X+jNbtal_6X!=5<$9M{4uL%l&+BuaX#NA1|E5 zGzjiZ;$R6!(ub=j&mZzIBW&@*A;rY@HQrN#Zl_|xmdb7}(gN4{QOIAQP8D zJYGj-)FFeb$3~EA75>hnpD?$X(yw~^+jIVaIe9MljDAYA3G$g)+&exa&Wj<;?I+QV zzpo$nN<2_cGQ(V9lx>3lDHY3SW$|-oMQ+*W%NTlj>ZGl<;QBRSa^Py2OZY1F00PqJ zOS9OrgYfznn}Hn3(T<#w$QOWLeU5af<@?r;|1Pz6mcig%BfEB5PlEYTJ4=6_)}xTsIzyZtlS$Sb|znaLcBKX$)%Xkr{eoSE=h|iADTG+j)T6P;@u%NA5tb zB{l+fAk5iyjD_srKCRc#!MSFJn&(bh69TpB#d$YXIm||bUc_RP&kQ3c)#z@;^Xa;5 z*BsnVdaJj67W;UH6;50DiE3qJ&!DBSJUva+mv1h)GD7=4Axut1U&iEOr&b~gQR-Ln%c!}S>&P#9T8@q#s2x)&^B1> IYNU7k-_n9_9{>OV literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee8.png b/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee8.png new file mode 100644 index 0000000000000000000000000000000000000000..93f258312600c22e39740d757a8719b8e512442b GIT binary patch literal 2222 zcmeH|`!~}K9LK-QrL~N?OrmY5w3++mc?_FO7MjI!Ic!4ANJPkGsoV>Big|LaxhAnf zF5y8GClOu9WVxGLSw$|nJf45!IemWkocDR3_c@>Qe*N;fX-7E;g(yM*0DxLsouC2$ zD0x?_fJJtgxeZt%!V)%WI@-u}n-?D%tg8!avNETH58wMk ze{1c0Hx13}Syp9^`NXv{0=Pr;s>)vY4%E3~c6^Ayq=Rb^(USe@ByFNg@#YO|(6MCJ zd0MA5HdUhHdmqTPW7ZL!!bSyK^0N!ooC)zdKF*c}EJ(j1=`qozbn`m)1;iHnQ`xWo< z(#yjTKncP&Jy@=Y;z20bYW;vlMD$~aK0)t|Y267TF8sW|Z)k#`v=3r72Oru|?ogxn zc4a*w)ZLw#{Awk?rOETVU6n{3;2*?ssKUV8=X%*6GDJi_X0Z@9O`zZUOwvcLrpKfU8-Vf36s`-uyQ0@y(Vc6!`RnR-KKhrE` zpcj2uI!rI&+lQ3g4OKWeV#v1Wm|tp?FCxyI@82W>c^JdW@ib74PqO+EM4^xFFTXId z>hw_l`-BZHT;e3+Qd)2zk2>0IyN;e>%w)&YBEmYTdF8|^eO!e>xB&=kt96v zM6130)YcZnwlXmd%0!kVXNcl;svcD2KicSA@iSjdt^IX~;Zb?J73{$96vx9ViWDUEw5O$_K|br9XdJBe(YQG-6@q>omu z)0S}B?y^6pCyQNXDLXbtc8}*1Fa zEm%N0))Wylvx};^gws=9{c<(=qfF0&5za*4BsfZ`F>uH$?ifAo(gnQgB6y!Vc`*~) zm!EMqCLMk6s=UUI)oss4ey`irTU6a}u`9hHmPb1OQCHGA3|rve z`4xV(-EW;XAeHm3wI$w5H6(X`;8&R5>uX&UIhR-P#i{2Pwbs_B>z%%>R+y2lEPiyq S#dY}aeOOykPH>4HvHt>;QM^0= literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee9.png b/source/elements/oneMKL/source/domains/equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee9.png new file mode 100644 index 0000000000000000000000000000000000000000..b17af66f9e9363d5160ff0e5252291a4f8653825 GIT binary patch literal 3006 zcmeHJ`!^Ge8z0GB6OwDq<&Bpj$-P!CNn>Uijd?Yi0^ryb3V`KhtG4K^E{t(o^u`|9Ofu1r6vUc0AwK- z&bj^MwVxnL?D?6s5EL>1um=E#x;uRR`jtQ+2n2%O-rm;MRxlVmK0f}dl1QwsuJ-o! zhC-oOEH*zs|M20%a&mHphK4`Yf8$>V{y!Xen;E(Da}$wpHy8q7Gdmds07&2<=WN|0 zr&fGIq8kllV4@GN`fUD)7g$YfG_gd0c>eg|`sZz6ED$|~mCjPPlX#sX`g~33aLoC_ zMbk{t)^Jg3#cyZERLW`7S0?4dJV%b*cszGn$Jt!Wq8=w3I9&ak#8J2b9A)PtG~fYB z5G{7k+<-l|O6$(Ah$cH2wYjy0?0=!}eVI1TP*7!ul1NM`hMyU3A2FowdScXhRfTx+ zOl0#7I89Ngwc>JandEQ60k{bt85PdP%|4NT zd+&Ipb#mLs5TM7>*)Tw_M-Lv|g?j$RN&jfCk%UBtY;97*s&CtYUc7Ip-Vbo= z_Pw`Mm59^Y_eiT(DjVu5T?FT<|980Rs2MH^?4AM{9(z88SWY{>n@V%_a zz29=!?U=-L7o=YEY6O08zGP2QG)Wszwr-StcMXG;P#d=L>eX??R~a`dT~{1?VGv+{ ziQ>#|*V~)x7cZ^XZI0vHs88uG-VV+{liPI+3ULfj@x>I8q!?Dz&{$-(x_g8sB7+hq zr`K(YBc|VmvpH(3W>!O``0?Yxugo@;IFMn3_qMvX#O|C;$fcOV?FW|-bq&$k35VAL zEY@k4ABry z;rvwgP=2Tye6G;xQ<;&{q+GUBf3?>AL3-VjzYHH?Z6?(ies&8JBg$i;a+p~-Qi<(2 z8Lflac*;36ENHZ)rpLgo{3Y2f zRl3qe2a-;|3w1l~*L*~>HBV2_`XiwM_h;Y(UrBq`%*QZu*G1F#Mo!i=C}w?aS^5Xc zm~+jm3o4E+3!e&VQJN3ZbjFD{4a&NEWQ&959^J7$MQ!5wo$*XBE_zSvYk}*IR?S-c zYHyU({J~<*vgRha81((G8@z{pSBgeMbB#aH3)`?0P5Wx=ic1D7tXLuUsmsA1XrlF* zM@}1i8hIBCOQl>Vw}3Rej%HM&VXmSWN)w`N9@}NtaKw&atumRehe$psa+FRHLfzbah#cNlIWZJ zX^Lv+Q5|vmJ>TEb(w0*GnI?wL)E12alPF9L>~3TiT7R`1`l9?GDJGrkjYgw(cRWQ`5)ihuVMQV{U((Ks&v&2va!HV zU6~LNTk_diCK?<#q(TDD_`(e2K@?U;06i7mE6mr^=z&CCbCOw=-0cBAr8hE=Ec;UbU^Bsfd}ul(@-_)6h0#=?L@@-WTyDmagHDd zhN9zMX?s|wD032W_y;SuSG3#B1}+)7rQ|#c60tz0`)&FcP>A@E0LRQjTD>9Nv%LFX z7^4%(Ab;fQ~pI>OyQE02%efya6rMyemiNcg2 za_an1h$_Evj&}DGjfw(qIvJeZ9|$%)a$i$(2w>_TNATJV{wmN!Q*HMIU(<`O&WhMKfWT2i z^q-2{F-<(W66ljkHr}T?pfe}Mf?pev34_V{_Pe0yr*KO5NpTL)<1sRn7de?q9PN+C zIkyL53-&v1$N&8bbIt^oBod`tW&PLs7r8Iqm!o3;M6-FB)a$k*v{DsiVyf9|UKs&q zSAm&To>0OisfZSM9Ur`juE<;D_HbN=iEg$5zq_~9K4^^T8{D$#Bqgitc9O)(7>Blk z76UW5FFIJ#sXqEr{3?(2lDBy&PMhgVLb@LI=sl2$` z67G%K&?BYsr^I#No8tPwnW| z;<%S*0BBs+VXcMEAPVL}v~mRR&Hdnx7Wv3^kT?|2uDRFGw6f4_Crz1%j0!0e@qDd* zH*qKIKUFc)iJn^$&~Z}J!@nZ{*{!n;iD_m`)PtlyfwX$&wn6Ti1T+8PP5AgB|5tmR zoL?KNcjMdRK5s)y{du(&dy<1w#fIsYA9IA369em>xg(wm>oz*e%ki)W^{1{frW=2~ OQxFH(xduDm#Qy-dYGlm- literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-BF3DF32F-5256-4DFD-9653-FAD2C740BCA5-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-BF3DF32F-5256-4DFD-9653-FAD2C740BCA5-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..64a4e0349f9077d762f2c55d8d48decd6bad0db0 GIT binary patch literal 1630 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 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee2.png b/source/elements/oneMKL/source/domains/equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee2.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f4b4ba29318409a7d90dc7f389423aa2280f27 GIT binary patch literal 2700 zcmeHJ`#Tc~AD<{%Zm|$%;kZQ>>MTQSOkvnu;v|>ixYNxJMqcX-XJ)Q*zl|K_(!`WY zR&He`bebmjTT+a~CYP1h`)|C@`Tp>IKF{a*KF{a!)0c#Cx+Dcu1_A&8DZ9%yE&zZC z@&I3y5Ixu-ALnTRfG7Zic0&mS0z4kSxVU)0x3siaSXgkm+`hiP!oor?FRw?B9+5~S zG#V`jwbEfrJLxp2akO7C;~4x|42!So%vXqyxdKa_Re@#dWY&rYr^qqO6U75^ zAzF3t-LQ$WG>uwM`Ap-)3g7ipMu`%MdKOUPGpFlmBjk+y#Id;Gw;Nr6STXet$C4W* zS|JaD+7-s>8~wlUZ$dl^WUJG7M@AWpWV6!P-{xEGf`6YV>TYa;BewXp(iQKpj9 zJG^o^qw5%VP}m3tB@7BTdn}AQsH|Jx9gf3=xpcvT^@1%5<%2tJ;eCk*cQZCLOp|1PyWvk_z z@uBeW*2mF0OycXQD!u)0y6*S3KO2IhA-(t-`#*qA@Ar?)`D)PPh6KK7$s18ae5|r6N>%N2xRQzIQsEq%G>55e#gKFd0l`gLqs=N-!8)>bR-aCM zwPvSKsR4V^r)O>WAf;7m>)jB0ckMMXhj+35g$3VgyB%&F5%vC%P(SkdophxBd8{!j zxm2O)#k$HBghbEu(!H0;h`J)xw=qgLSk)Y`-(W@}BG3Y~MDGCV9pMC?6x2^&Z>Ppq z#<_3!eaSmqG;dhC8y}SJsNA0LA2F!$-y7h~n;l|Nw5a9#dM9FI*_uRb-zNWIq(o2S z9;&`UIL{XQD&Bn?SA*DY@}`Ze(rS%p(19({Q?hs_Ei22S^2iBd3BJT54X^C8!sZZu zCac>PB}Yi)oV)qx_c16MC!>5;(Cp*kL$7i#EOTxHTaVYFgr>$TqFcv)a~AroHdduR z&g;IW0IBDZx2i5m`)MeQ>F>GOo*${H>JPzH1;+7BR^Oz*a+#7c>JtmDdHU9xYa4B% zEeJcFVr6+1rY<87O)!|ak%n4N`+Zrj)PZi>ayB2?^e2INGW+|1#FhM$?LS5Q_1SA7 zh#Ja5FKQ~CK76RmK1rCH8+X`D09Q1G4vSbcu+dn>^CoEUlOIMN3!bSx={DqqKKQrX zeA7Ig6?XYjDz6*hY?+(WFTJ&$*ZyK)H+kl2c81M)UK03^MZ_Pbn%&X<Rc1o2;-V3($*Hnrv2{f zWsSM;jZ*8SS7tkxhjhb%Z=@$q5^*G3yG`N%&|v4PEf$DRb&hEF(sFwi;(mB1eu+Jh zRcxH>9pJPMGgEJRP6lvR2X1;g3o##?CreLlW~jQ(ZrP-PPVPqOnYa*j1&tSMMm;X- zPDz2PkJj|WlRz*d|DjAh8`BaN_$=qobKri~r1pg7U6CBg4$D5WhtHd`vr*Y6patt4 z$R*lq=^sq9--dQ6kn`iw`k~1(5g;?tXX&_$jE>PkWrK$HlFArDIqVi_3PNcpDx4ii zxr>EDNWQ_KJelF)g*ELi&hiv~?(2cU+7p6|5>MMXJye*)!|fZ`nspzksu}jSGkSuM*>FjP zs6w2PM^^kg$;Ag8!l%|}IgqB3C+#Jq(1hz?bO{(k{|dCFD* literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee3.png b/source/elements/oneMKL/source/domains/equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee3.png new file mode 100644 index 0000000000000000000000000000000000000000..ba307693f0ce845b2aa86eb12076e3ead89d9030 GIT binary patch literal 3031 zcmeHJ`#Td11D#tgxeKX<&|HV~=G)x2tRdD&a(#&=xfN#SR%m0RxhFJXk(Ems=2GTb z_5B;)^PV5hbDr~@U(WgIkkKfln8*nc001CnZDr{I0Pv9hXfq+c zKYS!IrW*j@1E6gk5nL`eDk_S@;r#LI>+8F^x=c+?*=%-RUY?tq8=X!klgYNWwqP(= zLP8=SAV5)3@lWz!{JX&a#{yVVhrypFJXi$`FJr=q3#=dyyVKxZ$|oc6(a#4m)sjL9QgnpDf{+Wm|l3*|Ww6^!)Q zf#HY&E9yauhOjnaJNA9TKe1Dl;!E+aVDBLF>GPGDJ6b=u$xafSwRr~a6?{~%E-}pX zsN!$qiQ#&j-RC1(kq3^I;wy79P30Fkxy`~g4^~dDHF_2fX_7b5Q5O*&+9&XMgk9Ja zwSV!p8zE}^ZfyW#lC_e*jT^=kE@r)qT}Q(_3%}1OK?y2tg)p)3(tX~eU1AICf(ug8 zo=>~Mp4g0g7X5-8>g1_N%h2<=g}@So3-#|sSA&!)miYIUQXwMY#+Jah5tX#RC$lX4 zRwzGh&tXcYUoe{OQ=By==ryNPZkq@-UF^-4e;qwRWkMZ>Cefe{$oZzDwT$Gw6b*+_ zBewJv43$aN^BbLk4uOyP1*|;t0-vL}@qZ(j-0c6VuKZC$M0OM+!xv5z4}U|Q70cdg zP!F@sB;L=e>3Qe)X%vjq-OuX1Jl7wp&*+W+z_=h<)a4Hd+&=mWjhWS|bZpcrIgTxi zbU5lrOR}7PYxOOnhwQ9pn)dgkNJHP`tf=ghz-2mUi?erqV3?`os^oLw=^}3 zO7$h4XZC68u58g-T$4EmXA_Tl@Ba^zGdU2M~SkrXP~h z^nHCgu?z0;IZ#Tfhb^t`EX4T+yQtocjgsF_46iWVTP7rW2nQb?HvUTdwh-^+k)_vs3`${qX@H5( z*wCU*qw;34$N932g?}S%%wuXYsDr~5znTE!>l0IthbX*23?fN=~UuG4<+x5 zL4SYiRS9LUMYWt#6 zdTJ{xgjdU;;7iIDZWUYB?$DjEksHy)2}=ypGhAhXBKYB2C?)br`nmZC2Q#!4vR6mG zWEkI!P*z%lHmTVmtx!2KHG&oCVvqcjg?;Hs^zycHHKOBn&Bf%$xsmq6X9+=T$9?#1 zhBmuLMu6+vl@N_@frs?KG@-HYlb zG!6&;xs0s8uMliCl>d6f#_ja@imwY05}fI?qxaq||0cdU1cgU;$I4=hC1=A+5j{Ts zG0#moz5DxPeKtUc=4Pepds7>Wu`u{SB40iF;IJp^Qc2a?iy94S3Vm(^&`D!X*B!gG5%$!b8Gph`O+zo z;`--%A38<@PvoC^eD^6Ke5F;GzO*_w|3fqTB^KhFI-ZSPP4p|69&gcLhrZD5&I-{# zWQV;x3E`pqk~F-ak8U*P57FaDND``i6$r~kJ6y_^>J*qX_`Kb-ly?;9j4O>|Fp)wk zYr3q4=FNI$ok!C%ZZ~J#309HdJfSWEr$4-%2D4ME3bRRsTNzeRqe;pef#o(@+ugFmT|N8BA)Db+6 u)$KcO@2)j(S@M}1l_fu}gTG>8_LRCy1dZ73UwQubv#b#)%PP26!hZp9^mBRu literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D4002137-8BA4-4D20-871B-550F2C6F9CE8-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-D4002137-8BA4-4D20-871B-550F2C6F9CE8-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9a8985d10651d3dde7f71e6ac1f660b4fb01561 GIT binary patch literal 785 zcmZ?wbhEHbe8?cf@PUEh|Ns9C3=BFz%m5N$VEW(Ezw-23{>5{)-0I$ZZ_jW3wnrY* zo^>vJb!yu?(Ibt*)tgK9x7l2eU6;&YX?g$93Q4Cas~5dl?!Y$FKdRMF8 zClk9f-u`-yf9#ghzYkVkxT>+xpoaUauFi|Rv+EjeU$gweW_Zo9x94Ar=t_$>kB^qW z?UP73p*`n7+of$&Om04VV%~os;*``ezmvu@j82+Hr)*9=IQNv#i#694OxAUrdB#)f z=_NHapZ8ZRERVWR5nm?bm?dpEb>&dvJq8BF|J=TbB^e==1*rxGhW}X^ z8CaQIf_+0w85o4aGxHpCa-0&2Gn1Y3Q&IyG(^HEX1X)8eb5n~I{8Gymg7R|{^ME4G z`K3jfsYM_$20`ZF%G{*<90oxa-w*}Yijty41|bFxMSa(P7k$ToF9Q7T@s0tXzD}K&hUA!5RQ&5H2wQ literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee1.png b/source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee1.png new file mode 100644 index 0000000000000000000000000000000000000000..a35f523e5158cc300fb4514c05980f99c2410a72 GIT binary patch literal 2021 zcmeHH`#Tc~0G+pS*>puM(PJ^qF0Mz<iJ&oE`cfUXF`T4PmY57 zE)d;oW;Y9KgVLdw80zWafd?l)-QX54tN8{i9!Yzd{hLz`H&U^WiMn1_S1qw~0gij= zlEyiVr^0MuQZe=W2gv5mYCzSK*YL&UYCLrfNfYn<^Mqn##_IdzLs{@(MG!mT zONG6eABZ7L1(&QN(mGAAemq?wtIZg|BqapaiMG8e`c%(s2%6s$oC^SA6xnAf1QT#m zAr%oH<>!4n?+&UWVZ8dHAF25OL;Pdt?$bUmy!v?429Ym~GiJM#5o6}*rBmKBKtc!}nqz_TJQ%3ADpcWhde6tvF4!Wq1Z@UbCg}-upvba7?Wrfb8U1 zWt2KRT==#{#<8~L^u$H?0@dnqqOx#)I4PHM6 zlSj+lXewEFa#)E z%kI`S=I-JYc2JMmFpJP*5>|9{9p1W>ssEDzs}F?96>b)Xk~?;wtzLNOb>?3(>hk0o z_|0VvdfQo74Bd$r0SOu3(n$S4k^@)&dieF6!8X7Zbl~fhzB=ouZ)MxSG@F>Vx?}OM zk`%_cRqh@cdMh9!c*l^3pP;v3oPTaxdbz*jlI^%=`9u;}*T2?xhzo UlDest^55%vp)l@suK0|90Z4sq_5c6? literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee2.png b/source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee2.png new file mode 100644 index 0000000000000000000000000000000000000000..0f90696555a34ad7ac628b8791b0a97fa0d14267 GIT binary patch literal 1559 zcmeAS@N?(olHy`uVBq!ia0vp^c|dH*!3-oH@V#qeU|?nl@CkAK`t_@=tu0XS`0?Y{ zu3g){ef!g=PiM}YxnjkNs;VjF!Z)e;tT5Q16ruwtN(&Wis`OTMonSN|AyPzWM z<)@iaFruHFOU6;JOjyle&n;mqS z|CyX&V3Q4BzC+*pDIGUw-}bBM*SvPnx<}FQ0v`^6k)(FFxjn{Phoi(3m0ZqVmy1bDyEE|8|!Rhjx~vgzwOas5pG; zO|6oJ#&6$k7xo^Fy1C{1GZmgmF$#MQN4;%2^^WO{hqKtF!qjXPZhCvq*1j^(@MYZ-eWt>y zQ0kH4?yeVyO5f@)libSlK|AVEkklKkWyhSY%Ov(2C~I)qJzHePW;easRP(wh|4!eQ zjk*p-*|T~gdo1r?eSPY&&apXy7v6O0&h=Y2Yx}%}J(oMLSaa=Ud^}TojYXT&{=SW~ zzRg*){nwt7t!I<>*lp(I+HJF2$EWEje*x`Q`b~CfOw($qiq7Bxw2Z^V$ZAdtQr}hb$>q%)MRpGU~bXmj{`*H2gN+ z2rE~OdiSy`g8yo`fIuvB*}4XwjUjITEAsB`tlP$5+tayh3y;rq-v2_oFXd_r8me*J1|YrB2>cA)t2 zuCucfsB#pHhQRO$fh|8A zjstzdSQ6wH%;50sMj9|UhE&{o8gV;mm4U#Wvr{>;{{PoLpSe}4$eJ^#gH@m7 zN6|M&?jt-W&!wbuf7s9dsO+Cg^bz%oVpW-+uGvPh`<`OGup{7SXlqkHulB`FH#7b? zTTYKH5?gm+w?$aNoT>M|EnRuy-CO0Py2bsm8(F;lDziG+4eD}EKiL>DOO>l6YOPvw z@v-YkMV?!XZ~TZnocBW`WY$|I*+hZ4lgwQ%T|A=L^5gRa;pM!I_ZX!c@Pr2(IOg)}h^$_>ia=k<;RCpycbAB6_R+e%eD)S8ujXaTXFHiWoIQ8!;G@!M7X;FODDl`Wk+WNqljJpj`QwIM8Cxm@-Yvdh8-682 zNN%mKk@ z@9XCEN@jaz9+_m#R^O`kzwcl?<683{IsV^$W!K3~yyAT7)4IEVG-K=1KRDJ3PyaXH z;p4H?6Eau=Sw+$AaX;vW8a;*UdCL>&NTGYJSqPZ%S8FyoklkhkJz%-I^*o;k)3y zL$@!4==@k3bynkVQgrgI;N#nMPwe@!{`Jm#lIQ2D{#JOlouez{hsyL5H73s<%Cq-; U5ce-{zXZzXp00i_>zopr0OFsfmjD0& literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee4.png b/source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee4.png new file mode 100644 index 0000000000000000000000000000000000000000..00cf06979d20f563dc6add404b542d712dfcb1cd GIT binary patch literal 1656 zcmeAS@N?(olHy`uVBq!ia0vp^RX}XX!3-qNd7l?yU|?nl@CkAK`t_@=t?l;h+n+vt z3Q|;6b^Q48YuB#LoH;W(I(o&56+S*bot>Th{QTM3*>ZAny1KeRWuss;1cpZlv`RRa z1AW3+666=m;PC858Zcw1dAc};RNQ(Sal34>0ne28W;2%j|37`Vrf`6fx_G)g*w>0*atg<^~x%*i->%D)T zm#USwXqv|vGbRIhFDU*2re(<`PVMaDzckkm3S+M%)t)^XRf2tRBaPyr$VSn>NgkO#S z_dlH%IQTM|bAqBWkGSsYHfFrZ?sTF&pQUom(gPQQIQ-PHWs$4W{v`r| ztVhqU%(F1eFgyE^8iZ?W!Y zLoNB0Kd$YJb6tP^Pu{lVPbYWuoW1gTv-`J`H|EtcopwD{Xk%a}3n~aaUHx3vIVCg! E090DE5C8xG literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee5.png b/source/elements/oneMKL/source/domains/equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee5.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5f4e31bec205752e1b4c5840a75be2d314e1a6 GIT binary patch literal 1530 zcmeAS@N?(olHy`uVBq!ia0vp^c|fes!3-o#8~K4GGedw+i0jv{U#qIBwr}4K6tT6n zefsq2@#DvJb#-UXoXOA6f9=|}?Ck6nD^^5DNBj8r$jQldc6I_)j)Kt;7#<D z&?k%~L4Lsu4$p3+F)%Q#@N{tuskrqvB76EG10LVY>;V@({{MfrFl5D++w4i24=yZz z{BGvvnhyoO897zO!Yn_|ir;+_>bP_spDM@o+cr0|zqPU4pM7RefkmPI^}3v-js(9Q zlLUp+X9(|$_W657;BZgDp7}C~XZ2^zo3%4OX~uz`0`ae*;7lu8@%H(18{5uAuI;%(&b5;|w4|mK-j4~se?-8U>3_-Hzk3T> z|4;dsA}6`*LZM%m@|Qi#2cr`zZi%g9FYnWRkF zm@lbw&RaFXyYlo>mB(9eyiW<>*?Da9Y{jq6`{zg;lF6`qB7OYz(YIH1ml(Wx#PfH; zKl#owjwN6_%5(_gsH%euL*~NN~;Z440hAAF{dr@||^g zxOpsOi#<- z%1ke>Z%LCpW~<0nohF@;?owth{=h2#^H!ega#r8=EnWR*<2CJD;vKF#uF34-E8lRs za{uQL!+BmDRt8#)!H4=oGXJj0cy9N%{zLcr1#7>qRaY(es`xVVYI?i&A7l4zJmL5M zM%#bCdh?-;`33Lh3Bo(RT}u)VzZBSNcKnaH-lv1PSARWR*7dN)`{8X{TZ@mD5%qgK zOU_9L9GAHGZQFuf{RvSwtywR18tuNsXR@uMxh*a8+4{eWn-^8si5&lXZIbfS&kx_^ d{CgI2NdCg*N9(S9@c#$Oik_~1F6*2UngCNphW-Em literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D703292D-2A37-42C6-B713-E38B801F0114-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-D703292D-2A37-42C6-B713-E38B801F0114-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..6bb49e8223af1d737dca9c1b7ecd5eca6abc1f04 GIT binary patch literal 1107 zcmZ?wbhEHbT*WBQ@PUEh|Ns9C3=BFz%m5N$VEW(Ezw-23{>5{)-0I$ZZ_jW3wnrY* zo^>vJb!yu??&F_)u7B%&{_EWLfBZaL?MD`U6yr#lvt$FF(@)^Li3~bOKiPPpX2_?om>ClHOCLzMz#s1Zt5B{mOm?Ja*tT};`0x;8)gv| z9TLZ{8)as^T+t!!@mRE@^5qk!onjXwL@ckB2TV(oniT%qP`ise!(sJ--5R$!1=9rQ zSW8>C#e6<>>oxbDGex_V+@GJ6lJd26K6dlKlGr^WdXYDe|DNMqC(~;?=hf?*HHrTG ze73zo9)0;wgLKRIwsk00aJZZ0eX-IoKEi%;Npb#@N@4ShbJdFfH=p|Go%r&hX}6rI zgvwUFgidu?;UWdsO}B0AwY2kogcc<4?-y`aTBGSJ=9Oj@^^L{qao>^+S1PAoIk(6oB+GOkK$X)v#ejw%(}ef z%znOifiIzHl z-0XLP)o*)3wsq}WxoT3_I+v@mETw*rf1Z%A)KB^0^}1Yci+$&-+zR1*fvoVCyF-HGIWyMG)h6P)-wQzp8}b*4=6((80!WKjIi z?VDJV5mH%@YG7dapOuk;mB}U8H^h{IK{z}!&oL**DX};+**QNYH6SrPwU|MWH6$}P zwOGL~wOk=6KQ}QCDB_%7T9lbu1QKHqWDc&(P0G(<5M=QUQE;s&DN1AzV&G8JckOr4 zcMSLIl zyi2_67Z7sf=V4@EVqjuoW@2VwW?*6jvKbf|SQr?%K;q2-K%z+l#EM{GVrjEwumv)+ zL4ukHzB5p#ECT~KSVt}cP(M)7%4}fn;{q}YfU+_mSw^rpR2Xb%hat!iAtha~GO(d2 zYI70NAZ;9sAOq`lfX3G=fb0M|gr$u`=^W7E%wSvV4M1{W1wf<0ES7FH1#hTeGthBN b4AZJXL@kI}uLmk4P$JHVjSD2kz+epk803vA literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee1.png b/source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee1.png new file mode 100644 index 0000000000000000000000000000000000000000..45f229e160519a707412bed1a0b717467661920d GIT binary patch literal 3334 zcmeH}*H;q=6UBq5)DVP45in}#Q94KsJwPCoNN-9s;aL=4M^KkF)WhTzZKpV)&#RvcZfCwGUhX4Rg>qW0XPkW(j zV~M5!04=}>X#(Hf-K9_{ZEbBA^PZj_3j(V3dYeQamCzz6(a3FcaY&hsk@fdK!6xVolWf8%cU*;NLSvkjAyt{#zud) z%8k&?r1{*J?<69z#piOT=`~6cY;Pjj1 zN6kH;wPHOamSc@A!r#NHN2-4Q6JR#c@__Hz?Xoe!baur&BL;Z!PF_7MJrybBln`H1 zypN#=yx_X>B6b*24lW#U*DD7Dz#zG`*MgSkTfx}^G54WyB+&`FuM-@ z4wq@yO>uVo(#@)@QCHw}2I2jpc2{GS_$Sa9#P=56Fs(vw#lDAO%O#0rmX_GNns)LM zVV9yL=&X)XRheZSWs7nUoe~aCZmN?G!o{N|ye0+NJn( zwm0^*u1Xh)5Ss1@cV~fd$o5UzPt_$TAss7w7%QjTgjl~p) z#GHGgy-4}2^V*?jS@>pF&+tX%WYw@NfVeqmt$q+sN>b5Dv@{8;`jf)twe+du zb#nFimcYpmx7N*SopxzFzxObsy}gh8z#?W_vcRh81-{2#nY!pw{b0PK9xK(3yZW7}6t7;l1*4WPck9D!QGTmSu_LDBPH!sT3QCY< zvtePN_I*&G)jk^2=`2+B>(S3}N)iy6?EFAZ?C%C%;t+J{S7-AfmI=)?8OZt1we0NN z{vjKR>GR&}i;mW)66j&?XoMes`Vx(mii;#x7fy$QdoNvmAWwF?q){lD+b9*_9l{C) zRGZGTTx&8FoOw%r4SGJb7+x2g1$FX-VGFs@es*dEp$N#dBFK5xJDBfrQp-7N!vBV} z`-iuU^Fr=7iO4`p3Zt#6r@xKF=MH-NohQvwv?OGrIrs|XHR9PNc#m1X!RQ*F1NW|o%;6*qBP9cHv`<4Pt-S&UH5 z4<8(H)3Kx8nB^g8YaJVJdi4bM>qv(ikI-b2f;__{u&;f}fNI#DFd8{ildu%-Di=Ypy6?%I19wO$7U z)nMW1ghL}BOVH0wp1?n%mMZa>vT}oGZ=x&HfZvZf)e>zPJeh}5xO0=D-8`HtlgGZQ zpHS-GD5RDp+j6C9-}=0uT+QsQxNINHHmc6*wD@I1Jo$;;KxZUt!IW8JV>h$3oY10A zSIU{fbguNVgT(BY2SW#>Ml+mK`SmgI#a2BEy& zR_fRGuwOdV9A?EH%XYSSo;f|43@AFee_#2eA{@?bAv3%MglHCa`(GiUhN*<~>E)hW ztZY{bHa22uvp&BVTv95yr1V!LRSQ&ZxNtBKDp#hQ@!UbM!mCL)`KQ7t&Q~SIt}3#A z>#?+Ou8Wf1l2992;ZcF&vmxip1e|3h%O%Nh$o9&tG z2xO8hSIpvJj&yFJz#m*?V@bDu$nK^j zN`ZW+n0|a3a1TA@($CCksjKFqwCcoJjk2YRs@9CK)llir3jAf_>Kj#G#cE~T5rhyD zv!?DG6Q*hCM4*FOkD`x++)P89=)n@sL(Z?1Y@`=hst*$T-s5xw@F?J6K+N%>IQ?BY zijJsN!MK72#~6}b3pBGG{)A&cThFCC4i$<`9C+QGRrt)$vH8AZ-e5;hrE#h3 zQf+@=+V1|9({Z5i4q`9EC*$bbj)1Puz1@wGHfofkdGxga`yJ}f-_bJ$Z zW+qCpttC$J_`xetZJP1TcWoVY>BOIKG0f=2tz>TgRj4cVEz(vL9oQ|>uJaVhqIghT zetsFP_Yku0l6mi2VQQk+++31yxXIa-nK^?RnWYV;{r5a+6|l3(uSA{{sB;51{}6 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee2.png b/source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee2.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f4b4ba29318409a7d90dc7f389423aa2280f27 GIT binary patch literal 2700 zcmeHJ`#Tc~AD<{%Zm|$%;kZQ>>MTQSOkvnu;v|>ixYNxJMqcX-XJ)Q*zl|K_(!`WY zR&He`bebmjTT+a~CYP1h`)|C@`Tp>IKF{a*KF{a!)0c#Cx+Dcu1_A&8DZ9%yE&zZC z@&I3y5Ixu-ALnTRfG7Zic0&mS0z4kSxVU)0x3siaSXgkm+`hiP!oor?FRw?B9+5~S zG#V`jwbEfrJLxp2akO7C;~4x|42!So%vXqyxdKa_Re@#dWY&rYr^qqO6U75^ zAzF3t-LQ$WG>uwM`Ap-)3g7ipMu`%MdKOUPGpFlmBjk+y#Id;Gw;Nr6STXet$C4W* zS|JaD+7-s>8~wlUZ$dl^WUJG7M@AWpWV6!P-{xEGf`6YV>TYa;BewXp(iQKpj9 zJG^o^qw5%VP}m3tB@7BTdn}AQsH|Jx9gf3=xpcvT^@1%5<%2tJ;eCk*cQZCLOp|1PyWvk_z z@uBeW*2mF0OycXQD!u)0y6*S3KO2IhA-(t-`#*qA@Ar?)`D)PPh6KK7$s18ae5|r6N>%N2xRQzIQsEq%G>55e#gKFd0l`gLqs=N-!8)>bR-aCM zwPvSKsR4V^r)O>WAf;7m>)jB0ckMMXhj+35g$3VgyB%&F5%vC%P(SkdophxBd8{!j zxm2O)#k$HBghbEu(!H0;h`J)xw=qgLSk)Y`-(W@}BG3Y~MDGCV9pMC?6x2^&Z>Ppq z#<_3!eaSmqG;dhC8y}SJsNA0LA2F!$-y7h~n;l|Nw5a9#dM9FI*_uRb-zNWIq(o2S z9;&`UIL{XQD&Bn?SA*DY@}`Ze(rS%p(19({Q?hs_Ei22S^2iBd3BJT54X^C8!sZZu zCac>PB}Yi)oV)qx_c16MC!>5;(Cp*kL$7i#EOTxHTaVYFgr>$TqFcv)a~AroHdduR z&g;IW0IBDZx2i5m`)MeQ>F>GOo*${H>JPzH1;+7BR^Oz*a+#7c>JtmDdHU9xYa4B% zEeJcFVr6+1rY<87O)!|ak%n4N`+Zrj)PZi>ayB2?^e2INGW+|1#FhM$?LS5Q_1SA7 zh#Ja5FKQ~CK76RmK1rCH8+X`D09Q1G4vSbcu+dn>^CoEUlOIMN3!bSx={DqqKKQrX zeA7Ig6?XYjDz6*hY?+(WFTJ&$*ZyK)H+kl2c81M)UK03^MZ_Pbn%&X<Rc1o2;-V3($*Hnrv2{f zWsSM;jZ*8SS7tkxhjhb%Z=@$q5^*G3yG`N%&|v4PEf$DRb&hEF(sFwi;(mB1eu+Jh zRcxH>9pJPMGgEJRP6lvR2X1;g3o##?CreLlW~jQ(ZrP-PPVPqOnYa*j1&tSMMm;X- zPDz2PkJj|WlRz*d|DjAh8`BaN_$=qobKri~r1pg7U6CBg4$D5WhtHd`vr*Y6patt4 z$R*lq=^sq9--dQ6kn`iw`k~1(5g;?tXX&_$jE>PkWrK$HlFArDIqVi_3PNcpDx4ii zxr>EDNWQ_KJelF)g*ELi&hiv~?(2cU+7p6|5>MMXJye*)!|fZ`nspzksu}jSGkSuM*>FjP zs6w2PM^^kg$;Ag8!l%|}IgqB3C+#Jq(1hz?bO{(k{|dCFD* literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee3.png b/source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee3.png new file mode 100644 index 0000000000000000000000000000000000000000..d8dd46dd03972b04cfd511c4bd30879d7a74e5c6 GIT binary patch literal 2718 zcmeHJ`9IT-1Afn)vAH^&IVz=5j*2nInpa|*bEJ`2&7DuKMn#4+6p1po%n{|vwUi^x zoKbTZAxEw`a`u-c=*XQ}+c|EV^_5AWYKRpy1>;-XAIZ*%r#4lQ)>;M2{`d1r^ z@c(6hNu6u};0J8b4(3~1TjAm1v$L~*{rdWP1OmZiGKYqSs8lK*k1r`Hp-?DjG#Uzp zYHDiw`uZvu7&=*Ua zt&d9P@w&48Rj#&N89gHI?TPBK{tZ^ z{Cjln{_2?7QBZ)$Dl=SJOQ^k#iAbgvW%mrU z>Ff2R6R*XfO>N}Dmqx$;sKA~*Q&1%Bcjvg7zTo9uC687QaDgxRYEYv(6eTfpPG`GC z84|4kULLfrpgTT1id~7rujn zah9_fgh+awx(-TFgKR6c_wZ`VlZ?YG$@`=VU`#{IIZb^vB?k5FeDqVO&?NztX(aWK zCs%u%RofpL3q6pMzEe^)xwB7sID1knv)26;xooV5+ysN(E;bZK zv@y^gc(E)Jn@*DjFg5%X8Ym`|tYX0Q$5lb9AZAvfKk@+VLpEPQwp5#Lsa-79GRh1d z09%vCGe`>AW*&R*w+$#I!Q&Vysz9{YhM1|9W|%x8i{RXrQw?@BhjQlG1Z zbu{%!VBpR)tW}O(YHFXIqOH_XGmOra;!@i;?bVwM|3VDT+a->$nCSAVVN7Ew>t=75 zNK9K#6fq)2{`SlFX+`_%gGs6Q`S(xkGZFug9a64$8q2qGpT0dxr(!!@^x-EGYBucj zPJF%bElG7J){QcXpjkE)`U=Eme4h0$X?)A>pNYV_dX?9W@Mr56Ug8=e%4Bn@y?7}; zoF$p15SCQ+yA?*vjoSi0Q%8DGrY}OfqQJTMa=$8K;*bFCspAyXs=J1JI8n$hQ8&fds&3!tkT9x@X%h*jkLQJkiPAlnAuy3 zYP!IzR4cOzp~UMIz3i}xeVzb`deO@R_rW^u*JP$|16vtq&y+DteU}Y|s3B z4wP#nnh$2?63&a99D2)dGH4yN4$cgc?8$%`KCrwbe5MRuP}P}J?b2##ZK^kF+q3Ti zbkfbrhC!ySz;wu*G2 zm#&NH@Nx>>+_AKy4r8`Kqt^)Zfh0<=tJ`M5=kdH~8M~zVQx-RM%@ZY`A7*BV#A~yn zD;1G%XFa$b%Pr3pP$o-l37UH93WlA@` zn1u@7nsN+vIpAJRDEV;Y0*QXQKzi-9MN`=0>7&wRn`yfkJ$FuE)8TH019rh_DJmet zasHFzl3D|4Sgv?Z7oS#P{a6F+Hr_uyf6!svy*API+H6hpp_v?u-3RL-fmHZIxEK0qCmXE9o#2E5dxA*2-OH*?24Nb}t%b}GHf4=?} zoQNZVpV_dKjsdhnf|ZxUo7L)L)y13HPaM5PyCT*mrg>(ApYh;R7}3?t(mhx$%yK_P`8_3Yr}jU5vQfBwe)F0IK<=<;|}N4kkdUQ7%qV+ uQat{XUB5E>5_+~br*79`AvBKD{KX_KmG;c$w{gn; literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee4.png b/source/elements/oneMKL/source/domains/equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee4.png new file mode 100644 index 0000000000000000000000000000000000000000..74c4fb66b52bfeec18acd1b6a9dd3d4b2fde5d0b GIT binary patch literal 3330 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 GjQcMRxqzMk literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee1.png b/source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee1.png new file mode 100644 index 0000000000000000000000000000000000000000..a35f523e5158cc300fb4514c05980f99c2410a72 GIT binary patch literal 2021 zcmeHH`#Tc~0G+pS*>puM(PJ^qF0Mz<iJ&oE`cfUXF`T4PmY57 zE)d;oW;Y9KgVLdw80zWafd?l)-QX54tN8{i9!Yzd{hLz`H&U^WiMn1_S1qw~0gij= zlEyiVr^0MuQZe=W2gv5mYCzSK*YL&UYCLrfNfYn<^Mqn##_IdzLs{@(MG!mT zONG6eABZ7L1(&QN(mGAAemq?wtIZg|BqapaiMG8e`c%(s2%6s$oC^SA6xnAf1QT#m zAr%oH<>!4n?+&UWVZ8dHAF25OL;Pdt?$bUmy!v?429Ym~GiJM#5o6}*rBmKBKtc!}nqz_TJQ%3ADpcWhde6tvF4!Wq1Z@UbCg}-upvba7?Wrfb8U1 zWt2KRT==#{#<8~L^u$H?0@dnqqOx#)I4PHM6 zlSj+lXewEFa#)E z%kI`S=I-JYc2JMmFpJP*5>|9{9p1W>ssEDzs}F?96>b)Xk~?;wtzLNOb>?3(>hk0o z_|0VvdfQo74Bd$r0SOu3(n$S4k^@)&dieF6!8X7Zbl~fhzB=ouZ)MxSG@F>Vx?}OM zk`%_cRqh@cdMh9!c*l^3pP;v3oPTaxdbz*jlI^%=`9u;}*T2?xhzo UlDest^55%vp)l@suK0|90Z4sq_5c6? literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee2.png b/source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee2.png new file mode 100644 index 0000000000000000000000000000000000000000..0f90696555a34ad7ac628b8791b0a97fa0d14267 GIT binary patch literal 1559 zcmeAS@N?(olHy`uVBq!ia0vp^c|dH*!3-oH@V#qeU|?nl@CkAK`t_@=tu0XS`0?Y{ zu3g){ef!g=PiM}YxnjkNs;VjF!Z)e;tT5Q16ruwtN(&Wis`OTMonSN|AyPzWM z<)@iaFruHFOU6;JOjyle&n;mqS z|CyX&V3Q4BzC+*pDIGUw-}bBM*SvPnx<}FQ0v`^6k)(FFxjn{Phoi(3m0ZqVmy1bDyEE|8|!Rhjx~vgzwOas5pG; zO|6oJ#&6$k7xo^Fy1C{1GZmgmF$#MQN4;%2^^WO{hqKtF!qjXPZhCvq*1j^(@MYZ-eWt>y zQ0kH4?yeVyO5f@)libSlK|AVEkklKkWyhSY%Ov(2C~I)qJzHePW;easRP(wh|4!eQ zjk*p-*|T~gdo1r?eSPY&&apXy7v6O0&h=Y2Yx}%}J(oMLSaa=Ud^}TojYXT&{=SW~ zzRg*){nwt7t!I<>*lp(I+HJF2$EWEje*x`Q`b~CfOw($qiq7Bxw2Z^V$ZAdtQr}hb$>q%)MRpGU~bXmj{`*H2gN+ z2rE~OdiSy`g8yo`fIuvB*}4XwjUjITEAsB`tlP$5+tayh3y;rq-v2_oFXd_r8me*J1|YrB2>cA)t2 zuCucfsB#pHhQRO$fh|8A zjstzdSQ6wH%;50sMj9|UhE&{o8gV;mm4U#Wvr{>;{{PoLpSe}4$eJ^#gH@m7 zN6|M&?jt-W&!wbuf7s9dsO+Cg^bz%oVpW-+uGvPh`<`OGup{7SXlqkHulB`FH#7b? zTTYKH5?gm+w?$aNoT>M|EnRuy-CO0Py2bsm8(F;lDziG+4eD}EKiL>DOO>l6YOPvw z@v-YkMV?!XZ~TZnocBW`WY$|I*+hZ4lgwQ%T|A=L^5gRa;pM!I_ZX!c@Pr2(IOg)}h^$_>ia=k<;RCpycbAB6_R+e%eD)S8ujXaTXFHiWoIQ8!;G@!M7X;FODDl`Wk+WNqljJpj`QwIM8Cxm@-Yvdh8-682 zNN%mKk@ z@9XCEN@jaz9+_m#R^O`kzwcl?<683{IsV^$W!K3~yyAT7)4IEVG-K=1KRDJ3PyaXH z;p4H?6Eau=Sw+$AaX;vW8a;*UdCL>&NTGYJSqPZ%S8FyoklkhkJz%-I^*o;k)3y zL$@!4==@k3bynkVQgrgI;N#nMPwe@!{`Jm#lIQ2D{#JOlouez{hsyL5H73s<%Cq-; U5ce-{zXZzXp00i_>zopr0OFsfmjD0& literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee4.png b/source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee4.png new file mode 100644 index 0000000000000000000000000000000000000000..00cf06979d20f563dc6add404b542d712dfcb1cd GIT binary patch literal 1656 zcmeAS@N?(olHy`uVBq!ia0vp^RX}XX!3-qNd7l?yU|?nl@CkAK`t_@=t?l;h+n+vt z3Q|;6b^Q48YuB#LoH;W(I(o&56+S*bot>Th{QTM3*>ZAny1KeRWuss;1cpZlv`RRa z1AW3+666=m;PC858Zcw1dAc};RNQ(Sal34>0ne28W;2%j|37`Vrf`6fx_G)g*w>0*atg<^~x%*i->%D)T zm#USwXqv|vGbRIhFDU*2re(<`PVMaDzckkm3S+M%)t)^XRf2tRBaPyr$VSn>NgkO#S z_dlH%IQTM|bAqBWkGSsYHfFrZ?sTF&pQUom(gPQQIQ-PHWs$4W{v`r| ztVhqU%(F1eFgyE^8iZ?W!Y zLoNB0Kd$YJb6tP^Pu{lVPbYWuoW1gTv-`J`H|EtcopwD{Xk%a}3n~aaUHx3vIVCg! E090DE5C8xG literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee5.png b/source/elements/oneMKL/source/domains/equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee5.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5f4e31bec205752e1b4c5840a75be2d314e1a6 GIT binary patch literal 1530 zcmeAS@N?(olHy`uVBq!ia0vp^c|fes!3-o#8~K4GGedw+i0jv{U#qIBwr}4K6tT6n zefsq2@#DvJb#-UXoXOA6f9=|}?Ck6nD^^5DNBj8r$jQldc6I_)j)Kt;7#<D z&?k%~L4Lsu4$p3+F)%Q#@N{tuskrqvB76EG10LVY>;V@({{MfrFl5D++w4i24=yZz z{BGvvnhyoO897zO!Yn_|ir;+_>bP_spDM@o+cr0|zqPU4pM7RefkmPI^}3v-js(9Q zlLUp+X9(|$_W657;BZgDp7}C~XZ2^zo3%4OX~uz`0`ae*;7lu8@%H(18{5uAuI;%(&b5;|w4|mK-j4~se?-8U>3_-Hzk3T> z|4;dsA}6`*LZM%m@|Qi#2cr`zZi%g9FYnWRkF zm@lbw&RaFXyYlo>mB(9eyiW<>*?Da9Y{jq6`{zg;lF6`qB7OYz(YIH1ml(Wx#PfH; zKl#owjwN6_%5(_gsH%euL*~NN~;Z440hAAF{dr@||^g zxOpsOi#<- z%1ke>Z%LCpW~<0nohF@;?owth{=h2#^H!ega#r8=EnWR*<2CJD;vKF#uF34-E8lRs za{uQL!+BmDRt8#)!H4=oGXJj0cy9N%{zLcr1#7>qRaY(es`xVVYI?i&A7l4zJmL5M zM%#bCdh?-;`33Lh3Bo(RT}u)VzZBSNcKnaH-lv1PSARWR*7dN)`{8X{TZ@mD5%qgK zOU_9L9GAHGZQFuf{RvSwtywR18tuNsXR@uMxh*a8+4{eWn-^8si5&lXZIbfS&kx_^ d{CgI2NdCg*N9(S9@c#$Oik_~1F6*2UngCNphW-Em literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-DF275A8A-05D4-49D9-9031-E4A9382C284C-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-DF275A8A-05D4-49D9-9031-E4A9382C284C-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..829f8c8274908bcb8055eeb3a5e797c28e793afb GIT binary patch literal 605 zcmZ?wbhEHbY+x{D_`tyM|Nnmm1_m7HO%>pr&^6PwZj4Iif-kEN3j)_94YcorhHH*U52+v4yo zRn-q3S*X})Uw*YsdSdnMN5^wK)!W@>=akePJU;!>^DoR-N)uco(j&HgVL$O?#|_7u z6`eCzzKm!*-s;48a)prAuAr=}rkSU1S#`X!auOH3(U30Y-RdQBT&-gUcevIw?&%Ub zHZH6?czSrY8F$Z~;8xQUb6g|yj?Z1*-)ym8U*D~LJ4bt-$GO;heD9XYUGuB2orEljZ=(RGa%d83i7}(a$ecq(t42RJY4=z>) z2F3r}zKJCnA(aKG1_p-zSs58vnOuT>Lx2G#9G;oyn3Lm_Se%*coS%{!keHrY%pk}b zl9`)Ytl*bgt`L-;o0ta_an3I-%1kW+i7^N=2Uq4M<>xR6viOE5xK@-DB{B#xa471l ze~MS^SJZcpcMSL>FXtHWMU>x>;fw1R)i3={@j#XUzcY~fB(Jda6BkfS5hwr@<@fj^ z{-qx%E*0+*@A?IV9Qk<|8JHNDn3$QE8JHQE7=dgCMg|rJ1}>mDOPi3AE|8Q{S_)+| zG-m>paWeqbFtM~8U@ibL7#edxL>|zXCJi8~!w^Jp8vw~BO;B1v3mPLfQHZED01jK) ARsaA1 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-E3193631-248D-4D18-A094-30BB6FF50687-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-E3193631-248D-4D18-A094-30BB6FF50687-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08b88f54e5c0c4c6bbb39a0822c372a0b264e5ef GIT binary patch literal 4976 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 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-E48BA1ED-9ABF-487F-80F3-1FA1E0F6EABC-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-E48BA1ED-9ABF-487F-80F3-1FA1E0F6EABC-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4588f55a652a309e15b4b96c8d349bf56f2cc451 GIT binary patch literal 5357 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 bW8{H61T&I=sL1$V`j;!K!ir&F0BHUR)AihG literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-EA1939AE-5968-4E6A-8396-6F44E73939AF-low.png b/source/elements/oneMKL/source/domains/equations/GUID-EA1939AE-5968-4E6A-8396-6F44E73939AF-low.png new file mode 100644 index 0000000000000000000000000000000000000000..d91ad19c3f919f350a2d7614974788b12409bf7b GIT binary patch literal 14984 zcmdtJg;$i(*Y^!W4c(0}bax}2LrICW(v7r&QbTulH;8nJfP^#((jiET5>g^1@f?16 zzwiD01rKYnSOYWXI@dY-?ESsIpG}nZBNbdMDl8-NJtF{*w+?l;5DWj+{hCN39s+|8+pjJ(i#a#;(@B7 z++&}ozw-WOkPKW7p1-?3`*sJ5$W6&iq0zDwaTH=J#*Tz4Tfc`Q^VVZQD`D8tjfD^% zgFem1;vh&cXCqeda4(0hxOG zX7lf=Rw}COc$H)b<)QTSi5L()V`JkPxW0Z`xky=UEuNOTnwn64VOJMz)WE<1>!aL> zQZHF{A%mw+c_yQyu@nX0a!~UL8OnZjvA36{*i2SgBnThK4V}5fiF~Bh*-O<&V&32& ziC`-JLWLi1_(=QA$pnXoN$??uqRXHRg`=aRw&Ey5^_!93Ds+MjnIx^Vj{~>jddx== zLq|l!U#-P->)YFnH+N7%EHz<4qzP5oHtxgEdlv`?SwG6XM|zAVlni?vvk0yGy+f3j z@56Z0uV^pnKGDmd$Us)af~I213LQWw6P32KPEwxAwOiz2bDogcOCs;8U~OZopql3i z%wJDp>@s`{7fh8k{+*0bl9pDKv^9LuAi%V{TuF(fS4@;iF%^7ulk5KxNnOtiuK=oU zc@}EH&r0ttjZ!>Kj9)*r+AxDJceC*Q=xa&#$4-O*5+FxkSO`VzP$k8U>OQxbet zkZ}Qxt>ipKvS?5jac!=j&_PK=I_q?PO)!`fZ4HmfeC+TbkN?{QjS)fhKrT}|<&z)N z@>Fs1TGv50vGF79hBReg$RF+`^T|rGvQ@Uk1>d46AE?T15+a!evkOS)4eJU?;O4Tg zl-gluiR?XAjn?0Q3{~_D?~gk6?DkuZDP!{S?7PiG^%iqfKMrlsy)h9Xn4tMO;M@BZ zmjEuRtrhg&dqQ~?=G)6!j)LrC;!hwn$*;a9CATO$*ZQVEN(h;W!-BJQeCb4;#Fx+U zLhF>^#>@X5i*1rlq2R_wQgH$`d90I687YZkK8`gynhs5xeP;vr9iEI7qE}nzVK~R6 z_TeEq1zwzEKQVt9jiGZ>4rL{3NSbP+vG|brqJ^pDwRs0&8;I2TORp#psY!prrEpl2 zLuv=TgSA!9oTzR5v2d~zFCkErB?9M5W{yUL7ECLzEK$y5qY_y|YH&}@$V3ihY9Oqb z_LPJBS)TomAK^&bQ1%h$4JIiBvH*nx5e9DPq=PRB(JdPKoXYs!n0^VWZAc~&Hi^Yd ztc1esq;;WAHBKg#h4?DkLYz7GHq*>_g_75+WFjvO7PNw&RpsFdv8-%~Epb$SSU7Iw zh7D4}I-b-7Ds~@eA~h53{i+ufJ=BV4LV8*9SiXy4LN z={JPlFh(4+<+lT2Uj7Ag4DJUdR>9W|n*|hF+At^T0W&iiS=O?ExQ?=a%xF`;AM!*z zbeUmb5n24N+9S$xEt4XhJAq9JnnQkxDBoH{#lL8|nvgShh!nTlW zXn>EQ34SXp!sN56Po7rB&r>F52EGwfllp$|V2IHYZPS`p%gXrt*^HLE5qd4efp&em zN;N=MVdJsRghG~S#AfzS#Ht@U80{w?JYI;9BKS=3wxG{+R~~+qwi44&QAI<{FlS%#!AbGM6aHoqpotK_WSq- z->wjTl)fzo-QnR!({Li|g*Kg$JbqDwx1Hf+F)W!-4GdeAm2SpD{76@b=@J{QKVoE` zBseAy%I65TEmr)iDFI{Av?XRe_;4=U^$MBx{ADJ()LB%zYCIi6&TfL4!uaw0-32z8 zF<0<#%!4d!XWY;mX97#c9*}S(%j6f}Z|GV{=CMQN(lL~yzj%>jQZ=f@L`c)4G}3nu zQZKdKR_2Hve9#IPC+ztN?LoaNWS_z;01*K

    kKq?yFEF3^!xaFfAG=#ysQRmOpE1 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 LBgI;I^Wgsj-qOD7 literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-EA77C856-3F93-40ED-AB2A-0F1BD8C4CE7A-low.jpg b/source/elements/oneMKL/source/domains/equations/GUID-EA77C856-3F93-40ED-AB2A-0F1BD8C4CE7A-low.jpg new file mode 100644 index 0000000000000000000000000000000000000000..453a3f4edae1a5665246905e4d091a2bf9838312 GIT binary patch literal 4177 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 G`1o(4I9PoE literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-F01C1454-13EC-4D30-8E73-8E41755B8AF2-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-F01C1454-13EC-4D30-8E73-8E41755B8AF2-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ae60b4fc97077dbdc7ea5b122dc6b8862c0ad56 GIT binary patch literal 619 zcmZ?wbhEHbY+x{D_`tyM|Nnmm1_m7HO%>pr&^6PwZj4Iif-kEN3j)_94YcorhHH*U52+v4yo zRn-q3MX1me;y${kq;ubm=f8D!t<#d4?1{Q1_9)UX+WPE16Qkt;z`45SM zD@xUmS4jSJ_{k}yb*g+JbEQ?w!JBTgR@`dew2N!D`FGFm+1|>_wJ+~#IUs$<>hvm) zBgfl1ZtafHSSEAl=9_fStrcf|WKXu7nawtD?cTk~RaV7oSI#~@=ZBox ze0$&f@B03q&zpOo_UoRMrtSXm4o!dC7_ThJQ&`nB~& zCwYaXpSXZxia-IND8I)S@h|;AajAHhc-Jo=p9`P?_VZ)sUI@|aOGSsEsLUsURha$3Nw`|7PV)zM|0!D{xF{659=0Q`tIDWS^J=HtKPH=M<^$RNO{j}^qu|H(su0X^8Dz*`)2KI zwUv#fHm>)_&Dt7`#^%uj6rLKlJ62R6RoppkI(PGe^?hR! zWE&*7YZ+N1a>nfa#<9txr`Y&ctB=UV7#G8OE#*c+D{;EGyGVbVLX%oeo63-#iM-{i z$2+~QG(quIk&AqDUf4%vJYRZY;`8!k&%VSzw{IG9xH>p+B~IQZ*zGh~-dwu#fE#Ct z7Lj3oLtH&ar&m@SBhx=rJUlGuk{l}88nI)s`Cf>Ju&rhBMi0M;-sY>9u~<7&#O^8` zVil%U4z{t5x~oXtLe+M4hM3A}B~{*K&Po==T3mD7&jIV)L&;o2La0xc4^dlkpe%5U zB*bMO`b^fV&JuI;t2pxKdv%SxErJa7tUfE$Y`A_X1b`6shQ?49-?)HFIU zwu9li&7C-K@~Pc;M3VEhgQ5bcm`Ep*Og33_cIqyKNO(D8hdCP;CMfobXA@N!Up8rq zC9Wnt6POdx#L@F5k*T$3lh51K(HCDF99y6B8P57bSY~Ww!KqEok7`R5_?nCSl$@CI z^2qV%%8opGPskOu5lxr>h5IhNO>tZFd!h!Nu#qae#&E6D%N&tU&arYUhO}xX{ZQsD z8te1ACg-bDPTe9j`KDWE9bWvfVn^axe>|^0Do$^N`~4Pk`Cs*>ww%JUw&RXtmzc48 znAM)QnyPM#L@`Gq9?WQl66{m>QODO8*IV}1oGqCupGk0CFy*bt=4I|H*4D*DtR%V7 zsxNS{|6XX%lnKfAVe`PrFx8oWOv{Fp&_FML*5GiMfc0pM+0PpK#BZAQ3zln_`fK~? zgw)|ENkgif)uP89+0y6F{%z;5fc;oL+0PzHFOaiG55#Rv`y+f~VwxhDclU|{w`(RP zHvR{fxd$ZveNAF+zkfhW+qmp@%P2qlT)IHUNsD{tzhuA}-yj}qnN<1MXW(n3a?Yr9 zJS+9dxAS7oG?5dnKWijX-RShfU{lCS$E2p&di`!|C26@qI?p2V?T$IwC1rMemA7{# z=t-$C>pZ*WzB_mN2ldY71vYwR`EOPAt5+{)?`Nx5)Yx{Qb0i0g2f$p7@u#K41g9Ti zI5=!qYodTA<+kNKxXc-b&#r@+mxLd&3k7PxYiyl*k}qbx{BU5TpTV01W`4 z;259)8UP&x&)oxq#wdV60c{infovKKatS~imZGyRYeWGQ3h2O)4I)lMNL!f6cLQ!} zq#9fZ1uGy>upNQ*E$kqO%RpqS+9Pmv6g*yY8UO>3pSR`KQeH1>3#&H+*vnc)N8}zr zT&@~MTX!i97af{ApSTwJ8wYqG9!@IJ#3I8)X@n)g_nfE4b z&ELo1<28Rs8yRofSlbqKzKKOO+{3EotsI@d6>NoJgallBWS9PPG99(x?LeO0{{p!; B^wR(U literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/equations/GUID-F928F918-624A-444A-BB76-7D26D1E1BC62-low.gif b/source/elements/oneMKL/source/domains/equations/GUID-F928F918-624A-444A-BB76-7D26D1E1BC62-low.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d67ba8b7d40e5359e8e5159961dc9d02c732142 GIT binary patch literal 1091 zcmZ?wbhEHbRA97a_`tyM|Nnmm1_m7Dc0K3BPTv0M_de~ab>9E_`-O?q`F~7V{?JsS;zn|X;IfVv6_+Cfe|kh3 zTNY-15AU3O^SI{Imq9DG8EEcuit_5n61{wD*2Yy6ByXE!CwD(Tu;bQ_%w=BctD;-H zgLOWpNwgJ+S-zQO8e4T{woc05uD8<`{CN8I&)E;sS$cU3ZI}H!bZ=vf$8CjWa(@GS z<-NFhYL-;q^5-W>eC&p6!{Wr+@1YhskrVE*J4<7d=wd&h?p0zjtIt z;KC~lbn1gxe|(C$+My(v_J_+%XLFH2?X@LQS6tS1IsKhmyRv7&fi<@MPQR^OGR?P# z?^HT+WLxg#?cas?TDyN}8f{Em`qp+vg?7}E76#$EUj_zhll|7Z&0833_~b;hJHKX@wf*|J!PWcTG@smme$R4;p!*+x z*ZH$b#+~}(p1^f&&2=8PFQO+DB-|gCc;@o@{phphan+D(<@L%~=>8#d$HJ7&HaiqL z)RGp4*48u@Cw0eeIT9zLnfGmB_kSIZYniL3W-RVyJi9QdU;W>Vs0mK9A|6+{>%HX4 z^09l_J~62YomAyY{>2I|h6a;CGLA4EQ832V{%#J2HH6 z{i6D%-zgr*65w|RQT?u8wBkL!^n*nlfONeFP|8s&-X-4k3kW&#^Dr_nF)%SPGchwT zGcYj%*$j*fEDQ`>KyjAVWz23&42>EnbK4MBtV9;vuFiD3rgd!Sl_3m%Tc*?H%{=Pd?Yb^*+xLkf>SD&6VwNkI}+MEA+&(Pn@xTj9k;d{QBdo ze_8jNc8=7+C!d%(C1zjGY2C#ezxeT&_tB4e@4o(GY5M=-9jyH1>2aUESyE5AHoi(uv`XGxdE)wN zX-!q(Id0WFJvy_yPi=UUnDd6s*5t00x6h;0Ewh%FsvP|rCR@h2?#9#yyhdskT|45Y zu94NNe_gxRSo5T!WyHJ4HMUQF?c7wfo?pfOs*bJn!M+FfS!Z}&o_@rkFg5t4jH}0z zik63qni)SnweB=p>{WL7+EroJqRU5GZt3XRNG=KYjMua7D*9xo63}gvdFbNG<11|S zRJOB-u5wF0zi3a;yP#i2XWJs|wl3QAv_!_r#rR~GX2xSBwYubwC6g;cADrXJdU

    H%Z}&EPTf6(+hbO0J+xPGDV`NbL&+VI7k`Yo_kZNFH_@9-L zftAT6*f+$Kfk8MtGtV(6$0@NmGub&mB{d*1J++uYkToPTH?>&7FST4DC_gtb4=CcC zUs{xzS_Bef5M&On%uUMAVGv~T4N-8dC@D&05Mtm^)OYQ7(RU2^BEat+?-=k&UJl3> z<#%NG;`&APOTSY*kR`zH45Ip7zi7pKeCY>^H~{H-51^EzR=i8R>lYAmS`IK5FmN-1G6fei1Aie{QFAI#g$x5o9HgdANJ$rHU(;=+hc5+ugJU=0A= CqF*%t literal 0 HcmV?d00001 diff --git a/source/elements/oneMKL/source/domains/lapack/gebrd.rst b/source/elements/oneMKL/source/domains/lapack/gebrd.rst new file mode 100644 index 0000000000..3bb2625d4c --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/gebrd.rst @@ -0,0 +1,235 @@ +.. _gebrd: + +gebrd +===== + + +.. container:: + + + Reduces a general matrix to bidiagonal form. This routine belongs to + the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-8DFD8E6D-C63C-4D34-9784-4DEDFF7C1965 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + For real precisions: + + + .. cpp:function:: void gebrd(queue &exec_queue, std::int64_t m, std::int64_t n, buffer &a, std::int64_t lda, buffer &d, buffer &e, buffer &tauq, buffer &taup, buffer &work, std::int64_t lwork, buffer &info) + + For complex precisions: + + + .. cpp:function:: void gebrd(queue &exec_queue, std::int64_t m, std::int64_t n, buffer &a, std::int64_t lda, buffer &d, buffer &e, buffer &tauq, buffer &taup, buffer &work, std::int64_t lwork, buffer &info) + + ``gebrd`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-B6C26CE6-BBEA-493E-922B-C81BEB0C48CC + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine reduces a general ``m``-by-``n`` matrix ``A`` to a + bidiagonal matrix ``B`` by an orthogonal (unitary) transformation. + + + If ``m≥n``, the reduction is given by |image0| + + + where ``B``\ :sub:`1` is an ``n``-by-``n`` upper diagonal matrix, + ``Q`` and ``P`` are orthogonal or, for a complex ``A``, unitary + matrices; ``Q``\ :sub:`1` consists of the first ``n`` columns of + ``Q``. + + + If ``m < n``, the reduction is given by + + + ``A = Q*B*PH = Q*(B10)*PH = Q1*B1*P1H``, + + + where ``B``\ :sub:`1` is an ``m``-by-``m`` lower diagonal matrix, + ``Q`` and ``P`` are orthogonal or, for a complex ``A``, unitary + matrices; ``P``\ :sub:`1` consists of the first ``m`` columns of + ``P``. + + + The routine does not form the matrices ``Q`` and ``P`` explicitly, + but represents them as products of elementary reflectors. Routines + are provided to work with the matrices ``Q`` and ``P`` in this + representation: + + + If the matrix ``A`` is real, + + + - to compute ``Q`` and ``P`` explicitly, call + `orgbr `__. + + + If the matrix ``A`` is complex, + + + - to compute ``Q`` and ``P`` explicitly, call + `ungbr `__. + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns in the matrix ``A`` (``0≤n``). + + + a + The buffer ``a``, size (``lda,*``). The buffer ``a`` contains the + matrix ``A``. The second dimension of ``a`` must be at least + ``max(1, m)``. + + + lda + The leading dimension of ``a``. + + + lwork + The size of the work buffer. Must be computed by + `gebrd_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + If ``m≥n``, the diagonal and first super-diagonal of a are + overwritten by the upper bidiagonal matrix ``B``. The elements + below the diagonal, with the buffer tauq, represent the orthogonal + matrix ``Q`` as a product of elementary reflectors, and the + elements above the first superdiagonal, with the buffer taup, + represent the orthogonal matrix ``P`` as a product of elementary + reflectors. + + + If ``m`__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-03C78F41-D16C-4BFE-B087-BE4F5A6A0ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst new file mode 100644 index 0000000000..7fea15451c --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst @@ -0,0 +1,130 @@ +.. _gebrd_get_lwork: + +gebrd_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `gebrd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void gebrd_get_lwork(queue &exec_queue, std::int64_t m, std::int64_t n, std::int64_t lda, std::int64_t &lwork) + + ``gebrd_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for the reduction of a general matrix + to bidagonal form + (`gebrd `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns in the matrix ``A`` (``0≤n``). + + + lda + The leading dimension of a. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `gebrd `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``gebrd_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/gebrd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf.rst b/source/elements/oneMKL/source/domains/lapack/geqrf.rst new file mode 100644 index 0000000000..02acd72e00 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/geqrf.rst @@ -0,0 +1,165 @@ +.. _geqrf: + +geqrf +===== + + +.. container:: + + + Computes the QR factorization of a general m-by-n matrix. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void geqrf(queue &exec_queue, std::int64_t m, std::int64_t n, buffer &a, std::int64_t lda, buffer &tau, buffer &work, std::int64_t lwork, buffer &info) + + ``geqrf`` supports the following precisions: + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine forms the ``QR`` factorization of a general + ``m``-by-``n`` matrix ``A``. No pivoting is performed. + + + The routine does not form the matrix ``Q`` explicitly. Instead, ``Q`` + is represented as a product of min(``m``, ``n``) elementary + reflectors. Routines are provided to work with ``Q`` in this + representation. + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns in ``A`` (``0≤n``). + + + a + Buffer holding input matrix ``A``. The buffer a contains the + matrix ``A``. The second dimension of a must be at least + ``max(1, n)``. + + + lda + The leading dimension of a; at least max(1, m). + + + lwork + The size of the ``work`` array (``lwork≥n``). Must be computed by + `geqrf_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Overwritten by the factorization data as follows: + + + The elements on and above the diagonal of the array contain the + min(m,n)-by-``n`` upper trapezoidal matrix ``R`` (``R`` is upper + triangular if m≥n); the elements below the diagonal, with the + array tau, present the orthogonal matrix ``Q`` as a product of + min(m,n) elementary reflectors. + + + tau + Array, size at least max (1, min(``m``, ``n``)). Contains scalars + that define elementary reflectors for the matrix ``Q`` in its + decomposition in a product of elementary reflectors. + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info = 0``, the execution is successful. + + + If ``info = -i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``geqrf``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/geqrf.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst new file mode 100644 index 0000000000..456d98454a --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst @@ -0,0 +1,165 @@ +.. _geqrf_batch: + +geqrf_batch +=========== + + +.. container:: + + + Computes the QR factorizations of a batch of general matrices. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void geqrf_batch(queue &exec_queue, std::vector const& m, std::vector const& n, std::vector> &a, std::vector const& lda, std::vector> & tau, std::vector> &info) + + ``geqrf_batch`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine forms the QR factorizations of a batch of general + matrices ``A``\ :sub:`1`, ``A``\ :sub:`2`, …, + ``A``\ :sub:`batch_size`. No pivoting is performed. + + + The routine does not form the matrices ``Q``\ :sub:`i` explicitly. + Instead, ``Q``\ :sub:`i` is represented as a product of + ``min(mi, ni)`` elementary reflectors. Routines are provided to + work with ``Q``\ :sub:`i` in this representation. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + A vector, ``m[i]`` is the number of rows of the batch matrix + ``A``\ :sub:`i`\ ``(0≤m[i])``. + + + n + A vector, ``n[i]`` is the number of columns of the batch matrix + ``A``\ :sub:`i`\ ``(0≤n[i])``. + + + a + A vector of buffers, ``a[i]`` stores the matrix + ``A``\ :sub:`i`. ``a[i]`` must be of size at least + ``lda[i]*max(1, n[i])``. + + + lda + A vector, ``lda[i]`` is the leading dimension of + ``a[i] (m[i]≤lda[i])``. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Overwritten by the factorization data as follows: + + + The elements on and above the diagonal of the buffer ``a[i]`` + contain the ``min(m[i],n[i])``-by-``n[i]`` upper trapezoidal + matrix ``R``\ :sub:`i` (``R``\ :sub:`i` is upper triangular if + ``m[i]≥n[i]``); the elements below the diagonal, with the array + ``tau[i]``, present the orthogonal matrix ``Q``\ :sub:`i` as a + product of ``min(m[i],n[i])`` elementary reflectors. + + + tau + Vector of buffers, where ``tau[i]`` must have size at least + ``max(1,min(m[i], n[i]))``. Contains scalars that define + elementary reflectors for the matrix ``Q``\ :sub:`i` in its + decomposition in a product of elementary reflectors. + + + info + Vector of buffers containing error information. + + + If ``info[i]=0``, the execution is successful. + + + If ``info[i]=-k``, the ``k``-th parameter had an illegal value. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use geqrf_batchcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/QR_batch.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst new file mode 100644 index 0000000000..09e17d7341 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst @@ -0,0 +1,128 @@ +.. _geqrf_get_lwork: + +geqrf_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function geqrf. This routine + belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void geqrf_get_lwork(queue &exec_queue, std::int64_t m, std::int64_t n, std::int64_t lda, std::int64_t &lwork) + + ``geqrf_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for QR factorization + (`geqrf `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns in the matrix ``A`` (``0≤n``). + + + lda + The leading dimension of a. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `geqrf `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``geqrf_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/geqrf.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/gesvd.rst b/source/elements/oneMKL/source/domains/lapack/gesvd.rst new file mode 100644 index 0000000000..1995b203c3 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/gesvd.rst @@ -0,0 +1,307 @@ +.. _gesvd: + +gesvd +===== + + +.. container:: + + + Computes the singular value decomposition of a general rectangular + matrix. This routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-A44AA615-E4A1-48E4-967E-95164FA96BB5 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + For real precisions: + + + .. cpp:function:: void gesvd(queue &exec_queue, job jobu, job jobvt, std::int64_t m, std::int64_t n, buffer &a, std::int64_t lda, buffer &s, buffer &u, std::int64_t ldu, buffer &vt, std::int64_t ldvt, buffer &work, std::int64_t lwork, buffer &info) + + For complex precisions: + + + .. cpp:function:: void gesvd(queue &exec_queue, job jobu, job jobvt, std::int64_t m, std::int64_t n, buffer &a, std::int64_t lda, buffer &s, buffer &u, std::int64_t ldu, buffer &vt, std::int64_t ldvt, buffer &work, std::int64_t lwork, buffer &rwork, buffer &info) + + ``gesvd`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-2D82CB14-C82B-4083-943F-F322E6287F94 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes the singular value decomposition (SVD) of a + real/complex ``m``-by-``n`` matrix ``A``, optionally computing the + left and/or right singular vectors. The SVD is written as + + + ``A = U*Σ*VT`` for real routines + + + ``A = U*Σ*VH`` for complex routines + + + where Σ is an ``m``-by-``n`` diagonal matrix, ``U`` is an + ``m``-by-``m`` orthogonal/unitary matrix, and ``V`` is an + ``n``-by-``n`` orthogonal/unitary matrix. The diagonal elements of Σ + are the singular values of ``A``; they are real and non-negative, and + are returned in descending order. The first ``min(m, n)`` columns of + ``U`` and ``V`` are the left and right singular vectors of ``A``. + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + jobu + Must be ``job::allvec``, ``job::somevec``, ``job::overwritevec``, + or ``job::novec``. Specifies options for computing all or part of + the matrix ``U``. + + + If ``jobu = job::allvec``, all ``m`` columns of ``U`` are returned + in the buffer u; + + + if ``jobu = job::somevec``, the first ``min(m, n)`` columns of + ``U`` (the left singular vectors) are returned in the buffer u; + + + if ``jobu = job::overwritevec``, the first ``min(m, n)`` columns + of ``U`` (the left singular vectors) are overwritten on the buffer + a; + + + if ``jobu = job::novec``, no columns of ``U`` (no left singular + vectors) are computed. + + + jobvt + Must be ``job::allvec, job::somevec``, ``job::overwritevec``, or + ``job::novec``. Specifies options for computing all or part of the + matrix *V\ T/V\ H*. + + + If ``jobvt = job::allvec``, all n columns of *V\ T/V\ H* are + returned in the buffer vt; + + + if ``jobvt = job::somevec``, the first ``min(m, n)`` columns of + *V\ T/V\ H* (the left singular vectors) are returned in the buffer + vt; + + + if ``jobvt = job::overwritevec``, the first ``min(m, n)`` columns + of *V\ T/V\ H* (the left singular vectors) are overwritten on the + buffer a; + + + if ``jobvt = job::novec``, no columns of *V\ T/V\ H* (no left + singular vectors) are computed. + + + jobvt and jobu cannot both be ``job::overwritevec``. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + a + The buffer a, size ``(lda,*)``. The buffer ``a`` contains the + matrix ``A``. The second dimension of a must be at least + ``max(1, m)``. + + + lda + The leading dimension of a. + + + ldu + The leading dimension of u. + + + ldvt + The leading dimension of vt. + + + lwork + The size of the work buffer. Should be computed by + `gesvd_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + On exit, + + + If ``jobu = job::overwritevec``, a is overwritten with the first + ``min(m,n)`` columns of ``U`` (the left singular vectors stored + columnwise); + + + If ``jobvt = job::overwritevec``, a is overwritten with the first + ``min(m, n)`` rows of ``V``\ :sup:`T`/``V``\ :sup:`H` (the right + singular vectors stored rowwise); + + + If ``jobu ≠ job::overwritevec`` and ``jobvt ≠ job::overwritevec``, + the contents of a are destroyed. + + + s + Buffer containing the singular values, size at least + ``max(1, min(m,n))``. Contains the singular values of ``A`` sorted + so that ``s(i) ≥ s(i+1)``. + + + u + Buffer containing ``U``; the second dimension of u must be at + least ``max(1, m)`` if ``jobu = job::allvec``, and at least + ``max(1, min(m, n))`` if ``jobu = job::somevec``. + + + If ``jobu = job::allvec``, ``u`` contains the m-by-m + orthogonal/unitary matrix ``U``. + + + If ``jobu = job::somevec``, u contains the first ``min(m, n)`` + columns of ``U`` (the left singular vectors stored column-wise). + + + If ``jobu = job::novec`` or ``job::overwritevec``, u is not + referenced. + + + vt + Buffer containing ``V``\ :sup:`T`; the second dimension of vt must + be at least ``max(1, n)``. + + + If ``jobvt = job::allvec``, vt contains the n-by-n + orthogonal/unitary matrix ``V``\ :sup:`T`/``V``\ :sup:`H`. + + + If ``jobvt = job::somevec``, vt contains the first ``min(m, n)`` + rows of ``V``\ :sup:`T`/``V``\ :sup:`H` (the right singular + vectors stored row-wise). + + + If ``jobvt = job::novec`` or ``job::overwritevec``, vt is not + referenced. + + + work + Buffer of workspace. For real flavors: + + + If ``info > 0, work(2:min(m,n))`` contains the unconverged + superdiagonal elements of an upper bidiagonal matrix ``B`` whose + diagonal is in ``s`` (not necessarily sorted). ``B`` satisfies + ``A = U*B*V``\ :sup:`T`, so it has the same singular values as + ``A``, and singular vectors related by ``U`` and ``V``\ :sup:`T`. + + + rwork + (Only for complex flavors) Buffer of real workspace, dimension at + least ``5*min(m,n)``. + + + On exit: + + + If ``info > 0, rwork(1:min(m,n)-1)`` contains the unconverged + superdiagonal elements of an upper bidiagonal matrix ``B`` whose + diagonal is in ``s`` (not necessarily sorted). ``B`` satisfies + ``A = U*B*V``\ :sup:`T`, so it has the same singular values as + ``A``, and singular vectors related by ``U`` and ``V``\ :sup:`T`. + + + info + Buffer containing error information. + + + If ``info = 0``, the execution is successful. + + + If ``info = -i``, the ``i-th`` parameter had an illegal value. + + + If ``info = i``, then if ``?bdsqr`` did not converge, i specifies + how many superdiagonals of the intermediate bidiagonal form ``B`` + did not converge to zero (see the description of the work and + rwork parameters for details). + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``gesvd``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/gesvd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst new file mode 100644 index 0000000000..04fbc978fd --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst @@ -0,0 +1,185 @@ +.. _gesvd_get_lwork: + +gesvd_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function + `gesvd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void gesvd_get_lwork(queue &exec_queue, job jobu, job jobvt, std::int64_t m, std::int64_t n, std::int64_t lda, std::int64_t ldu, std::int64_t ldvt, std::int64_t &lwork) + + ``gesvd_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for the singular value decomposition + of a general rectangular matrix + (`gesvd `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + jobu + Must be ``job::allvec``, ``job::somevec``, + ``job::overwritevec``, or ``job::novec``. Specifies options for + computing all or part of the matrix ``U``. + + + If ``jobu = job::allvec``, all ``m`` columns of ``U`` are + returned in the buffer u; + + + if ``jobu = job::somevec``, the first ``min(m, n)`` columns of + ``U`` (the left singular vectors) are returned in the buffer v; + + + if ``jobu = job::overwritevec``, the first ``min(m, n)`` + columns of ``U`` (the left singular vectors) are overwritten on + the buffer a; + + + if ``jobu = job::novec``, no columns of ``U`` (no left singular + vectors) are computed. + + + jobvt + Must be ``job::allvec``, ``job::somevec``, + ``job::overwritevec``, or ``job::novec``. Specifies options for + computing all or part of the matrix *V\ T/V\ H*. + + + If ``jobvt = job::allvec``, all n columns of *V\ T/V\ H* are + returned in the buffer vt; + + + if ``jobvt = job::somevec``, the first ``min(m, n)`` columns of + *V\ T/V\ H* (the left singular vectors) are returned in the + buffer vt; + + + if ``jobvt = job::overwritevec``, the first ``min(m, n)`` + columns of *V\ T/V\ H* (the left singular vectors) are + overwritten on the buffer a; + + + if ``jobvt = job::novec``, no columns of *V\ T/V\ H* (no left + singular vectors) are computed. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns in the matrix ``A`` (``0≤n``). + + + lda + The leading dimension of a. + + + ldu + The leading dimension of u. + + + ldvt + The leading dimension of vt. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `gesvd `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``gesvd_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/gesvd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/getrf.rst b/source/elements/oneMKL/source/domains/lapack/getrf.rst new file mode 100644 index 0000000000..2f56b9e73c --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/getrf.rst @@ -0,0 +1,156 @@ +.. _getrf: + +getrf +===== + + +.. container:: + + + Computes the LU factorization of a general m-by-n matrix. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-0ACC96DA-0ADD-4950-9AC4-CB3294AFFC48 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void getrf(queue &exec_queue, std::int64_t m, std::int64_t n, buffer &a, std::int64_t lda, buffer &ipiv, buffer &info) + + ``getrf`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-FA3350DD-9097-43B5-995B-6C2DA4AA1749 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes the ``LU`` factorization of a general + ``m``-by-``n`` matrix ``A`` as + + + :: + + + A = P*L*U, + + + where ``P`` is a permutation matrix, ``L`` is lower triangular with + unit diagonal elements (lower trapezoidal if ``m > n``) and ``U`` is + upper triangular (upper trapezoidal if ``m < n``). The routine uses + partial pivoting, with row interchanges. + + +.. container:: section + :name: GUID-F1A7CCFF-5AD0-4C26-A396-F86A1713DBA8 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - exec_queue + - The queue where the routine should be executed. + * - m + - The number of rows in the matrix ``A`` (``0≤m``). + * - n + - The number of columns in ``A``\ (``0≤n``). + * - a + - Buffer holding input matrix ``A``. The buffer a contains the matrix ``A``. The second dimension of a must be at least ``max(1, n)``. + * - lda + - The leading dimension of a. + + + + +.. container:: section + :name: GUID-3A62166E-6E38-4FE0-9598-E62232A81937 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - a + - Overwritten by ``L`` and ``U``. The unit diagonal elements of ``L`` are not stored. + * - ipiv + - Array, size at least ``max(1,min(m, n))``. Contains the pivot indices; for ``1 ≤i≤min(m, n)``,row ``i`` was interchanged with row ``ipiv(i)``. + * - info + - Buffer containing error information. If ``info=0``, execution is successful. If ``info=-i``, the ``i``-th parameter had an illegal value. If ``info=i``, ``uii`` is 0. The factorization has been completed, but ``U`` is exactly singular. Division by 0 will occur if you use the factor ``U`` for solving a system of linear equations. + + + + +.. container:: section + :name: GUID-ACC30BA5-5BDE-4169-95F6-1390ECD55715 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``getrf``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/getrf.cpp + + +.. container:: section + :name: GUID-81F25E52-7E8D-4508-8696-46F51F0A972C + + + .. rubric:: Known Limitations + :name: known-limitations + :class: sectiontitle + + + For GPU support, errors are reported through the info parameter, but + computation does not halt for an algorithmic error. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst new file mode 100644 index 0000000000..e375427b87 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst @@ -0,0 +1,167 @@ +.. _getrf_batch: + +getrf_batch +=========== + + +.. container:: + + + Computes the LU factorizations of a batch of general matrices. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void getrf_batch(queue &exec_queue, std::vector const& m, std::vector const& n, std::vector> &a, std::vector const& lda, std::vector> &ipiv, std::vector> &info) + + ``getrf_batch`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes the LU factorizations of a batch of general + ``m``-by-``n`` matrices ``A``\ :sub:`1`, ``A``\ :sub:`2`, …, + ``A``\ :sub:`1batch_size` as + + + |image0| + + + Where ``P``\ :sub:`i` is a permutation matrix, ``L``\ :sub:`i` is + lower triangular with unit diagonal elements (lower trapezoidal if + ``m > n``) and ``U`` is upper triangular (upper trapezoidal if + ``m < n``). The routine uses partial pivoting with row + interchanges. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + A vector, ``m[i]`` is the number of rows of the batch matrix + ``A``\ :sub:`i`\ ``(0≤m[i])``. + + + n + A vector, ``n[i]`` is the number of columns of the batch matrix + ``A``\ :sub:`i`\ ``(0≤n[i])``. + + + a + A vector of buffers, ``a[i]`` contains the matrix + ``A``\ :sub:`i`. ``a[i]`` must be of size at least + ``lda[i]*max(1, n[i])``. + + + lda + A vector, ``lda[i]`` is the leading dimension of + ``a[i] (m[i]≤lda[i])``. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + ``a[i]`` is overwritten by ``L``\ :sub:`i` and ``U``\ :sub:`i`. + The unit diagonal elements of ``L``\ :sub:`i` are not stored. + + + ipiv + A vector of buffers, ``ipiv[i]`` stores the pivot indices. The + dimension of ``ipiv[i]`` must be at least ``min(m[i], n[i])``. + + + info + Vector of buffers containing error information. + + + If ``info[i]=0``, the execution is successful. + + + If ``info[i]=k``, ``Ui(k,k)`` is ``0``. The factorization has + been completed, but ``U``\ :sub:`i` is exactly singular. + Division by ``0`` will occur if you use the factor + ``U``\ :sub:`i` for solving a system of linear equations. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use getrf_batchcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/LU_batch.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-0F47CAD3-006C-4A78-B229-413313667ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/lapack/getri.rst b/source/elements/oneMKL/source/domains/lapack/getri.rst new file mode 100644 index 0000000000..f5ab5e289d --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/getri.rst @@ -0,0 +1,167 @@ +.. _getri: + +getri +===== + + +.. container:: + + + Computes the inverse of an LU-factored general matrix determined by + `getrf `__.This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-4E4EBE80-34FC-4800-A5DC-CE70693B32F9 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void getri_get_lwork(queue &exec_queue, std::int64_t n, buffer &a, std::int64_t lda, buffer &ipiv, buffer &work, std::int64_t lwork, buffer &info) + + ``getri`` supports the following precisionss. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-7DD2B57C-5331-47B0-9C18-7BF816B60676 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes the inverse ``inv(A)`` of a general matrix + ``A``. Before calling this routine, call + `?getrf `__ + to factorize ``A``. + + +.. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + The order of the matrix ``A``\ ``(0≤n)``. + + + a + The buffer a returned by + `getrf `__. Must + be of size at least ``lda*max(1,n)``. + + + lda + The leading dimension of a\ ``(n≤lda)``. + + + ipiv + The buffer as returned by + `getrf `__ . The + dimension of ipiv must be at least ``max(1, n)``. + + + lwork + The size of the work array ``(lwork≥n)``. Should be computed by + `getri_get_lwork `__. + + +.. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Overwritten by the n-by-n matrix ``A``. + + + work + Buffer workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info=0``, the execution is successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``getri``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/getri.cpp + + +.. container:: section + :name: GUID-3B00B441-C7C0-4D8A-A819-41037F1E5862 + + + .. rubric:: Known Limitations + :name: known-limitations + :class: sectiontitle + + + GPU support is for only real precisions. + + + For GPU support, errors are reportedthrough the info parameter, but + computation does not halt for an algorithmic error. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/getri_batch.rst b/source/elements/oneMKL/source/domains/lapack/getri_batch.rst new file mode 100644 index 0000000000..63900805fd --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/getri_batch.rst @@ -0,0 +1,151 @@ +.. _getri_batch: + +getri_batch +=========== + + +.. container:: + + + Computes the inverses of a batch of LU-factored matrices determined + by `getrf_batch `__. + This routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void getri_batch(queue &exec_queue, std::vector const& n, std::vector> &a, std::vector const& lda, std::vector> & ipiv, std::vector> &info) + + ``getri_batch`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes the inverses ``A``\ :sub:`i`\ :sup:`-1` of a + batch of general matrices ``A``\ :sub:`i`, ``A``\ :sub:`2`, …, + ``A``\ :sub:`batch_size` . Before calling this routine, call + `getrf_batch `__ + to compute the LU factorization of ``A``\ :sub:`i`, + ``A``\ :sub:`2`, …, ``A``\ :sub:`batch_size`. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + A vector, ``n[i]`` is order of the matrix + ``A``\ :sub:`i`\ ``(0≤n[i])``. + + + a + A vector of buffers returned by + `getrf_batch `__. + ``a[i]`` must be of size at least ``lda[i]*max(1, n[i])``. + + + lda + A vector, ``lda[i]`` is the leading dimension of + ``a[i] (n[i]≤lda[i])``. + + + ipiv + A vector of buffers returned by + `getrf_batch `__ + . The dimension of ``ipiv[i]`` must be at least + ``max(1, n[i])``. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + ``a[i]`` is overwritten by the ``n[i]``-by-``n[i]`` inverse + matrix ``A``\ :sub:`i`\ :sup:`-1`. + + + info + Vector of buffers containing error information. + + + If ``info[i]=0``, the execution is successful. + + + If ``info[i]=-k``, the ``k``-th parameter had an illegal value. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use getri_batchcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/LU_batch.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst new file mode 100644 index 0000000000..20bf7c0f66 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst @@ -0,0 +1,126 @@ +.. _getri_get_lwork: + +getri_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function + `getri `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void getri_get_lwork(queue &exec_queue, std::int64_t n, std::int64_t lda, std::int64_t &lwork) + + ``getri_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for generating the inverse matrix + ``A``\ :sup:`-1` determined by + (`getri `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + n + The order of the matrix ``A``\ ``(0≤n)``. + + + lda + The leading dimension of a\ ``(n≤lda)``. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `getri `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``getri_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/getri.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/getrs.rst b/source/elements/oneMKL/source/domains/lapack/getrs.rst new file mode 100644 index 0000000000..1612f98c31 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/getrs.rst @@ -0,0 +1,205 @@ +.. _getrs: + +getrs +===== + + +.. container:: + + + Solves a system of linear equations with an LU-factored square + coefficient matrix, with multiple right-hand sides. This routine + belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-CEF6C997-610F-4BC3-AC33-51ABDE4A9155 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void getrs(queue &exec_queue, transpose trans, std::int64_t n, std::int64_t nrhs, buffer &a, std::int64_t lda, buffer &ipiv, buffer &b, std::int64_t ldb, buffer &info) + + ``getrs`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-67E5209C-15F5-42EC-8B23-94B5B1680A14 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine solves for ``X`` the following systems of linear + equations: + + + .. list-table:: + :header-rows: 1 + + * - \ ``A*X = B``\ + - if ``trans``\ =\ ``onemkl::transpose::nontrans``\ + * - \ ``AT*X = B``\ + - if ``trans``\ =\ ``onemkl::transpose::trans``\ + * - \ ``AH*X = B``\ + - if ``trans``\ =\ ``onemkl::transpose::conjtrans``\ + + + + + Before calling this routine, you must call + `?getrf `__ + to compute the ``LU`` factorization of ``A``. + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + trans + Indicates the form of the equations: + + + If ``trans=onemkl::transpose::nontrans``, then ``A*X = B`` is solved + for ``X``. + + + If ``trans=onemkl::transpose::trans``, then ``AT*X = B`` is solved + for ``X``. + + + If ``trans=onemkl::transpose::conjtrans``, then ``AH*X = B`` is + solved for ``X``. + + + n + The order of the matrix ``A`` and the number of rows in matrix + ``B(0≤n)``. + + + nrhs + The number of right-hand sides (``0≤nrhs``). + + + a + Buffer containing the factorization of the matrix ``A``, as + returned by ?getrf. The second dimension of a must be at least + ``max(1, n)``. + + + lda + The leading dimension of a. + + + ipiv + Array, size at least ``max(1, n)``. The ipiv array, as returned by + ?getrf. + + + b + The array b contains the matrix ``B`` whose columns are the + right-hand sides for the systems of equations. The second + dimension of b must be at least ``max(1,nrhs)``. + + + ldb + The leading dimension of b. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + b + The buffer b is overwritten by the solution matrix ``X``. + + + info + Buffer containing error information. + + + If ``info = 0``, the execution is successful. + + + If ``info = -i``, the ``i``-th parameter had an illegal value. + + + If ``info = i``, the ``i``-th diagonal element of ``U`` is zero, + and the solve could not be completed. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``getrs``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/getrs.cpp + + +.. container:: section + :name: GUID-3B00B441-C7C0-4D8A-A819-41037F1E5862 + + + .. rubric:: Known Limitations + :name: known-limitations + :class: sectiontitle + + + For GPU support, errors are reported through the info parameter, but + computation does not halt for an algorithmic error. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst b/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst new file mode 100644 index 0000000000..40e061a0ee --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst @@ -0,0 +1,189 @@ +.. _getrs_batch: + +getrs_batch +=========== + + +.. container:: + + + Solves a system of linear equations with a batch of LU-factored + square coefficient matrices, with multiple right-hand sides. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void getrs_batch(queue &exec_queue, std::vector< onemkl::transpose > const& trans, std::vector const& n, std::vector const& nrhs, std::vector< buffer > & a, std::vector< std::int64_t > const& lda, std::vector< buffer > & ipiv, std::vector< buffer > &b, std::vector< std::int64_t > const& ldb, std::vector< buffer > &info) + + ``getrs_batch`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine solves for ``X``\ :sub:`i` the following systems of + linear equations for a batch of general square matrices + ``A``\ :sub:`1`, ``A``\ :sub:`2`, …, + ``A``\ :sub:`````\ batch_size`: + + + ``A``\ :sub:`i` \* ``X``\ :sub:`i` = ``B``\ :sub:`i` If + ``trans[i] = onemkl::transpose::notrans`` + + + ``A``\ :sub:`i`\ :sup:`T` \* ``X``\ :sub:`i` = ``B``\ :sub:`i` If + ``trans[i] = onemkl::transpose::trans`` + + + ``A``\ :sub:`i`\ :sup:`H` \* ``X``\ :sub:`i` = ``B``\ :sub:`i` If + ``trans[i] = onemkl::transpose::conjtrans`` + + + Before calling this routine you must call + `getrf_batch `__ + to compute the LU factorization of ``A``\ :sub:`1`, + ``A``\ :sub:`2`, …, ``A``\ :sub:`````\ batch_size`. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + trans + A vector, ``trans[i]`` indicates the form of the linear + equations. + + + n + A vector, ``n[i]`` is the number of columns of the batch matrix + ``A``\ :sub:`i`\ ``(0≤n[i])``. + + + nrhs + A vector, the number of right hand sides ``(0≤nrhs[i])``. + + + a + A vector of buffers returned by + `getrf_batch `__. + ``a[i]`` must be of size at least ``lda[i]*max(1, n[i])``. + + + lda + A vector, ``lda[i]`` is the leading dimension of + ``a[i] (n[i]≤lda[i])``. + + + ipiv + A vector of buffers, ipiv is the batch of pivots returned by + `getrf_batch `__. + + + b + A vector of buffers, ``b[i]`` contains the matrix + ``B``\ :sub:`i` whose columns are the right-hand sides for the + systems of equations. The second dimension of ``b``\ :sub:`i` + must be at least ``max(1,nrhs[i])``. + + + ldb + A vector, ``ldb[i]`` is the leading dimension of ``b[i]``. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + b + A vector of buffers, ``b[i]`` is overwritten by the solution + matrix ``X``\ :sub:`i`. + + + info + Vector of buffers containing error information. + + + If ``info[i]=0``, the execution is successful. + + + If ``info[i]=k``, the ``k``-th diagonal element of ``U`` is + zero, and the solve could not be completed. + + + If ``info[i]=-k``, the ``k``-th parameter had an illegal value. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use getrs_batchcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/LU_batch.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/heevd.rst b/source/elements/oneMKL/source/domains/lapack/heevd.rst new file mode 100644 index 0000000000..c80dd62d47 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/heevd.rst @@ -0,0 +1,213 @@ +.. _heevd: + +heevd +===== + + +.. container:: + + + Computes all eigenvalues and, optionally, all eigenvectors of a + complex Hermitian matrix using divide and conquer algorithm. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-27408EB8-B8F0-4D65-93CB-8AD0E3E34EC9 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void heevd(queue &exec_queue, job jobz, uplo upper_lower, std::int64_t n, butter &a, std::int64_t lda, buffer &w, buffer &work, std::int64_t lwork, buffer &rwork, std::int64_t lrwork, buffer &iwork, std::int64_t liwork, buffer &info) + + ``heevd`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-D9C0329E-BFA0-4C7A-B67E-2765FE54F2EC + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes all the eigenvalues, and optionally all the + eigenvectors, of a complex Hermitian matrix ``A``. In other words, it + can compute the spectral factorization of ``A`` as: ``A = Z*Λ*ZH``. + + + Here Λ is a real diagonal matrix whose diagonal elements are the + eigenvalues λ\ :sub:`i`, and ``Z`` is the (complex) unitary matrix + whose columns are the eigenvectors ``z``\ :sub:`i`. Thus, + + + ``A*zi = λi*zi`` for ``i = 1, 2, ..., n``. + + + If the eigenvectors are requested, then this routine uses a divide + and conquer algorithm to compute eigenvalues and eigenvectors. + However, if only eigenvalues are required, then it uses the + Pal-Walker-Kahan variant of the ``QL`` or ``QR`` algorithm. + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + jobz + Must be ``job::novec`` or ``job::vec``. + + + If ``jobz = job::novec``, then only eigenvalues are computed. + + + If ``jobz = job::vec``, then eigenvalues and eigenvectors are + computed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = job::upper``, a stores the upper triangular + part of ``A``. + + + If ``upper_lower = job::lower``, a stores the lower triangular + part of ``A``. + + + n + The order of the matrix ``A`` (``0≤n``). + + + a + The buffer a, size (``lda,*``). The buffer a contains the matrix + ``A``. The second dimension of a must be at least ``max(1, n)``. + + + lda + The leading dimension of a. Must be at least ``max(1,n)``. + + + lwork + The size of the work buffer. Must be computed by + `heevd_get_lwork `__. + + + lrwork + The size of the rwork buffer. Must be computed by + `heevd_get_lwork `__. + + + liwork + The size of the iwork buffer. Must be computed by + `heevd_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + If ``jobz = job::vec``, then on exit this buffer is overwritten by + the unitary matrix ``Z`` which contains the eigenvectors of ``A``. + + + w + Buffer, size at least n. If ``info = 0``, contains the eigenvalues + of the matrix ``A`` in ascending order. See also info. + + + work + Buffer of workspace. + + + rwork + Buffer of real precision workspace + + + iwork + Buffer of integer workspace. + + + info + Buffer containing error information. + + + If ``info = 0``, the execution is successful. + + + If ``info = i``, and ``jobz = job::novec``, then the algorithm + failed to converge; ``i`` indicates the number of off-diagonal + elements of an intermediate tridiagonal form which did not + converge to zero. + + + If ``info = i``, and ``jobz = job:vec``, then the algorithm failed + to compute an eigenvalue while working on the submatrix lying in + rows and columns ``info/(n+1)`` through ``mod(info,n+1)``. + + + If ``info = -i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``heevd``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/heevd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst new file mode 100644 index 0000000000..2eb236e602 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst @@ -0,0 +1,160 @@ +.. _heevd_get_lwork: + +heevd_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `heevd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void heevd_get_lwork(queue &exec_queue, job jobz, uplo upper_lower, std::int64_t n, std::int64_t lda, std::int64_t &lwork, std::int64_t &lrwork, std::int64_t &liwork) + + ``heevd_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for the computation of eigenvalues or + eigenvectors of a real symmetric matrix using divide and conquer + algorithm + (`heevd `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + jobz + Must be ``job::novec`` or ``job::vec``. + + + If ``jobz = job::novec``, then only eigenvalues are computed. + + + If ``jobz = job::vec``, then eigenvalues and eigenvectors are + computed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = job::upper``, a stores the upper triangular + part of ``A``. + + + If ``upper_lower = job::lower``, a stores the lower triangular + part of ``A``. + + + n + The order of the matrix ``A`` (``0≤n``). + + + lda + The leading dimension of a. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `heevd `__. + + + lrwork + The integer lrwork contains the size of the integer buffer + needed for computations in + `heevd `__. + + + liwork + The integer liwork contains the size of the integer buffer + needed for computations in + `heevd `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``heevd_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/syevd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/hegvd.rst b/source/elements/oneMKL/source/domains/lapack/hegvd.rst new file mode 100644 index 0000000000..b7d6e861ff --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/hegvd.rst @@ -0,0 +1,261 @@ +.. _hegvd: + +hegvd +===== + + +.. container:: + + + Computes all eigenvalues and, optionally, eigenvectors of a real + generalized symmetric definite eigenproblem using a divide and + conquer method. This routine belongs to the + ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-BF2D51BA-A6DB-484A-ACC7-B37A59DB2BF0 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void hegvd(queue &exec_queue, std::int64_t itype, job jobz, uplo upper_lower, std::int64_t n, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, buffer &w, buffer &work, std::int64_t lwork, buffer &rwork, std::int64_t liwork, buffer &iwork, std::int64_t liwork, buffer &info) + + ``hegvd`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-DE25DD30-D101-4C07-9195-3C6A1C081339 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes all the eigenvalues, and optionally, the + eigenvectors of a complex generalized Hermitian positive-definite + eigenproblem, of the form + + + ``A*x = λ*B*x, A*B*x = λ*x``, or ``B*A*x = λ*x``. + + + Here ``A`` and ``B`` are assumed to be Hermitian and ``B`` is also + positive definite. + + + It uses a divide and conquer algorithm. + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + itype + Must be 1 or 2 or 3. Specifies the problem type to be solved: + + + if itype\ ``= 1``, the problem type is ``A*x = lambda*B*x;`` + + + if itype\ ``= 2``, the problem type is ``A*B*x = lambda*x;`` + + + if itype\ ``= 3``, the problem type is ``B*A*x = lambda*x``. + + + jobz + Must be ``job::novec`` or ``job::vec``. + + + If ``jobz = job::novec``, then only eigenvalues are computed. + + + If ``jobz = job::vec``, then eigenvalues and eigenvectors are + computed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = uplo::upper``, a and b store the upper + triangular part of ``A`` and ``B``. + + + If ``upper_lower = uplo::lower``, a and b stores the lower + triangular part of ``A`` and ``B``. + + + n + The order of the matrices ``A`` and ``B`` (``0≤n``). + + + a + Buffer, size ``a(lda,*)`` contains the upper or lower triangle of + the Hermitian matrix ``A``, as specified by upper_lower. + + + The second dimension of a must be at least ``max(1, n)``. + + + lda + The leading dimension of a; at least ``max(1,n)``. + + + b + Buffer, size ``b(ldb,*)`` contains the upper or lower triangle of + the Hermitian matrix ``B``, as specified by upper_lower. + + + The second dimension of b must be at least ``max(1, n)``. + + + ldb + The leading dimension of b; at least ``max(1,n)``. + + + lwork + The size of the work buffer. Must be computed by + `hegvd_get_lwork `__. + + + lrwork + The size of the rwork buffer. Must be computed by + `hegvd_get_lwork `__. + + + liwork + The size of the iwork buffer. Must be computed by + `hegvd_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + On exit, if ``jobz = job::vec``, then if ``info = 0``, a contains + the matrix ``Z`` of eigenvectors. The eigenvectors are normalized + as follows: + + + if itype\ ``= 1`` or ``2``, ``Z``\ :sup:`H`\ ``*B*Z = I``; + + + if itype\ ``= 3``, ``Z``\ :sup:`H`\ \*\ ``inv(B)*Z = I``; + + + If ``jobz = job::novec``, then on exit the upper triangle (if + ``upper_lower = uplo::upper``) or the lower triangle (if + ``upper_lower = uplo::lower``) of ``A``, including the diagonal, + is destroyed. + + + b + On exit, if ``info≤n``, the part of b containing the matrix is + overwritten by the triangular factor ``U`` or ``L`` from the + Cholesky factorization ``B = U``\ :sup:`H`\ ``*U``\ or ``B`` = + ``L``\ \*\ ``L``\ :sup:`H`. + + + w + Buffer, size at least n. If ``info = 0``, contains the eigenvalues + of the matrix ``A`` in ascending order. See also info. + + + work + Buffer of workspace. + + + rwork + Buffer of real workspace. + + + iwork + Buffer of integer workspace. + + + info + If ``info = 0``, the execution is successful. + + + If ``info = -i``, the ``i``-th argument had an illegal value. + + + If ``info = i``, and ``jobz = job::novec``, then the algorithm + failed to converge; ``i`` off-diagonal elements of an intermediate + tridiagonal form did not converge to zero; + + + if ``info = i``, and ``jobz = job::vec``, then the algorithm + failed to compute an eigenvalue while working on the submatrix + lying in rows and columns ``info/(n+1)`` through + ``mod(info, n+1)``. + + + If ``info = n + i``, for ``1≤i≤n``, then the leading minor of + order ``i`` of ``B`` is not positive-definite. The factorization + of ``B`` could not be completed and no eigenvalues or eigenvectors + were computed. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``hegvd``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/sygvd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst new file mode 100644 index 0000000000..8638e2c8f1 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst @@ -0,0 +1,180 @@ +.. _hegvd_get_lwork: + +hegvd_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `hegvd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void hegvd_get_lwork(queue &exec_queue, std::int64_t itype, job jobz, uplo upper_lower, std::int64_t n, std::int64_t lda, std::int64_t ldb, std::int64_t &lwork, std::int64_t &lrwork, std::int64_t &liwork) + + ``hegvd_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for the computation of eigenvalues or + eigenvectors of a complex generalized Hermition positive-definite + eigenproblem using a divide and conquer method + (`hegvd `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + itype + Must be ``1`` or ``2`` or ``3``. Specifies the problem type to + be solved: + + + if itype\ ``= 1``, the problem type is ``A*x = lambda*B*x``; + + + if itype\ ``= 2``, the problem type is ``A*B*x = lambda*x``; + + + if itype\ ``= 3``, the problem type is ``B*A*x = lambda*x``. + + + jobz + Must be ``job::novec`` or ``job::vec``. + + + If ``jobz = job::novec``, then only eigenvalues are computed. + + + If ``jobz = job::vec``, then eigenvalues and eigenvectors are + computed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = uplo::upper``, a and b store the upper + triangular part of ``A`` and ``B``. + + + If ``upper_lower = uplo::lower``, a and b store the lower + triangular part of ``A`` and ``B``. + + + n + The order of the matrices ``A`` and ``B``\ (``0≤n``). + + + lda + The leading dimension of a. Currently lda is not referenced in + this function. + + + ldb + The leading dimension of b. Currently ldb is not referenced in + this function. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `hegvd `__. + + + lrwork + The integer lrwork contains the size of the buffer needed for + real precision computations in + `hegvd `__. + + + liwork + The integer liwork contains the size of the integer buffer + needed for integer computations in + `hegvd `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``hegvd_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/sygvd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/hetrd.rst b/source/elements/oneMKL/source/domains/lapack/hetrd.rst new file mode 100644 index 0000000000..4cce8f4d05 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/hetrd.rst @@ -0,0 +1,188 @@ +.. _hetrd: + +hetrd +===== + + +.. container:: + + + Reduces a complex Hermitian matrix to tridiagonal form. This routine + belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-45C31AF5-960E-44EA-95AE-8F09E043F00A + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void hetrd(queue &exec_queue, uplo upper_lower, std::int64_t n, buffer &a, std::int64_t lda, buffer &d, buffer &e, buffer &tau, buffer &work, std::int64_t lwork, buffer &info) + + ``hetrd`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - Routine name + - T + * - ``chetrd`` + - ``std::complex`` + * - ``zhetrd`` + - ``std::complex`` + + + + +.. container:: section + :name: GUID-D81658C9-221D-4347-AD47-193372E5E2DB + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine reduces a complex Hermitian matrix ``A`` to symmetric + tridiagonal form ``T`` by a unitary similarity transformation: + ``A = Q*T*QH``. The unitary matrix ``Q`` is not formed explicitly but + is represented as a product of ``n``-1 elementary reflectors. + Routines are provided to work with ``Q`` in this representation. + + +.. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = uplo::upper``, a stores the upper triangular + part of ``A``. + + + If ``upper_lower = uplo::lower``, a stores the lower triangular + part of ``A``. + + + n + The order of the matrices ``A``\ ``(0≤n)``. + + + a + Buffer, size ``(lda,*)``. The buffer a contains either the upper + or lower triangle of the Hermitian matrix ``A``, as specified by + upper_lower. + + + The second dimension of a must be at least ``max(1, n)``. + + + lda + The leading dimension of a; at least ``max(1, n)`` + + + lwork + The side of the work buffer. Should be computed by + `hetrd_get_lwork `__ + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + On exit, + + + if ``upper_lower = uplo::upper``, the diagonal and first + superdiagonal of ``A`` are overwritten by the corresponding + elements of the tridiagonal matrix ``T``, and the elements above + the first superdiagonal, with the buffer tau, represent the + orthogonal matrix ``Q`` as a product of elementary reflectors; + + + if ``upper_lower = uplo::lower``, the diagonal and first + subdiagonal of ``A`` are overwritten by the corresponding elements + of the tridiagonal matrix ``T``, and the elements below the first + subdiagonal, with the buffer tau, represent the orthogonal matrix + ``Q`` as a product of elementary reflectors. + + + d + Buffer containing the diagonal elements of the matrix ``T``. The + dimension of d must be at least ``max(1, n)``. + + + e + Buffer containing the off diagonal elements of the matrix ``T``. + The dimension of e must be at least ``max(1, n-1)``. + + + tau + Buffer, size at least ``max(1, n-1)``. Stores ``(n-1)`` scalars + that define elementary reflectors in decomposition of the unitary + matrix ``Q`` in a product of ``n-1`` elementary reflectors. + + + work + Buffer of workspace. + + + info + If info\ ``=0``, the execution is successful. + + + If info\ ``=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``hetrd``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/sytrd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst new file mode 100644 index 0000000000..70c11e7cb7 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst @@ -0,0 +1,137 @@ +.. _hetrd_get_lwork: + +hetrd_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `hetrd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void hetrd_get_lwork(queue &exec_queue, uplo upper_lower, std::int64_t n, std::int64_t lda, std::int64_t &lwork) + + ``hetrd_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for the reduction of a complex + Hermitian matrix to tridiagonal form + (`hetrd `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = uplo::upper``, a stores the upper triangular + part of ``A`` and ``B``. + + + If ``upper_lower = uplo::lower``, a stores the lower triangular + part of ``A``. + + + n + The order of the matrices ``A`` and ``B``\ ``(0≤n)``. + + + lda + The leading dimension of a. Currently, lda is not referenced in + this function. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `hetrd `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``hetrd_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/sytrd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/lapack.rst b/source/elements/oneMKL/source/domains/lapack/lapack.rst new file mode 100644 index 0000000000..1d1f534ff6 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/lapack.rst @@ -0,0 +1,364 @@ +.. _onemkl_lapack: + +LAPACK Routines ++++++++++++++++++ + + +.. container:: + + + oneAPI Math Kernel Library (oneMKL) implements routines from the + LAPACK package that are used for solving systems of linear equations, + linear least squares problems, eigenvalue and singular value + problems, and performing a number of related computational tasks. The + library includes LAPACK routines for both real and complex data. + Routines are supported for systems of equations with the following + types of matrices: + + + - General + + + - Banded + + + - Symmetric or Hermitian positive-definite (full, packed, and + rectangular full packed (RFP) storage) + + + - Symmetric or Hermitian positive-definite banded + + + - Symmetric or Hermitian indefinite (both full and packed storage) + + + - Symmetric or Hermitian indefinite banded + + + - Triangular (full, packed, and RFP storage) + + + - Triangular banded + + + - Tridiagonal + + + - Diagonally dominant tridiagonal. + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Different arrays used as parameters to oneMKL LAPACK routines must + not overlap. + + + .. container:: Note + + + .. rubric:: Warning + :name: warning + :class: NoteTipHead + + + LAPACK routines assume that input matrices do not contain IEEE 754 + special values such as INF or NaN values. Using these special + values may cause LAPACK to return unexpected results or become + unstable. + + +.. container:: + + + - `gebrd `__ + Reduces a general matrix to bidiagonal form. This routine belongs + to the ``onemkl::lapack`` namespace. + - `gebrd_get_lwork `__ + Computes the worksize needed for the function, + `gebrd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `geqrf `__ + Computes the QR factorization of a general m-by-n matrix. This + routine belongs to the ``onemkl::lapack`` namespace. + - `geqrf_get_lwork `__ + Computes the worksize needed for the function geqrf. This routine + belongs to the ``onemkl::lapack`` namespace. + - `geqrf_batch `__ + Computes the QR factorizations of a batch of general matrices. + This routine belongs to the ``onemkl::lapack`` namespace. + - `gesvd `__ + Computes the singular value decomposition of a general rectangular + matrix. This routine belongs to the ``onemkl::lapack`` namespace. + - `gesvd_get_lwork `__ + Computes the worksize needed for the function + `gesvd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `getrf `__ + Computes the LU factorization of a general m-by-n matrix. This + routine belongs to the ``onemkl::lapack`` namespace. + - `getrf_batch `__ + Computes the LU factorizations of a batch of general matrices. + This routine belongs to the ``onemkl::lapack`` namespace. + - `getri `__ + Computes the inverse of an LU-factored general matrix determined + by `getrf `__.This + routine belongs to the ``onemkl::lapack`` namespace. + - `getri_batch `__ + Computes the inverses of a batch of LU-factored matrices + determined by + `getrf_batch `__. + This routine belongs to the ``onemkl::lapack`` namespace. + - `getri_get_lwork `__ + Computes the worksize needed for the function + `getri `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `getrs `__ + Solves a system of linear equations with an LU-factored square + coefficient matrix, with multiple right-hand sides. This routine + belongs to the ``onemkl::lapack`` namespace. + - `getrs_batch `__ + Solves a system of linear equations with a batch of LU-factored + square coefficient matrices, with multiple right-hand sides. This + routine belongs to the ``onemkl::lapack`` namespace. + - `heevd `__ + Computes all eigenvalues and, optionally, all eigenvectors of a + complex Hermitian matrix using divide and conquer algorithm. This + routine belongs to the ``onemkl::lapack`` namespace. + - `heevd_get_lwork `__ + Computes the worksize needed for the function, + `heevd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `hegvd `__ + Computes all eigenvalues and, optionally, eigenvectors of a real + generalized symmetric definite eigenproblem using a divide and + conquer method. This routine belongs to the + ``onemkl::lapack`` namespace. + - `hegvd_get_lwork `__ + Computes the worksize needed for the function, + `hegvd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `hetrd `__ + Reduces a complex Hermitian matrix to tridiagonal form. This + routine belongs to the ``onemkl::lapack`` namespace. + - `hetrd_get_lwork `__ + Computes the worksize needed for the function, + `hetrd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `orgbr `__ + Generates the real orthogonal matrix ``Q`` or ``P``\ :sup:`T` + determined by + `gebrd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `orgbr_get_lwork `__ + Computes the worksize needed for the function + `orgbr `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `orgqr `__ + Generates the real orthogonal matrix Q of the QR factorization + formed by geqrf. This routine belongs to the + ``onemkl::lapack`` namespace. + - `orgqr_batch `__ + Generates the orthogonal/unitary matrix ``Q``\ :sub:`i` of the QR + factorizations for a group of general matrices. This routine + belongs to the ``onemkl::lapack`` namespace. + - `orgqr_get_lwork `__ + Computes the worksize needed for the function orgqr. This routine + belongs to the ``onemkl::lapack`` namespace. + - `orgtr `__ + Generates the real orthogonal matrix Q determined by + `?sytrd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `orgtr_get_lwork `__ + Computes the worksize needed for the function, + `orgtr `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `ormqr `__ + Multiplies a real matrix by the orthogonal matrix Q of the QR + factorization formed by geqrf. This routine belongs to the + ``onemkl::lapack`` namespace. + - `ormqr_get_lwork `__ + Computes the worksize needed for the function + `ormqr `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `ormtr `__ + Multiplies a real matrix by the real orthogonal matrix ``Q`` + determined by + `?sytrd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `ormtr_get_lwork `__ + Computes the worksize needed for the function, + `ormtr `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `potrf `__ + Computes the Cholesky factorization of a symmetric (Hermitian) + positive-definite matrix.This routine belongs to the + ``onemkl::lapack`` namespace. + - `potrf (USM + Version) `__ + Computes the Cholesky factorization of a symmetric (Hermitian) + positive-definite matrix.This routine belongs to the + ``onemkl::lapack`` namespace. + - `potrf_batch `__ + Computes the Cholesky factorizations of a batch of symmetric + (Hermitian) positive-definite matrices. This routine belongs to + the ``onemkl::lapack`` namespace. + - `potri `__ + Computes the inverse of a symmetric (Hermitian) positive-definite + matrix using the Cholesky factorization. This routine belongs to + the ``onemkl::lapack`` namespace. + - `potrs `__ + Solves a system of linear equations with a Cholesky-factored + symmetric (Hermitian) positive-definite coefficient matrix. This + routine belongs to the ``onemkl::lapack`` namespace. + - `potrs (USM + Version) `__ + Solves a system of linear equations with a Cholesky-factored + symmetric (Hermitian) positive-definite coefficient matrix. This + routine belongs to the onemkl::lapack namespace. + - `potrs_batch `__ + Solves a system of linear equations with a batch of + Cholesky-factored symmetric (Hermitian) positive-definite + coefficient matrices. This routine belongs to the + ``onemkl::lapack`` namespace. + - `syevd `__ + Computes all eigenvalues and, optionally, all eigenvectors of a + real symmetric matrix using divide and conquer algorithm. This + routine belongs to the ``onemkl::lapack`` namespace. + - `syevd_get_lwork `__ + Computes the worksize needed for the function, + `syevd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `sygvd `__ + Computes all eigenvalues and, optionally, eigenvectors of a real + generalized symmetric definite eigenproblem using a divide and + conquer method. This routine belongs to the + ``onemkl::lapack`` namespace. + - `sygvd_get_lwork `__ + Computes the worksize needed for the function, + `sygvd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `sytrd `__ + Reduces a real symmetric matrix to tridiagonal form. This routine + belongs to the ``onemkl::lapack`` namespace. + - `sytrd_get_lwork `__ + Computes the worksize needed for the function, + `sytrd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `sytrf `__ + Computes the Bunch-Kaufman factorization of a symmetric matrix. + This routine belongs to the ``onemkl::lapack`` namespace. + - `sytrf_get_lwork `__ + Computes the worksize needed for the function sytrf. This routine + belongs to the ``onemkl::lapack`` namespace. + - `trtrs `__ + Solves a system of linear equations with a triangular coefficient + matrix, with multiple right-hand sides. This routine belongs to + the ``onemkl::lapack`` namespace. + - `ungbr `__ + Generates the complex unitary matrix Q or P\ :sup:`t` determined + by `gebrd `__. + This routine belongs to the ``onemkl::lapack`` namespace. + - `ungbr_get_lwork `__ + Computes the worksize needed for the function, + `ungbr `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `ungqr `__ + Generates the complex unitary matrix Q of the QR factorization + formed by geqrf. This routine belongs to the + ``onemkl::lapack`` namespace. + - `ungqr_get_lwork `__ + Computes the worksize needed for the function ungqr. This routine + belongs to the ``onemkl::lapack`` namespace. + - `ungtr `__ + Generates the complex unitary matrix Q determined by + `hetrd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `ungtr_get_lwork `__ + Computes the worksize needed for the function, + `ungtr `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `unmqr `__ + Multiplies a complex matrix by the unitary matrix Q of the QR + factorization formed by unmqr. This routine belongs to the + ``onemkl::lapack`` namespace. + - `unmqr_get_lwork `__ + Computes the worksize needed for the function unmqr. This routine + belongs to the ``onemkl::lapack`` namespace. + - `unmtr `__ + Multiplies a complex matrix by the complex unitary matrix Q + determined by + `hetrd `__. This + routine belongs to the ``onemkl::lapack`` namespace. + - `unmtr_get_lwork `__ + Computes the worksize needed for the function + `unmtr `__. This + routine belongs to the ``onemkl::lapack`` namespace. + + **Parent topic:** :ref:`onemkl_dense_linear_algebra` + +.. toctree:: + :hidden: + + gebrd + gebrd_get_lwork + geqrf + geqrf_get_lwork + geqrf_batch + gesvd + gesvd_get_lwork + getrf + getrf_batch + getri + getri_batch + getri_get_lwork + getrs + getrs_batch + heevd + heevd_get_lwork + hegvd + hegvd_get_lwork + hetrd + hetrd_get_lwork + orgbr + orgbr_get_lwork + orgqr + orgqr_batch + orgqr_get_lwork + orgtr + orgtr_get_lwork + ormqr + ormqr_get_lwork + ormtr + ormtr_get_lwork + potrf + potrf-usm-version + potrf_batch + potri + potrs + potrs-usm-version + potrs_batch + syevd + syevd_get_lwork + sygvd + sygvd_get_lwork + sytrd + sytrd_get_lwork + sytrf + sytrf_get_lwork + trtrs + ungbr + ungbr_get_lwork + ungqr + ungqr_get_lwork + ungtr + ungtr_get_lwork + unmqr + unmqr_get_lwork + unmtr + unmtr_get_lwork diff --git a/source/elements/oneMKL/source/domains/lapack/orgbr.rst b/source/elements/oneMKL/source/domains/lapack/orgbr.rst new file mode 100644 index 0000000000..6d5f4c11c0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/orgbr.rst @@ -0,0 +1,230 @@ +.. _orgbr: + +orgbr +===== + + +.. container:: + + + Generates the real orthogonal matrix ``Q`` or ``P``\ :sup:`T` + determined by + `gebrd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-8A4CB9DA-644B-400E-91C7-78BBD3E3FDAA + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void orgbr(queue &exec_queue, generate gen, std::int64_t m, std::int64_t n, std::int64_t k, buffer &a, std::int64_t lda, buffer &tau, buffer &work, std::int64_t lwork, buffer &info) + + ``orgbr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-D3C6AFAC-CF9D-4ACC-8AE7-4A80C12DC86B + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine generates the whole or part of the orthogonal matrices + ``Q`` and ``P``\ :sup:`T` formed by the routines + `gebrd `__/. + Use this routine after a call to sgebrd/dgebrd. All valid + combinations of arguments are described in *Input parameters*. In + most cases you need the following: + + + To compute the whole ``m``-by-``m`` matrix ``Q``: + + + :: + + + orgbr(queue, generate::q, m, m, n, a, …) + + + (note that the array ``a`` must have at least ``m`` columns). + + + To form the ``n`` leading columns of ``Q`` if ``m > n``: + + + :: + + + orgbr(queue, generate::q, m, n, n, a, …) + + + To compute the whole ``n``-by-``n`` matrix ``P``\ :sup:`T`: + + + :: + + + orgbr(queue, generate::p, n, n, m, a, …) + + + (note that the array ``a`` must have at least ``n`` rows). + + + To form the ``m`` leading rows of ``P``\ :sup:`T` if ``m < n``: + + + :: + + + orgbr(queue, generate::p, m, n, m, a, …) + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + gen + Must be ``generate::q`` or ``generate::p``. + + + If gen\ ``= generate::q``, the routine generates the matrix ``Q``. + + + If gen\ ``= generate::p``, the routine generates the matrix + ``P``\ :sup:`T`. + + + m + The number of rows in the matrix ``Q`` or ``P``\ :sup:`T` to be + returned ``(0≤m)``. + + + If gen\ ``= generate::q``, ``m ≥ n ≥ min(m, k)``. + + + If gen\ ``= generate::p``, ``n ≥ m ≥ min(n, k)``. + + + n + The number of rows in the matrix ``Q`` or ``P``\ :sup:`T` to be + returned ``(0≤n)``. See m for constraints. + + + k + If gen\ ``= generate::q``, the number of columns in the original + ``m``-by-k matrix reduced by + `gebrd `__. + + + If gen\ ``= generate::p``, the number of rows in the original + ``k``-by-n matrix reduced by + `gebrd `__. + + + a + The buffer a returned by + `gebrd `__. + + + lda + The leading dimension of a. + + + tau + Buffer, size ``min (m,k)`` if gen\ ``= generate::q``, size + ``min(n,k)`` if gen\ ``= generate::p``. Scalar factor of the + elementary reflectors, as returned by ``gebrd`` in the array tauq + or taup. + + + lwork + The size of the work array. Must be computed by + `orgbr_get_lwork `__. + + +.. container:: section + :name: GUID-BDC93D26-A415-4030-8222-D0EA7B5FC76B + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Overwritten by n leading columns of the m-by-m orthogonal matrix + ``Q`` or ``P``\ :sup:`T` (or the leading rows or columns thereof) + as specified by gen, m, and n. + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If info\ ``= 0``, the execution is successful. + + + If info\ ``= -i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``orgbr``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/orgbr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst new file mode 100644 index 0000000000..c51762949b --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst @@ -0,0 +1,158 @@ +.. _orgbr_get_lwork: + +orgbr_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function + `orgbr `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void orgbr_get_lwork(queue &exec_queue, generate gen, std::int64_t m, std::int64_t n, std::int64_t k, std::int64_t lda, std::int64_t &lwork) + + ``orgbr_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for generating the real orthogonal + matrix ``Q`` or ``P``\ :sup:`T` determined by + `gebrd `__. Calls + to this routine must specify the template parameter explicitly. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + gen + Must be ``generate::q`` or ``generate::p``. + + + If ``gen = generate::q``, the routine generates the matrix + ``Q``. + + + If ``gen = generate::p``, the routine generates the matrix + ``P``\ :sup:`T`. + + + m + The number of rows in the matrix ``Q`` or ``P``\ :sup:`T` to be + returned ``(0≤m)``. + + + If ``gen = generate::q``, ``m ≥ n ≥ min(m, k)``. + + + If ``gen = generate::p``, ``n ≥ m ≥ min(n, k)``. + + + n + The number of rows in the matrix ``Q`` or ``P``\ :sup:`T` to be + returned ``(0≤n)``. See ``m`` for constraints. + + + k + If ``gen = generate::q``, the number of columns in the original + ``m``-by-``k`` matrix reduced by + `gebrd `__. + + + If ``gen = generate::p``, the number of rows in the original + ``k``-by-``n`` matrix reduced by + `gebrd `__. + + + lda + The leading dimension of a. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `orgbr `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``orgbr_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/orgbr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr.rst b/source/elements/oneMKL/source/domains/lapack/orgqr.rst new file mode 100644 index 0000000000..c4e6caa02e --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/orgqr.rst @@ -0,0 +1,197 @@ +.. _orgqr: + +orgqr +===== + + +.. container:: + + + Generates the real orthogonal matrix Q of the QR factorization formed + by geqrf. This routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-3F04D25E-F895-49D5-85AA-C299292217FD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void orgqr(queue &exec_queue, std::int64_t m, std::int64_t n, std::int64_t k, buffer &a, std::int64_t lda, buffer &tau, buffer &work, std::int64_t &lwork, buffer &info) + + ``orgqr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-90DD94AE-0D40-4207-B84D-D6B6A24D209A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine generates the whole or part of ``m``-by-``m`` orthogonal + matrix ``Q`` of the ``QR`` factorization formed by the routine + `?geqrf `__. + + + Usually ``Q`` is determined from the ``QR`` factorization of an ``m`` + by ``p`` matrix ``A`` with ``m≥p``. To compute the whole matrix + ``Q``, use: + + + :: + + + onemkl::orgqr(queue, m, m, p, a, lda, tau, work, lwork, info) + + + To compute the leading ``p`` columns of ``Q`` (which form an + orthonormal basis in the space spanned by the columns of ``A``): + + + :: + + + onemkl::orgqr(queue, m, p, p, a, lda, tau, work, lwork, info) + + + To compute the matrix ``Q``\ :sup:`k` of the ``QR`` factorization of + leading ``k`` columns of the matrix ``A``: + + + :: + + + onemkl::orgqr(queue, m, m, k, a, lda, tau, work, lwork, info) + + + To compute the leading ``k`` columns of ``Q``\ :sup:`k` (which form + an orthonormal basis in the space spanned by leading ``k`` columns of + the matrix ``A``): + + + :: + + + onemkl::orgqr(queue, m, k, k, a, lda, tau, work, lwork, info) + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns in the matrix ``A`` (``0≤n``). + + + k + The number of elementary reflectors whose product defines the + matrix ``Q`` (``0≤k≤n``). + + + a + The buffer a returned by + `geqrf `__. + + + lda + The leading dimension of a (``lda≤m``). + + + tau + The buffer returned by + `geqrf `__. + + + lwork + The size of the work array (``lwork≥n``). Must be computed by + orgqr_get_lwork. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Overwritten by n leading columns of the m-by-m orthogonal matrix + ``Q``. + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info=0``, the execution is successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``orgqr``\ should be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/orgqr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst b/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst new file mode 100644 index 0000000000..9d48ba5eaf --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst @@ -0,0 +1,245 @@ +.. _orgqr_batch: + +orgqr_batch +=========== + + +.. container:: + + + Generates the orthogonal/unitary matrix ``Q``\ :sub:`i` of the QR + factorizations for a group of general matrices. This routine belongs + to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void orgqr_batch(queue &exec_queue, std::vector const& m, std::vector const& n, std::vector const& k, std::vector< buffer > &a, std::vector< std::int64_t > const& lda, std::vector< buffer > & tau, std::vector< buffer > &info) + + ``orgqr_batch`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine generates the whole or part of the orthogonal/unitary + matrices ``Q``\ :sub:`1`, ``Q``\ :sub:`2`, …, + ``Q``\ :sub:`batch_size` of the QR factorizations formed by the + routine + `geqrf_batch `__. + Use this routine after a call to + `geqrf_batch `__. + + + Usually ``Q``\ :sub:`i` is determined from the QR factorization of + an ``m``\ :sub:`i`-by-``p``\ :sub:`i` matrix ``A``\ :sub:`i` with + ``m``\ :sub:`i`\ ≥\ ``p``\ :sub:`i`. To compute the whole matrix + ``Q``\ :sub:`i`, use: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - ``m[i]`` + - ``m``\ :sub:`i` + * - ``n[i]`` + - ``m``\ :sub:`i` + * - ``k[i]`` + - ``p``\ :sub:`i` + + + + + To compute the leading pi columns of ``Q``\ :sub:`i` (which form + an orthonormal basis in the space spanned by the columns of + ``A``\ :sub:`i`): + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - ``m[i]`` + - ``m``\ :sub:`i` + * - ``n[i]`` + - ``p``\ :sub:`i` + * - ``k[i]`` + - ``p``\ :sub:`i` + + + + + To compute the matrix ``Qk``\ :sub:`i` of the QR factorization of + the leading ``k``\ :sub:`i` columns of the matrix ``A``\ :sub:`i`: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - ``m[i]`` + - ``m``\ :sub:`i` + * - ``n[i]`` + - ``m``\ :sub:`i` + * - ``k[i]`` + - ``k``\ :sub:`i` + + + + + To compute the leading ``k``\ :sub:`i` columns of ``Qk``\ :sub:`i` + (which form an orthonormal basis in the space spanned by the + leading ``k``\ :sub:`i` columns of the matrix ``A``\ :sub:`i`): + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - ``m[i]`` + - ``m``\ :sub:`i` + * - ``n[i]`` + - ``k``\ :sub:`i` + * - ``k[i]`` + - ``k``\ :sub:`i` + + + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + A vector, ``m[i]`` is the order of the unitary matrix + ``Q``\ :sub:`i`\ ``(0≤m[i])``. + + + n + A vector, ``n[i]`` is the number of columns of ``Q``\ :sub:`i` + to be computed ``(0≤n[i]≤m[i])``. + + + k + A vector, ``k[i]`` is the number of elementary reflectors whose + product defines the matrix ``Q``\ :sub:`i`\ ``(0≤k[i]≤n[i])``. + + + a + A vector of buffers as returned by + `geqrf_batch `__. + ``a[i]`` must be of size at least ``lda[i]*max(1, n[i])``. + + + lda + A vector, ``lda[i]`` is the leading dimension of + ``a[i] (m[i]≤lda[i])``. + + + tau + A vector of buffers tau for storing scalars defining elementary + reflectors, as returned by + `geqrf_batch `__. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + ``a[i]`` is overwritten by ``n[i]`` leading columns of the + ``m[i]``-by-``m[i]`` orthogonal matrix ``Q``\ :sub:`i`. + + + info + Vector of buffers containing error information. + + + If ``info[i]=0``, the execution is successful. + + + If ``info[i]=-k``, the ``k``-th parameter had an illegal value. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use orgqr_batchcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/QR_batch.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst new file mode 100644 index 0000000000..196cc82fd6 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst @@ -0,0 +1,129 @@ +.. _orgqr_get_lwork: + +orgqr_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function orgqr. This routine + belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void orgqr_get_lwork(queue &exec_queue, std::int64_t m, std::int64_t n, std::int64_t k, std::int64_t lda, std::int64_t &lwork) + + ``orgqr_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for generating the real orthogonal + matrix ``Q`` of the QR factorization (orgqr). Calls to this + routine must specify the template parameter explicitly. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns in the matrix ``A`` (``0≤n≤m``). + + + k + The number of elementary reflectors whose product defines the + matrix ``Q`` (``0≤k≤n``). + + + lda + The leading dimension of a. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in orgqr. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``orgqr_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/orgqr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/orgtr.rst b/source/elements/oneMKL/source/domains/lapack/orgtr.rst new file mode 100644 index 0000000000..e42b508883 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/orgtr.rst @@ -0,0 +1,157 @@ +.. _orgtr: + +orgtr +===== + + +.. container:: + + + Generates the real orthogonal matrix Q determined by + `?sytrd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-76E7621F-DE84-46C0-A273-B1526247494F + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void orgtr(queue &exec_queue, uplo upper_lower, std::int64_t n, buffer &a, std::int64_t lda, buffer &tau, buffer &work, std::int64_t lwork, buffer &info) + + ``orgtr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-EB340156-9410-4811-B15A-75F220C2D2D7 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine explicitly generates the ``n``-by-``n`` orthogonal matrix + ``Q`` formed by + `sytrd `__ when + reducing a real symmetric matrix ``A`` to tridiagonal form: + ``A = Q*T*QT``. Use this routine after a call to + `sytrd `__. + + +.. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. Uses the same + ``upper_lower`` as supplied + to\ `sytrd `__ + + + n + The order of the matrix ``Q``\ ``(0≤n)``. + + + a + The buffer a returned by + `sytrd `__. The + second dimension of a must be at least ``max(1,n)``. + + + lda + The leading dimension of a\ ``(n≤lda)``. + + + tau + The buffer tau returned by + `sytrd `__. The + dimension of tau must be at least ``max(1, n-1)``. + + + lwork + The size of the work array ``(lwork≥n)``. Should be computed by + `orgtr_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Overwritten by the orthogonal matrix ``Q``. + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info=0``, the execution is successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``orgtr``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/orgtr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst new file mode 100644 index 0000000000..3742f764cb --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst @@ -0,0 +1,130 @@ +.. _orgtr_get_lwork: + +orgtr_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `orgtr `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void orgtr_get_lwork(queue &exec_queue, uplo upper_lower, std::int64_t n, std::int64_t lda, std::int64_t &lwork) + + ``orgtr_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for generating the real orthogonal + matrix ``Q`` determined by + (`orgqr `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. Uses the same + ``upper_lower`` as supplied + to\ `sytrd `__ + + + n + The order of the matrix ``Q``\ ``(0≤n)``. + + + lda + The leading dimension of a\ ``(n≤lda)``. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer ``lwork`` contains the size of the buffer needed + for computations in + `orgtr `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``orgtr_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/orgtr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/ormqr.rst b/source/elements/oneMKL/source/domains/lapack/ormqr.rst new file mode 100644 index 0000000000..d51ca7fb38 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/ormqr.rst @@ -0,0 +1,201 @@ +.. _ormqr: + +ormqr +===== + + +.. container:: + + + Multiplies a real matrix by the orthogonal matrix Q of the QR + factorization formed by geqrf. This routine belongs to the + ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-5E1B8BBA-4B8F-498D-A505-06E1E144EAE3 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void ormqr(queue &exec_queue, onemkl::side left_right, onemkl::transpose trans, std::int64_t m, std::int64_t n, std::int64_t k, buffer &a, std::int64_t lda, buffer &tau, buffer &c, std::int64_t ldc, buffer &work, std::int64_t lwork, buffer &info) + + ``ormqr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-69EEB9B9-0CCE-459F-92D3-31B0281911D2 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine multiplies a real matrix ``C`` by ``Q`` or + ``Q``\ :sup:`T`, where ``Q`` is the orthogonal matrix ``Q`` of the + ``QR`` factorization formed by the routine + `geqrf `__. + + + Depending on the parameters ``left_right`` and ``trans``, the routine + can form one of the matrix products ``Q*C``, ``QT*C``, ``C*Q``, or + ``C*QT`` (overwriting the result on ``C``). + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + If ``left_right=onemkl::side::left``, ``Q`` or ``Q``\ :sup:`T` is + applied to ``C`` from the left. + + + If ``left_right=onemkl::side::right``, ``Q`` or ``Q``\ :sup:`T` is + applied to ``C`` from the right. + + + trans + If ``trans=onemkl::transpose::trans``, the routine multiplies ``C`` + by ``Q``. + + + If ``trans=onemkl::transpose::nontrans``, the routine multiplies + ``C`` by ``Q``\ :sup:`T`. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns in the matrix ``A`` (``0≤n≤m``). + + + k + The number of elementary reflectors whose product defines the + matrix ``Q`` (``0≤k≤n``). + + + a + The buffer ``a`` returned by + `geqrf `__. + The second dimension of ``a`` must be at least ``max(1,k)``. + + + lda + The leading dimension of a. + + + tau + The buffer tau returned by + `geqrf `__. + The second dimension of a must be at least ``max(1,k)``. + + + c + The buffer c contains the matrix ``C``. The second dimension of c + must be at least ``max(1,n)``. + + + ldc + The leading dimension of c. + + + lwork + The size of the work array. Should be computed by + `ormqr_get_lwork `__. + + + Constraints: + + + - lwork≥ ``max(1, n)`` if left_right=\ ``onemkl::side::left`` + - lwork≥ ``max(1, m)`` if left_right=\ ``onemkl::side::right`` + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Overwritten by the product ``Q``\ \*\ ``C``, + ``Q``\ :sup:`T`\ \*\ ``C``, ``C``\ \*\ ``Q``, or + ``C``\ \*\ ``Q``\ :sup:`T` (as specified by left_right and trans). + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info=0``, the execution is successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``ormqr``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/ormqr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst new file mode 100644 index 0000000000..56f7af7536 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst @@ -0,0 +1,155 @@ +.. _ormqr_get_lwork: + +ormqr_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function + `ormqr `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void ormqr_get_lwork(queue &exec_queue, onemkl::side left_right, onemkl::transpose trans, std::int64_t m, std::int64_t n, std::int64_t k, std::int64_t lda, std::int64_t ldc, std::int64_t &lwork) + + ``ormqr_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for multiplying a matrix by the + orthogonal matrix ``Q`` of the QR factorization + (`ormqr `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + If ``left_right=onemkl::side::left``, ``Q`` or ``Q``\ :sup:`T` is + applied to ``C`` from the left. + + + If ``left_right=onemkl::side::right``, ``Q`` or ``Q``\ :sup:`T` is + applied to ``C`` from the right. + + + trans + If ``trans=onemkl::transpose::trans``, the routine multiplies + ``C`` by ``Q``. + + + If ``trans=onemkl::transpose::nontrans``, the routine multiplies + ``C`` by ``Q``\ :sup:`T`. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns in the matrix ``A`` (``0≤n≤m``). + + + k + The number of elementary reflectors whose product defines the + matrix ``Q`` (``0≤k≤n``). + + + lda + The leading dimension of ``a``. + + + ldc + The leading dimension of c. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `ormqr `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``ormqr_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/ormqr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/ormtr.rst b/source/elements/oneMKL/source/domains/lapack/ormtr.rst new file mode 100644 index 0000000000..13c77c506e --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/ormtr.rst @@ -0,0 +1,217 @@ +.. _ormtr: + +ormtr +===== + + +.. container:: + + + Multiplies a real matrix by the real orthogonal matrix ``Q`` + determined by + `?sytrd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-CEFFA869-EDA6-4724-83FB-A70F7EC743AC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void ormtr(queue &exec_queue, side left_right, uplo upper_lower, transpose trans, std::int64_t m, std::int64_t n, buffer &a, std::int64_t lda, buffer &tau, buffer &c, std::int64_t ldc, buffer &work, std::int64_t lwork, buffer &info) + + ``ormtr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-5DEE53EE-9F11-4E2A-BEC6-8B670D1B1280 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine multiplies a real matrix ``C`` by ``Q`` or + ``Q``\ :sup:`T`, where ``Q`` is the orthogonal matrix ``Q`` formed by + `sytrd `__ when + reducing a real symmetric matrix ``A`` to tridiagonal form: + ``A = Q*T*QT``. Use this routine after a call to + `sytrd `__. + + + Depending on the parameters left_right and trans, the routine can + form one of the matrix products ``Q*C``, ``QT*C``, ``C*Q``, or + ``C*QT`` (overwriting the result on ``C``). + + +.. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + In the descriptions below, ``r`` denotes the order of ``Q``: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - ``r = m`` + - if ``left_right = side::left`` + * - ``r = n`` + - if ``left_right = side::right`` + + + + + exec_queue + The queue where the routine should be executed. + + + left_right + Must be either ``side::left`` or ``side::right``. + + + If ``left_right = side::left``, ``Q`` or ``Q``\ :sup:`T` is + applied to ``C`` from the left. + + + If ``left_right = side::right``, ``Q`` or ``Q``\ :sup:`T` is + applied to ``C`` from the right. + + + upper_lower + Must be either ``uplo::upper`` or ``uplo::lower``. Uses the same + ``upper_lower`` as supplied to + `sytrd `__. + + + trans + Must be either ``transpose::nontrans`` or ``transpose::trans``. + + + If ``trans = transpose::nontrans``, the routine multiplies ``C`` + by ``Q``. + + + If ``trans = transpose::trans``, the routine multiplies ``C`` by + ``Q``\ :sup:`T`. + + + m + The number of rows in the matrix ``C``\ ``(m ≥ 0)``. + + + n + The number of columns in the matrix ``C``\ ``(n ≥ 0)``. + + + a + The buffer a returned by + `sytrd `__. + + + lda + The leading dimension of a\ ``(max(1, r) ≤ lda)``. + + + tau + The buffer tau returned by + `sytrd `__. The + dimension of tau must be at least ``max(1, r-1)``. + + + c + The buffer c contains the matrix ``C``. The second dimension of c + must be at least ``max(1, n)``. + + + ldc + The leading dimension of c\ ``(max(1, n) ≤ ldc)``. + + + lwork + The size of the work array ``(lwork≥n)``. Should be computed by + `ormtr_get_lwork `__. + + +.. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Overwritten by the product ``Q*C``, ``QT*C``, ``C*Q``, or ``C*QT`` + (as specified by ``left_right`` and ``trans``). + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info=0``, the execution is successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``ormtr``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/ormtr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst new file mode 100644 index 0000000000..dddf5f0e29 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst @@ -0,0 +1,179 @@ +.. _ormtr_get_lwork: + +ormtr_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `ormtr `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void ormtr_get_lwork(queue &exec_queue, side left_right, uplo upper_lower, transpose trans, std::int64_t m, std::int64_t n, std::int64_t lda, std::int64_t ldc, std::int64_t &lwork) + + ``ormtr_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the size of the worksize needed for multiplying a real + matrix by the real orthogonal matrix ``Q`` determined by + (`sytrd `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + In the descriptions below, ``r`` denotes the order of ``Q``: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - ``r = m`` + - if ``left_right = side::left`` + * - ``r = n`` + - if ``left_right = side::right`` + + + + + exec_queue + The queue where the routine should be executed. + + + left_right + Must be either ``side::left`` or ``side::right``. + + + If ``left_right = side::left``, ``Q`` or ``Q``\ :sup:`T` is + applied to ``C`` from the left. + + + If ``left_right = side::right``, ``Q`` or ``Q``\ :sup:`T` is + applied to ``C`` from the right. + + + upper_lower + Must be either ``uplo::upper`` or ``uplo::lower``. Uses the + same ``upper_lower`` as supplied to + `sytrd `__. + + + trans + Must be either ``transpose::nontrans`` or ``transpose::trans``. + + + If ``trans = transpose::nontrans``, the routine multiplies + ``C`` by ``Q``. + + + If ``trans = transpose::trans``, the routine multiplies ``C`` + by ``Q``\ :sup:`T`. + + + m + The number of rows in the matrix ``C``\ ``(m ≥ 0)``. + + + n + The number of rows in the matrix ``C``\ ``(n ≥ 0)``. + + + lda + The leading dimension of a\ ``(max(1, r) ≤ lda)``. + + + ldc + The leading dimension of c\ ``(max(1, n) ≤ ldc)``. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `ormtr `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``ormtr_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/ormtr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst b/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst new file mode 100644 index 0000000000..ff1fb865bd --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst @@ -0,0 +1,175 @@ +.. _potrf-usm-version: + +potrf (USM Version) +=================== + + +.. container:: + + + Computes the Cholesky factorization of a symmetric (Hermitian) + positive-definite matrix.This routine belongs to the + ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-8EAC9176-B4CB-4B1E-B85F-233555DABA1E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template + + .. cpp:function:: cl::sycl::event potrf(cl::sycl::queue &queue, onemkl::uplo upper_lower, std::int64_t n, data_t \*a, std::int64_t lda, std::int64_t &info, cl::sycl::event &e_a_ready) + + The USM version of ``potrf`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-FD48832B-27F6-4FEC-A6AC-548E362E02AB + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine forms the Cholesky factorization of a symmetric + positive-definite or, for complex data, Hermitian + positive-definite matrix ``A``: + + + .. list-table:: + :header-rows: 1 + + * - ``A`` = ``U``\ :sup:`T`\ \*\ ``U`` for real data, ``A`` = ``U``\ :sup:`H`\ \*\ ``U`` for complex data + - if upper_lower=\ ``onemkl::uplo::upper`` + * - ``A`` = ``L``\ \*\ ``L``\ :sup:`T` for real data, ``A`` = ``L``\ \*\ ``L``\ :sup:`H` for complex data + - if upper_lower=\ ``onemkl::uplo::lower`` + + + + + where ``L`` is a lower triangular matrix and ``U`` is upper + triangular. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + The queue where the routine should be executed. + + + upper_lower + Indicates whether the upper or lower triangular part of ``A`` + is stored and how ``A`` is factored: + + + If upper_lower=\ ``onemkl::uplo::upper``, the array ``a`` stores + the upper triangular part of the matrix ``A``, and the strictly + lower triangular part of the matrix is not referenced. + + + If upper_lower=\ ``onemkl::uplo::lower``, the array ``a`` stores + the lower triangular part of the matrix ``A``, and the strictly + upper triangular part of the matrix is not referenced. + + + n + Specifies the order of the matrix ``A`` (``0≤n``). + + + a + Pointer to input matrix ``A``. The array holding input matrix a + contains either the upper or the lower triangular part of the + matrix ``A`` (see upper_lower). The second dimension of a must + be at least ``max(1, n)``. + + + lda + The leading dimension of a. + + + e_a_ready + Event to wait for before starting computation. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + The memory pointed to by pointer a is overwritten by the + Cholesky factor ``U`` or ``L``, as specified by upper_lower. + + + info + Variable containing error information. + + + If ``info=0``, execution was successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + + If ``info=i``, the leading minor of order ``i`` (and therefore + the matrix ``A`` itself) is not positive-definite, and the + factorization could not be completed. This may indicate an + error in forming the matrix ``A``. + + + .. container:: section + :name: GUID-ECF823A0-79DB-42F5-87BF-D32CCF1BFAC1 + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + Output event to wait on to ensure computation is complete. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/potrf.rst b/source/elements/oneMKL/source/domains/lapack/potrf.rst new file mode 100644 index 0000000000..0a1715bd80 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/potrf.rst @@ -0,0 +1,189 @@ +.. _potrf: + +potrf +===== + + +.. container:: + + + Computes the Cholesky factorization of a symmetric (Hermitian) + positive-definite matrix.This routine belongs to the + ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-8EAC9176-B4CB-4B1E-B85F-233555DABA1E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void potrf(queue &exec_queue, onemkl::uplo upper_lower, std::int64_t n, buffer &a, std::int64_t lda, buffer &info) + + ``potrf`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-FD48832B-27F6-4FEC-A6AC-548E362E02AB + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine forms the Cholesky factorization of a symmetric + positive-definite or, for complex data, Hermitian positive-definite + matrix ``A``: + + + .. list-table:: + :header-rows: 1 + + * - ``A`` = ``U``\ :sup:`T`\ \*\ ``U`` for real data, ``A`` = ``U``\ :sup:`H`\ \*\ ``U`` for complex data + - if upper_lower=\ ``onemkl::uplo::upper`` + * - ``A`` = ``L``\ \*\ ``L``\ :sup:`T` for real data, ``A`` = ``L``\ \*\ ``L``\ :sup:`H` for complex data + - if upper_lower=\ ``onemkl::uplo::lower`` + + + + + where ``L`` is a lower triangular matrix and ``U`` is upper + triangular. + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Indicates whether the upper or lower triangular part of ``A`` is + stored and how ``A`` is factored: + + + If upper_lower=\ ``onemkl::uplo::upper``, the array ``a`` stores the + upper triangular part of the matrix ``A``, and the strictly lower + triangular part of the matrix is not referenced. + + + If upper_lower=\ ``onemkl::uplo::lower``, the array ``a`` stores the + lower triangular part of the matrix ``A``, and the strictly upper + triangular part of the matrix is not referenced. + + + n + Specifies the order of the matrix ``A`` (``0≤n``). + + + a + Buffer holding input matrix ``A``. The buffer a contains either + the upper or the lower triangular part of the matrix ``A`` (see + upper_lower). The second dimension of a must be at least + ``max(1, n)``. + + + lda + The leading dimension of a. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + The buffer a is overwritten by the Cholesky factor ``U`` or ``L``, + as specified by upper_lower. + + + info + Buffer containing error information. + + + If ``info=0``, execution was successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + + If ``info=i``, the leading minor of order ``i`` (and therefore the + matrix ``A`` itself) is not positive-definite, and the + factorization could not be completed. This may indicate an error + in forming the matrix ``A``. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``potrf``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/potrf.cpp + + +.. container:: section + :name: GUID-3B00B441-C7C0-4D8A-A819-41037F1E5862 + + + .. rubric:: Known Limitations + :name: known-limitations + :class: sectiontitle + + + GPU support is for only real precisions. + + + GPU support for this function does not include error reportingthrough + the info parameter. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst new file mode 100644 index 0000000000..3dcce7623b --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst @@ -0,0 +1,185 @@ +.. _potrf_batch: + +potrf_batch +=========== + + +.. container:: + + + Computes the Cholesky factorizations of a batch of symmetric + (Hermitian) positive-definite matrices. This routine belongs to the + ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void potrf_batch(queue &exec_queue, std::vector< onemkl::uplo > const& uplo, std::vector const& n, std::vector> &a, std::vector const& lda, std::vector> &info) + + ``potrf_batch`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine forms the Cholesky factorizations of a batch of + symmetric positive-definite or, for complex data, Hermitian + positive-definite matrices ``A``\ :sub:`1`, ``A``\ :sub:`2`, …, + ``A``\ :sub:`1batch_size` + + + ``A``\ :sub:`i` = ``U``\ :sub:`i`\ :sup:`T` \* ``U``\ :sub:`i` for + real data, If ``uplo[i] = onemkl::uplo::upper`` + + + ``A``\ :sub:`i` = ``U``\ :sub:`i`\ :sup:`H` \* ``U``\ :sub:`i` for + complex data. + + + ``A``\ :sub:`i` = ``L``\ :sub:`i`\ :sup:`T` \* ``L``\ :sub:`i` for + real data, If ``uplo[i] = onemkl::uplo::lower`` + + + ``A``\ :sub:`i` = ``L``\ :sub:`i`\ :sup:`H` \* ``L``\ :sub:`i` for + complex data. + + + Where ``L``\ :sub:`i` is a lower triangular matrix and + ``U``\ :sub:`i` is an upper triangular matrix. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + uplo + A vector, ``uplo[i]`` indicates whether the upper or lower + triangular part of the matrix ``A``\ :sub:`i` is stored and how + ``A``\ :sub:`i` is factored: + + + If ``uplo = onemkl::upper``, then buffer ``a[i]`` stores the upper + triangular part of ``A``\ :sub:`i` and the strictly lower + triangular part of the matrix is not referenced. + + + If ``uplo = onemkl::lower``, then buffer ``a[i]`` stores the lower + triangular part of ``A``\ :sub:`i` and the strictly upper + triangular part of the matrix is not referenced. + + + n + A vector, ``n[i]`` is the number of columns of the batch matrix + ``A``\ :sub:`i`\ ``(0≤n[i])``. + + + a + A vector of buffers, ``a[i]`` stores the matrix + ``A``\ :sub:`i`. ``a[i]`` must be of size at least + ``lda[i]*max(1, n[i])``. + + + lda + A vector, ``lda[i]`` is the leading dimension of + ``a[i] (n[i]≤lda[i])``. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + ``a[i]`` is overwritten by the Cholesky factor ``U``\ :sub:`i` + or ``L``\ :sub:`i`, as specified by ``uplo[i]`` . + + + info + Vector of buffers containing error information. + + + If ``info[i]=0``, the execution is successful. + + + If ``info[i]=k``, the leading minor of order ``k`` (and + therefore the matrix ``A``\ :sub:`i` itself) is not + positive-definite, and the factorization could not be + completed. This may indicate an error in forming the matrix + ``A``\ :sub:`i`. + + + If ``info[i]=-k``, the ``k``-th parameter had an illegal value. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use potrf_batchcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/CHOLESKY_batch.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/potri.rst b/source/elements/oneMKL/source/domains/lapack/potri.rst new file mode 100644 index 0000000000..c9b83b5af0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/potri.rst @@ -0,0 +1,133 @@ +.. _potri: + +potri +===== + + +.. container:: + + + Computes the inverse of a symmetric (Hermitian) positive-definite + matrix using the Cholesky factorization. This routine belongs to the + ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-04971DD3-D455-4898-9876-68AA07155B4E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void potri(queue &exec_queue, uplo upper_lower, std::int64_t n, buffer &a, std::int64_t lda, buffer &info) + + potri supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-810993B2-2E94-47BF-8510-01671D72DD28 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes the inverse ``inv(A)`` of a symmetric positive + definite or, for complex flavors, Hermitian positive-definite matrix + ``A``. Before calling this routine, call + `potrf `__ + to factorize ``A``. + + +.. container:: section + :name: GUID-EBB8D6F9-1305-4469-8328-E46B8B6402B8 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - exec_queue + - The queue where the routine should be executed. + * - uplo + - Indicates how the input matrix ``A`` has been factored: If ``uplo = onemkl::uplo::upper``, the upper triangle of ``A`` is stored. If ``uplo = onemkl::uplo::lower``, the lower triangle of ``A`` is stored. + * - n + - Specifies the order of the matrix ``A``\ (``0≤n``). + * - a + - Contains the factorization of the matrix ``A``, as returned by `potrf `__. The second dimension of ``a`` must be at least ``max(1, n)``. + * - lda + - The leading dimension of ``a``. + + + + +.. container:: section + :name: GUID-5F045D15-A28B-4028-A2A9-6F1C4A1C26DE + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - a + - Overwritten by the upper or lower triangle of the inverse of ``A``. Specified by ``uplo``. + * - info + - Buffer containing error information + + + + +.. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``potri``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/potri.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst b/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst new file mode 100644 index 0000000000..0d05083020 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst @@ -0,0 +1,184 @@ +.. _potrs-usm-version: + +potrs (USM Version) +=================== + + +.. container:: + + + Solves a system of linear equations with a Cholesky-factored + symmetric (Hermitian) positive-definite coefficient matrix. This + routine belongs to the onemkl::lapack namespace. + + + .. container:: section + :name: GUID-8EAC9176-B4CB-4B1E-B85F-233555DABA1E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template + + .. cpp:function:: cl::sycl::event potrs(cl::sycl::queue &queue, onemkl::uplo upper_lower, std::int64_t n, std::int64_t nrhs, data_t \*a, std::int64_t lda, data_t \*b, std::int64_t ldb, std::int64_t &info, cl::sycl::event &e_a_ready, cl::sycl::event &e_b_ready) + + The USM version of ``potrs`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - data_t + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-FD48832B-27F6-4FEC-A6AC-548E362E02AB + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine solves for ``X`` the system of linear equations + ``A``\ \*\ ``X`` = ``B`` with a symmetric positive-definite or, + for complex data, Hermitian positive-definite matrix A, given the + Cholesky factorization of ``A``: + + + .. list-table:: + :header-rows: 1 + + * - ``A`` = ``U``\ :sup:`T`\ \*\ ``U`` for real data, ``A`` = ``U``\ :sup:`H`\ \*\ ``U`` for complex data + - if upper_lower=\ ``onemkl::uplo::upper`` + * - ``A`` = ``L``\ \*\ ``L``\ :sup:`T` for real data, ``A`` = ``L``\ \*\ ``L``\ :sup:`H` for complex data + - if upper_lower=\ ``onemkl::uplo::lower`` + + + + + where ``L`` is a lower triangular matrix and ``U`` is upper + triangular. The system is solved with multiple right-hand sides + stored in the columns of the matrix ``B``. + + + Before calling this routine, you must call + `potrf `__ to + compute the Cholesky factorization of A. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + The queue where the routine should be executed. + + + upper_lower + Indicates how the input matrix has been factored: + + + If uplo=\ ``onemkl::uplo::upper``, the upper triangle ``U`` of + ``A`` is stored, where ``A`` = ``U``\ :sup:`T`\ \*\ ``U`` for + real data, ``A`` = ``U``\ :sup:`H`\ \*\ ``U`` for complex data. + + + If uplo=\ ``onemkl::uplo::lower``, the upper triangle ``L`` of + ``A`` is stored, where ``A`` = ``L``\ \*\ ``L``\ :sup:`T` for + real data, ``A`` = ``L``\ \*\ ``L``\ :sup:`H` for complex data. + + + n + The order of matrix ``A`` (0≤n). + + + nrhs + The number of right-hand sides (0≤nrhs). + + + a + Pointer to factorization of the matrix ``A``, as returned by + `potrf `__. The + second dimension of a must be at least max(1, n). + + + lda + The leading dimension of a. + + + b + The array b contains the matrix ``B`` whose columns are the + right-hand sides for the systems of equations. The second + dimension of b must be at least max(1,nrhs). + + + ldb + The leading dimension of b. + + + e_a_ready + Event to wait for before starting computation. + + + e_b_ready + Event to wait for before starting computation. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + b + The memory pointed to by pointer b is overwritten by the + solution matrix ``X``. + + + info + Buffer containing error information. + + + If ``info=0``, execution was successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + + If ``info=i``, the ``i``-th diagonal element of the Cholesky + factor is zero , and the solve could not be completed. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/potrs.rst b/source/elements/oneMKL/source/domains/lapack/potrs.rst new file mode 100644 index 0000000000..bbdaa83f54 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/potrs.rst @@ -0,0 +1,175 @@ +.. _potrs: + +potrs +===== + + +.. container:: + + + Solves a system of linear equations with a Cholesky-factored + symmetric (Hermitian) positive-definite coefficient matrix. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-19EC4349-151E-4907-B0FC-4800475DB3BA + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void potrs(queue &exec_queue, uplo upper_lower, std::int64_t n, std::int64_t nrhs, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, buffer &info) + + potrs supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-676EF153-39BB-4321-98D5-2250576203D7 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine solves for ``X`` the system of linear equations + ``A*X = B`` with a symmetric positive-definite or, for complex data, + Hermitian positive-definite matrix ``A``, given the Cholesky + factorization of ``A``: + + + .. list-table:: + :header-rows: 1 + + * - ``A = UT*U`` for real data, ``A = UH*U`` for complex data + - if ``uplo=onemkl::uplo::upper`` + * - ``A = L*LT`` for real data, ``A = L*LH`` for complex data + - if ``uplo=onemkl::uplo::lower`` + + + + + where ``L`` is a lower triangular matrix and ``U`` is upper + triangular. The system is solved with multiple right-hand sides + stored in the columns of the matrix ``B``. + + + Before calling this routine, you must call + `potrf `__ to compute + the Cholesky factorization of ``A``. + + +.. container:: section + :name: GUID-01EBC633-D795-4CD8-A614-9FA0D45EA8F6 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - exec_queue + - The queue where the routine should be executed. + * - uplo + - Indicates how the input matrix has been factored: If ``uplo = onemkl::uplo::upper``, the upper triangle ``U`` of ``A`` is stored, where ``A`` = ``U``\ :sup:`T`\ \*\ ``U`` for real data, ``A`` = ``U``\ :sup:`H`\ \*\ ``U`` for complex data. If ``uplo = onemkl::uplo::lower``, the lower triangle ``L`` of ``A`` is stored, where ``A`` = ``L``\ \*\ ``L``\ :sup:`T` for real data, ``A`` = ``L``\ \*\ ``L``\ :sup:`H` for complex data. + * - n + - The order of matrix ``A`` (``0≤n``).\ + * - nrhs + - The number of right-hand sides (``0≤nrhs``). + * - a + - Buffer containing the factorization of the matrix A, as returned by `potrf `__. The second dimension of ``a`` must be at least ``max(1, n)``. + * - lda + - The leading dimension of ``a``. + * - b + - The array ``b`` contains the matrix ``B`` whose columns are the right-hand sides for the systems of equations. The second dimension of ``b`` must be at least ``max(1,nrhs)``. + * - ldb + - The leading dimension of ``b``. + + + + +.. container:: section + :name: GUID-81F0ECBE-0BDC-452C-9FFC-D467A44518A5 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - b + - Overwritten by the solution matrix ``X``. + * - info + - Buffer containing error information. If ``info = 0``, the execution is successful. If ``info`` = ``i``, the ``i``-th parameter had an illegal value. If ``info`` = ``i``, the ``i``-th diagonal element of the Cholesky factor is zero , and the solve could not be completed. + + + + +.. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``potrs``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/potrs.cpp + + +.. container:: section + :name: GUID-3B00B441-C7C0-4D8A-A819-41037F1E5862 + + + .. rubric:: Known Limitations + :name: known-limitations + :class: sectiontitle + + + GPU support is for only real precisions. + + + GPU support for this function does not include error reportingthrough + the info parameter. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst b/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst new file mode 100644 index 0000000000..7336f0012f --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst @@ -0,0 +1,198 @@ +.. _potrs_batch: + +potrs_batch +=========== + + +.. container:: + + + Solves a system of linear equations with a batch of Cholesky-factored + symmetric (Hermitian) positive-definite coefficient matrices. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void potrs_batch(queue &exec_queue, std::vector< onemkl::uplo > const& uplo, std::vector const& n, std::vector const& nrhs, std::vector> &a, std::vector const& lda, std::vector> &b, std::vector const& ldb, std::vector> &info) + + ``potrs_batch`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine solves for ``X``\ :sub:`i` , in batch fashion, the + system of linear equations ``A``\ :sub:`i`\ \*\ ``X``\ :sub:`i` = + ``B``\ :sub:`i` with a symmetric positive-definite or, for complex + data, Hermitian positive-definite matrix ``A``, given the Cholesky + factorization of ``A``: + + + ``A``\ :sub:`i` = ``U``\ :sub:`i`\ :sup:`T` \* ``U``\ :sub:`i` for + real data, If ``uplo[i] = onemkl::uplo::upper`` + + + ``A``\ :sub:`i` = ``U``\ :sub:`i`\ :sup:`H` \* ``U``\ :sub:`i` for + complex data. + + + ``A``\ :sub:`i` = ``L``\ :sub:`i`\ :sup:`T` \* ``L``\ :sub:`i` for + real data, If ``uplo[i] = onemkl::uplo::lower`` + + + ``A``\ :sub:`i` = ``L``\ :sub:`i`\ :sup:`H` \* ``L``\ :sub:`i` for + complex data. + + + Where ``L``\ :sub:`i` is a lower triangular matrix and + ``U``\ :sub:`i` is an upper triangular matrix. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + uplo + A vector, ``uplo[i]`` indicates whether the upper or lower + triangular part of the matrix ``A``\ :sub:`i` is stored and how + ``A``\ :sub:`i` is factored: + + + If ``uplo = onemkl::upper``, then buffer ``a[i]`` stores the upper + triangular part of ``A``\ :sub:`i` and the strictly lower + triangular part of the matrix is not referenced. + + + If ``uplo = onemkl::lower``, then buffer ``a[i]`` stores the lower + triangular part of ``A``\ :sub:`i` and the strictly upper + triangular part of the matrix is not referenced. + + + n + A vector, ``n[i]`` is the number of columns of the batch matrix + ``A``\ :sub:`i`\ ``(0≤n[i])``. + + + nrhs + A vector, ``nrhs[i]`` is the number of right-hand sides + ``(0≤nrhs)``. + + + a + A vector of buffers returned by + `potrf_batch `__. + ``a[i]`` must be of size at least ``lda[i]*max(1, n[i])``. + + + lda + A vector, ``lda[i]`` is the leading dimension of + ``a[i] (n[i]≤lda[i])``. + + + b + A vector of buffers, ``b[i]`` contains the matrix + ``B``\ :sub:`i` whose columns are the right-hand sides for the + systems of equations. The second dimension of ``b[i]`` must be + at least ``max(1,nrhs[i])``. + + + ldb + A vector, ``ldb[i]`` is the leading dimension of ``b[i]``. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + b + ``b[i]`` is overwritten by the solution matrix ``X[i]``. + + + info + Vector of buffers containing error information. + + + If ``info[i]=0``, the execution is successful. + + + If ``info[i]=k``, the ``k``-th diagonal element of the Cholesky + factor is zero and the solve could not be completed. + + + If ``info[i]=-k``, the ``k``-th parameter had an illegal value. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use potrs_batchcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/CHOLESKY_batch.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/syevd.rst b/source/elements/oneMKL/source/domains/lapack/syevd.rst new file mode 100644 index 0000000000..b508840104 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/syevd.rst @@ -0,0 +1,205 @@ +.. _syevd: + +syevd +===== + + +.. container:: + + + Computes all eigenvalues and, optionally, all eigenvectors of a real + symmetric matrix using divide and conquer algorithm. This routine + belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-A02DF677-A0D6-41B5-8362-0FF15785B9F4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void syevd(queue &exec_queue, jobz jobz, uplo upper_lower, std::int64_t n, buffer &a, std::int64_t lda, buffer &w, buffer &work, std::int64_t lwork, buffer &iwork, std::int64_t liwork, buffer &info) + + ``syevd`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-0A641B08-5EA0-4035-A543-C9EACA9986F0 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes all the eigenvalues, and optionally all the + eigenvectors, of a real symmetric matrix ``A``. In other words, it + can compute the spectral factorization of ``A`` as: ``A = Z*λ*ZT``. + + + Here Λ is a diagonal matrix whose diagonal elements are the + eigenvalues λ\ :sub:`i`, and ``Z`` is the orthogonal matrix whose + columns are the eigenvectors ``z``\ :sub:`i`. Thus, + + + ``A*zi = λi*zi`` for ``i = 1, 2, ..., n``. + + + If the eigenvectors are requested, then this routine uses a divide + and conquer algorithm to compute eigenvalues and eigenvectors. + However, if only eigenvalues are required, then it uses the + Pal-Walker-Kahan variant of the ``QL`` or ``QR`` algorithm. + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + jobz + Must be ``job::novec`` or ``job::vec``. + + + If ``jobz = job::novec``, then only eigenvalues are computed. + + + If ``jobz = job::vec``, then eigenvalues and eigenvectors are + computed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = job::upper``, a stores the upper triangular + part of ``A``. + + + If ``upper_lower = job::lower``, a stores the lower triangular + part of ``A``. + + + n + The order of the matrix ``A`` (``0≤n``). + + + a + The buffer a, size (``lda,*``). The buffer a contains the matrix + ``A``. The second dimension of a must be at least ``max(1, n)``. + + + lda + The leading dimension of ``a``. Must be at least ``max(1,n)``. + + + lwork + The size of the work buffer. Should be computed by + `syevd_get_lwork `__. + + + liwork + The size of the iwork buffer. Should be computed by + `syevd_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + If ``jobz = job::vec``, then on exit this buffer is overwritten by + the orthogonal matrix ``Z`` which contains the eigenvectors of + ``A``. + + + w + Buffer, size at least n. If ``info = 0``, contains the eigenvalues + of the matrix ``A`` in ascending order. See also info. + + + work + Buffer of workspace. + + + iwork + Buffer of integer workspace. + + + info + Buffer containing error information. + + + If ``info = 0``, the execution is successful. + + + If ``info = i``, and ``jobz = job::novec``, then the algorithm + failed to converge; ``i`` indicates the number of off-diagonal + elements of an intermediate tridiagonal form which did not + converge to zero. + + + If ``info = i``, and ``jobz = job:vec``, then the algorithm failed + to compute an eigenvalue while working on the submatrix lying in + rows and columns ``info/(n+1)`` through ``mod(info,n+1)``. + + + If ``info = -i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``syevd``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/syevd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst new file mode 100644 index 0000000000..221145ecb0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst @@ -0,0 +1,155 @@ +.. _syevd_get_lwork: + +syevd_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `syevd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void syevd_get_lwork(queue &exec_queue, job jobz, uplo upper_lower, std::int64_t n, std::int64_t lda, std::int64_t &lwork, std::int64_t &liwork) + + ``syevd_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for the computation of eigenvalues or + eigenvectors of a real symmetric matrix using divide and conquer + algorithm + (`syevd `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + jobz + Must be ``job::novec`` or ``job::vec``. + + + If ``jobz = job::novec``, then only eigenvalues are computed. + + + If ``jobz = job::vec``, then eigenvalues and eigenvectors are + computed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = job::upper``, a stores the upper triangular + part of ``A``. + + + If ``upper_lower = job::lower``, a stores the lower triangular + part of ``A``. + + + n + The order of the matrix ``A`` (``0≤n``). + + + lda + The leading dimension of a. Currently lda is not referenced in + this function. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `syevd `__. + + + liwork + The integer liwork contains the size of the integer buffer + needed for computations in + `syevd `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``syevd_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/syevd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/sygvd.rst b/source/elements/oneMKL/source/domains/lapack/sygvd.rst new file mode 100644 index 0000000000..2ecd8d98e0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/sygvd.rst @@ -0,0 +1,262 @@ +.. _sygvd: + +sygvd +===== + + +.. container:: + + + Computes all eigenvalues and, optionally, eigenvectors of a real + generalized symmetric definite eigenproblem using a divide and + conquer method. This routine belongs to the + ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-29D24E37-E230-495D-9821-2BEA82B7E5CA + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void sygvd(queue &exec_queue, std::int64_t itype, job jobz, uplo upper_lower, std::int64_t n, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, buffer &w, buffer &work, std::int64_t &lwork, buffer &iwork, std::int64_t liwork, buffer &info) + + ``sygvd`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-1D5CC125-1BEF-4FA3-B688-A64D5C4E75AB + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes all the eigenvalues, and optionally, the + eigenvectors of a real generalized symmetric-definite eigenproblem, + of the form + + + ``A*x = λ*B*x``, ``A*B*x = λ*x``, or ``B*A*x = λ*x`` . + + + Here ``A`` and ``B`` are assumed to be symmetric and ``B`` is also + positive definite. + + + It uses a divide and conquer algorithm. + + +.. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + itype + Must be 1 or 2 or 3. Specifies the problem type to be solved: + + + if itype\ ``= 1``, the problem type is ``A*x = lambda*B*x``; + + + if itype\ ``= 2``, the problem type is ``A*B*x = lambda*x``; + + + if itype\ ``= 3``, the problem type is ``B*A*x = lambda*x``. + + + jobz + Must be ``job::novec`` or ``job::vec``. + + + If ``jobz = job::novec``, then only eigenvalues are computed. + + + If ``jobz = job::vec``, then eigenvalues and eigenvectors are + computed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = job::upper``, a and b store the upper + triangular part of ``A`` and ``B``. + + + If ``upper_lower = job::lower``, a and b stores the lower + triangular part of ``A`` and ``B``. + + + n + The order of the matrices ``A`` and ``B``\ ``(0≤n)``. + + + a + Buffer, size a\ ``(lda,*)`` contains the upper or lower triangle + of the symmetric matrix ``A``, as specified by upper_lower. The + second dimension of a must be at least ``max(1, n)``. + + + lda + The leading dimension of a; at least ``max(1, n)``. + + + b + Buffer, size b\ ``(ldb,*)`` contains the upper or lower triangle + of the symmetric matrix ``B``, as specified by upper_lower. The + second dimension of b must be at least ``max(1, n)``. + + + ldb + The leading dimension of b; at least ``max(1, n)``. + + + lwork + The size of the work buffer. Should be computed by + `sygvd_get_lwork `__. + + + liwork + The size of the iwork buffer. Should be computed by + `sygvd_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + On exit, if ``jobz = job::vec``, then if ``info = 0``, ``a`` + contains the matrix ``Z`` of eigenvectors. The eigenvectors are + normalized as follows: + + + if itype\ ``= 1``\ or ``2`` , ``Z``\ :sup:`T`\ ``*B*Z = I``; + + + if itype\ ``= 3`` , ``Z``\ :sup:`T`\ ``*inv(B)*Z = I``; + + + If ``jobz = job::novec``, then on exit the upper triangle (if + ``upper_lower = uplo::upper``) or the lower triangle (if + ``upper_lower = uplo::lower``) of ``A``, including the diagonal, + is destroyed. + + + b + On exit, if ``info≤n``, the part of b containing the matrix is + overwritten by the triangular factor ``U`` or ``L`` from the + Cholesky factorization ``B`` = ``U``\ :sup:`T`\ ``*U`` or + ``B = L*L``\ :sup:`T`. + + + w + Buffer, size at least ``n``. If ``info = 0``, contains the + eigenvalues of the matrix ``A`` in ascending order. See also + ``info``. + + + work + Buffer of workspace. + + + iwork + Buffer of integer workspace. + + + info + Buffer containing error information. + + + If info\ ``= 0``, the execution is successful. + + + If info\ ``> 0``, an error code is returned as specified below. + + + For info\ ``≤ n``: + + + - If ``info = i``, and ``jobz = job::novec``, then the algorithm + failed to converge; ``i`` indicates the number of off-diagonal + elements of an intermediate tridiagonal form which did not + converge to zero. + + + - If ``info = i``, and ``jobz = job:vec``, then the algorithm + failed to compute an eigenvalue while working on the submatrix + lying in rows and columns ``info/(n+1)`` through + ``mod(info,n+1)``. + + + For info\ ``> n``: + + + - If info\ ``= n + i``, for ``1 ≤i≤n``, then the leading minor of + order ``i`` of ``B`` is not positive-definite. The + factorization of ``B`` could not be completed and no + eigenvalues or eigenvectors were computed. + + + - If info\ ``= -i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``sygvd``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/sygvd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst new file mode 100644 index 0000000000..b4cb48bf00 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst @@ -0,0 +1,170 @@ +.. _sygvd_get_lwork: + +sygvd_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `sygvd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void sygvd_get_lwork(queue &exec_queue, std::int64_t itype, job jobz, uplo upper_lower, std::int64_t n, std::int64_t lda, std::int64_t ldb, std::int64_t &lwork, std::int64_t &liwork) + + ``sygvd_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for the computation of eigenvalues or + eigenvectors of a real generalized symmetric definite eigenproblem + using a divide and conquer method + `sygvd `__. Calls + to this routine must specify the template parameter explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + itype + Must be 1 or 2 or 3. Specifies the problem type to be solved: + + + if ``itype = 1``, the problem type is ``A*x = lambda*B*x``; + + + if ``itype = 2``, the problem type is ``A*B*x = lambda*x``; + + + if ``itype = 3``, the problem type is ``B*A*x = lambda*x``. + + + jobz + Must be ``job::novec`` or ``job::vec``. + + + If ``jobz = job::novec``, then only eigenvalues are computed. + + + If ``jobz = job::vec``, then eigenvalues and eigenvectors are + computed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = job::upper``, a and b store the upper + triangular part of ``A`` and ``B``. + + + If ``upper_lower = job::lower``, a and b stores the lower + triangular part of ``A`` and ``B``. + + + n + The order of the matrices ``A`` and ``B``\ ``(0≤n)``. + + + lda + The leading dimension of a. + + + ldb + The leading dimension of b. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer ``lwork`` contains the size of the buffer needed + for computations in + `sygvd `__. + + + liwork + The integer ``liwork`` contains the size of the integer buffer + needed for computations in + `sygvd `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``sygvd_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/sygvd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/sytrd.rst b/source/elements/oneMKL/source/domains/lapack/sytrd.rst new file mode 100644 index 0000000000..695284789e --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/sytrd.rst @@ -0,0 +1,186 @@ +.. _sytrd: + +sytrd +===== + + +.. container:: + + + Reduces a real symmetric matrix to tridiagonal form. This routine + belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-F37A9D15-87C3-421E-86D3-835C4CCB1D01 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void sytrd(queue &exec_queue, uplo upper_lower, std::int64_t n, buffer &a, std::int64_t lda, buffer &d, buffer &e, buffer &tau, buffer &work, std::int64_t lwork, buffer &info) + + ``sytrd`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-C513DF8F-ED12-4DBD-B1C8-94EB6A4A8FF1 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine reduces a real symmetric matrix ``A`` to symmetric + tridiagonal form ``T`` by an orthogonal similarity transformation: + ``A = Q*T*QT``. The orthogonal matrix ``Q`` is not formed explicitly + but is represented as a product of ``n``-1 elementary reflectors. + Routines are provided for working with ``Q`` in this representation . + + +.. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = uplo::upper``, ``a`` stores the upper + triangular part of ``A``. + + + If ``upper_lower = uplo::lower``, ``a`` stores the lower + triangular part of ``A``. + + + n + The order of the matrices ``A``\ ``(0≤n)``. + + + a + The buffer a, size ``(lda,*)``. Contains the upper or lower + triangle of the symmetric matrix ``A``, as specified by + ``upper_lower``. + + + The second dimension of a must be at least ``max(1,n)``. + + + lda + The leading dimension of a; at least ``max(1,n)``. + + + lwork + The size of the work buffer. Should be computed by + `sytrd_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + On exit, + + + if ``upper_lower = uplo::upper``, the diagonal and first + superdiagonal of ``A`` are overwritten by the corresponding + elements of the tridiagonal matrix ``T``, and the elements above + the first superdiagonal, with the buffer tau, represent the + orthogonal matrix ``Q`` as a product of elementary reflectors; + + + if ``upper_lower = uplo::lower``, the diagonal and first + subdiagonal of ``A`` are overwritten by the corresponding elements + of the tridiagonal matrix ``T``, and the elements below the first + subdiagonal, with the buffer tau, represent the orthogonal matrix + ``Q`` as a product of elementary reflectors. + + + d + Buffer containing the diagonal elements of the matrix ``T``. The + dimension of d must be at least ``max(1, n)``. + + + e + Buffer containing the off diagonal elements of the matrix ``T``. + The dimension of e must be at least ``max(1, n-1)``. + + + tau + Buffer, size at least ``max(1, n)``. Stores ``(n-1)`` scalars that + define elementary reflectors in decomposition of the unitary + matrix ``Q`` in a product of ``n-1`` elementary reflectors. + tau\ ``(n)`` is used as workspace. + + + work + Buffer of workspace. + + + info + If info\ ``=0``, the execution is successful. + + + If info\ ``=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``sytrd``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/sytrd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst new file mode 100644 index 0000000000..094fec86ad --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst @@ -0,0 +1,136 @@ +.. _sytrd_get_lwork: + +sytrd_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `sytrd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void sytrd_get_lwork(queue &exec_queue, uplo upper_lower, std::int64_t n, std::int64_t lda, std::int64_t &lwork) + + ``sytrd_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for generating the complex unitary + matrix ``Q`` determined by + (`sytrd `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. + + + If ``upper_lower = uplo::upper``, a stores the upper triangular + part of ``A``. + + + If ``upper_lower = uplo::lower``, a stores the lower triangular + part of ``A``. + + + n + The order of the matrices ``A``\ ``(0≤n)``. + + + lda + The leading dimension of a. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer ``lwork`` contains the size of the buffer needed + for computations in + `sytrd `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``sytrd_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/sytrd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/sytrf.rst b/source/elements/oneMKL/source/domains/lapack/sytrf.rst new file mode 100644 index 0000000000..ef298fdafa --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/sytrf.rst @@ -0,0 +1,150 @@ +.. _sytrf: + +sytrf +===== + + +.. container:: + + + Computes the Bunch-Kaufman factorization of a symmetric matrix. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-5F34A4EC-2BC9-4EB0-9F83-16A880740FB0 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void sytrf(queue &exec_queue, uplo upper_lower, std::int64_t n, buffer &a, std::int64_t lda, buffer &ipiv, buffer &work, std::int64_t lwork, buffer &info) + + sytrf supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-5D25BE58-8EB2-4BE1-B262-AFB9EDA29E84 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine computes thefactorization of a real/complex symmetric + matrix ``A`` usingthe Bunch-Kaufman diagonal pivoting method. The + form of thefactorization is: + + + - if ``upper_lower=uplo::upper``, ``A`` = ``U*D*U``\ :sup:`T` + + + - if ``upper_lower=uplo::lower``, ``A`` = ``L*D*L``\ :sup:`T` + + + where ``A`` is the input matrix, ``U`` and ``L`` are products of + permutation and triangular matrices with unit diagonal (upper + triangular for ``U`` and lower triangular for ``L``), and ``D`` is a + symmetric block-diagonal matrix with 1-by-1 and 2-by-2 diagonal + blocks. ``U`` and ``L`` have 2-by-2 unit diagonal blocks + corresponding to the 2-by-2 blocks of ``D``. + + +.. container:: section + :name: GUID-4EEDE963-6F15-482C-B679-34A5F704484B + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - exec_queue + - The queue where the routine should be executed. + * - upper_lower + - Indicates whether the upper or lower triangular part of ``A`` is stored and how ``A`` is factored: If ``upper_lower=uplo::upper``, the buffer a stores the upper triangular part of the matrix ``A``, and ``A`` is factored as ``U*D*UT``. If ``upper_lower=uplo::lower``, the buffer a stores the lower triangular part of the matrix ``A``, and ``A`` is factored as ``L*D*LT``. + * - n + - The order of matrix ``A`` (``0≤n``). + * - a + - The buffer ``a``, size max(1,lda\*n). The buffer ``a`` contains either the upper or the lower triangular part of the matrix ``A`` (see ``upper_lower``). The second dimension of ``a`` must be at least ``max(1, n)``. + * - lda + - The leading dimension of ``a``. + * - lwork + - The size of the work array. Should be computed by `sytrf_get_lwork `__. + + + + +.. container:: section + :name: GUID-1D8F271C-059C-4D20-A37A-B522BF1506E0 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - a + - The upper or lower triangular part of a is overwritten by details of the block-diagonal matrix ``D`` and the multipliers used to obtain the factor ``U`` (or ``L``). + * - ipiv + - Buffer, size at least ``max(1, n)``. Contains details of the interchanges and the block structure of ``D``. If ``ipiv(i)=k>0``, then ``d``\ :sub:`ii` is a 1-by-1 block, and the ``i``-th row and column of ``A`` was interchanged with the ``k``-th row and column. If ``upper_lower=onemkl::uplo::upper`` and ``ipiv(i)=ipiv(i-1)=-m<0``, then ``D`` has a 2-by-2 block in rows/columns ``i`` and ``i``-1, and (``i``-1)-th row and column of ``A`` was interchanged with the ``m``-th row and column. If ``upper_lower=onemkl::uplo::lower`` and ``ipiv(i)=ipiv(i+1)=-m<0``, then ``D`` has a 2-by-2 block in rows/columns ``i`` and ``i``\ +1, and (``i``\ +1)-th row and column of ``A`` was interchanged with the ``m``-th row and column. + * - work + - Workspace for internal computations. + * - info + - Buffer containing error information: If ``info=0``, the execution is successful. If ``info=-i``, the ``i``-th parameter had an illegal value. If ``info=i``, ``d``\ :sub:`ii` is 0. The factorization has been completed, but ``D`` is exactly singular. Division by 0 will occur if you use ``D`` for solving a system of linear equations. + + + + +.. container:: section + :name: EXAMPLE_5EF48B8A07D849EA84A74FE22F0D5B24 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``sytrf``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/sytrf.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst new file mode 100644 index 0000000000..432a53e13a --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst @@ -0,0 +1,140 @@ +.. _sytrf_get_lwork: + +sytrf_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function sytrf. This routine + belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void sytrf_get_lwork(queue &exec_queue, uplo upper_lower, std::int64_t n, std::int64_t lda, std::int64_t &lwork) + + ``sytrf_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for the Bunch-Kaufman factorization + of a symmetric matrix + (`sytrf `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Indicates whether the upper or lower triangular part of *A* is + stored and how *A* is factored: + + + If ``upper_lower=uplo::upper``, the buffer ``a`` stores the + upper triangular part of the matrix ``A``, and ``A`` is + factored as ``U*D*UT``. + + + If ``upper_lower=uplo::lower``, the buffer ``a`` stores the + lower triangular part of the matrix ``A``, and ``A`` is + factored as ``L*D*LT`` + + + n + The order of the matrix ``A`` (``0≤n``). + + + lda + The leading dimension of a. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `sytrf `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``sytrf_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/sytrf.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/trtrs.rst b/source/elements/oneMKL/source/domains/lapack/trtrs.rst new file mode 100644 index 0000000000..c90648fba0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/trtrs.rst @@ -0,0 +1,187 @@ +.. _trtrs: + +trtrs +===== + + +.. container:: + + + Solves a system of linear equations with a triangular coefficient + matrix, with multiple right-hand sides. This routine belongs to the + ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-DD05B917-D07A-4AB2-A4D0-C5F157BFA28E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void trtrs(queue &exec_queue, uplo upper_lower, trans transa, diag unit_diag, std::int64_t n, std::int64_t nrhs, buffer &a, std::int64_t lda, buffer &b, std::int64_t ldb, buffer &info) + + ``trtrs`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-E7948713-7484-46A3-84E0-F842AD2659CA + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine solves for ``X`` the following systems of linear + equations with a triangular matrix ``A``, with multiple right-hand + sides stored in ``B``: + + + .. list-table:: + :header-rows: 1 + + * - A*X = B + - + - if ``transa`` =\ ``transpose::nontrans``, + * - \ ``AT*X = B``\ + - + - if ``transa`` =\ ``transpose::trans``, + * - A\ :sup:`H`\ ``*X`` = B + - + - if ``transa`` =\ ``transpose::conjtrans`` (for complex matrices only). + + + + +.. container:: section + :name: GUID-F99EDA15-1260-44DB-9525-A559CED5E2A5 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - exec_queue + - The queue where the routine should be executed. + * - upper_lower + - Indicates whether ``A`` is upper or lower triangular: If upper_lower = ``uplo::upper``, then ``A`` is upper triangular. If upper_lower = ``uplo::lower``, then ``A`` is lower triangular. + * - transa + - If transa = ``transpose::nontrans``, then ``A``\ \*\ ``X`` = ``B`` is solved for ``X``. If transa = ``transpose::trans``, then ``A``\ :sup:`T`\ \*\ ``X`` = ``B`` is solved for ``X``. If transa = ``transpose::conjtrans``, then ``A``\ :sup:`H`\ \*\ ``X`` = ``B`` is solved for ``X``. + * - unit_diag + - If unit_diag = ``diag::nonunit``, then ``A`` is not a unit triangular matrix. If unit_diag = ``diag::unit``, then ``A`` is unit triangular: diagonal elements of ``A`` are assumed to be 1 and not referenced in the array a. + * - n + - The order of ``A``; the number of rows in ``B``; n\ ``≥ 0``. + * - nrhs + - The number of right-hand sides; nrhs\ ``≥ 0``. + * - a + - Buffer containing the matrix ``A``. The second dimension of a must be at least ``max(1,n)``. + * - lda + - The leading dimension of ``a``; lda\ ``≥ max(1, n)``. + * - b + - Buffer containing the matrix ``B`` whose columns are the right-hand sides for the systems of equations. The second dimension of b at least ``max(1,nrhs)``. + * - ldb + - The leading dimension of b; ldb\ ``≥ max(1, n)``. + + + + +.. container:: section + :name: GUID-CF353725-13B9-4B45-825A-3C027C1A376D + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - b + - Overwritten by the solution matrix ``X``. + + + + +.. container:: section + :name: GUID-E8FCA070-A357-454F-BD90-DF91270C2E49 + + + .. rubric:: Info + :name: info + :class: sectiontitle + + + info + Buffer containing error information. + + + If ``info`` = 0, the execution is successful. + + + If ``info`` = -``i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-ACC30BA5-5BDE-4169-95F6-1390ECD55715 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``trtrs``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/trtrs.cpp + + +.. container:: section + :name: GUID-81F25E52-7E8D-4508-8696-46F51F0A972C + + + .. rubric:: Known Limitations + :name: known-limitations + :class: sectiontitle + + + GPU support for this function does not include error reporting + through the ``info`` parameter. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/ungbr.rst b/source/elements/oneMKL/source/domains/lapack/ungbr.rst new file mode 100644 index 0000000000..8a17462709 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/ungbr.rst @@ -0,0 +1,232 @@ +.. _ungbr: + +ungbr +===== + + +.. container:: + + + Generates the complex unitary matrix Q or P\ :sup:`t` determined by + `gebrd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-758AC930-F817-42F6-9BB8-7CC3E0E016CE + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void ungbr(queue &exec_queue, generate gen, std::int64_t m, std::int64_t n, std::int64_t k, buffer &a, std::int64_t lda, buffer &tau, buffer &work, std::int64_t lwork, buffer &info) + + ``ungbr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-5132BBC6-DD56-4CC5-B9FE-236BAB6A11C4 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine generates the whole or part of the unitary matrices ``Q`` + and ``P``\ :sup:`H` formed by the routines + `gebrd `__. + Use this routine after a call to cgebrd/zgebrd. All valid + combinations of arguments are described in *Input Parameters*; in + most cases you need the following: + + + To compute the whole ``m``-by-``m`` matrix ``Q``, use: + + + :: + + + ungbr(queue, generate::q, m, m, n, a, …) + + + (note that the buffer\ ``a`` must have at least ``m`` columns). + + + To form the ``n`` leading columns of ``Q`` if ``m > n``, use: + + + :: + + + ungbr(queue, generate::q, m, n, n, a, …) + + + To compute the whole ``n``-by-``n`` matrix ``P``\ :sup:`T`, use: + + + :: + + + ungbr(queue, generate::p, n, n, m, a, …) + + + (note that the array ``a`` must have at least ``n`` rows). + + + To form the ``m`` leading rows of ``P``\ :sup:`T` if ``m < n``, use: + + + :: + + + ungbr(queue, generate::p, m, n, m, a, …) + + +.. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + gen + Must be ``generate::q`` or ``generate::p``. + + + If ``gen = generate::q``, the routine generates the matrix ``Q``. + + + If ``gen = generate::p``, the routine generates the matrix + ``P``\ :sup:`T`. + + + m + The number of rows in the matrix ``Q`` or ``P``\ :sup:`T` to be + returned ``(0 ≤ m)``. + + + If ``gen = generate::q``, ``m ≥ n ≥ min(m, k)``. + + + If ``gen = generate::p``, ``n ≥ m ≥ min(n, k)``. + + + n + The number of columns in the matrix ``Q`` or ``P``\ :sup:`T` to be + returned ``(0 ≤ n)``. See m for constraints. + + + k + If ``gen = generate::q``, the number of columns in the original + ``m``-by-``k`` matrix reduced by + `gebrd `__. + + + If ``gen = generate::p``, the number of rows in the original + ``k``-by-``n`` matrix reduced by + `gebrd `__. + + + a + The buffer a returned by + `gebrd `__. + + + lda + The leading dimension of a. + + + tau + For gen\ ``= generate::q``, the array tauq as returned by gebrd. + For gen\ ``= generate::p``, the array taup as returned by gebrd. + + + The dimension of tau must be at least ``max(1, min(m, k))`` for + gen\ ``=generate::q``, or ``max(1, min(m, k))`` for + gen\ ``= generate::p``. + + + lwork + The size of the work array. Must be computed by + `ungbr_get_lwork `__. + + +.. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Overwritten by n leading columns of the m-by-m unitary matrix + ``Q`` or ``P``\ :sup:`T`, (or the leading rows or columns thereof) + as specified by gen, m, and n. + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info=0``, the execution is successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``ungbr``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/orgbr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst new file mode 100644 index 0000000000..f03eb70156 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst @@ -0,0 +1,158 @@ +.. _ungbr_get_lwork: + +ungbr_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `ungbr `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void ungbr_get_lwork(queue &exec_queue, generate gen, std::int64_t m, std::int64_t n, std::int64_t k, std::int64_t lda, std::int64_t &lwork) + + ``ungbr_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for generating the complex unitary + matrix ``Q`` or ``P``\ :sup:`T` determined by + `gebrd `__. Calls + to this routine must specify the template parameter explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + gen + Must be ``generate::q`` or ``generate::p``. + + + If ``gen = generate::q``, the routine generates the matrix + ``Q``. + + + If ``gen = generate::p``, the routine generates the matrix + ``P``\ :sup:`T`. + + + m + The number of rows in the matrix ``Q`` or ``P``\ :sup:`T` to be + returned ``(0 ≤ m)``. + + + If ``gen = generate::q``, ``m ≥ n ≥ min(m, k)``. + + + If ``gen = generate::p``, ``n ≥ m ≥ min(n, k)``. + + + n + The number of columns in the matrix ``Q`` or ``P``\ :sup:`T` to + be returned ``(0 ≤ n)``. See m for constraints. + + + k + If ``gen = generate::q``, the number of columns in the original + m-by-k matrix reduced by + `gebrd `__. + + + If ``gen = generate::p``, the number of rows in the original + k-by-n matrix reduced by + `gebrd `__. + + + lda + The leading dimension of a. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer ``lwork`` contains the size of the buffer needed + for computations in + `ungbr `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``ungbr_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/orgbr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/ungqr.rst b/source/elements/oneMKL/source/domains/lapack/ungqr.rst new file mode 100644 index 0000000000..27f5e13ae6 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/ungqr.rst @@ -0,0 +1,197 @@ +.. _ungqr: + +ungqr +===== + + +.. container:: + + + Generates the complex unitary matrix Q of the QR factorization formed + by geqrf. This routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void ungqr(queue &exec_queue, std::int64_t m, std::int64_t n, std::int64_t k, buffer &a, std::int64_t lda, buffer &tau, buffer &work, std::int64_t lwork, buffer &info) + + ``ungqr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine generates the whole or part of ``m``-by-``m`` unitary + matrix ``Q`` of the ``QR`` factorization formed by the routines + `?geqrf `__. + + + Usually ``Q`` is determined from the ``QR`` factorization of an ``m`` + by ``p`` matrix ``A`` with ``m≥p``. To compute the whole matrix + ``Q``, use: + + + :: + + + onemkl::ungqr(queue, m, m, p, a, lda, tau, work, lwork, info) + + + To compute the leading ``p`` columns of ``Q`` (which form an + orthonormal basis in the space spanned by the columns of ``A``): + + + :: + + + onemkl::ungqr(queue, m, p, p, a, lda, tau, work, lwork, info) + + + To compute the matrix ``Q``\ :sup:`k` of the ``QR`` factorization of + the leading ``k`` columns of the matrix ``A``: + + + :: + + + onemkl::ungqr(queue, m, m, k, a, lda, tau, work, lwork, info) + + + To compute the leading ``k`` columns of ``Q``\ :sup:`k` (which form + an orthonormal basis in the space spanned by the leading ``k`` + columns of the matrix ``A``): + + + :: + + + onemkl::ungqr(queue, m, k, k, a, lda, tau, work, lwork, info) + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + The number of rows in the matrix ``A`` (``m ≤0``). + + + n + The number of columns in the matrix ``A`` (``0≤n``). + + + k + The number of elementary reflectors whose product defines the + matrix ``Q`` (``0≤k≤n``). + + + a + The buffer a returned by + `geqrf `__. + + + lda + The leading dimension of a (``lda ≤m``). + + + tau + The buffer tau returned by + `geqrf `__. + + + lwork + The size of the work array (``lwork ≥n``). Must be computed by + `ungqr_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Overwritten by ``n`` leading columns of the ``m``-by-``m`` + orthogonal matrix ``Q``. + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info=0``, the execution is successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``ungqr``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/ungqr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst new file mode 100644 index 0000000000..0aa50da23b --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst @@ -0,0 +1,129 @@ +.. _ungqr_get_lwork: + +ungqr_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function ungqr. This routine + belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void ungqr_get_lwork(queue &exec_queue, std::int64_t m, std::int64_t n, std::int64_t k, std::int64_t lda, std::int64_t &lwork) + + ``ungqr_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for generating the complex unitary + matrix ``Q`` of the QR factorization (ungqr). Calls to this + routine must specify the template parameter explicitly. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns the matrix ``A`` (``0≤n≤m``). + + + k + The number of elementary reflectors whose product defines the + matrix ``Q`` (``0≤k≤n``). + + + lda + The leading dimension of a. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in ungqr. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``ungqr_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/ungqr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/ungtr.rst b/source/elements/oneMKL/source/domains/lapack/ungtr.rst new file mode 100644 index 0000000000..52586197b3 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/ungtr.rst @@ -0,0 +1,157 @@ +.. _ungtr: + +ungtr +===== + + +.. container:: + + + Generates the complex unitary matrix Q determined by + `hetrd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-F63E0AF3-10D3-4519-8E52-7D9D036AF7F8 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void ungtr(queue &exec_queue, uplo upper_lower, std::int64_t n, buffer &a, std::int64_t lda, buffer &tau, buffer &work, std::int64_t lwork, buffer &info) + + ``ungtr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-55A1AE6C-AEA9-43CF-8DB7-805409488D85 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine explicitly generates the ``n``-by-``n`` unitary matrix + ``Q`` formed by + `?hetrd `__ when + reducing a complex Hermitian matrix ``A`` to tridiagonal form: + ``A = Q*T*QH``. Use this routine after a call to + `?hetrd `__. + + +.. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. Uses the same + ``upper_lower`` as supplied to + `hetrd `__ + + + n + The order of the matrix ``Q``\ ``(0≤n)``. + + + a + The buffer a returned by + `hetrd `__. The + second dimension of a must be at least ``max(1, n)``. + + + lda + The leading dimension of a\ ``(n≤lda)``. + + + tau + The buffer tau returned by + `hetrd `__. The + dimension of tau must be at least ``max(1, n-1)``. + + + lwork + The size of the work array (``lwork≥n``). Should be computed by + `ungtr_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + a + Overwritten by the unitary matrix ``Q``. + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info=0``, the execution is successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``ungtr``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/orgtr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst new file mode 100644 index 0000000000..bafafd5050 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst @@ -0,0 +1,130 @@ +.. _ungtr_get_lwork: + +ungtr_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function, + `ungtr `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void ungtr_get_lwork(queue &exec_queue, uplo upper_lower, std::int64_t n, std::int64_t lda, std::int64_t &lwork) + + ``ungtr_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-6E26AE63-E2AA-4D9F-B690-7FA8A0882B6F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for generating the complex unitary + matrix ``Q`` determined by + (`ungtr `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-26A5866D-0DF8-4835-8776-E5E73F0C657A + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + upper_lower + Must be ``uplo::upper`` or ``uplo::lower``. Uses the same + ``upper_lower`` as supplied to + `hetrd `__ + + + n + The order of the matrix ``Q``\ ``(0≤n)``. + + + lda + The leading dimension of a\ ``(n≤lda)``. + + + .. container:: section + :name: GUID-399F00E4-1E32-4114-AC10-5A1B420E474E + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `ungtr `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``ungtr_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/orgtr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/unmqr.rst b/source/elements/oneMKL/source/domains/lapack/unmqr.rst new file mode 100644 index 0000000000..b5155b24e9 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/unmqr.rst @@ -0,0 +1,204 @@ +.. _unmqr: + +unmqr +===== + + +.. container:: + + + Multiplies a complex matrix by the unitary matrix Q of the QR + factorization formed by unmqr. This routine belongs to the + ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-E2DDDD96-CB15-4406-9B18-4FEEE533152F + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void unmqr(queue &exec_queue, onemkl::side left_right, onemkl::transpose trans, std::int64_t m, std::int64_t n, std::int64_t k, buffer &a, std::int64_t lda, buffer &tau, buffer &c, std::int64_t ldc, buffer &work, std::int64_t lwork, buffer &info) + + ``unmqr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-DBFDC777-2F55-420B-8F38-93DE282836AB + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine multiplies a rectangular complex matrix ``C`` by ``Q`` or + ``Q``\ :sup:`H`, where ``Q`` is the unitary matrix ``Q`` of the + ``QR`` factorization formed by the routines + `?geqrf `__. + + + Depending on the parameters ``left_right`` and ``trans``, the routine + can form one of the matrix products ``Q*C``, ``Q``\ :sup:`H`\ ``*C``, + ``C*Q``, or ``C*Q``\ :sup:`H` (overwriting the result on ``C``). + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + If ``left_right=onemkl::side::left``, ``Q`` or ``Q``\ :sup:`H` is + applied to ``C`` from the left. + + + If ``left_right=onemkl::side::right``, ``Q`` or ``Q``\ :sup:`H` is + applied to ``C`` from the right. + + + trans + If ``trans=onemkl::transpose::trans``, the routine multiplies ``C`` + by ``Q``. + + + If ``trans=onemkl::transpose::nontrans``, the routine multiplies + ``C`` by ``Q``\ :sup:`H`. + + + m + The number of rows in the matrix ``A`` (``m≤0``). + + + n + The number of columns in the matrix ``A`` (``0≤n≤m``). + + + k + The number of elementary reflectors whose product defines the + matrix ``Q`` (``0≤k≤n``). + + + a + The buffer ``a`` returned by + `geqrf `__. + The second dimension of ``a`` must be at least ``max(1,k)``. + + + lda + The leading dimension of ``a``. + + + tau + The buffer ``tau`` returned by + `geqrf `__. + The second dimension of a must be at least ``max(1,k)``. + + + c + The buffer ``c`` contains the matrix ``C``. The second dimension + of c must be at least ``max(1,n)``. + + + ldc + The leading dimension of c. + + + lwork + The size of the work array. Should be computed by + `unmqr_get_lwork `__. + + + Constraints: + + + ``lwork`` ≥ ``max(1, n)`` if + ``left_right``\ =\ ``onemkl::side::left`` + + + ``lwork`` ≥ ``max(1, m)`` if + ``left_right``\ =\ ``onemkl::side::right`` + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Overwritten by the product ``Q``\ \*\ ``C``, + ``Q``\ :sup:`H`\ \*\ ``C``, ``C``\ \*\ ``Q``, or + ``C``\ \*\ ``Q``\ :sup:`H` (as specified by ``left_right`` and + ``trans``). + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info=0``, the execution is successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``unmqr``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/ormqr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst new file mode 100644 index 0000000000..d971367000 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst @@ -0,0 +1,153 @@ +.. _unmqr_get_lwork: + +unmqr_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function unmqr. This routine + belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void unmqr_get_lwork(queue &exec_queue, onemkl::side left_right, onemkl::transpose trans, std::int64_t m, std::int64_t n, std::int64_t k, std::int64_t lda, std::int64_t ldc, std::int64_t &lwork) + + ``unmqr_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for multiplying a matrix by the + unitary matrix ``Q`` of the QR factorization + (`unmqr `__). + Calls to this routine must specify the template parameter + explicitly. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + If ``left_right=onemkl::side::left``, ``Q`` or ``Q``\ :sup:`H` is + applied to ``C`` from the left. + + + If ``left_right=onemkl::side::right``, ``Q`` or ``Q``\ :sup:`H` is + applied to ``C`` from the right. + + + trans + If ``trans=onemkl::transpose::trans``, the routine multiplies + ``C`` by ``Q``. + + + If ``trans=onemkl::transpose::conjtrans``, the routine multiplies + ``C`` by ``Q``\ :sup:`H`. + + + m + The number of rows in the matrix ``A`` (``0≤m``). + + + n + The number of columns the matrix ``A`` (``0≤n≤m``). + + + k + The number of elementary reflectors whose product defines the + matrix ``Q`` (``0≤k≤n``). + + + lda + The leading dimension of ``a``. + + + ldc + The leading dimension of ``c``. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer ``lwork`` contains the size of the buffer needed + for computations in unmqr. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``unmqr_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/ormqr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/unmtr.rst b/source/elements/oneMKL/source/domains/lapack/unmtr.rst new file mode 100644 index 0000000000..0ea8cf0e25 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/unmtr.rst @@ -0,0 +1,224 @@ +.. _unmtr: + +unmtr +===== + + +.. container:: + + + Multiplies a complex matrix by the complex unitary matrix Q + determined by + `hetrd `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-D89B0E48-3A4E-47F4-B51F-834297BD7620 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: void unmtr(queue &exec_queue, side left_right, uplo upper_lower, transpose trans, std::int64_t m, std::int64_t n, buffer &a, std::int64_t lda, buffer &tau, buffer &c, std::int64_t ldc, buffer &work, std::int64_t lwork, buffer &info) + + ``unmtr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-34264668-20E3-4AB0-B24F-776357284A13 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The routine multiplies a complex matrix ``C`` by ``Q`` or + ``Q``\ :sup:`H`, where ``Q`` is the unitary matrix ``Q`` formed by + `?hetrd `__ + when reducing a complex Hermitian matrix ``A`` to tridiagonal form: + ``A = Q*T*QH``. Use this routine after a call to + `?hetrd `__. + + + Depending on the parameters left_right and trans, the routine can + form one of the matrix products ``Q*C``, ``Q``\ :sup:`H`\ ``*C``, + ``C*Q``, or ``C*Q``\ :sup:`H` (overwriting the result on ``C``). + + +.. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + In the descriptions below, ``r`` denotes the order of ``Q``: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - ``r``\ =\ ``m`` + - if ``left_right = side::left`` + * - ``r``\ =\ ``n`` + - if ``left_right = side::right`` + + + + + exec_queue + The queue where the routine should be executed. + + + left_right + Must be either ``side::left`` or ``side::right``. + + + If ``left_right=side::left``, ``Q`` or ``Q``\ :sup:`H` is applied + to ``C`` from the left. + + + If ``left_right=side::right``, ``Q`` or ``Q``\ :sup:`H` is applied + to ``C`` from the right. + + + upper_lower + Must be either ``uplo::upper`` or ``uplo::lower``. Uses the same + ``upper_lower`` as supplied to + `hetrd `__. + + + trans + Must be either ``transpose::nontrans`` or + ``transpose::conjtrans``. + + + If ``trans=transpose::nontrans``, the routine multiplies ``C`` by + ``Q``. + + + If ``trans=transpose::conjtrans``, the routine multiplies ``C`` by + ``Q``\ :sup:`H`. + + + m + The number of rows in the matrix ``C`` (``m≥0``). + + + n + The number of columns the matrix ``C`` (``n≥0``). + + + k + The number of elementary reflectors whose product defines the + matrix ``Q`` (``0≤k≤n``). + + + a + The buffer a returned by + `?hetrd `__. + + + lda + The leading dimension of a\ ``(max(1,r)≤lda)``. + + + tau + The buffer tau returned by + `?hetrd `__. The + dimension of tau must be at least ``max(1,r-1)``. + + + c + The buffer c contains the matrix ``C``. The second dimension of c + must be at least ``max(1,n)``. + + + ldc + The leading dimension of c\ ``(max(1,n)≤ldc)``. + + + lwork + The size of the work array (``lwork≥n``). Should be computed by + `unmtr_get_lwork `__. + + +.. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Overwritten by the product ``Q*C``, ``Q``\ :sup:`H`\ ``*C``, + ``C*Q``, or ``C*Q``\ :sup:`H` (as specified by left_right and + trans). + + + work + Workspace for internal computations. + + + info + Buffer containing error information. + + + If ``info=0``, the execution is successful. + + + If ``info=-i``, the ``i``-th parameter had an illegal value. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``unmtr``\ can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/lapack/ormtr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst new file mode 100644 index 0000000000..2f8abe9368 --- /dev/null +++ b/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst @@ -0,0 +1,167 @@ +.. _unmtr_get_lwork: + +unmtr_get_lwork +=============== + + +.. container:: + + + Computes the worksize needed for the function + `unmtr `__. This + routine belongs to the ``onemkl::lapack``\ namespace. + + + .. container:: section + :name: GUID-814D7756-F1E2-4417-A0EA-B4294B8303D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template void unmtr_get_lwork(queue &exec_queue, side left_right, uplo upper_lower, transpose trans, std::int64_t m, std::int64_t n, std::int64_t lda, std::int64_t ldc, std::int64_t &lwork) + + ``unmtr_get_lwork`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-A3A0248F-23B3-4E74-BDA2-BB8D23F19A50 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Computes the worksize needed for multiplying a complex matrix by + the unitary matrix ``Q`` determined by + `hetrd `__. Calls + to this routine must specify the template parameter explicitly. + + + .. container:: section + :name: GUID-F841BA63-D4EE-4C75-9831-BB804CEA8622 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + left_right + Must be either ``side::left`` or ``side::right``. + + + If ``left_right=side::left``, ``Q`` or ``Q``\ :sup:`H` is + applied to ``C`` from the left. + + + If ``left_right=side::right``, ``Q`` or ``Q``\ :sup:`H` is + applied to ``C`` from the right. + + + upper_lower + Must be either ``uplo::upper`` or ``uplo::lower``. Uses the + same upper_lower as supplied to + `hetrd `__. + + + trans + Must be either ``transpose::nontrans`` or + ``transpose::conjtrans``. + + + If ``trans=transpose::nontrans``, the routine multiplies ``C`` + by ``Q``. + + + If ``trans=transpose::conjtrans``, the routine multiplies ``C`` + by ``Q``\ :sup:`H`. + + + m + The number of rows in the matrix ``C`` (``m≥0``). + + + n + The number of columns the matrix ``C`` (``n≥0``). + + + k + The number of elementary reflectors whose product defines the + matrix ``Q`` (``0≤k≤n``). + + + lda + The leading dimension of a\ ``(max(1,r)≤lda)``. + + + ldc + The leading dimension of c\ ``(max(1,n)≤ldc)``. + + + .. container:: section + :name: GUID-F0C3D97D-E883-4070-A1C2-4FE43CC37D12 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + lwork + The integer lwork contains the size of the buffer needed for + computations in + `unmtr `__. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``unmtr_get_lwork``\ can be found in the + oneMKL installation directory, under: + + + :: + + + examples/sycl/lapack/ormtr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `LAPACK + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/matrix-storage.rst b/source/elements/oneMKL/source/domains/matrix-storage.rst new file mode 100644 index 0000000000..e942dac35f --- /dev/null +++ b/source/elements/oneMKL/source/domains/matrix-storage.rst @@ -0,0 +1,373 @@ +.. _matrix-storage: + +Matrix Storage +============== + + +.. container:: + + + The oneMKL BLAS and LAPACK routines for DPC++ use several matrix and + vector storage formats. These are the same formats used in + traditional Fortran BLAS/LAPACK. + + + .. container:: section + :name: GUID-5DD12E9B-8079-4EFD-8B91-5CF134D55082 + + + .. rubric:: General Matrix + :name: general-matrix + :class: sectiontitle + + + A general matrix ``A`` of ``m`` rows and ``n`` columns with + leading dimension ``lda`` is represented as a one dimensional + array ``a`` of size of at least ``lda`` \* ``n``. Before entry in + any BLAS function using a general matrix, the leading ``m`` by + ``n`` part of the array ``a`` must contain the matrix ``A``. The + elements of each column are contiguous in memory while the + elements of each row are at distance ``lda`` from the element in + the same row and the previous column. + + + Visually, the matrix + + + |image0| + + + is stored in memory as an array + + + |image1| + + + .. container:: section + :name: GUID-150ACC6B-BB73-4E6E-A7F7-9CE07707FA0E + + + .. rubric:: Triangular Matrix + :name: triangular-matrix + :class: sectiontitle + + + A triangular matrix ``A`` of ``n`` rows and ``n`` columns with + leading dimension ``lda`` is represented as a one dimensional + array ``a``, of a size of at least ``lda`` \* ``n``. The elements + of each column are contiguous in memory while the elements of each + row are at distance ``lda`` from the element in the same row and + the previous column. + + + Before entry in any BLAS function using a triangular matrix, + + + - If ``upper_lower = uplo::upper``, the leading ``n`` by ``n`` + upper triangular part of the array ``a`` must contain the upper + triangular part of the matrix ``A``. The strictly lower + triangular part of the array ``a`` is not referenced. In other + words, the matrix + + + |image2| + + + is stored in memory as the array + + + |image3| + + + - If ``upper_lower = uplo::lower``, the leading ``n`` by ``n`` + lower triangular part of the array ``a`` must contain the lower + triangular part of the matrix ``A``. The strictly upper + triangular part of the array ``a`` is not referenced. That is, + the matrix + + + |image4| + + + is stored in memory as the array + + + |image5| + + + .. container:: section + :name: GUID-4A6389BD-0396-4C6D-8AA4-C59EDAC7A991 + + + .. rubric:: Band Matrix + :name: band-matrix + :class: sectiontitle + + + A general band matrix ``A`` of ``m`` rows and ``n`` columns with + ``kl`` sub-diagonals, ``ku`` super-diagonals, and leading + dimension ``lda`` is represented as a one dimensional array ``a`` + of a size of at least ``lda`` \* ``n``. + + + Before entry in any BLAS function using a general band matrix, the + leading (``kl`` + ``ku`` + 1\ ``)`` by ``n`` part of the array + ``a`` must contain the matrix ``A``. This matrix must be supplied + column-by-column, with the main diagonal of the matrix in row + ``ku`` of the array (0-based indexing), the first super-diagonal + starting at position 1 in row (``ku`` - 1), the first sub-diagonal + starting at position 0 in row (``ku`` + 1), and so on. Elements in + the array ``a`` that do not correspond to elements in the band + matrix (such as the top left ``ku`` by ``ku`` triangle) are not + referenced. + + + Visually, the matrix ``A`` = + + + |image6| + + + is stored in memory as an array + + + |image7| + The following program segment transfers a band matrix from + conventional full matrix storage (variable ``matrix``, with + leading dimension ``ldm``) to band storage (variable ``a``, with + leading dimension ``lda``): + + + :: + + + for (j = 0; j < n; j++) { + k = ku – j; + for (i = max(0, j – ku); i < min(m, j + kl + 1); i++) { + a[(k + i) + j * lda] = matrix[i + j * ldm]; + } + } + + + .. container:: section + :name: GUID-D85FAA87-6868-4DCA-BD38-9C4F4214BD52 + + + .. rubric:: Triangular Band Matrix + :name: triangular-band-matrix + :class: sectiontitle + + + A triangular band matrix ``A`` of ``n`` rows and ``n`` columns + with ``k`` sub/super-diagonals and leading dimension ``lda`` is + represented as a one dimensional array ``a`` of size at least + ``lda`` \* ``n``. + + + Before entry in any BLAS function using a triangular band matrix, + + + - If ``upper_lower = uplo::upper``, the leading (``k`` + 1) by + ``n`` part of the array ``a`` must contain the upper triangular + band part of the matrix ``A``. This matrix must be supplied + column-by-column with the main diagonal of the matrix in row + (``k``) of the array, the first super-diagonal starting at + position 1 in row (``k`` - 1), and so on. Elements in the array + ``a`` that do not correspond to elements in the triangular band + matrix (such as the top left ``k`` by ``k`` triangle) are not + referenced. + + + Visually, the matrix + + + |image8| + + + is stored as an array + + + .. container:: fignone + :name: GUID-CBD17940-8F30-4779-AEB3-C17E9ADB60EC + + + |image9| + + + The following program segment transfers a band matrix from + conventional full matrix storage (variable ``matrix``, with + leading dimension ``ldm``) to band storage (variable ``a``, + with leading dimension ``lda``): + + + :: + + + for (j = 0; j < n; j++) { + m = k – j; + for (i = max(0, j – k); i <= j; i++) { + a[(m + i) + j * lda] = matrix[i + j * ldm]; + } + } + + + - If ``upper_lower = uplo::lower``, the leading (``k`` + 1) by + ``n`` part of the array ``a`` must contain the upper triangular + band part of the matrix ``A``. This matrix must be supplied + column-by-column with the main diagonal of the matrix in row 0 + of the array, the first sub-diagonal starting at position 0 in + row 1, and so on. Elements in the array ``a`` that do not + correspond to elements in the triangular band matrix (such as + the bottom right ``k`` by ``k`` triangle) are not referenced. + + + That is, the matrix + + + |image10| + + + is stored as the array + + + .. container:: fignone + :name: GUID-D89A1D4C-831C-4D8E-AD9F-0DFB968841E1 + + + |image11| + + + The following program segment transfers a band matrix from + conventional full matrix storage (variable ``matrix``, with + leading dimension ``ldm``) to band storage (variable ``a``, + with leading dimension ``lda``): + + + :: + + + for (j = 0; j < n; j++) { + m = –j; + for (i = j; i < min(n, j + k + 1); i++) { + a[(m + i) + j * lda] = matrix[i + j * ldm]; + } + } + + + .. container:: section + :name: GUID-41C95365-5CE1-46F9-869C-27647E5ABE2B + + + .. rubric:: Packed Triangular Matrix + :name: packed-triangular-matrix + :class: sectiontitle + + + A triangular matrix ``A`` of ``n`` rows and ``n`` columns is + represented in packed format as a one dimensional array ``a`` of + size at least (``n``\ \*(``n`` + 1))/2. All elements in the upper + or lower part of the matrix ``A`` are stored contiguously in the + array ``a``. + + + Before entry in any BLAS function using a triangular packed + matrix, + + + - If ``upper_lower = uplo::upper``, the first (``n``\ \*(``n`` + + 1))/2 elements in the array ``a`` must contain the upper + triangular part of the matrix ``A`` packed sequentially, column + by column so that ``a``\ [0] contains ``A``\ :sub:`11`, + ``a``\ [1] and ``a``\ [2] contain ``A``\ :sub:`12` and + ``A``\ :sub:`22` respectively, and so on. Hence, the matrix + + + |image12| + + + is stored as the array + + + |image13| + + + - If ``upper_lower = uplo::lower``, the first (``n``\ \*(``n`` + + 1))/2 elements in the array ``a`` must contain the lower + triangular part of the matrix ``A`` packed sequentially, column + by column so that ``a``\ [0] contains ``A``\ :sub:`11`, + ``a``\ [1] and ``a``\ [2] contain ``A``\ :sub:`21` and + ``A``\ :sub:`31` respectively, and so on. The matrix + + + |image14| + + + is stored as the array + + + |image15| + + + .. container:: section + :name: GUID-44CE5D09-0117-46D1-B6EA-333D4550A457 + + + .. rubric:: Vector + :name: vector + :class: sectiontitle + + + A vector ``X`` of ``n`` elements with increment ``incx`` is + represented as a one dimensional array ``x`` of size at least (1 + + (``n`` - 1) \* abs(``incx``)). + + + Visually, the vector + + + |image16| + + + is stored in memory as an array + + + .. container:: fignone + :name: GUID-6929FFA1-5209-4D51-A2B8-CCA373841258 + + + |image17| + + + **Parent topic:** :ref:`onemkl_dense_linear_algebra` + + +.. |image0| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee1.png + :class: img-middle +.. |image1| image:: equations/GUID-9932E129-264C-42F7-A75D-00E3705ABB80-low.png +.. |image2| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee2.png + :class: img-middle +.. |image3| image:: equations/GUID-904ADCA4-1F33-4C30-90AD-128AA11689FF-low.png +.. |image4| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee3.png + :class: img-middle +.. |image5| image:: equations/GUID-2F91B385-0AC2-41D3-AE61-48F63A7DBB02-low.png +.. |image6| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee4.png + :class: img-middle +.. |image7| image:: equations/GUID-ACF0A9F7-1A40-490B-BF70-EE6C63C21738-low.png +.. |image8| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee5.png + :class: img-middle +.. |image9| image:: equations/GUID-5193801D-8E3B-43A2-989E-09A8431FD34E-low.png +.. |image10| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee6.png + :class: img-middle +.. |image11| image:: equations/GUID-11B96BA7-C321-446D-A7B6-8D84C8CBC076-low.png +.. |image12| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee7.png + :class: img-middle +.. |image13| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee8.png + :class: img-middle +.. |image14| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15ee9.png + :class: img-middle +.. |image15| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15e10.png + :class: img-middle +.. |image16| image:: equations/GUID-B9AEF80A-AD5F-4B59-9F21-60672FB15e11.png + :class: img-middle +.. |image17| image:: equations/GUID-EA1939AE-5968-4E6A-8396-6F44E73939AF-low.png + diff --git a/source/elements/oneMKL/source/domains/rng/bibliography.rst b/source/elements/oneMKL/source/domains/rng/bibliography.rst new file mode 100644 index 0000000000..17116baed7 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/bibliography.rst @@ -0,0 +1,122 @@ +.. _rng_bibliography: + +Bibliography +============ + + +.. container:: + + + For more information about the VS RNG functionality, refer to the + following publications: + + + - + + + .. container:: + :name: LI_837EEC245E0748298C1DF57C504B7E49 + + + **VS RNG** + + + [AVX] + Intel. *Intel® Advanced Vector Extensions Programming + Reference*. (http://software.intel.com/file/36945) + + + [Bratley88] + Bratley P. and Fox B.L. *Implementing Sobol's Quasirandom + Sequence Generator*, ACM Transactions on Mathematical + Software, Vol. 14, No. 1, Pages 88-100, March 1988. + + + [Bratley92] + Bratley P., Fox B.L., and Niederreiter H. *Implementation + and Tests of Low-Discrepancy Sequences*, ACM Transactions on + Modeling and Computer Simulation, Vol. 2, No. 3, Pages + 195-213, July 1992. + + + [Coddington94] + Coddington, P. D. *Analysis of Random Number Generators + Using Monte Carlo Simulation*. Int. J. Mod. Phys. C-5, 547, + 1994. + + + [IntelSWMan] + Intel. *Intel® 64 and IA-32 Architectures Software + Developer’s Manual*. 3 vols. + (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html) + [L'Ecuyer99] + L'Ecuyer, Pierre. *Tables of Linear Congruential Generators + of Different Sizes and Good Lattice Structure*. Mathematics + of Computation, 68, 225, 249-260, 1999. + + + [L'Ecuyer99a] + L'Ecuyer, Pierre. *Good Parameter Sets for Combined Multiple + Recursive Random Number Generators*. Operations Research, + 47, 1, 159-164, 1999. + + + [Kirkpatrick81] + Kirkpatrick, S., and Stoll, E. *A Very Fast Shift-Register + Sequence Random Number Generator*. Journal of Computational + Physics, V. 40. 517-526, 1981. + + + [Matsumoto98] + Matsumoto, M., and Nishimura, T. *Mersenne Twister: A + 623-Dimensionally Equidistributed Uniform Pseudo-Random + Number Generator*, ACM Transactions on Modeling and Computer + Simulation, Vol. 8, No. 1, Pages 3-30, January 1998. + + + [Matsumoto00] + Matsumoto, M., and Nishimura, T. *Dynamic Creation of + Pseudorandom Number Generators*, 56-69, in: Monte Carlo and + Quasi-Monte Carlo Methods 1998, Ed. Niederreiter, H. and + Spanier, J., Springer 2000, + http://www.math.sci.hiroshima-u.ac.jp/%7Em-mat/MT/DC/dc.html. + + + [NAG] + NAG Numerical Libraries. + http://www.nag.co.uk/numeric/numerical_libraries.asp + + + [Saito08] + Saito, M., and Matsumoto, M. *SIMD-oriented Fast Mersenne + Twister: a 128-bit Pseudorandom Number Generator*. Monte + Carlo and Quasi-Monte Carlo Methods 2006, Springer, Pages + 607 – 622, 2008. + + + http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/earticles.html + + + [Salmon11] + Salmon, John K., Morales, Mark A., Dror, Ron O., and Shaw, + David E., *Parallel Random Numbers: As Easy as 1, 2, 3*. SC + '11 Proceedings of 2011 International Conference for High + Performance Computing, Networking, Storage and Analysis, + 2011. + + + [Sobol76] + Sobol, I.M., and Levitan, Yu.L. *The production of points + uniformly distributed in a multidimensional cube*. Preprint + 40, Institute of Applied Mathematics, USSR Academy of + Sciences, 1976 (In Russian). + + + [VS Notes] + *oneMKL Vector Statistics Notes*, a document present on the + oneMKL product at + http://software.intel.com/en-us/articles/intel-math-kernel-library-documentation/ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst b/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst new file mode 100644 index 0000000000..c2e0b2a429 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst @@ -0,0 +1,109 @@ +.. _distributions-template-parameter-mkl-rng-method-values: + +Distributions Template Parameter onemkl::rng::method Values +======================================================== + + +.. container:: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::rng::method + - Accuracy Flag + - Distributions + - Math Description + * - ``standard`` + - Yes No No No + - \ ``uniform(s,d)``\ \ ``uniform(i)``\ \ ``uniform_bits``\ \ ``bits``\ + - Standard method. Currently there is only one method for these functions. + * - ``box_muller`` + - No + - \ ``gaussian``\ + - Generates normally distributed random number x thru the pair of uniformly distributed numbers u1 and u2 according to the formula: \ |image0|\ + * - ``box_muller2`` + - No Yes + - \ ``gaussian``\ \ ``lognormal``\ + - Generates normally distributed random numbers x1 and x2 thru the pair of uniformly distributed numbers u1 and u2 according to the formulas: \ |image1|\ \ |image2|\ + * - ``inverse_function`` + - No Yes Yes No Yes Yes No No No + - \ ``gaussian``\ \ ``exponential``\ \ ``weibull``\ \ ``cauchy``\ \ ``rayleigh``\ \ ``lognormal``\ \ ``gumbel``\ \ ``bernoulli``\ \ ``geometric``\ + - Inverse cumulative distribution function method. + * - ``marsaglia`` + - Yes + - \ ``gamma``\ + - For α > 1, a gamma distributed random number is generated as a cube of properly scaled normal random number; for 0.6 ≤α < 1, a gamma distributed random number is generated using rejection from Weibull distribution; for α < 0.6, a gamma distributed random number is obtained using transformation of exponential power distribution; for α = 1, gamma distribution is reduced to exponential distribution. + * - ``cheng_johnk_atkinson`` + - Yes + - \ ``beta``\ + - For min(p, q) > 1, Cheng method is used; for min(p, q) < 1, Johnk method is used, if q + K·p2+ C≤ 0 (K = 0.852..., C=-0.956...) otherwise, Atkinson switching algorithm is used; for max(p, q) < 1, method of Johnk is used; for min(p, q) < 1, max(p, q)> 1, Atkinson switching algorithm is used (CJA stands for Cheng, Johnk, Atkinson); for p = 1or q = 1, inverse cumulative distribution function method is used;for p = 1 and q = 1, beta distribution is reduced to uniform distribution. + * - ``gamma_marsaglia`` + - No + - \ ``chi_square``\ + - (most common): If ν ≥ 17 or ν is odd and 5 ≤ ν ≤ 15, a chi-square distribution is reduced to a Gamma distribution with these parameters: Shape α = ν / 2 Offset a = 0 Scale factor β = 2 The random numbers of the Gamma distribution are generated. + * - ``btpe`` + - No + - \ ``binomial``\ + - Acceptance/rejection method for ntrial·min(p,1 - p)≥ 30 with decomposition into four regions: + * - ``ptpe`` + - No + - \ ``poisson``\ + - Acceptance/rejection method for λ≥ 27 with decomposition into four regions: + * - ``gaussian_inverse`` + - No No + - \ ``poisson``\ \ ``poisson_v``\ + - for λ≥ 1, method based on Poisson inverse CDF approximation by Gaussian inverse CDF; for λ < 1, table lookup method is used. + * - ``h2pe`` + - No + - \ ``hypergeometric``\ + - Acceptance/rejection method for large mode of distribution with decomposition into three regions: + * - ``nbar`` + - No + - \ ``negbinomial``\ + - Acceptance/rejection method for: \ |image3|\ with decomposition into five regions: + * - ``poisson_inverse`` + - No + - \ ``multinomial``\ + - Multinomial distribution with parameters m, k, and a probability vector p. Random numbers of the multinomial distribution are generated by Poisson Approximation method. + + + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Accuracy flag represented as a method: + ``onemkl::rng:: | onemkl::rng::accurate`` + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee1.png + :class: img-middle +.. |image1| image:: ../equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee2.png + :class: img-middle +.. |image2| image:: ../equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee3.png + :class: img-middle +.. |image3| image:: ../equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee4.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/rng/distributions.rst b/source/elements/oneMKL/source/domains/rng/distributions.rst new file mode 100644 index 0000000000..e15493ed1f --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/distributions.rst @@ -0,0 +1,207 @@ +.. _distributions: + +Distributions +============= + + +.. container:: + + + oneAPI Math Kernel LibraryRNG routines are used to generate random + numbers with different types of distribution. Each function group is + introduced below by the type of underlying distribution and contains + a short description of its functionality, as well as specifications + of the call sequence and the explanation of input and output + parameters. `Table "Continuous Distribution Generators" <#TBL10-8>`__ + and `Table "Discrete Distribution Generators" <#TBL10-9>`__ list the + random number generator routines with data types and output + distributions, and sets correspondence between data types of the + generator routines and the basic random number generators. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Type of Distribution + - Data Types + - BRNG Data Type + - Description + * - \ `onemkl::rng::uniform `__\ + - s, d + - s, d + - Uniform continuous distribution on the interval [``a,b``) + * - \ `onemkl::rng::gaussian `__\ + - s, d + - s, d + - Normal (Gaussian) distribution + * - \ `onemkl::rng::exponential `__\ + - s, d + - s, d + - Exponential distribution + * - \ `onemkl::rng::laplace `__\ + - s, d + - s, d + - Laplace distribution (double exponential distribution) + * - \ `onemkl::rng::weibull `__\ + - s, d + - s, d + - Weibull distribution + * - \ `onemkl::rng::cauchy `__\ + - s, d + - s, d + - Cauchy distribution + * - \ `onemkl::rng::rayleigh `__\ + - s, d + - s, d + - Rayleigh distribution + * - \ `onemkl::rng::lognormal `__\ + - s, d + - s, d + - Lognormal distribution + * - \ `onemkl::rng::gumbel `__\ + - s, d + - s, d + - Gumbel (extreme value) distribution + * - \ `onemkl::rng::gamma `__\ + - s, d + - s, d + - Gamma distribution + * - \ `onemkl::rng::beta `__\ + - s, d + - s, d + - Beta distribution + * - \ `onemkl::rng::chi_square `__\ + - s, d + - s, d + - Chi-Square distribution + + + + +   + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Type of Distribution + - Data Types + - BRNG Data Type + - Description + * - \ `onemkl::rng::uniform `__\ + - i + - d + - Uniform discrete distribution on the interval [``a,b``) + * - \ `onemkl::rng::uniform_bits `__\ + - i + - i + - Uniformly distributed bits in 32-bit chunks + * - + - i + - i + - Uniformly distributed bits in 64-bit chunks + * - \ `onemkl::rng::bits `__\ + - i + - i + - Bits of underlying BRNG integer recurrence + * - \ `onemkl::rng::bernoulli `__\ + - i + - s + - Bernoulli distribution + * - \ `onemkl::rng::geometric `__\ + - i + - s + - Geometric distribution + * - \ `onemkl::rng::binomial `__\ + - i + - d + - Binomial distribution + * - \ `onemkl::rng::hypergeometric `__\ + - i + - d + - Hypergeometric distribution + * - \ `onemkl::rng::poisson `__\ + - i + - s (for ) onemkl::rng::gaussian_inverse s (for distribution parameter λ≥ 27) and d (for λ < 27) (for onemkl::rng::ptpe) + - Poisson distribution + * - \ `onemkl::rng::poisson_v `__\ + - i + - s + - Poisson distribution with varying mean + * - \ `onemkl::rng::negbinomial `__\ + - i + - d + - Negative binomial distribution, or Pascal distribution + * - \ `onemkl::rng::multinomial `__\ + - i + - d + - Multinomial distribution + + + + + .. container:: section + :name: GUID-290E2BFD-AAD2-4AD4-9691-27F18A6CA131 + + + .. rubric:: Modes of random number generation + :name: modes-of-random-number-generation + :class: sectiontitle + + + The library provides two modes of random number generation, + accurate and fast. Accurate generation mode is intended for the + applications that are highly demanding to accuracy of + calculations. When used in this mode, the generators produce + random numbers lying completely within definitional domain for all + values of the distribution parameters. For example, random numbers + obtained from the generator of continuous distribution that is + uniform on interval [``a``,\ ``b``] belong to this interval + irrespective of what ``a`` and ``b`` values may be. Fast mode + provides high performance of generation and also guarantees that + generated random numbers belong to the definitional domain except + for some specific values of distribution parameters. The + generation mode is set by specifying relevant value of the method + parameter in generator routines. List of distributions that + support accurate mode of generation is given in the table below. + + +   + **Parent topic:** :ref:`onemkl_rng` + + + +.. toctree:: + :hidden: + + distributions-template-parameter-mkl-rng-method-values + mkl-rng-uniform-continuous + mkl-rng-gaussian + mkl-rng-exponential + mkl-rng-laplace + mkl-rng-weibull + mkl-rng-cauchy + mkl-rng-rayleigh + mkl-rng-lognormal + mkl-rng-gumbel + mkl-rng-gamma + mkl-rng-beta + mkl-rng-chi_square + mkl-rng-uniform-discrete + mkl-rng-uniform_bits + mkl-rng-bits + mkl-rng-bernoulli + mkl-rng-geometric + mkl-rng-binomial + mkl-rng-hypergeometric + mkl-rng-poisson + mkl-rng-poisson_v + mkl-rng-negbinomial + mkl-rng-multinomial diff --git a/source/elements/oneMKL/source/domains/rng/engines-basic-random-number-generators.rst b/source/elements/oneMKL/source/domains/rng/engines-basic-random-number-generators.rst new file mode 100644 index 0000000000..794a166cb9 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/engines-basic-random-number-generators.rst @@ -0,0 +1,142 @@ +.. _engines-basic-random-number-generators: + +Engines (Basic Random Number Generators) +======================================== + + +.. container:: + + + oneMKL RNG provides pseudorandom, quasi-random, and non-deterministic + random number generators for Data Parallel C++: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Routine + - Description + * - \ `onemkl::rng::mrg32k3a `__\ + - The combined multiple recursive pseudorandom number generator ``MRG32k3a``\ `[L'Ecuyer99a] `__\ + * - \ `onemkl::rng::philox4x32x10 `__\ + - Philox4x32-10 counter-based pseudorandom number generator with a period of 2\ :sup:`128`\ ``PHILOX4X32X10``\ `[Salmon11] `__\ + * - \ `onemkl::rng::mcg31m1 `__\ + - The 31-bit multiplicative congruential pseudorandom number generator MCG(1132489760, 231 -1) `[L'Ecuyer99] `__\ + * - \ `onemkl::rng::r250 `__\ + - The 32-bit generalized feedback shift register pseudorandom number generator ``GFSR(250,103)``\ `[Kirkpatrick81] `__\ + * - \ `onemkl::rng::mcg59 `__\ + - The 59-bit multiplicative congruential pseudorandom number generator ``MCG(13``\ :sup:`13`\ ``, 2``\ :sup:`59`) from NAG Numerical Libraries `[NAG] `__\ + * - \ `onemkl::rng::wichmann_hill `__\ + - Wichmann-Hill pseudorandom number generator (a set of 273 basic generators) from NAG Numerical Libraries `[NAG] `__\ + * - \ `onemkl::rng::mt19937 `__\ + - Mersenne Twister pseudorandom number generator ``MT19937``\ `[Matsumoto98] `__ with period length 2\ :sup:`19937`-1 of the produced sequence + * - \ `onemkl::rng::mt2203 `__\ + - Set of 6024 Mersenne Twister pseudorandom number generators ``MT2203``\ `[Matsumoto98] `__, `[Matsumoto00] `__. Each of them generates a sequence of period length equal to 2\ :sup:`2203`-1. Parameters of the generators provide mutual independence of the corresponding sequences. + * - \ `onemkl::rng::sfmt19937 `__\ + - SIMD-oriented Fast Mersenne Twister pseudorandom number generator ``SFMT19937``\ `[Saito08] `__ with a period length equal to 2\ :sup:`19937`-1 of the produced sequence. + * - \ `onemkl::rng::sobol `__\ + - Sobol quasi-random number generator `[Sobol76] `__, `[Bratley88] `__, which works in arbitrary dimension. + * - \ `onemkl::rng::niederreiter `__\ + - Niederreiter quasi-random number generator `[Bratley92] `__, which works in arbitrary dimension. + * - \ `onemkl::rng::ars5 `__\ + - ARS-5 counter-based pseudorandom number generator with a period of 2\ :sup:`128`, which uses instructions from the AES-NI set ``ARS5``\ `[Salmon11] `__. + * - \ `onemkl::rng::nondeterministic `__\ + - Non-deterministic random number generator (RDRAND-based) `[AVX] `__\ `[IntelSWMan] `__\ + + + + + For some basic generators, oneMKL RNG provides two methods of + creating independent states in multiprocessor computations, which are + the leapfrog method and the block-splitting method. These sequence + splitting methods are also useful in sequential Monte Carlo. The + description of these functions can be found in the `Service + Routines `__ section. + + + In addition, MT2203 pseudorandom number generator is a set of 6024 + generators designed to create up to 6024 independent random + sequences, which might be used in parallel Monte Carlo simulations. + Another generator that has the same feature is Wichmann-Hill. It + allows creating up to 273 independent random streams. The properties + of the generators designed for parallel computations are discussed in + detail in + [`Coddington94 `__]. + + + See `VS Notes `__ for + the detailed description. + + + + **Parent topic:** :ref:`onemkl_rng` + + +.. container:: + + + - `onemkl::rng::mrg32k3a `__ + The combined multiple recursive pseudorandom number generator + MRG32k3a [ L'Ecuyer99a] + - `onemkl::rng::philox4x32x10 `__ + A Philox4x32-10 counter-based pseudorandom number generator. + [Salmon11]. + - `onemkl::rng::mcg31m1 `__ + The 31-bit multiplicative congruential pseudorandom number + generator MCG(1132489760, 231 -1) [L'Ecuyer99] + - `onemkl::rng::mcg59 `__ + The 59-bit multiplicative congruential pseudorandom number + generator MCG(1313, 259) from NAG Numerical Libraries [NAG]. + - `onemkl::rng::r250 `__ + The 32-bit generalized feedback shift register pseudorandom number + generator GFSR(250,103)[Kirkpatrick81]. + - `onemkl::rng::wichmann_hill `__ + Wichmann-Hill pseudorandom number generator (a set of 273 basic + generators) from NAG Numerical Libraries [NAG]. + - `onemkl::rng::mt19937 `__ + Mersenne Twister pseudorandom number generator MT19937 + [Matsumoto98] with period length 2\ :sup:`19937`-1 of the produced + sequence. + - `onemkl::rng::sfmt19937 `__ + SIMD-oriented Fast Mersenne Twister pseudorandom number generator + SFMT19937 [Saito08] with a period length equal to + 2\ :sup:`19937`-1 of the produced sequence. + - `onemkl::rng::mt2203 `__ + Set of 6024 Mersenne Twister pseudorandom number generators MT2203 + [Matsumoto98], [Matsumoto00]. Each of them generates a sequence of + period length equal to 2\ :sup:`2203`-1. Parameters of the + generators provide mutual independence of the corresponding + sequences.. + - `onemkl::rng::ars5 `__ + ARS-5 counter-based pseudorandom number generator with a period of + 2\ :sup:`128`, which uses instructions from the AES-NI set + ARS5[Salmon11]. + - `onemkl::rng::sobol `__ + Sobol quasi-random number generator [Sobol76], [Bratley88], which + works in arbitrary dimension. + - `onemkl::rng::niederreiter `__ + Niederreiter quasi-random number generator [Bratley92], which + works in arbitrary dimension. + - `onemkl::rng::nondeterministic `__ + Non-deterministic random number generator (RDRAND-based) + [AVX][IntelSWMan]. + +.. toctree:: + :hidden: + + mkl-rng-mrg32k3a + mkl-rng-philox4x32x10 + mkl-rng-mcg31m1 + mkl-rng-mcg59 + mkl-rng-r250 + mkl-rng-wichmann_hill + mkl-rng-mt19937 + mkl-rng-sfmt19937 + mkl-rng-mt2203 + mkl-rng-ars5 + mkl-rng-sobol + mkl-rng-niederreiter + mkl-rng-nondeterministic diff --git a/source/elements/oneMKL/source/domains/rng/generate-routine.rst b/source/elements/oneMKL/source/domains/rng/generate-routine.rst new file mode 100644 index 0000000000..d28b61da3e --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/generate-routine.rst @@ -0,0 +1,18 @@ +.. _generate-routine: + +Generate Routine +================ + +.. container:: + + + - `onemkl::rng::generate `__ + Entry point to obtain random numbers from a given engine with + proper statistics of a given distribution. + + **Parent topic:** :ref:`onemkl_rng` + +.. toctree:: + :hidden: + + mkl-rng-generate diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst new file mode 100644 index 0000000000..4d787b93c0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst @@ -0,0 +1,98 @@ +.. _mkl-rng-ars5: + +onemkl::rng::ars5 +============== + + +.. container:: + + + ARS-5 counter-based pseudorandom number generator with a period of + 2\ :sup:`128`, which uses instructions from the AES-NI set + ARS5[Salmon11]. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class ars5 : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: ars5 (cl::sycl::queue& queue, std::uint64_t seed) + + .. cpp:function:: ars5 (cl::sycl::queue& queue, std::initializer_list seed) + + .. cpp:function:: ars5 (const ars5& other) + + .. cpp:function:: ars5& operator=(const ars5& other) + + .. cpp:function:: ~ars5() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + ARS-5 counter-based pseudorandom number generator with a period + of 2\ :sup:`128`, which uses instructions from the AES-NI set + ARS5[`Salmon11 `__]. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of onemkl::rng::generate() routine submit kernels in this queue. + * - seed + - std::uint64_t / std::initializer_list + - Initial conditions of the engine. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst new file mode 100644 index 0000000000..846f7b9bc7 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst @@ -0,0 +1,128 @@ +.. _mkl-rng-bernoulli: + +onemkl::rng::bernoulli +=================== + + +.. container:: + + + Generates Bernoulli distributed random values. + + + .. container:: section + :name: GUID-DBB02CF3-C214-4063-87CC-ECF75333D92D + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class bernoulli { + + .. cpp:function:: public: + + .. cpp:function:: bernoulli(): bernoulli(0.5){} + + .. cpp:function:: bernoulli(double p) + + .. cpp:function:: bernoulli(const bernoulli& other) + + .. cpp:function:: double p() const + + .. cpp:function:: bernoulli& operator=(const bernoulli& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::bernoulli class object is used in the + onemkl::rng::generate function to provide Bernoulli distributed + random numbers with probability ``p`` of a single trial success, + where + + + :: + + + p∈R; 0 ≤ p ≤ 1. + + + A variate is called Bernoulli distributed, if after a trial it is + equal to 1 with probability of success ``p``, and to 0 with + probability 1 - ``p``. + + + The probability distribution is given by: + + + :: + + + P(X = 1) = p + + + :: + + + P(X = 0) = 1 - p + + + The cumulative distribution function is as follows: + + + | + | |image0| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::inverse_function``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - p + - \ ``double``\ + - Success probability ``p`` of a trial. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-7F65198B-719A-44FB-8983-BBD3C196A663-low.jpg + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst new file mode 100644 index 0000000000..a6da7975f7 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst @@ -0,0 +1,128 @@ +.. _mkl-rng-beta: + +onemkl::rng::beta +============== + + +.. container:: + + + Generates beta distributed random values. + + + .. container:: section + :name: GUID-7EE1A888-9D53-4736-B07A-356034DBF3E0 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class beta { + + .. cpp:function:: public: + + .. cpp:function:: beta(): beta((T)1.0, (T)1.0, (T)(0.0), (T)(1.0)){} + + .. cpp:function:: beta(T p, T q, T a, T b) + + .. cpp:function:: beta(const beta& other) + + .. cpp:function:: T p() const + + .. cpp:function:: T q() const + + .. cpp:function:: T a() const + + .. cpp:function:: T b() const + + .. cpp:function:: beta& operator=(const beta& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::beta class object is used in the onemkl::rng::generate + function to provide random numbers with beta distribution that has + shape parameters p and ``q``, displacement ``a``, and scale + parameter (``b``, β), where ``p``, ``q``, ``a``, and + ``β∈R ; p > 0, q > 0, β > 0``. + + + The probability density function is given by: + + + |image0| + + + where ``B``\ (``p``, ``q``) is the complete beta function. + + + The cumulative distribution function is as follows: + + + |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::cheng_johnk_atkinson``\ \ ``onemkl::rng::cheng_johnk_atkinson | onemkl::rng::accurate``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - p + - \ ``T (float, double)``\ + - Shape ``p``\ + * - q + - \ ``T (float, double)``\ + - Shape ``q``\ + * - a + - \ ``T (float, double)``\ + - Displacement ``a``. + * - b + - \ ``T (float, double)``\ + - Scalefactor ``b``. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-CD24FF51-197B-40A1-83A8-514788192ee1.png + :class: img-middle +.. |image1| image:: ../equations/GUID-CD24FF51-197B-40A1-83A8-514788192ee2.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst new file mode 100644 index 0000000000..7f87f5bfb4 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst @@ -0,0 +1,126 @@ +.. _mkl-rng-binomial: + +onemkl::rng::binomial +================== + + +.. container:: + + + Generates binomially distributed random numbers. + + + .. container:: section + :name: GUID-6E025ECB-EC40-43D4-91E6-D30F7FA11F54 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class binomial { + + .. cpp:function:: public: + + .. cpp:function:: binomial(): binomial(5, 0.5){} + + .. cpp:function:: binomial(std::int32_t ntrial, double p) + + .. cpp:function:: binomial(const binomial& other) + + .. cpp:function:: std::int32_t ntrial() const + + .. cpp:function:: double p() const + + .. cpp:function:: binomial& operator=(const binomial& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::binomial class object is used in the + onemkl::rng::generate function to provide binomially distributed + random numbers with number of independent Bernoulli trials ``m``, + and with probability ``p`` of a single trial success, where + ``p∈R; 0 ≤p≤ 1, m∈N``. + + + A binomially distributed variate represents the number of + successes in ``m`` independent Bernoulli trials with probability + of a single trial success ``p``. + + + The probability distribution is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + +   + + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::btpe``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - ntrials + - \ ``std::int32_t``\ + - Number of independent trials. + * - p + - \ ``double``\ + - Success probability ``p`` of a single trial. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-D703292D-2A37-42C6-B713-E38B801F0114-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-081A19C4-609F-4736-BCCF-D680013A2775-low.gif + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst new file mode 100644 index 0000000000..32c6ec236a --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst @@ -0,0 +1,86 @@ +.. _mkl-rng-bits: + +onemkl::rng::bits +============== + + +.. container:: + + + Generates bits of underlying engine (BRNG) integer reccurents. + + + .. container:: section + :name: GUID-C153356E-A495-466B-93DF-6104814C143E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: template + + .. cpp:function:: class bits {} + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - ``mkl_sycl.hpp`` + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::bits class object is used to generate integer + random values. Each integer can be treated as a vector of + several bits. In a truly random generator, these bits are + random, while in pseudorandom generators this randomness can be + violated. For example, a drawback of linear congruential + generators is that lower bits are less random than higher bits + (for example, see + [`Knuth81 `__]). + For this reason, exercise care when using this function. + Typically, in a 32-bit LCG only 24 higher bits of an integer + value can be considered random. See `VS + Notes `__ + for details. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - T + - \ ``std::uint32_t``\ + - Integer type + + + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst new file mode 100644 index 0000000000..5a0ed8b8b3 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst @@ -0,0 +1,116 @@ +.. _mkl-rng-cauchy: + +onemkl::rng::cauchy +================ + + +.. container:: + + + Generates Cauchy distributed random values. + + + .. container:: section + :name: GUID-00E31852-3752-4F63-81D0-EF47CF676F30 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class cauchy { + + .. cpp:function:: public: + + .. cpp:function:: cauchy(): cauchy((T)0.0, (T)1.0){} + + .. cpp:function:: cauchy(T a, T b) + + .. cpp:function:: cauchy(const cauchy& other) + + .. cpp:function:: T a() const + + .. cpp:function:: T b() const + + .. cpp:function:: cauchy& operator=(const cauchy& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::cauchy class object is used in the + onemkl::rng::generate function to provide Cauchy distributed random + numbers with displacement (``a``) and scalefactor (``b``, β), + where ``a, β∈R ; β > 0``. + + + The probability density function is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::inverse_function``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - a + - \ ``T (float, double)``\ + - Displacement ``a``. + * - b + - \ ``T (float, double)``\ + - Scalefactor ``b``. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-04615D14-A026-4BF0-ACD6-0FC822FEC64E-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-5FAAD02F-09F5-4B78-B404-384F1270FA1C-low.jpg + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst new file mode 100644 index 0000000000..e3f1600c32 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst @@ -0,0 +1,109 @@ +.. _mkl-rng-chi_square: + +onemkl::rng::chi_square +==================== + + +.. container:: + + + Generates chi-square distributed random values. + + + .. container:: section + :name: GUID-EDB0E0C5-B8D7-4494-8C52-BEEC84A0C324 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class chi_square { + + .. cpp:function:: public: + + .. cpp:function:: chi_square(): chi_square(5){} + + .. cpp:function:: chi_square(std::int32_t n) + + .. cpp:function:: chi_square(const chi_square& other) + + .. cpp:function:: std::int32_t n() const + + .. cpp:function:: chi_square& operator=(const chi_square& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::chi_square class object is used in the + onemkl::rng::generate function to provide random numbers with + chi-square distribution and ``ν`` degrees of freedom, + ``n``\ ∈\ *N*, ``n`` > 0. + + + The probability density function is: + + + |image0| + + + The cumulative distribution function is: + + + |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::gamma_marsagla``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - n + - \ ``std::int32_t``\ + - Degrees of freedom. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-482EEED2-95DF-4AA3-A484-E2CC41F29ee1.png + :class: img-middle +.. |image1| image:: ../equations/GUID-482EEED2-95DF-4AA3-A484-E2CC41F29ee2.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst new file mode 100644 index 0000000000..c33777dd3b --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst @@ -0,0 +1,116 @@ +.. _mkl-rng-exponential: + +onemkl::rng::exponential +===================== + + +.. container:: + + + Generates exponentially distributed random numbers. + + + .. container:: section + :name: GUID-5F8D109F-B058-4CFD-B468-8FD7F1549FF0 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class exponential { + + .. cpp:function:: public: + + .. cpp:function:: exponential(): exponential((T)0.0, (T)1.0){} + + .. cpp:function:: exponential(T a, T beta) + + .. cpp:function:: exponential(const exponential& other) + + .. cpp:function:: T a() const + + .. cpp:function:: T beta() const + + .. cpp:function:: exponential& operator=(const exponential& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::exponential class object is used in + onemkl::rng::generate function to provide random numbers with + exponential distribution that has displacement a and scalefactor + β, where ``a, β∈R ; β > 0``. + + + The probability density function is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::inverse_function``\ \ ``onemkl::rng::inverse_function | onemkl::rng::accurate``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - a + - \ ``T (float, double)``\ + - Displacement ``a``. + * - beta + - \ ``T (float, double)``\ + - Scalefactor β. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-12315BD9-4F4D-42B0-A9B5-68A22D40756D-low.jpg + :class: .eq +.. |image1| image:: ../equations/GUID-0EDD2BB7-A284-495A-84F6-8A210AC499CD-low.gif + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst new file mode 100644 index 0000000000..7713343d0c --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst @@ -0,0 +1,110 @@ +.. _mkl-rng-gamma: + +onemkl::rng::gamma +=============== + + +.. container:: + + + Generates gamma distributed random values. + + + .. container:: section + :name: GUID-EDB0E0C5-B8D7-4494-8C52-BEEC84A0C324 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class gamma { + + .. cpp:function:: public: + + .. cpp:function:: gamma(): gamma((T)1.0, (T)0.0, (T)1.0){} + + .. cpp:function:: gamma(T alpha, T a, T beta) + + .. cpp:function:: gamma(const gamma& other) + + .. cpp:function:: T alpha() const + + .. cpp:function:: T a() const + + .. cpp:function:: T beta() const + + .. cpp:function:: gamma& operator=(const gamma& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::gamma class object is used in the onemkl::rng::generate + function to provide random numbers with gamma distribution that + has shape parameter α, displacement ``a``, and scale parameter β, + where α, β, and ``a∈R ; α > 0, β > 0``. + + + The probability density function is given by: + + + where Γ(α) is the complete gamma function. + + + The cumulative distribution function is as follows: + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::marsaglia``\ \ ``onemkl::rng::marsaglia | onemkl::rng::accurate``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - alpha + - \ ``T (float, double)``\ + - Shape α + * - a + - \ ``T (float, double)``\ + - Displacement ``a``. + * - beta + - \ ``T (float, double)``\ + - Scalefactor β. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst new file mode 100644 index 0000000000..db712f897e --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst @@ -0,0 +1,134 @@ +.. _mkl-rng-gaussian: + +onemkl::rng::gaussian +================== + + +.. container:: + + + Generates normally distributed random numbers. + + + .. container:: section + :name: GUID-D1F58E4A-D95B-49A1-A6F4-5DC5B3F9942D + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class gaussian { + + .. cpp:function:: public: + + .. cpp:function:: gaussian(): gaussian((T)0.0, (T)1.0){} + + .. cpp:function:: gaussian(T mean, T stddev) + + .. cpp:function:: gaussian(const gaussian& other) + + .. cpp:function:: T mean() const + + .. cpp:function:: T stddev() const + + .. cpp:function:: gaussian& operator=(const gaussian& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The class object is used in onemkl::rng::generate function to provide + random numbers with normal (Gaussian) distribution with mean + (``a``) and standard deviation (``stddev, σ``), where ``a``, + ``σ ∈ R`` ; ``σ`` > 0. + + + The probability density function is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + The cumulative distribution function ``Fa,σ(x)`` can be expressed + in terms of standard normal distribution ``Φ(x)`` as + + + :: + + + F + + + a,σ + (x) = Φ((x - a)/σ) + + + .. container:: section + :name: GUID-801CDE34-0E9F-455F-8C48-F05082D19D44 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::box_muller``\ \ ``onemkl::rng::box_muller2``\ \ ``onemkl::rng::inverse_function``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - mean + - \ ``T (float, double)``\ + - Mean value ``a``. + * - stddev + - \ ``T (float, double)``\ + - Standard deviation σ. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-281DBA27-691A-4B62-A255-FC33EA28D8D5-low.jpg + :class: .eq +.. |image1| image:: ../equations/GUID-3A9C1154-2E42-416F-8865-06E7382A3AA7-low.jpg + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst new file mode 100644 index 0000000000..3700c22234 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst @@ -0,0 +1,132 @@ +.. _mkl-rng-generate: + +onemkl::rng::generate +================== + + +.. container:: + + + Entry point to obtain random numbers from a given engine with proper + statistics of a given distribution. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API + + + .. container:: dlsyntaxpara + + + .. cpp:function:: templateclass Distr, typename EngineType> + + .. cpp:function:: void generate (const Distr& distr, EngineType& engine, const std::int64_t n, cl::sycl::buffer& r) + + USM API + + + .. cpp:function:: templateclass Distr, typename EngineType> + + .. cpp:function:: cl::sycl::event generate (const Distr& distr, EngineType& engine, const std::int64_t n, T \* r , const cl::sycl::vector_class & dependencies) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - distr + - const Distr + - Distribution object. See `Distributions `__ for details. + * - engine + - EngineType + - Engine object. See `Engines `__ for details. + * - n + - const std::int64_t + - Number of random values to be generated. + + + + + .. container:: section + :name: GUID-AD3394E9-6864-4509-A178-6BA8CFB88A2C + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - r + - cl::sycl::buffer + - cl::sycl::buffer\ ``r`` to the output vector. + + + + + USM API + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - r + - T\* + - Pointer ``r`` to the output vector. + * - event + - cl::sycl::event + - Function return event after submitting task in cl::sycl::queue from the engine. + + + + + onemkl::rng::generate submits a kernel into a queue that is held + by the engine and fills cl::sycl::buffer/T\* vector with n + random numbers. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Generate + Routine `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst new file mode 100644 index 0000000000..e8e82097f3 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst @@ -0,0 +1,114 @@ +.. _mkl-rng-geometric: + +onemkl::rng::geometric +=================== + + +.. container:: + + + Generates geometrically distributed random values. + + + .. container:: section + :name: GUID-C5319AC4-9A75-4DC6-90C4-DCFA4008CE5D + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class geometric { + + .. cpp:function:: public: + + .. cpp:function:: geometric(): geometric(0.5){} + + .. cpp:function:: geometric(double p) + + .. cpp:function:: geometric(const geometric& other) + + .. cpp:function:: double p() const + + .. cpp:function:: geometric& operator=(const geometric& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::geometric class object is used in the + onemkl::rng::generate function to provide geometrically distributed + random numbers with probability ``p`` of a single trial success, + where ``p∈R; 0 < p < 1.`` + + + A geometrically distributed variate represents the number of + independent Bernoulli trials preceding the first success. The + probability of a single Bernoulli trial success is ``p``. + + + The probability distribution is given by: + + + ``P``\ (``X`` = ``k``) = ``p``\ ·(1 - ``p``)\ :sup:`k`, ``k``\ ∈ + {0,1,2, ... }. + + + The cumulative distribution function is as follows: + + + | + | |image0| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::inverse_function``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - p + - \ ``double``\ + - Success probability ``p`` of a trial. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-2D60A1A4-9522-40FC-AEEA-B64EB795144C-low.gif + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst new file mode 100644 index 0000000000..69d976b798 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst @@ -0,0 +1,116 @@ +.. _mkl-rng-gumbel: + +onemkl::rng::gumbel +================ + + +.. container:: + + + Generates Gumbel distributed random values. + + + .. container:: section + :name: GUID-41C16785-78E0-4B3B-A698-11755BE7AC69 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class gumbel { + + .. cpp:function:: public: + + .. cpp:function:: gumbel(): gumbel((T)0.0, (T)1.0){} + + .. cpp:function:: gumbel(T a, T b) + + .. cpp:function:: gumbel(const gumbel& other) + + .. cpp:function:: T a() const + + .. cpp:function:: T b() const + + .. cpp:function:: gumbel& operator=(const gumbel& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::gumbel class object is used in the + onemkl::rng::generate function to provide Gumbel distributed random + numbers with displacement (a) and scalefactor (``b``, β), where a, + β∈\ ``R`` ; β > 0. + + + The probability density function is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::inverse_function``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - a + - \ ``T (float, double)``\ + - Displacement ``a``. + * - b + - \ ``T (float, double)``\ + - Scalefactor ``b``. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-09FC1496-B5B3-4DF6-A3EE-E6410BE1EFD2-low.jpg + :class: .eq +.. |image1| image:: ../equations/GUID-E3193631-248D-4D18-A094-30BB6FF50687-low.jpg + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst new file mode 100644 index 0000000000..f6b2b69696 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst @@ -0,0 +1,132 @@ +.. _mkl-rng-hypergeometric: + +onemkl::rng::hypergeometric +======================== + + +.. container:: + + + Generates hypergeometrically distributed random values. + + + .. container:: section + :name: GUID-110E52C0-79AB-4CC9-9559-0E86AEE95846 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class hypergeometric { + + .. cpp:function:: public: + + .. cpp:function:: hypergeometric(): hypergeometric(1, 1, 1){} + + .. cpp:function:: hypergeometric(std::int32_t l, std::int32_T s, std::int32_T m) + + .. cpp:function:: hypergeometric(const hypergeometric& other) + + .. cpp:function:: std::int32_t s() const + + .. cpp:function:: std::int32_t m() const + + .. cpp:function:: std::int32_t l() const + + .. cpp:function:: hypergeometric& operator=(const laplace& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::hypergeometric class object is used in the + onemkl::rng::generate function to provide hypergeometrically + distributed random values with lot size ``l``, size of sampling + ``s``, and number of marked elements in the lot ``m``, where + ``l, m, s∈N∪{0}; l≥ max(s, m)``. + + + Consider a lot of ``l`` elements comprising ``m`` "marked" and + ``l``-``m`` "unmarked" elements. A trial sampling without + replacement of exactly ``s`` elements from this lot helps to + define the hypergeometric distribution, which is the probability + that the group of ``s`` elements contains exactly ``k`` marked + elements. + + + The probability distribution is given by:) + + + | + | |image0| + | , ``k``\ ∈ {max(0, ``s`` + ``m`` - ``l``), ..., min(``s``, + ``m``)} + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::h2pe``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - l + - \ ``std::int32_t``\ + - Lot size of ``l``. + * - s + - \ ``std::int32_t``\ + - Size of sampling without replacement . + * - m + - \ ``std::int32_t``\ + - Number of marked elements ``m``. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-5159E8DD-25FF-473A-86AA-1E71FFCD018C-low.jpg + :class: .eq +.. |image1| image:: ../equations/GUID-A984CAB6-AB6E-41AC-885E-DE4A33635480-low.jpg + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst new file mode 100644 index 0000000000..ff95f5bf2c --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst @@ -0,0 +1,122 @@ +.. _mkl-rng-laplace: + +onemkl::rng::laplace +================= + + +.. container:: + + + Generates random numbers with Laplace distribution. + + + .. container:: section + :name: GUID-776BC496-647B-44F4-92A8-2CA9DB391F1C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class laplace { + + .. cpp:function:: public: + + .. cpp:function:: laplace(): laplace((T)0.0, (T)1.0){} + + .. cpp:function:: laplace(T a, T b) + + .. cpp:function:: laplace(const laplace& other) + + .. cpp:function:: T a() const + + .. cpp:function:: T b() const + + .. cpp:function:: laplace& operator=(const laplace& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::laplace class object is used in the + onemkl::rng::generate function to provide random numbers with Laplace + distribution with mean value (or average) ``a`` and scalefactor ( + ``b``, β), where ``a, β∈R ; β > 0``. The scalefactor value + determines the standard deviation as + + + |image0| + + + The probability density function is given by: + + + | + | |image1| + + + The cumulative distribution function is as follows: + + + | + | |image2| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::inverse_function``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - a + - \ ``T (float, double)``\ + - Mean value ``a``. + * - b + - \ ``T (float, double)``\ + - Scalefactor b. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-1D36B5CE-3BF3-4762-926B-05C5527FAE45-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-9B0556B7-20F4-4EC9-875B-F6654CAC0C73-low.gif + :class: .eq +.. |image2| image:: ../equations/GUID-E5BC391B-F8BC-45E0-9A58-84319AC0B246-low.gif + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst new file mode 100644 index 0000000000..484685de44 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst @@ -0,0 +1,146 @@ +.. _mkl-rng-leapfrog: + +onemkl::rng::leapfrog +================== + + +.. container:: + + + Proceed state of engine using the leapfrog method. + + + .. container:: section + :name: GUID-7E060642-8D85-47BF-841A-A3132DF6D15E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: void leapfrog (EngineType& engine, std::uint64_t idx, std::uint64_t stride) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - ``mkl_sycl.hpp`` + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - engine + - \ ``EngineType``\ + - Object of engine class, which supports leapfrog. + * - idx + - \ ``std::uint64_t``\ + - Index of the computational node. + * - stride + - \ ``std::uint64_t``\ + - Largest number of computational nodes, or stride. + + + + + .. container:: section + :name: GUID-F50F8E51-3E2B-4A06-800B-BF54619FDBC6 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::leapfrog function generates random numbers in an + engine with non-unit stride. This feature is particularly useful + in distributing random numbers from the original stream across the + stride buffers without generating the original random sequence + with subsequent manual distribution. + + + One of the important applications of the leapfrog method is + splitting the original sequence into non-overlapping subsequences + across stride computational nodes. The function initializes the + original random stream (see `Figure "Leapfrog + Method" <#SF_FIG10-1>`__) to generate random numbers for the + computational node ``idx, 0 ≤idx < stride``, where ``stride`` is + the largest number of computational nodes used. + + + .. container:: figtop + :name: SF_FIG10-1 + + + Leapfrog Method\ |image0| + + + The leapfrog method is supported only for those basic generators + that allow splitting elements by the leapfrog method, which is + more efficient than simply generating them by a generator with + subsequent manual distribution across computational nodes. See `VS + Notes `__ + for details. + + + The following code illustrates the initialization of three + independent streams using the leapfrog method: + + + .. container:: tbstyle(tblExampleStandard) + + + .. rubric:: Code for Leapfrog Method + :name: code-for-leapfrog-method + :class: sectiontitle + + + :: + + + ... + // Creating 3 identical engines + onemkl::rng::mcg31m1 engine_1(queue, seed); + + + onemkl::rng::mcg31m1 engine_2(queue, engine_1); + onemkl::rng::mcg31m1 engine_3(queue, engine_1); + + + + + // Leapfrogging the states of engines + onemkl::rng::leapfrog(engine_1, 0 , 3); + onemkl::rng::leapfrog(engine_2, 1 , 3); + onemkl::rng::leapfrog(engine_3, 2 , 3); + // Generating random numbers + ... + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Service + Routines `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-D90F2CB0-58B4-42F5-A1F9-FD1EA859DD44-low.png + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst new file mode 100644 index 0000000000..c9a7dbd456 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst @@ -0,0 +1,128 @@ +.. _mkl-rng-lognormal: + +onemkl::rng::lognormal +=================== + + +.. container:: + + + Generates lognormally distributed random numbers. + + + .. container:: section + :name: GUID-331ADDE0-71FC-423E-AFC5-A53BDE66AEAB + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class lognormal { + + .. cpp:function:: public: + + .. cpp:function:: lognormal(): lognormal((T)0.0, (T)1.0, (T) 0.0, (T)1.0){} + + .. cpp:function:: lognormal(Tm, T s, T displ, T scale) + + .. cpp:function:: lognormal(const lognormal& other) + + .. cpp:function:: T m() const + + .. cpp:function:: T s() const + + .. cpp:function:: T displ() const + + .. cpp:function:: T scale() const + + .. cpp:function:: lognormal& operator=(const lognormal& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::lognormal class object is used in the + onemkl::rng::generate function to provide random numbers with average + of distribution (``m``, ``a``) and standard deviation (``s``, σ) + of subject normal distribution, displacement (``displ``, ``b``), + and scalefactor (``scale``, β), where + ``a, σ, b, β ∈ R ; σ > 0 , β > 0``. + + + The probability density function is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::box_muller2``\ \ ``onemkl::rng::inverse_function``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - m + - \ ``T (float, double)``\ + - Average ``a`` of the subject normal distribution. + * - s + - \ ``T (float, double)``\ + - Standard deviation σ of the subject normal distribution. + * - displ + - \ ``T (float, double)``\ + - Displacement ``displ``. + * - scale + - \ ``T (float, double)``\ + - Scalefactor scale. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-4D962DF4-16F2-438B-8866-4F105DC41242-low.jpg + :class: .eq +.. |image1| image:: ../equations/GUID-428BFB7A-6E88-4D12-9707-885C02A93A8E-low.jpg + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst new file mode 100644 index 0000000000..04a624e742 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst @@ -0,0 +1,95 @@ +.. _mkl-rng-mcg31m1: + +onemkl::rng::mcg31m1 +================= + + +.. container:: + + + The 31-bit multiplicative congruential pseudorandom number generator + MCG(1132489760, 231 -1) [L'Ecuyer99] + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class mcg31m1 : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: mcg31m1 (cl::sycl::queue& queue, std::uint32_t seed) + + .. cpp:function:: mcg31m1 (const mcg31m1& other) + + .. cpp:function:: mcg31m1& operator=(const mcg31m1& other) + + .. cpp:function:: ~mcg31m1() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The 31-bit multiplicative congruential pseudorandom number + generator MCG(1132489760, 231 -1) + [`[L'Ecuyer99] `__]. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of the onemkl::rng::generate() routine submits kernels in this queue. + * - seed + - std::uint32_t + - Initial conditions of the engine. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst new file mode 100644 index 0000000000..67a270a18d --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst @@ -0,0 +1,95 @@ +.. _mkl-rng-mcg59: + +onemkl::rng::mcg59 +=============== + + +.. container:: + + + The 59-bit multiplicative congruential pseudorandom number generator + MCG(1313, 259) from NAG Numerical Libraries [NAG]. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class mcg59 : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: mcg59 (cl::sycl::queue& queue, std::uint64_t seed) + + .. cpp:function:: mcg59 (const mcg59&other) + + .. cpp:function:: mcg59& operator=(const mcg59& other) + + .. cpp:function:: ~mcg59() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The 59-bit multiplicative congruential pseudorandom number + generator MCG(1313, 259) from NAG Numerical Libraries + [`NAG `__]. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of onemkl::rng::generate() routine submit kernels in this queue. + * - seed + - std::uint64_t + - Initial conditions of the engine. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst new file mode 100644 index 0000000000..08e84b2bd8 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst @@ -0,0 +1,95 @@ +.. _mkl-rng-mrg32k3a: + +onemkl::rng::mrg32k3a +================== + + +.. container:: + + + The combined multiple recursive pseudorandom number generator + MRG32k3a [ L'Ecuyer99a] + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class mrg32k3a: internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: mrg32k3a (cl::sycl::queue& queue, std::initializer_list seed) + + .. cpp:function:: mrg32k3a (const mrg32k3a& other) + + .. cpp:function:: mrg32k3a& operator=(const mrg32k3a& other) + + .. cpp:function:: mrg32k3a() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - ``mkl_sycl.hpp`` + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The combined multiple recursive pseudorandom number generator + MRG32k3a + `[L'Ecuyer99a] `__. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of the onemkl::rng::generate() routine submits kernels in this queue. + * - seed + - std::uint32_t / std::initializer_list + - Initial conditions of the generator state or engine state. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst new file mode 100644 index 0000000000..cc9546604f --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst @@ -0,0 +1,97 @@ +.. _mkl-rng-mt19937: + +onemkl::rng::mt19937 +================= + + +.. container:: + + + Mersenne Twister pseudorandom number generator MT19937 [Matsumoto98] + with period length 2\ :sup:`19937`-1 of the produced sequence. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class mt19937 : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: mt19937 (cl::sycl::queue& queue, std::uint32_t seed) + + .. cpp:function:: mt19937 (cl::sycl::queue& queue, std::initializer_list seed) + + .. cpp:function:: mt19937 (const mt19937& other) + + .. cpp:function:: mt19937& operator=(const mt19937& other) + + .. cpp:function:: ~mt19937() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Mersenne Twister pseudorandom number generator MT19937 + [`Matsumoto98 `__] + with period length 2\ :sup:`19937`-1 of the produced sequence. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of onemkl::rng::generate() routine submit kernels in this queue. + * - seed + - std::uint32_t / std::initializer_list + - Initial conditions of the engine. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst new file mode 100644 index 0000000000..28d88b1f9b --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst @@ -0,0 +1,106 @@ +.. _mkl-rng-mt2203: + +onemkl::rng::mt2203 +================ + + +.. container:: + + + Set of 6024 Mersenne Twister pseudorandom number generators MT2203 + [Matsumoto98], [Matsumoto00]. Each of them generates a sequence of + period length equal to 2\ :sup:`2203`-1. Parameters of the generators + provide mutual independence of the corresponding sequences.. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class mt2203 : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: mt2203 (cl::sycl::queue& queue, std::uint32_t seed, std::uint32_t engine_idx) + + .. cpp:function:: mt2203 (cl::sycl::queue& queue, std::initializer_list seed, std::uint32_t engine_idx) + + .. cpp:function:: mt2203 (const mt2203& other) + + .. cpp:function:: mt2203& operator=(const mt2203& other) + + .. cpp:function:: ~mt2203() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Set of 6024 Mersenne Twister pseudorandom number generators + MT2203 + [`Matsumoto98 `__], + [`Matsumoto00 `__]. + Each of them generates a sequence of period length equal to + 2\ :sup:`2203`-1. Parameters of the generators provide mutual + independence of the corresponding sequences.. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of onemkl::rng::generate() routine submit kernels in this queue. + * - seed + - std::uint32_t / std::initializer_list + - Initial conditions of the engine. + * - engine_idx + - std::uint32_t + - Index of the engine from the set (set contains 6024 basic generators). + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst new file mode 100644 index 0000000000..f1ab2e6823 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst @@ -0,0 +1,106 @@ +.. _mkl-rng-multinomial: + +onemkl::rng::multinomial +===================== + + +.. container:: + + + Generates multinomially distributed random numbers. + + + .. container:: section + :name: GUID-6E025ECB-EC40-43D4-91E6-D30F7FA11F54 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class multinomial { + + .. cpp:function:: public: + + .. cpp:function:: multinomial(double ntrial, std::vector p) + + .. cpp:function:: multinomial(const multinomial& other) + + .. cpp:function:: std::int32_t ntrial() const + + .. cpp:function:: std::vector p() const + + .. cpp:function:: multinomial& operator=(const multinomial& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::multinomial class object is used in the + onemkl::rng::generate function to provide multinomially distributed + random numbers with ``ntrial`` independent trials and ``k`` + possible mutually exclusive outcomes, with corresponding + probabilities ``pi``, where ``pi∈R; 0 ≤pi≤ 1, m∈N, k∈N``. + + + The probability distribution is given by: + + + | + | |image0| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::poisson_inverse``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - ntrial + - \ ``std::int32_t``\ + - Number of independent trials ``m``. + * - p + - \ ``std::vector``\ + - Probability vector of possible outcomes (``k`` length). + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-749B9421-ABAF-41EA-B8B9-3C9941EF5B72-low.png + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst new file mode 100644 index 0000000000..bc01166cfb --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst @@ -0,0 +1,123 @@ +.. _mkl-rng-negbinomial: + +onemkl::rng::negbinomial +===================== + + +.. container:: + + + Generates random numbers with negative binomial distribution. + + + .. container:: section + :name: GUID-EE6FB7D3-1C1A-4094-82F6-C2643A39B2CE + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class negbinomial { + + .. cpp:function:: public: + + .. cpp:function:: negbinomial(): negbinomial(0.1, 0.5){} + + .. cpp:function:: negbinomial(double a, double p) + + .. cpp:function:: negbinomial(const negbinomial& other) + + .. cpp:function:: double a() const + + .. cpp:function:: double p() const + + .. cpp:function:: negbinomial& operator=(const negbinomial& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::negbinomial class object is used in the + onemkl::rng::generate function to provide random numbers with + negative binomial distribution and distribution parameters ``a`` + and ``p``, where ``p``, ``a``\ ∈\ ``R``; 0 < ``p`` < 1; ``a`` > 0. + + + If the first distribution parameter ``a``\ ∈\ ``N``, this + distribution is the same as Pascal distribution. If + ``a``\ ∈\ ``N``, the distribution can be interpreted as the + expected time of ``a``-th success in a sequence of Bernoulli + trials, when the probability of success is ``p``. + + + The probability distribution is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::nbar``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - a + - \ ``double``\ + - The first distribution parameter ``a``. + * - p + - \ ``double``\ + - The second distribution parameter ``p``. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-A7CA23B7-756F-45C6-85B3-3A8924939D7D-low.jpg + :class: .eq +.. |image1| image:: ../equations/GUID-2BEFE049-EB3B-4FC9-AD75-ABA053617238-low.jpg + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst new file mode 100644 index 0000000000..9725564b70 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst @@ -0,0 +1,100 @@ +.. _mkl-rng-niederreiter: + +onemkl::rng::niederreiter +====================== + + +.. container:: + + + Niederreiter quasi-random number generator [Bratley92], which works + in arbitrary dimension. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class niederreiter : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: niederreiter (cl::sycl::queue& queue, std::uint32_t dimensions) + + .. cpp:function:: niederreiter (cl::sycl::queue& queue, std::vector irred_polynomials) + + .. cpp:function:: niederreiter (const niederreiter& other) + + .. cpp:function:: niederreiter& operator=(const niederreiter& other) + + .. cpp:function:: ~niederreiter() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Niederreiter quasi-random number generator + [`Bratley92 `__], + which works in arbitrary dimension. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of onemkl::rng::generate() routine submit kernels in this queue. + * - dimensions + - std::uint32_t + - Number of dimensions. + * - irred_polynomials + - std::vector + - User-defined direction numbers. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst new file mode 100644 index 0000000000..d030b516e0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst @@ -0,0 +1,91 @@ +.. _mkl-rng-nondeterministic: + +onemkl::rng::nondeterministic +========================== + + +.. container:: + + + Non-deterministic random number generator (RDRAND-based) + [AVX][IntelSWMan]. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class nondeterministic : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: nondeterministic (cl::sycl::queue& queue) + + .. cpp:function:: nondeterministic (const nondeterministic& other) + + .. cpp:function:: nondeterministic& operator=(const nondeterministic& other) + + .. cpp:function:: ~nondeterministic() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Non-deterministic random number generator (RDRAND-based) + [`AVX `__][`IntelSWMan `__]. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of onemkl::rng::generate() routine submits kernels in this queue. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst new file mode 100644 index 0000000000..c331d96a1b --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst @@ -0,0 +1,96 @@ +.. _mkl-rng-philox4x32x10: + +onemkl::rng::philox4x32x10 +======================= + + +.. container:: + + + A Philox4x32-10 counter-based pseudorandom number generator. + [Salmon11]. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class philox4x32x10 : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: philox4x32x10 (cl::sycl::queue& queue, std::uint64_t seed) + + .. cpp:function:: philox4x32x10 (cl::sycl::queue& queue, std::initializer_list seed) + + .. cpp:function:: philox4x32x10 (const philox4x32x10& other) + + .. cpp:function:: philox4x32x10& operator=(const philox4x32x10& other) + + .. cpp:function:: ~philox4x32x10() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + A Philox4x32-10 counter-based pseudorandom number generator. + [`Salmon11 `__]. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of the onemkl::rng::generate() routine submits kernels in this queue. + * - seed + - std::uint64_t / std::initializer_list + - Initial conditions of the generator state or engine state. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst new file mode 100644 index 0000000000..3f2a7e7037 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst @@ -0,0 +1,111 @@ +.. _mkl-rng-poisson: + +onemkl::rng::poisson +================= + + +.. container:: + + + Generates Poisson distributed random values. + + + .. container:: section + :name: GUID-06F1B760-4D88-4DB3-9F11-9087594F9EF2 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class poisson { + + .. cpp:function:: public: + + .. cpp:function:: poisson(): poisson(0.5){} + + .. cpp:function:: poisson(double lambda) + + .. cpp:function:: poisson(const poisson& other) + + .. cpp:function:: double lambda() const + + .. cpp:function:: poisson& operator=(const poisson& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::poisson class object is used in the + onemkl::rng::generate function to provide Poisson distributed random + numbers with distribution parameter λ, where ``λ∈R; λ > 0``. + + + The probability distribution is given by: + + + | + | |image0| + | ``k``\ ∈ {0, 1, 2, ...}. + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::ptpe``\ \ ``onemkl::rng::gaussian_inverse``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - lambda + - \ ``double``\ + - Distribution parameter λ. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-96C9ACB0-9A38-4682-85C6-4E71711C32C0-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-E48BA1ED-9ABF-487F-80F3-1FA1E0F6EABC-low.jpg + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst new file mode 100644 index 0000000000..2ef3107afc --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst @@ -0,0 +1,109 @@ +.. _mkl-rng-poisson_v: + +onemkl::rng::poisson_v +=================== + + +.. container:: + + + Generates Poisson distributed random values with varying mean. + + + .. container:: section + :name: GUID-BD0D9835-6217-4576-97E5-6448E9426235 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class poisson_v { + + .. cpp:function:: public: + + .. cpp:function:: poisson_v(std::vector lambda + + .. cpp:function:: poisson_v(const poisson_v& other) + + .. cpp:function:: std::vector lambda() const + + .. cpp:function:: poisson_v& operator=(const poisson_v& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::poisson_v class object is used in the + onemkl::rng::generate function to provide ``n`` Poisson distributed + random numbers ``x``\ :sub:`i`\ (``i`` = 1, ..., ``n``) with + distribution parameter ``λi``, where ``λi∈R``; ``λi > 0``. + + + The probability distribution is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::gaussian_inverse``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - lambda + - \ ``std::vector``\ + - Array of ``n`` distribution parameters λ. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-19F7C7EA-5657-4016-87A6-4E2721994C56-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-BF3DF32F-5256-4DFD-9653-FAD2C740BCA5-low.gif + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst new file mode 100644 index 0000000000..f80eb16437 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst @@ -0,0 +1,97 @@ +.. _mkl-rng-r250: + +onemkl::rng::r250 +============== + + +.. container:: + + + The 32-bit generalized feedback shift register pseudorandom number + generator GFSR(250,103)[Kirkpatrick81]. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class r250 : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: r250 (cl::sycl::queue& queue, std::uint32_t seed) + + .. cpp:function:: r250 (cl::sycl::queue& queue, std::initializer_list seed) + + .. cpp:function:: r250 (const r250& other) + + .. cpp:function:: r250& operator=(const r250& other) + + .. cpp:function:: ~r250() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The 32-bit generalized feedback shift register pseudorandom + number generator GFSR(250,103) + [`Kirkpatrick81 `__]. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of onemkl::rng::generate() routine submit kernels in this queue. + * - seed + - std::uint32_t / std::initializer_list + - Initial conditions of the engine. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst new file mode 100644 index 0000000000..6787694e89 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst @@ -0,0 +1,121 @@ +.. _mkl-rng-rayleigh: + +onemkl::rng::rayleigh +================== + + +.. container:: + + + Generates Rayleigh distributed random values. + + + .. container:: section + :name: GUID-7AE7A028-213A-48BA-B291-15B651349F6C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class rayleigh { + + .. cpp:function:: public: + + .. cpp:function:: rayleigh(): rayleigh((T)0.0, (T)1.0){} + + .. cpp:function:: rayleigh(T a, T b) + + .. cpp:function:: rayleigh(const rayleigh& other) + + .. cpp:function:: T a() const + + .. cpp:function:: T b() const + + .. cpp:function:: rayleigh& operator=(const rayleigh& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::rayleigh class object is used by the + onemkl::rng::generate function to provide Rayleigh distributed random + numbers with displacement (``a``) and scalefactor (``b``, β), + where ``a, β∈R ; β > 0.`` + + + The Rayleigh distribution is a special case of the + `Weibull `__ + distribution, where the shape parameter ``α = 2``. + + + The probability density function is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::inverse_function``\ \ ``onemkl::rng::inverse_function | onemkl::rng::accurate``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - a + - \ ``T (float, double)``\ + - Displacement ``a``. + * - b + - \ ``T (float, double)``\ + - Scalefactor ``b``. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-96DF4ACE-8587-423F-B50A-E9A58BE272F9-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-F85E385E-ACAD-4DC6-95EC-7C8A85836AAD-low.gif + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst new file mode 100644 index 0000000000..bca40eca33 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst @@ -0,0 +1,100 @@ +.. _mkl-rng-sfmt19937: + +onemkl::rng::sfmt19937 +=================== + + +.. container:: + + + SIMD-oriented Fast Mersenne Twister pseudorandom number generator + SFMT19937 [Saito08] with a period length equal to 2\ :sup:`19937`-1 + of the produced sequence. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class sfmt19937 : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: sfmt19937 (cl::sycl::queue& queue, std::uint32_t seed) + + .. cpp:function:: sfmt19937 (cl::sycl::queue& queue, std::initializer_list seed) + + .. cpp:function:: sfmt19937 (const sfmt19937& other) + + .. cpp:function:: sfmt19937& operator=(const sfmt19937& other) + + .. cpp:function:: ~sfmt19937() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + SIMD-oriented Fast Mersenne Twister pseudorandom number + generator SFMT19937 + [`Saito08 `__] + with a period length equal to 2\ :sup:`19937`-1 of the produced + sequence. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid sycl queue, calls of onemkl::rng::generate() routine submit kernels in this queue. + * - seed + - std::uint32_t / std::initializer_list + - Initial conditions of the engine. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst new file mode 100644 index 0000000000..62ca587d28 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst @@ -0,0 +1,237 @@ +.. _mkl-rng-skip_ahead: + +onemkl::rng::skip_ahead +==================== + + +.. container:: + + + Proceed state of engine by the skip-ahead method. + + + .. container:: section + :name: GUID-9E40F47F-122A-4194-A64E-786CD0A54B27 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + The onemkl::rng::skip_ahead function supports the following + interfaces to apply the skip-ahead method: + + + - Common interface + + + - Interface with a partitioned number of skipped elements + + + **Common Interface** + + + .. cpp:function:: template + + .. cpp:function:: void skip_ahead (EngineType& engine, std::uint64_t num_to_skip) + + **Interface with Partitioned Number of Skipped Elements** + + + .. cpp:function:: template + + .. cpp:function:: void skip_ahead (EngineType& engine, std::initializer_list num_to_skip) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - ``mkl_sycl.hpp`` + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + **Common Interface** + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - engine + - \ ``EngineType``\ + - Object of engine class, which supports the block-splitting method. + * - num_to_skip + - \ ``std::uint64_t``\ + - Number of skipped elements. + + + + + **Interface with Partitioned Number of Skipped Elements** + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - engine + - \ ``EngineType``\ + - Object of engine class, which supports the block-splitting method. + * - num_to_skip + - \ ``std::initializer_list`__). + + + .. container:: figtop + :name: SF_FIG10-2 + + + Block-Splitting Method\ |image0| + + + The skip-ahead method is supported only for those basic generators + that allow skipping elements by the skip-ahead method, which is + more efficient than simply generating them by generator with + subsequent manual skipping. See `VS + Notes `__ + for details. + + + Please note that for quasi-random basic generators the skip-ahead + method works with components of quasi-random vectors rather than + with whole quasi-random vectors. Therefore, to skip NS + quasi-random vectors, set the num_to_skip parameter equal to the + num_to_skip \*dim, where dim is the dimension of the quasi-random + vector. + + + When the number of skipped elements is greater than 2\ :sup:`63` + the interface with the partitioned number of skipped elements is + used. Prior calls to the function represent the number of skipped + elements with the list of size ``n`` as shown below: + + + ``num_to_skip``\ [0]+ ``num_to_skip``\ [1]*2\ :sup:`64`\ + + ``num_to_skip``\ [2]\* 2\ :sup:`128`\ + … + +\ ``num_to_skip``\ [n-1]*2\ :sup:`64*(n-1)` ; + + + When the number of skipped elements is less than 2\ :sup:`63` both + interfaces can be used. + + + The following code illustrates how to initialize three independent + streams using the onemkl::rng::skip_ahead function: + + + .. container:: tbstyle(tblExampleStandard) + + + .. rubric:: Code for Block-Splitting Method + :name: code-for-block-splitting-method + :class: sectiontitle + + + :: + + + ... + // Creating 3 identical engines + onemkl::rng::mcg31m1 engine_1(queue, seed); + onemkl::rng::mcg31m1 engine_2(queue, engine_1); + onemkl::rng::mcg31m1 engine_3(queue, engine_2); + + + // Skipping ahead by 7 elements the 2nd engine + onemkl::rng::skip_ahead(engine_2, 7); + + + // Skipping ahead by 14 elements the 3nd engine + onemkl::rng::skip_ahead(engine_3, 14); + ... + + + .. container:: tbstyle(tblExampleStandard) + + + .. rubric:: Code for Block-Splitting Method with Partitioned + Number of Elements + :name: code-for-block-splitting-method-with-partitioned-number-of-elements + :class: sectiontitle + + + :: + + + // Creating first engine + onemkl::rng::mrg32k3a engine_1(queue, seed); + + + // To skip 2^64 elements in the random stream number of skipped elements should be + /represented as num_to_skip = 2^64 = 0 + 1 * 2^64 + std::initializer_list num_to_skip = {0, 1}; + + + + + // Creating the 2nd engine based on 1st. Skipping by 2^64 + onemkl::rng::mrg32k3a engine_2(queue, engine_1); + onemkl::rng::skip_ahead(engine_2, num_to_skip); + + + // Creating the 3rd engine based on 2nd. Skipping by 2^64 + onemkl::rng::mrg32k3a engine_3(queue, engine_2); + onemkl::rng::skip_ahead(engine_3, num_to_skip); + ... + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Service + Routines `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-061AF9F8-B166-4154-9BF1-4E2C99F1CE1F-low.png + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst new file mode 100644 index 0000000000..b46467455f --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst @@ -0,0 +1,101 @@ +.. _mkl-rng-sobol: + +onemkl::rng::sobol +=============== + + +.. container:: + + + Sobol quasi-random number generator [Sobol76], [Bratley88], which + works in arbitrary dimension. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class sobol : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: sobol (cl::sycl::queue& queue, std::uint32_t dimensions) + + .. cpp:function:: sobol (cl::sycl::queue& queue, std::vector direction_numbers) + + .. cpp:function:: sobol (const sobol& other) + + .. cpp:function:: sobol& operator=(const sobol& other) + + .. cpp:function:: ~sobol() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Sobol quasi-random number generator + [`Sobol76 `__], + [`Bratley88 `__], + which works in arbitrary dimension. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of onemkl::rng::generate() routine submit kernels in this queue. + * - dimensions + - std::uint32_t + - Number of dimensions. + * - direction_numbers + - std::vector + - User-defined direction numbers. + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst new file mode 100644 index 0000000000..f4a267ca68 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst @@ -0,0 +1,113 @@ +.. _mkl-rng-uniform-continuous: + +onemkl::rng::uniform (Continuous) +============================== + + +.. container:: + + + Generates random numbers with uniform distribution. + + + .. container:: section + :name: GUID-6D277E22-1F56-4721-838C-CDCF9F1CEBE1 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class uniform { + + .. cpp:function:: Public: + + .. cpp:function:: uniform(): uniform((T)0.0, (T)1.0){} + + .. cpp:function:: uniform(Ta, T b) + + .. cpp:function:: uniform(const uniform& other) + + .. cpp:function:: T a() const + + .. cpp:function:: T b() const + + .. cpp:function:: uniform& operator=(const uniform& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - ``mkl_sycl.hpp`` + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The class object is used in onemkl::rng::generate function to provide + random numbers uniformly distributed over the interval [``a``, + ``b``), where ``a``, ``b`` are the left and right bounds of the + interval, respectively, and ``a``, ``b∈R`` ; ``a`` < ``b``. + + + The probability density function is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - a + - \ ``T (float, double)``\ + - Left bound ``a``\ + * - b + - \ ``T (float, double)``\ + - Right bound ``b``\ + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-8AD223ED-624A-4390-9514-D8EF20BD04EE-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-0A8E6C61-9171-4584-927A-83AC482ADC4D-low.gif + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst new file mode 100644 index 0000000000..770c4ac1c6 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst @@ -0,0 +1,114 @@ +.. _mkl-rng-uniform-discrete: + +onemkl::rng::uniform (Discrete) +============================ + + +.. container:: + + + Generates random numbers uniformly distributed over the interval + ``[a, b)``. + + + .. container:: section + :name: GUID-351E5FB2-A4B6-4198-A538-7FF637E06D51 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class uniform { + + .. cpp:function:: public: + + .. cpp:function:: uniform(): uniform((T)0.0, (T)1.0){} + + .. cpp:function:: uniform(T a, T b) + + .. cpp:function:: uniform(const uniform& other) + + .. cpp:function:: T a() const + + .. cpp:function:: T b() const + + .. cpp:function:: uniform& operator=(const uniform& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - ``mkl_sycl.hpp`` + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::uniform class object is used in onemkl::rng::generate + functions to provide random numbers uniformly distributed over the + interval ``[a, b)``, where ``a, b`` are the left and right bounds + of the interval respectively, and ``a, b∈Z; a < b``. + + + The probability distribution is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - a + - \ ``T (std::int32_t)``\ + - Left bound ``a``\ + * - b + - \ ``T (std::int32_t)``\ + - Right bound ``b``\ + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-A5408434-7126-4EEC-8AD1-856204EBF263-low.jpg + :class: .eq +.. |image1| image:: ../equations/GUID-AAA6EA17-BA1C-4185-A5F4-8997B64E3BDD-low.gif + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst new file mode 100644 index 0000000000..63b7f52745 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst @@ -0,0 +1,76 @@ +.. _mkl-rng-uniform_bits: + +onemkl::rng::uniform_bits +====================== + + +.. container:: + + + Generates uniformly distributed bits in 32/64-bit chunks. + + + .. container:: section + :name: GUID-C153356E-A495-466B-93DF-6104814C143E + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class uniform_bits {} + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - ``mkl_sycl.hpp`` + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::uniform_bits class object is used to generate + uniformly distributed bits in 32/64-bit chunks. It is designed to + ensure each bit in the 32/64-bit chunk is uniformly distributed. + It is not supported not for all engines. See `VS + Notes `__ + for details. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - T + - \ ``std::uint32_t / std::uint64_t``\ + - Chunk size + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst new file mode 100644 index 0000000000..4950197798 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst @@ -0,0 +1,121 @@ +.. _mkl-rng-weibull: + +onemkl::rng::weibull +================= + + +.. container:: + + + Generates Weibull distributed random numbers. + + + .. container:: section + :name: GUID-C14EA706-7349-4B76-A1D9-7B05B0A12622 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: template + + .. cpp:function:: class weibull { + + .. cpp:function:: public: + + .. cpp:function:: weibull(): weibull((T)0.0, (T)1.0){} + + .. cpp:function:: weibull(T alpha, T a, T beta) + + .. cpp:function:: weibull(const weibull& other) + + .. cpp:function:: T alpha() const + + .. cpp:function:: T a() const + + .. cpp:function:: T beta() const + + .. cpp:function:: weibull& operator=(const weibull& other) + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::rng::weibull class object is used in the + onemkl::rng::generate function to provide Weibull distributed random + numbers with displacement ``a``, scalefactor β, and shape α, where + ``α, β, a∈R ; α > 0, β > 0``. + + + The probability density function is given by: + + + | + | |image0| + + + The cumulative distribution function is as follows: + + + | + | |image1| + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - method + - \ ``onemkl::rng::method``\ + - Generation method. The specific values are as follows: \ ``onemkl::rng::inverse_function``\ \ ``onemkl::rng::inverse_function | onemkl::rng::accurate``\ See brief descriptions of the methods in `Distributions Template Parameter onemkl::rng::method Values `__. + * - alpha + - \ ``T (float, double)``\ + - Shape α + * - a + - \ ``T (float, double)``\ + - Displacement ``a``. + * - beta + - \ ``T (float, double)``\ + - Scalefactor β. + + + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent + topic:** `Distributions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-8F2DCE6A-CB54-4CEA-A5EB-937893A3DB34-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-6F53C93C-0634-4E53-8874-5ACBD4C9AA3E-low.gif + :class: .eq + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst new file mode 100644 index 0000000000..12dda1d7b6 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst @@ -0,0 +1,100 @@ +.. _mkl-rng-wichmann_hill: + +onemkl::rng::wichmann_hill +======================= + + +.. container:: + + + Wichmann-Hill pseudorandom number generator (a set of 273 basic + generators) from NAG Numerical Libraries [NAG]. + + + .. container:: section + :name: GUID-753F13BA-A3C7-4F24-90F1-14B6279BD95C + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: class wichmann_hill : internal::engine_base{ + + .. cpp:function:: public: + + .. cpp:function:: wichmann_hill (cl::sycl::queue& queue, std::uint32_t seed, std::uint32_t engine_idx) + + .. cpp:function:: wichmann_hill (cl::sycl::queue& queue, std::initializer_list seed, std::uint32_t engine_idx) + + .. cpp:function:: wichmann_hill (const wichmann_hill& other) + + .. cpp:function:: wichmann_hill& operator=(const wichmann_hill& other) + + .. cpp:function:: ~wichmann_hill() + + .. cpp:function:: } + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + Wichmann-Hill pseudorandom number generator (a set of 273 basic + generators) from NAG Numerical Libraries + [`NAG `__]. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + .. list-table:: + :header-rows: 1 + + * - Name + - Type + - Description + * - queue + - cl::sycl::queue + - Valid cl::sycl::queue, calls of onemkl::rng::generate() routine submit kernels in this queue. + * - seed + - std::uint32_t / std::initializer_list + - Initial conditions of the engine. + * - engine_idx + - std::uint32_t + - Index of the engine from the set (set contains 273 basic generators) + + + + + See `VS + Notes `__ for + detailed descriptions. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Engines (Basic Random Number + Generators) `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/rng/onemkl-rng-usage-model.rst b/source/elements/oneMKL/source/domains/rng/onemkl-rng-usage-model.rst new file mode 100644 index 0000000000..4fece67b19 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/onemkl-rng-usage-model.rst @@ -0,0 +1,149 @@ +.. _onemkl-rng-usage-model: + +oneMKL RNG Usage Model +====================== + + +.. container:: + + + A typical algorithm for random number generators is as follows: + + + #. Create and initialize the object for basic random number + generator. + + + - Use the skip_ahead or leapfrog function if it is required (used + in parallel with random number generation for Host and CPU + devices). + + + #. Create and initialize the object for distribution generator. + + + #. Call the generate routine to get random numbers with appropriate + statistical distribution. + + + The following example demonstrates generation of random numbers that + is output of basic generator (engine) PHILOX4X32X10. The seed is + equal to 777. The generator is used to generate 10,000 normally + distributed random numbers with parameters ``a`` = 5 and ``sigma``\ = + 2. The purpose of the example is to calculate the sample mean for + normal distribution with the given parameters. + + + .. container:: tbstyle(tblExampleStandard) + + + .. rubric:: Example of RNG Usage + :name: example-of-rng-usage + :class: sectiontitle + + + **Buffer API** + + + :: + + + #include + #include + + + #include “CL/sycl.hpp” + #include “mkl_rng_sycl.hpp” + + + int main() { + cl::sycl::queue queue; + + + const size_t n = 10000; + std::vector r(n); + + + onemkl::rng::philox4x32x10 engine(queue, SEED); // basic random number generator object + onemkl::rng::gaussian distr(5.0, 2.0); // distribution object + + + { + //create buffer for random numbers + cl::sycl::buffer r_buf(r.data(), cl::sycl::range<1>{n}); + + + onemkl::rng::generate(distr, engine, n, r_buf); // perform generation + + + } + + + double s = 0.0; + for(int i = 0; i < n; i++) { + s += r[i]; + } + s /= n; + + + std::cout << “Average = ” << s << std::endl; + + + return 0; + } + + + **USM API** + + + :: + + + #include + #include + #include “CL/sycl.hpp” + #include “mkl_rng_sycl.hpp” + + + int main() { + cl::sycl::queue queue; + + + const size_t n = 10000; + + + // create USM allocator + cl::sycl::usm_allocator allocator(queue.get_context(), queue.get_device()); + + + // create vector woth USM allocator + std::vector> r(n, allocator); + + + onemkl::rng::philox4x32x10 engine(queue, SEED); // basic random number generator object + onemkl::rng::gaussian distr(5.0, 2.0); // distribution object + + + auto event = onemkl::rng::generate(distr, engine, n, r.data()); // perform generation + // cl::sycl::event object is returned by generate function for synchronisation + event.wait(); // synchronization can be also done by queue.wait() + + + double s = 0.0; + for(int i = 0; i < n; i++) { + s += r[i]; + + + std::cout << “Average = ” << s << std::endl; + + + return 0; + } + + + You can also use USM with raw pointers by using the + cl::sycl::malloc_shared function. + + + **Parent topic:** :ref:`onemkl_rng` + diff --git a/source/elements/oneMKL/source/domains/rng/random_number_generators.inc.rst b/source/elements/oneMKL/source/domains/rng/random_number_generators.inc.rst new file mode 100644 index 0000000000..f9c69b7b7f --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/random_number_generators.inc.rst @@ -0,0 +1,98 @@ +.. _onemkl_rng: + +Random Number Generators +------------------------- + + +.. container:: + + + Statistics Random Number Generators provide a set of routines implementing commonly + used pseudorandom, quasi-random, and non-deterministic generators + with continuous and discrete distributions. + + + .. container:: section + :name: GUID-8F8296EC-7E54-4796-A425-35C4347EA1D0 + + + .. rubric:: Definitions + :name: definitions + :class: sectiontitle + + + Pseudo-random number generator is defined by a structure(``S``, + ``μ``, ``f``, ``U``, ``g``), where: + + + - ``S`` is a finite set of states (the state space) + - ``μ`` is a probability distribution on S for the initial state + (or seed) ``s``\ :sub:`0` + - ``f:S→S`` is the transition function + - ``U`` – a finite set of output symbols + - ``g∶S→U`` an output function + + + The generation of random numbers is as follows: + + + #. Generate the initial state (called the seed) ``s``\ :sub:`0` + according to ``μ`` and compute + ``u``\ :sub:`0`\ =g(``s``\ :sub:`0`). + #. Iterate for ``i``\ =1,…,\ ``s``\ :sub:`i` = + f(``s``\ :sub:`(``i``-1)`) and ``u``\ :sub:`i` = + g(``s``\ :sub:`i`). Output values ``u``\ :sub:`i` are the + so-called random numbers produced by the PRNG. + + + In computational statistics, random variate generation is usually + made in two steps: + + + #. Generating imitations of independent and identically distributed + (i.i.d.) random variables having the uniform distribution over the + interval (0, 1) + #. Applying transformations to these i.i.d. U(0, 1) random variates + in order to generate (or imitate) random variates and random + vectors from arbitrary distributions. + + + All RNG routines can be classified into several categories: + + + - Engines (Basic random number generators) classes, which holds + state of generator and is a source of i.i.d. random. Refer to + `Engines (Basic Random Number + Generators) `__ + for a detailed description. + - Transformation classes for different types of statistical + distributions, for example, uniform, normal (Gaussian), binomial, + etc. These classes contain all of the distribution’s parameters + (including generation method). Refer to `Distribution + Generators `__ for + a detailed description of the distributions. + - Generate function. The current routine is used to obtain random + numbers from a given engine with proper statistics defined by a + given distribution. Refer to the `Generate + Routine `__ + section for a detailed description. + - Service routines to modify the engine state: skip ahead and + leapfrog functions. Refer to `Service + Routines `__ for a + description of these routines. + +.. container:: + + + - `oneMKL RNG Usage + Model `__ + +.. toctree:: + :hidden: + + rng/onemkl-rng-usage-model + rng/generate-routine + rng/engines-basic-random-number-generators + rng/service-routines + rng/distributions + rng/bibliography diff --git a/source/elements/oneMKL/source/domains/rng/service-routines.rst b/source/elements/oneMKL/source/domains/rng/service-routines.rst new file mode 100644 index 0000000000..afb6ea0ab6 --- /dev/null +++ b/source/elements/oneMKL/source/domains/rng/service-routines.rst @@ -0,0 +1,31 @@ +.. _service-routines: + +Service Routines +================ + + +.. container:: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Routine + - Description + * - \ `onemkl::rng::leapfrog `__\ + - Proceed state of engine by the leapfrog method to generate a subsequence of the original sequence + * - \ `onemkl::rng::skip_ahead `__\ + - Proceed state of engine by the skip-ahead method to skip a given number of elements from the original sequence + + + + **Parent topic:** :ref:`onemkl_rng` + +.. toctree:: + :hidden: + + mkl-rng-leapfrog + mkl-rng-skip_ahead diff --git a/source/elements/oneMKL/source/domains/sparse_linear_algebra.inc.rst b/source/elements/oneMKL/source/domains/sparse_linear_algebra.inc.rst new file mode 100644 index 0000000000..68fbae0bfe --- /dev/null +++ b/source/elements/oneMKL/source/domains/sparse_linear_algebra.inc.rst @@ -0,0 +1,18 @@ +.. _onemkl_sparse_linear_algebra: + +Sparse Linear Algebra +---------------------- + +.. container:: + + + The oneAPI Math Kernel Library provides a Data Parallel C++ interface + to some of the Sparse Linear Algebra routines. + + :ref:`onemkl_spblas` provide basic operations on sparse vectors and matrices + +.. toctree:: + :hidden: + + spblas/spblas.rst + diff --git a/source/elements/oneMKL/source/domains/spblas/exceptions.rst b/source/elements/oneMKL/source/domains/spblas/exceptions.rst new file mode 100644 index 0000000000..983506491b --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/exceptions.rst @@ -0,0 +1,35 @@ +.. _exceptions: + +Exceptions +========== + + +.. container:: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Exception + - Description + * - ``SPARSE_STATUS_NOT_INITIALIZED`` + - The routine encountered an empty handle or matrix array. + * - ``SPARSE_STATUS_ALLOC_FAILED`` + - Internal memory allocation failed. + * - ``SPARSE_STATUS_INVALID_VALUE`` + - The input parameters contain an invalid value. + * - ``SPARSE_STATUS_EXECUTION_FAILED`` + - Execution failed. + * - ``SPARSE_STATUS_INTERNAL_ERROR`` + - An error in algorithm implementation occurred. + * - ``SPARSE_STATUS_NOT_SUPPORTED`` + - The requested operation is not supported. + + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst new file mode 100644 index 0000000000..adc919423a --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst @@ -0,0 +1,208 @@ +.. _mkl-sparse-gemm: + +onemkl::sparse::gemm +================= + + +.. container:: + + + Computes a sparse matrix-dense matrix product. Currently, only + ROW-MAJOR layout for dense matrix storage in Data Parallel C++ + onemkl::sparse::gemm functionality is supported. + + + .. container:: section + :name: GUID-8FF718C9-D9AE-42A7-9A2A-A47DCEBB13D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Currently, complex types are not supported. + + + **Using SYCL buffers:** + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void onemkl::sparse::gemm (cl::sycl::queue & queue, onemkl::transpose transpose_val, const fp alpha, matrixHandle_t handle, cl::sycl::buffer & b, const std::int64_t columns, const std::int64_t ldb, const fp beta, cl::sycl::buffer & c, const std::int64_t ldc) + + **Using USM pointers:** + + + .. cpp:function:: void onemkl::sparse::gemm (cl::sycl::queue & queue, onemkl::transpose transpose_val, const fp alpha, matrixHandle_t handle, const fp \*b, const std::int64_t columns, const std::int64_t ldb, const fp beta, fp \*c, const std::int64_t ldc) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + .. rubric:: Note + :name: note-1 + :class: NoteTipHead + + + Refer to `Supported + Types `__ for a + list of supported ```` and ```` and refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + The onemkl::sparse::gemm routine computes a sparse matrix-dense + matrix defined as + + + :: + + + c := alpha*op(A)*b + beta*c + + + + + where: + + + ``alpha`` and ``beta`` are scalars, ``b`` and ``c`` are dense + matrices. + + + .. container:: section + :name: GUID-7F07A52E-4DDB-4C1B-AB92-E66C7641AED3 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + Specifies the SYCL command queue which will be used for SYCL + kernels execution. + + + transpose_val + Specifies operation ``op()`` on input matrix. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::transpose::nontrans + - Non-transpose, ``op(A)`` = ``A``. + * - onemkl::transpose::trans + - Transpose, ``op(A)`` = ``A``\ :sup:`T`. + * - onemkl::transpose::conjtrans + - Conjugate transpose, ``op(A)`` = ``A``\ :sup:`H`. + + + + + .. container:: Note + + + .. rubric:: Note + :name: note-2 + :class: NoteTipHead + + + Currently, the only supported case for operation is + onemkl::transpose::nontrans. + + + alpha + Specifies the scalar ``alpha``. + + + handle + Handle to object containing sparse matrix and other internal + data. Created using one of the + onemkl::sparse::setstructure routines. + + + .. container:: Note + + + .. rubric:: Note + :name: note-3 + :class: NoteTipHead + + + Currently, the only supported case for + is CSR. + + + b + SYCL or USM memory object containing an array of size at + least ``rows*ldb``, where ``rows`` = the number of columns + of matrix ``A`` if ``op`` = onemkl::transpose::nontrans, or + ``rows`` = the number of rows of matrix ``A`` otherwise. + + + columns + Number of columns of matrix ``c``. + + + ldb + Specifies the leading dimension of matrix ``b``. + + + beta + Specifies the scalar ``beta``. + + + c + SYCL or USM memory object containing an array of size at + least ``rows*ldc``, where ``rows`` = the number of columns + of matrix ``A`` if ``op`` = onemkl::transpose::nontrans, or + ``rows`` = the number of columns of matrix ``A`` otherwise. + + + .. container:: section + :name: GUID-2D7BA49D-E937-40A4-AC2F-19685DC4E918 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + c + Overwritten by the updated matrix ``c``. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Sparse BLAS + Routines `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst new file mode 100644 index 0000000000..db672166a1 --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst @@ -0,0 +1,231 @@ +.. _mkl-sparse-gemv: + +onemkl::sparse::gemv +================= + + +.. container:: + + + Computes a sparse matrix-dense vector product. + + + .. container:: section + :name: GUID-8FF718C9-D9AE-42A7-9A2A-A47DCEBB13D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Complex types are not currently supported. + + + **Using SYCL buffers:** + + + .. cpp:function:: void onemkl::sparse::gemv (cl::sycl::queue & queue, onemkl::transpose transpose_val, fp alpha, matrixHandle_t handle, cl::sycl::buffer & x, fp beta, cl::sycl::buffer & y) + + **Using USM pointers:** + + + .. cpp:function:: void onemkl::sparse::gemv (cl::sycl::queue & queue, onemkl::transpose transpose_val, fp alpha, matrixHandle_t handle, fp \*x, fp beta, fp \*y) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + .. rubric:: Note + :name: note-1 + :class: NoteTipHead + + + Refer to `Supported + Types `__ for a + list of supported ```` and ```` and refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + The onemkl::sparse::gemv routine computes a sparse matrix-vector + product defined as + + + :: + + + y := alpha*op(A)*x + beta*y + + + + + where: + + + ``alpha`` and ``beta`` are scalars, ``x`` and ``y`` are vectors. + + + .. container:: section + :name: GUID-7F07A52E-4DDB-4C1B-AB92-E66C7641AED3 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + Specifies the SYCL command queue which will be used for SYCL + kernels execution. + + + transpose_val + Specifies operation ``op()`` on input matrix. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::transpose::nontrans + - Non-transpose, ``op(A)`` = ``A``. + * - onemkl::transpose::trans + - Transpose, ``op(A)`` = ``A``\ :sup:`T`. + * - onemkl::transpose::conjtrans + - Conjugate transpose, ``op(A)`` = ``A``\ :sup:`H`. + + + + + .. container:: Note + + + .. rubric:: Note + :name: note-2 + :class: NoteTipHead + + + Currently, the only supported case for ``operation`` is + onemkl::transpose::nontrans. + + + alpha + Specifies the scalar ``alpha``. + + + handle + Handle to object containing sparse matrix and other internal + data. Created using one of the + onemkl::sparse::setstructure routines. + + + .. container:: Note + + + .. rubric:: Note + :name: note-3 + :class: NoteTipHead + + + Currently, the only supported case for + is CSR. + + + x + SYCL or USM memory object containing an array of size at least + equal to the number of columns of input matrix if ``op`` = + onemkl::transpose::nontrans and at least the number of rows of + input matrix otherwise. + + + beta + Specifies the scalar ``beta``. + + + y + SYCL or USM memory object containing an array of size at least + equal to the number of columns of input matrix if ``op`` = + onemkl::transpose::nontrans and at least the number of rows of + input matrix otherwise. + + + .. container:: section + :name: GUID-2D7BA49D-E937-40A4-AC2F-19685DC4E918 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Overwritten by the updated vector ``y``. + + + .. container:: section + :name: GUID-DB2452C7-1F50-4557-9515-D4CB96A735ED + + + .. rubric:: Return Values + :name: return-values + :class: sectiontitle + + + None + + + .. container:: section + :name: GUID-D29288F7-48C3-44EC-B6AC-489E263FF3A9 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use onemkl::sparse::gemv with SYCL buffers or + USM can be found in the oneMKL installation directory, under: + + + :: + + + examples/sycl/spblas/sparse_gemv.cpp + + + :: + + + examples/sycl/spblas/sparse_gemv_usm.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Sparse BLAS + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst new file mode 100644 index 0000000000..8db93debc3 --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst @@ -0,0 +1,208 @@ +.. _mkl-sparse-gemvdot: + +onemkl::sparse::gemvdot +==================== + + +.. container:: + + + Computes a sparse matrix-vector product with dot product. + + + .. container:: section + :name: GUID-8FF718C9-D9AE-42A7-9A2A-A47DCEBB13D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Currently, complex types are not supported. + + + **Using SYCL buffers:** + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void onemkl::sparse::gemvdot (cl::sycl::queue & queue, onemkl::transpose transpose_val, fp alpha, matrixHandle_t handle, cl::sycl::buffer & x, fp beta, cl::sycl::buffer & y, cl::sycl::buffer & d) + + **Using USM pointers:** + + + .. cpp:function:: void onemkl::sparse::gemvdot (cl::sycl::queue & queue, onemkl::transpose transpose_val, fp alpha, matrixHandle_t handle, fp \*x, fp beta, fp \*y, fp \*d) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + .. rubric:: Note + :name: note-1 + :class: NoteTipHead + + + Refer to `Supported + Types `__ for a + list of supported ```` and ```` and refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + The onemkl::sparse::gemvdot routine computes a sparse + matrix-vector product and dot product defined as + + + :: + + + y := alpha*op(A)*x + beta*y + + + + + :: + + + d := x * y + + + where: + + + ``A`` is a general sparse matrix, ``alpha``, ``beta``, and + ``d`` are scalars, ``x`` and ``y`` are vectors. + + + .. container:: section + :name: GUID-7F07A52E-4DDB-4C1B-AB92-E66C7641AED3 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + Specifies the SYCL command queue which will be used for SYCL + kernels execution. + + + transpose_val + Specifies operation ``op()`` on input matrix. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::transpose::nontrans + - Non-transpose, ``op(A)`` = ``A``. + * - onemkl::transpose::trans + - Transpose, ``op(A)`` = ``A``\ :sup:`T`. + * - onemkl::transpose::conjtrans + - Conjugate transpose, ``op(A)`` = ``A``\ :sup:`H`. + + + + + .. container:: Note + + + .. rubric:: Note + :name: note-2 + :class: NoteTipHead + + + Currently, the only supported case for operation is + onemkl::transpose::nontrans. + + + alpha + Specifies the scalar ``alpha``. + + + handle + Handle to object containing sparse matrix and other internal + data. Created using one of the + onemkl::sparse::setstructure routines. + + + .. container:: Note + + + .. rubric:: Note + :name: note-3 + :class: NoteTipHead + + + Currently, the only supported case for + is CSR. + + + x + SYCL or USM memory object containing an array of size at + least equal to the number of columns of input matrix if + ``op`` = onemkl::transpose::nontrans and at least the number of + rows of input matrix otherwise. + + + beta + Specifies the scalar ``beta``. + + + y + SYCL or USM memory object containing an array of size at + least equal to the number of columns of input matrix if + ``op`` = onemkl::transpose::nontrans and at least the number of + rows of input matrix otherwise. + + + .. container:: section + :name: GUID-2D7BA49D-E937-40A4-AC2F-19685DC4E918 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Overwritten by the updated vector ``y``. + + + d + Overwritten by the dot product of ``x`` and ``y``. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Sparse BLAS + Routines `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst new file mode 100644 index 0000000000..f8358d5e95 --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst @@ -0,0 +1,136 @@ +.. _mkl-sparse-gemvoptimize: + +onemkl::sparse::gemvOptimize +========================= + + +.. container:: + + + Performs internal optimizations for onemkl::sparse::gemv by analyzing + the matrix structure. + + + .. container:: section + :name: GUID-8FF718C9-D9AE-42A7-9A2A-A47DCEBB13D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Currently, complex types are not supported. + + + The API is the same when using SYCL buffers or USM pointers. + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void onemkl::sparse::gemvOptimize (cl::sycl::queue & queue, onemkl::transpose transpose_val, matrixHandle_t handle) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + .. rubric:: Note + :name: note-1 + :class: NoteTipHead + + + Refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + The onemkl::sparse::gemvOptimize routine analyzes matrix structure + and performs optimizations. Optimized data is then stored in + the handle. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + Specifies the SYCL command queue which will be used for SYCL + kernels execution. + + + transpose_val + Specifies operation ``op()`` on input matrix. + + + .. list-table:: + :header-rows: 1 + + * - onemkl::transpose::nontrans + - Non-transpose, ``op(A)`` = ``A``. + * - onemkl::transpose::trans + - Transpose, ``op(A)`` = ``A``\ :sup:`T`. + * - onemkl::transpose::conjtrans + - Conjugate transpose, ``op(A)`` = ``A``\ :sup:`H`. + + + + + .. container:: Note + + + .. rubric:: Note + :name: note-2 + :class: NoteTipHead + + + Currently, the only supported case for operation is + onemkl::transpose::nontrans. + + + handle + Handle to object containing sparse matrix and other internal + data. Created using one of the + onemkl::sparse::setstructure routines. + + + .. container:: Note + + + .. rubric:: Note + :name: note-3 + :class: NoteTipHead + + + Currently, the only supported case for + is CSR. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Sparse BLAS + Routines `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst new file mode 100644 index 0000000000..7abf480d22 --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst @@ -0,0 +1,57 @@ +.. _mkl-sparse-matrixinit: + +onemkl::sparse::matrixInit +======================= + + +.. container:: + + + Initializes a matrixHandle_t object to default values. + + + .. container:: section + :name: GUID-9FBC1610-9EB2-4F98-97CF-B74E301DF4AD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void onemkl::sparse::matrixInit (matrixHandle_t hMatrix) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::sparse::matrixInit function initializes the + ``matrixHandle_t`` object with default values, otherwise it + throws an exception. + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + + + **Parent topic:** `Sparse BLAS + Routines `__ + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst new file mode 100644 index 0000000000..6bfa2bdd52 --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst @@ -0,0 +1,162 @@ +.. _mkl-sparse-setcsrstructure: + +onemkl::sparse::setCSRstructure +============================ + + +.. container:: + + + Creates a handle for a CSR matrix. + + + .. container:: section + :name: GUID-EBB08B57-1328-49DB-A83D-F8574FCE76DB + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + **Using SYCL buffers:** + + + .. cpp:function:: void onemkl::sparse::setCSRstructure (matrixHandle_t handle, intType nRows, intType nCols, onemkl::index_base index, cl::sycl::buffer & rowIndex, cl::sycl::buffer & colIndex, cl::sycl::buffer & values) + + **Using USM pointers:** + + + .. cpp:function:: void onemkl::sparse::setCSRstructure (matrixHandle_t handle, intType nRows, intType nCols, onemkl::index_base index, intType \*rowIndex, intType \*colIndex, fp \*values) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The onemkl::sparse::setCSRstructure routine creates a handle for a + sparse matrix of dimensions ``nRows``-by-``nCols`` represented in + the CSR format.. + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Refer to `Supported + Types `__ for a + list of supported ```` and ````, and refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + handle + Handle to object containing sparse matrix and other internal + data for subsequent SYCL Sparse BLAS operations. + + + nRows + Number of rows of the input matrix . + + + nCols + Number of columns of the input matrix . + + + Index + Indicates how input arrays are indexed. + + + .. list-table:: + :header-rows: 1 + + * - onemkl::index_base::zero + - Zero-based (C-style) indexing: indices start at 0. + * - onemkl::index_base::one + - One-based (Fortran-style) indexing: indices start at 1. + + + + + rowIndex + SYCL or USM memory object containing an array of length + ``m+1``. This array contains row indices, such that + ``rowsIndex[i]`` - ``indexing`` is the first index of row ``i`` + in the arrays ``values`` and ``colIndex. indexing`` takes 0 for + zero-based indexing and 1 for one-based indexing. Refer to + ``pointerB`` and ``pointerE`` array description in `Sparse BLAS + CSR Matrix Storage + Format `__ + for more details. + + + .. container:: Note + + + .. rubric:: Note + :name: note-1 + :class: NoteTipHead + + + Refer to `Three Array Variation of CSR + Format `__ + for more details. + + + colIndex + SYCL or USM memory object which stores an array containing the + column indices in ``index``-based numbering (``index`` takes 0 + for zero-based indexing and 1 for one-based indexing) for each + non-zero element of the input matrix. Its length is at least + ``nrows``. + + + values + SYCL or USM memory object which stores an array containing + non-zero elements of the input matrix. Its length is equal to + length of the ``colIndex`` array. Refer to the values array + description in `Sparse BLAS CSR Matrix Storage + Format `__ + for more details. + + + .. container:: section + :name: GUID-E7B97F4D-A214-4FB7-85A6-A653F913CE4F + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + handle + Handle to object containing sparse matrix and other internal + data for subsequent Sycl Sparse BLAS operations. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Sparse BLAS + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst new file mode 100644 index 0000000000..e4066fde8a --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst @@ -0,0 +1,204 @@ +.. _mkl-sparse-symv: + +onemkl::sparse::symv +================= + + +.. container:: + + + Computes a sparse matrix-vector product for a symmetric matrix. + + + .. container:: section + :name: GUID-8FF718C9-D9AE-42A7-9A2A-A47DCEBB13D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Currently, complex types are not supported. + + + **Using SYCL buffers:** + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void onemkl::sparse::symv (cl::sycl::queue & queue, onemkl::uplo uplo_val, fp alpha, matrixHandle_t handle, cl::sycl::buffer & x, fp beta, cl::sycl::buffer & y) + + **Using USM pointers:** + + + .. cpp:function:: void onemkl::sparse::symv (cl::sycl::queue & queue, onemkl::uplo uplo_val, fp alpha, matrixHandle_t handle, fp \*x, fp beta, fp \*y) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + .. rubric:: Note + :name: note-1 + :class: NoteTipHead + + + Refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + The onemkl::sparse::symv routine computes a sparse matrix-vector + product over a symmetric part defined as + + + :: + + + y := alpha*A*x + beta*y + + + + + where: + + + ``alpha`` and ``beta`` are scalars, and\ ``x`` and ``y`` are + vectors. + + + .. container:: section + :name: GUID-7F07A52E-4DDB-4C1B-AB92-E66C7641AED3 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + Specifies the SYCL command queue which will be used for SYCL + kernels execution. + + + uplo_val + Specifies which symmetric part is to be processed. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::uplo::lower + - The lower symmetric part is processed. + * - onemkl::uplo::upper + - The upper symmetric part is processed. + + + + + alpha + Specifies the scalar ``alpha``. + + + handle + Handle to object containing sparse matrix and other internal + data. Created using one of the + onemkl::sparse::setstructure routines. + + + .. container:: Note + + + .. rubric:: Note + :name: note-2 + :class: NoteTipHead + + + Currently, the only supported case for + is CSR. + + + x + SYCL or USM memory object containing an array of size at + least equal to the number of columns of input matrix. + + + beta + Specifies the scalar ``beta``. + + + y + SYCL or USM memory object containing an array of size at + least equal to the number of columns of input matrix. + + + .. container:: section + :name: GUID-2D7BA49D-E937-40A4-AC2F-19685DC4E918 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Overwritten by the updated vector ``y``. + + + .. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ``onemkl::sparse::symv`` with SYCL + buffers or USM can be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/spblas/sparse_symv_l.cpp + + + :: + + + examples/sycl/spblas/sparse_symv_l_usm.cpp + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Sparse BLAS + Routines `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst new file mode 100644 index 0000000000..af05d61243 --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst @@ -0,0 +1,235 @@ +.. _mkl-sparse-trmv: + +onemkl::sparse::trmv +================= + + +.. container:: + + + Computes a sparse matrix-dense vector product over upper or lower + triangular parts of the matrix. + + + .. container:: section + :name: GUID-8FF718C9-D9AE-42A7-9A2A-A47DCEBB13D4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Currently, complex types are not supported. + + + **Using SYCL buffers:** + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void onemkl::sparse::trmv (cl::sycl::queue & queue, onemkl::uplo uplo_val, onemkl::transpose transpose_val, onemkl::diag diag_val, fp alpha, matrixHandle_t handle, cl::sycl::buffer & x, fp beta, cl::sycl::buffer & y) + + **Using USM pointers:** + + + .. cpp:function:: void onemkl::sparse::trmv (cl::sycl::queue & queue, onemkl::uplo uplo_val, onemkl::transpose transpose_val, onemkl::diag diag_val, fp alpha, matrixHandle_t handle, fp \*x, fp beta, fp \*y) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + .. rubric:: Note + :name: note-1 + :class: NoteTipHead + + + Refer to `Supported + Types `__ for a + list of supported ```` and ```` and refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + The onemkl::sparse::trmv routine computes a sparse matrix-vector + product over a triangular part defined as + + + :: + + + y := alpha* (op)A*x + beta*y + + + + + where: + + + ``alpha`` and ``beta`` are scalars, and\ ``x`` and ``y`` are + vectors. + + + .. container:: section + :name: GUID-7F07A52E-4DDB-4C1B-AB92-E66C7641AED3 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + Specifies the SYCL command queue which will be used for SYCL + kernels execution. + + + uplo_val + Specifies which triangular matrix is to be processed. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::uplo::lower + - The lower triangular matrix part is processed. + * - onemkl::uplo::upper + - The upper triangular matrix part is processed. + + + + + transpose_val + Specifies operation ``op()`` on input matrix. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::transpose::nontrans + - Non-transpose, ``op(A)`` = ``A``. + * - onemkl::transpose::trans + - Transpose, ``op(A)`` = ``A``\ :sup:`T`. + * - onemkl::transpose::conjtrans + - Conjugate transpose, ``op(A)`` = ``A``\ :sup:`H`. + + + + + .. container:: Note + + + .. rubric:: Note + :name: note-2 + :class: NoteTipHead + + + Currently, the only supported case for ``operation`` is + onemkl::transpose::nontrans. + + + diag_val + Specifies if the input matrix has a unit diagonal or not. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::diag::nonunit + - Diagonal elements might not be equal to one. + * - onemkl::diag::unit + - Diagonal elements are equal to one. + + + + + alpha + Specifies the scalar ``alpha``. + + + handle + Handle to object containing sparse matrix and other internal + data. Created using one of the + onemkl::sparse::setstructure routines. + + + .. container:: Note + + + .. rubric:: Note + :name: note-3 + :class: NoteTipHead + + + Currently, the only supported case for + is CSR. + + + x + SYCL or USM memory object containing an array of size at + least equal to the number of columns of input matrix if op = + onemkl::transpose::nontrans and at least the number of rows of + input matrix otherwise. + + + beta + Specifies the scalar ``beta``. + + + y + SYCL or USM memory object containing an array of size at + least equal to the number of columns of input matrix if op = + onemkl::transpose::nontrans and at least the number of rows of + input matrix otherwise. + + + .. container:: section + :name: GUID-2D7BA49D-E937-40A4-AC2F-19685DC4E918 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + Overwritten by the updated vector ``y``. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Sparse BLAS + Routines `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst new file mode 100644 index 0000000000..411e61859f --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst @@ -0,0 +1,172 @@ +.. _mkl-sparse-trmvoptimize: + +onemkl::sparse::trmvOptimize +========================= + + +.. container:: + + + Performs internal optimizations for onemkl::sparse::trmv by analyzing + the matrix structure. + + + .. container:: section + :name: GUID-D7939766-BD30-4A72-BBB2-B0F0E5C6BA76 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Currently, complex types are not supported. + + + The API is the same when using SYCL buffers or USM pointers. + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void onemkl::sparse::trmvOptimize (cl::sycl::queue & queue, onemkl::uplo uplo_val, onemkl::transpose transpose_val, onemkl::diag diag_val, matrixHandle_t handle) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + .. rubric:: Note + :name: note-1 + :class: NoteTipHead + + + Refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + The onemkl::sparse::trmvOptimize routine analyzes matrix structure + and performs optimizations. Optimized data is then stored in + the handle. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + Specifies the SYCL command queue which will be used for SYCL + kernels execution. + + + uplo_val + Specifies the triangular matrix part for the input matrix. + + + .. list-table:: + :header-rows: 1 + + * - onemkl::uplo::lower + - The lower triangular matrix part is processed. + * - onemkl::uplo::upper + - The upper triangular matrix part is processed. + + + + + transpose_val + Specifies operation ``op()`` on input matrix. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::transpose::nontrans + - Non-transpose, ``op(A)`` = ``A``. + * - onemkl::transpose::trans + - Transpose, ``op(A)`` = ``A``\ :sup:`T`. + * - onemkl::transpose::conjtrans + - Conjugate transpose, ``op(A)`` = ``A``\ :sup:`H`. + + + + + .. container:: Note + + + .. rubric:: Note + :name: note-2 + :class: NoteTipHead + + + Currently, the only supported case for ``operation`` is + onemkl::transpose::nontrans. + + + diag_val + Specifies if the input matrix has a unit diagonal or not. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::diag::nonunit + - Diagonal elements might not be equal to one. + * - onemkl::diag::unit + - Diagonal elements are equal to one. + + + + + handle + Handle to object containing sparse matrix and other internal + data. Created using one of the + onemkl::sparse::setstructure routines. + + + .. container:: Note + + + .. rubric:: Note + :name: note-3 + :class: NoteTipHead + + + Currently, the only supported case for + is CSR. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Sparse BLAS + Routines `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst new file mode 100644 index 0000000000..ec0f28b59e --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst @@ -0,0 +1,223 @@ +.. _mkl-sparse-trsv: + +onemkl::sparse::trsv +================= + + +.. container:: + + + Solves a system of linear equations for a triangular sparse matrix. + + + .. container:: section + :name: GUID-D7939766-BD30-4A72-BBB2-B0F0E5C6BA76 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Currently, complex types are not supported. + + + **Using SYCL buffers:** + + + .. cpp:function:: void onemkl::sparse::trsv (cl::sycl::queue & queue, onemkl::uplo uplo_val, onemkl::transpose transpose_val, onemkl::diag diag_val, matrixHandle_t handle, cl::sycl::buffer & x, cl::sycl::buffer & y) + + **Using USM pointers:** + + + .. cpp:function:: void onemkl::sparse::trsv (cl::sycl::queue & queue, onemkl::uplo uplo_val, onemkl::transpose transpose_val, onemkl::diag diag_val, matrixHandle_t handle, fp \*x, fp \*y) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + .. rubric:: Note + :name: note-1 + :class: NoteTipHead + + + Refer to `Supported + Types `__ for a + list of supported ```` and ````, and refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + The onemkl::sparse::trsv routine solves a system of linear equations + for a square matrix: + + + :: + + + op(A)*y = x + + + where ``A`` is a triangular sparse matrix of size ``m`` rows by + ``m`` columns, op is a matrix modifier for matrix ``A``, ``alpha`` + is a scalar, and ``x`` and ``y`` are vectors of length at least + ``m``. + + + .. container:: section + :name: GUID-7F07A52E-4DDB-4C1B-AB92-E66C7641AED3 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + Specifies the SYCL command queue which will be used for SYCL + kernels execution. + + + uplo_val + Specifies if the input matrix is an upper triangular or a lower + triangular matrix. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::uplo::lower + - The lower triangular matrix part is processed. + * - onemkl::uplo::upper + - The upper triangular matrix part is processed. + + + + + transpose_val + Specifies operation ``op()`` on input matrix. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::transpose::nontrans + - Non-transpose, ``op(A)`` = ``A``. + * - onemkl::transpose::trans + - Transpose, ``op(A)`` = ``A``\ :sup:`T`. + * - onemkl::transpose::conjtrans + - Conjugate transpose, ``op(A)`` = ``A``\ :sup:`H`. + + + + + .. container:: Note + + + .. rubric:: Note + :name: note-2 + :class: NoteTipHead + + + Currently, the only supported case for operation is + onemkl::transpose::nontrans. + + + diag_val + Specifies if the input matrix has a unit diagonal or not. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::diag::nonunit + - Diagonal elements might not be equal to one. + * - onemkl::diag::unit + - Diagonal elements are equal to one. + + + + + handle + Handle to object containing sparse matrix and other internal + data. Created using one of the + onemkl::sparse::setstructure routines. + + + .. container:: Note + + + .. rubric:: Note + :name: note-3 + :class: NoteTipHead + + + Currently, the only supported case for + is CSR. + + + x + SYCL or USM memory object containing an array of size at least + equal to the number of columns of input matrix if ``op`` = + onemkl::transpose::nontrans and at least the number of rows of + input matrix otherwise. It is the input vector ``x`` + + + y + SYCL or USM memory object containing an array of size at least + equal to the number of columns of input matrix if ``op`` = + onemkl::transpose::nontrans and at least the number of rows of + input matrix otherwise. + + + .. container:: section + :name: GUID-36823FC7-2AEA-42BC-A07F-0036A76E7BAE + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + y + SYCL or USM memory object containing an array of size at least + ``nRows`` filled with the solution to the system of linear + equations. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Sparse BLAS + Routines `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst new file mode 100644 index 0000000000..156cd1add5 --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst @@ -0,0 +1,172 @@ +.. _mkl-sparse-trsvoptimize: + +onemkl::sparse::trsvOptimize +========================= + + +.. container:: + + + Performs internal optimizations for onemkl::sparse::trsv by analyzing + the matrix structure. + + + .. container:: section + :name: GUID-D7939766-BD30-4A72-BBB2-B0F0E5C6BA76 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + Currently, complex types are not supported. + + + The API is the same when using SYCL buffers or USM pointers. + + + .. container:: dlsyntaxpara + + + .. cpp:function:: void onemkl::sparse::trsvOptimize (cl::sycl::queue & queue, onemkl::uplo uplo_val, onemkl::transpose transpose_val, onemkl::diag diag_val, matrixHandle_t handle) + + .. rubric:: Include Files + :name: include-files + :class: sectiontitle + + + - mkl_spblas_sycl.hpp + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + .. rubric:: Note + :name: note-1 + :class: NoteTipHead + + + Refer to + `Exceptions `__ + for a detailed description of the exceptions thrown. + The onemkl::sparse::trsvOptimize routine analyzes matrix structure + and performs optimizations. Optimized data is then stored in + the handle. + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + queue + Specifies the SYCL command queue which will be used for SYCL + kernels execution. + + + uplo_val + Specifies the triangular matrix part for the input matrix. + + + .. list-table:: + :header-rows: 1 + + * - onemkl::uplo::lower + - The lower triangular matrix part is processed. + * - onemkl::uplo::upper + - The upper triangular matrix part is processed. + + + + + transpose_val + Specifies operation ``op()`` on input matrix. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::transpose::nontrans + - Non-transpose, ``op(A)`` = ``A``. + * - onemkl::transpose::trans + - Transpose, ``op(A)`` = ``A``\ :sup:`T`. + * - onemkl::transpose::conjtrans + - Conjugate transpose, ``op(A)`` = ``A``\ :sup:`H`. + + + + + .. container:: Note + + + .. rubric:: Note + :name: note-2 + :class: NoteTipHead + + + Currently, the only supported case for operation is + onemkl::transpose::nontrans. + + + diag_val + Specifies if the input matrix has a unit diagonal or not. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - onemkl::diag::nonunit + - Diagonal elements might not be equal to one. + * - onemkl::diag::unit + - Diagonal elements are equal to one. + + + + + handle + Handle to object containing sparse matrix and other internal + data. Created using one of the + onemkl::sparse::setstructure routines. + + + .. container:: Note + + + .. rubric:: Note + :name: note-3 + :class: NoteTipHead + + + Currently, the only supported case for + is CSR. + + + .. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Sparse BLAS + Routines `__ + + + .. container:: + diff --git a/source/elements/oneMKL/source/domains/spblas/spblas.rst b/source/elements/oneMKL/source/domains/spblas/spblas.rst new file mode 100644 index 0000000000..d7fa0518e2 --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/spblas.rst @@ -0,0 +1,42 @@ +.. _onemkl_spblas: + +Sparse BLAS Routines +------------------------------ + +.. container:: + + Sparse BLAS Routines provide basic operations on sparse vectors and matrice + +.. container:: + + - :ref:`mkl-sparse-matrixinit` + - :ref:`mkl-sparse-setcsrstructure` + - :ref:`mkl-sparse-gemm` + - :ref:`mkl-sparse-gemv` + - :ref:`mkl-sparse-gemvdot` + - :ref:`mkl-sparse-gemvoptimize` + - :ref:`mkl-sparse-symv` + - :ref:`mkl-sparse-trmv` + - :ref:`mkl-sparse-trmvoptimize` + - :ref:`mkl-sparse-trsv` + - :ref:`mkl-sparse-trsvoptimize` + - :ref:`exceptions` + +.. toctree:: + :hidden: + + mkl-sparse-matrixinit + mkl-sparse-setcsrstructure + mkl-sparse-gemm + mkl-sparse-gemv + mkl-sparse-gemvdot + mkl-sparse-gemvoptimize + mkl-sparse-symv + mkl-sparse-trmv + mkl-sparse-trmvoptimize + mkl-sparse-trsv + mkl-sparse-trsvoptimize + supported-types + exceptions + +**Parent topic:** :ref:`onemkl_sparse_linear_algebra` diff --git a/source/elements/oneMKL/source/domains/spblas/supported-types.rst b/source/elements/oneMKL/source/domains/spblas/supported-types.rst new file mode 100644 index 0000000000..65201da573 --- /dev/null +++ b/source/elements/oneMKL/source/domains/spblas/supported-types.rst @@ -0,0 +1,31 @@ +.. _supported-types: + +Supported Types +=============== + + +.. container:: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Data Types + - Integer Types + * - ``float`` + - ``int`` + * - ``double`` + - ``std::int64_t`` + * - ``std::complex`` + -   + * - ``std::complex`` + -   + + + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/abs.rst b/source/elements/oneMKL/source/domains/vm/abs.rst new file mode 100644 index 0000000000..0f2331d36f --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/abs.rst @@ -0,0 +1,214 @@ +.. _abs: + +abs +=== + + +.. container:: + + + Computes absolute value of vector elements. + + + .. container:: section + :name: GUID-FDBCAEE6-C095-465E-B365-6293520BAAEA + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void abs(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event abs(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``abs`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-4820A1A0-C933-4215-9ED4-FDEF4AD0CCE6 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The abs(a) function computes an absolute value of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - +0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + Specificationsfor special values of the complex functions are defined + according to the following formula + + + ``abs(a) = hypot(RE(a),IM(a))``. + + + The abs function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use abscan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vabs.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/acos.rst b/source/elements/oneMKL/source/domains/vm/acos.rst new file mode 100644 index 0000000000..f3de258691 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/acos.rst @@ -0,0 +1,307 @@ +.. _acos: + +acos +==== + + +.. container:: + + + Computes inverse cosine of vector elements. + + + .. container:: section + :name: GUID-F58A2419-0EA1-4E8E-9091-72FEA17B49FD + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void acos(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event acos(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``acos`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-3F56F0D4-A10A-4FFA-B030-F9DF49326E62 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The acos(a) function computes inverse cosine of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +\ ``π``/2 + -   + * - -0 + - +\ ``π``/2 + -   + * - +1 + - +0 + -   + * - -1 + - +\ ``π`` + -   + * - \|a\| > 1 + - QNAN + - ``status::errdom`` + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - RE(a) i·IM(a) + - -∞   + - -X   + - -0   + - +0   + - +X   + - +∞   + - NAN   + * - +i·∞ + - +3·\ ``π``/4-i·∞ + - +\ ``π``/2-i·∞ + - +\ ``π``/2-i·∞ + - +\ ``π``/2-i·∞ + - +\ ``π``/2-i·∞ + - +\ ``π``/4-i·∞ + - QNAN-i·∞ + * - +i·Y + - +\ ``π``-i·∞ + -   + -   + -   + -   + - +0-i·∞ + - QNAN+i·QNAN + * - +i·0 + - +\ ``π``-i·∞ + -   + - +\ ``π``/2-i·0 + - +\ ``π``/2-i·0 + -   + - +0-i·∞ + - QNAN+i·QNAN + * - -i·0 + - +\ ``π``\ +i·∞ + -   + - +\ ``π``/2+i·0 + - +\ ``π``/2+i·0 + -   + - +0+i·∞ + - QNAN+i·QNAN + * - -i·Y + - +\ ``π``\ +i·∞ + -   + -   + -   + -   + - +0+i·∞ + - QNAN+i·QNAN + * - -i·∞ + - +3\ ``π``/4+i·∞ + - +\ ``π``/2+i·∞ + - +\ ``π``/2+i·∞ + - +\ ``π``/2+i·∞ + - +\ ``π``/2+i·∞ + - +\ ``π``/4+i·∞ + - QNAN+i·∞ + * - +i·NAN + - QNAN+i·∞ + - QNAN+i·QNAN + - +\ ``π``/2+i·QNAN + - +\ ``π``/2+i·QNAN + - QNAN+i·QNAN + - QNAN+i·∞ + - QNAN+i·QNAN + + + + + Notes: + + + - ``acos(CONJ(a))=CONJ(acos(a))``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use acoscan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vacos.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/acosh.rst b/source/elements/oneMKL/source/domains/vm/acosh.rst new file mode 100644 index 0000000000..d6c1728cb5 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/acosh.rst @@ -0,0 +1,303 @@ +.. _acosh: + +acosh +===== + + +.. container:: + + + Computes inverse hyperbolic cosine (nonnegative) of vector elements. + + + .. container:: section + :name: GUID-2F0D6E70-F20B-466E-9870-6D4C4081A90A + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void acosh(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event acosh(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``acosh`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-C5E1F4DC-9D6A-4170-8E75-3EEFEADE8F84 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The acosh(a) function computes inverse hyperbolic cosine + (nonnegative) of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +1 + - +0 + -   + * - a < +1 + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - +∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - RE(a) i·IM(a) + - -∞   + - -X   + - -0   + - +0   + - +X   + - +∞   + - NAN   + * - +i·∞ + - |image0| + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/4 + - +∞+i·QNAN + * - +i·Y + - +∞+i·\ ``π`` + -   + -   + -   + -   + - +∞+i·0 + - QNAN+i·QNAN + * - +i·0 + - +∞+i·\ ``π`` + -   + - +0+i·\ ``π``/2 + - +0+i·\ ``π``/2 + -   + - +∞+i·0 + - QNAN+i·QNAN + * - -i·0 + - +∞+i·\ ``π`` + -   + - +0+i·\ ``π``/2 + - +0+i·\ ``π``/2 + -   + - +∞+i·0 + - QNAN+i·QNAN + * - -i·Y + - +∞+i·\ ``π`` + -   + -   + -   + -   + - +∞+i·0 + - QNAN+i·QNAN + * - -i·∞ + - |image1| + - +∞-i·\ ``π``/2 + - +∞-i·\ ``π``/2 + - +∞-i·\ ``π``/2 + - +∞-i·\ ``π``/2 + - +∞-i·\ ``π``/4 + - +∞+i·QNAN + * - +i·NAN + - +∞+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - +∞+i·QNAN + - QNAN+i·QNAN + + + + + Notes: + + + - ``acosh(CONJ(a))=CONJ(acosh(a))``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use acoshcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vacosh.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Hyperbolic + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-6FB20CE7-1E2A-4340-995F-0E621DEF0E2D-low.jpg +.. |image1| image:: ../equations/GUID-0C4BC54F-4C29-4577-80AA-BCBCD291582A-low.jpg + diff --git a/source/elements/oneMKL/source/domains/vm/acospi.rst b/source/elements/oneMKL/source/domains/vm/acospi.rst new file mode 100644 index 0000000000..9924ee6823 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/acospi.rst @@ -0,0 +1,227 @@ +.. _acospi: + +acospi +====== + + +.. container:: + + + Computes the inverse cosine of vector elements divided by ``π``. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void acospi(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event acospi(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``acospi`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-303D47FF-2733-49D8-B9DC-CEED522A707A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The acospi(a) function computes the inverse cosine of vector elements + divided by ``π``. For an argument ``a``, the function computes + acos(``a``)/``π``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +1/2 + -   + * - -0 + - +1/2 + -   + * - +1 + - +0 + -   + * - -1 + - +1 + -   + * - \|\ ``a``\ \| > 1 + - QNAN + - ``status::errdom`` + * - +∞ + - QNAN + - ``status::errdom`` + * - - ∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use acospican be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vacospi.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/add.rst b/source/elements/oneMKL/source/domains/vm/add.rst new file mode 100644 index 0000000000..1fbb045e08 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/add.rst @@ -0,0 +1,267 @@ +.. _add: + +add +=== + + +.. container:: + + + Performs element by element addition of vector ``a`` and vector + ``b``. + + + .. container:: section + :name: GUID-0021791A-722B-49D5-AC56-37F61FA2FBA8 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void add( queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event add( queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``add`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-CCDDF7AC-0DF5-48D3-B7BF-290C6A40D84F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The add(a, b) function performs element by element addition of vector + ``a`` and vector ``b``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - +0 + - +0 + - +0 + -   + * - +0 + - -0 + - +0 + -   + * - -0 + - +0 + - +0 + -   + * - -0 + - -0 + - -0 + -   + * - +∞ + - +∞ + - +∞ + -   + * - +∞ + - -∞ + - QNAN + -   + * - -∞ + - +∞ + - QNAN + -   + * - -∞ + - -∞ + - -∞ + -   + * - SNAN + - any value + - QNAN + -   + * - any value + - SNAN + - QNAN + -   + + + + + Specifications for special values of the complex functions are + defined according to the following formula + + + ``add(x1+i*y1,x2+i*y2) = (x1+x2) + i*(y1+y2)`` + + + Overflow in a complex function occurs (supported in the HA/LA + accuracy modes only) when all RE(x), RE(y), IM(x), IM(y) arguments + are finite numbers, but the real or imaginary part of the computed + result is so large that it does not fit the target precision. In this + case, the function returns ∞ in that part of the result, and sets the + VM Error Status to ``status::overflow`` (overriding any possible + ``status::accuracy_warning`` status). + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use addcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vadd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/arg.rst b/source/elements/oneMKL/source/domains/vm/arg.rst new file mode 100644 index 0000000000..04e1ffb3d0 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/arg.rst @@ -0,0 +1,264 @@ +.. _arg: + +arg +=== + + +.. container:: + + + Computes argument of vector elements. + + + .. container:: section + :name: GUID-B43F4847-BE63-4396-A993-2F6FC5201525 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void arg(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event arg(queue& exec_queue, int64_t n, A\* a, R\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``arg`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-75EB29ED-7EBD-463F-A86A-F95625E7703B + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The arg(a) function computes argument of vector elements. + + + See `Special Value + Notations `__ + for the conventions used in the table below. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - RE(a) i·IM(a) + - -∞   + - -X   + - -0   + - +0   + - +X   + - +∞   + - NAN   + * - +i·∞ + - +3·π/4 + - +π/2 + - +π/2 + - +π/2 + - +π/2 + - +π/4 + - NAN + * - +i·Y + - +π + -   + - +π/2 + - +π/2 + -   + - +0 + - NAN + * - +i·0 + - +π + - +π + - +π + - +0 + - +0 + - +0 + - NAN + * - -i·0 + - -π + - -π + - -π + - -0 + - -0 + - -0 + - NAN + * - -i·Y + - -π + -   + - -π/2 + - -π/2 + -   + - -0 + - NAN + * - -i·∞ + - -3·π/4 + - -π/2 + - -π/2 + - -π/2 + - -π/2 + - -π/4 + - NAN + * - +i·NAN + - NAN + - NAN + - NAN + - NAN + - NAN + - NAN + - NAN + + + + + .. container:: Note + + + .. rubric:: Note + :name: note + :class: NoteTipHead + + + ``arg(a)=atan2(IM(a),RE(a))`` + + + The arg function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use argcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/varg.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/arithmetic-functions.rst b/source/elements/oneMKL/source/domains/vm/arithmetic-functions.rst new file mode 100644 index 0000000000..495a1508b4 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/arithmetic-functions.rst @@ -0,0 +1,72 @@ +.. _arithmetic-functions: + +Arithmetic Functions +==================== + + +.. container:: + + + Arithmetic functions perform the basic mathematical operations like + addition, subtraction, multiplication or computation of the absolute + value of the vector elements. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Mathematical + Functions `__ + + +.. container:: + + + - `add `__ + Performs element by element addition of vector ``a`` and vector + ``b``. + - `sub `__ + Performs element by element subtraction of vector ``b`` from + vector ``a``. + - `sqr `__ + Performs element by element squaring of the vector. + - `mul `__ + Performs element by element multiplication of vector ``a`` and + vector ``b``. + - `mulbyconj `__ + Performs element by element multiplication of vector ``a`` element + and conjugated vector ``b`` element. + - `conj `__ + Performs element by element conjugation of the vector. + - `abs `__ + Computes absolute value of vector elements. + - `arg `__ + Computes argument of vector elements. + - `linearfrac `__ + Performs linear fraction transformation of vectors ``a`` and ``b`` + with scalar parameters. + - `fmod `__ + The fmod function performs element by element computation of the + modulus function of vector ``a`` with respect to vector ``b``. + - `remainder `__ + Performs element by element computation of the remainder function + on the elements of vector ``a`` and the corresponding elements of + vector ``b``. + +.. toctree:: + :hidden: + + add + sub + sqr + mul + mulbyconj + conj + abs + arg + linearfrac + fmod + remainder diff --git a/source/elements/oneMKL/source/domains/vm/asin.rst b/source/elements/oneMKL/source/domains/vm/asin.rst new file mode 100644 index 0000000000..aed1e47027 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/asin.rst @@ -0,0 +1,234 @@ +.. _asin: + +asin +==== + + +.. container:: + + + Computes inverse sine of vector elements. + + + .. container:: section + :name: GUID-4003D959-7538-4202-889C-0B5FD39F6CE3 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void asin(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event asin(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``asin`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-1F39693E-4FBB-4DA4-9593-77B49A6751DB + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The asin(a) function computes inverse sine of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +1 + - +\ ``π``/2 + -   + * - -1 + - -``π``/2 + -   + * - \|a\| > 1 + - QNAN + - ``status::errdom`` + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + Specificationsfor special values of the complex functions are defined + according to the following formula + + + ``asin(a) = -i*asinh(i*z)``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use asincan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vasin.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/asinh.rst b/source/elements/oneMKL/source/domains/vm/asinh.rst new file mode 100644 index 0000000000..4bd24def2f --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/asinh.rst @@ -0,0 +1,291 @@ +.. _asinh: + +asinh +===== + + +.. container:: + + + Computes inverse hyperbolic sine of vector elements. + + + .. container:: section + :name: GUID-67342CEA-AD7E-48E2-B261-6D04E8B92313 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void asinh(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event asinh(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``asinh`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-34F09044-BED2-4706-9B6A-3CE175D4C363 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The asinh(a) function computes inverse hyperbolic sine of vector + elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - -∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - RE(a) i·IM(a) + - -∞   + - -X   + - -0   + - +0   + - +X   + - +∞   + - NAN   + * - +i·∞ + - -∞+i·\ ``π``/4 + - -∞+i·\ ``π``/2 + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/4 + - +∞+i·QNAN + * - +i·Y + - -∞+i·0 + -   + -   + -   + -   + - +∞+i·0 + - QNAN+i·QNAN + * - +i·0 + - +∞+i·0 + -   + - +0+i·0 + - +0+i·0 + -   + - +∞+i·0 + - QNAN+i·QNAN + * - -i·0 + - -∞-i·0 + -   + - -0-i·0 + - +0-i·0 + -   + - +∞-i·0 + - QNAN-i·QNAN + * - -i·Y + - -∞-i·0 + -   + -   + -   + -   + - +∞-i·0 + - QNAN+i·QNAN + * - -i·∞ + - -∞-i·\ ``π``/4 + - -∞-i·\ ``π``/2 + - -∞-i·\ ``π``/2 + - +∞-i·\ ``π``/2 + - +∞-i·\ ``π``/2 + - +∞-i·\ ``π``/4 + - +∞+i·QNAN + * - +i·NAN + - -∞+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - +∞+i·QNAN + - QNAN+i·QNAN + + + + + The asinh(a) function does not generate any errors. + + + Notes: + + + - ``asinh(CONJ(a))=CONJ(asinh(a))`` + + + - ``asinh(-a)=-asinh(a)``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use asinhcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vasinh.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Hyperbolic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/asinpi.rst b/source/elements/oneMKL/source/domains/vm/asinpi.rst new file mode 100644 index 0000000000..45e5a760e3 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/asinpi.rst @@ -0,0 +1,227 @@ +.. _asinpi: + +asinpi +====== + + +.. container:: + + + Computes the inverse sine of vector elements divided by ``π``. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void asinpi(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event asinpi(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``asinpi`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-A41E59C3-1B88-4735-828F-F506BFDE9DF5 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The asinpi(a) function computes the inverse sine of vector elements + divided by ``π``. For an argument ``a``, the function computes + asinpi(``a``)/``π``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +1 + - +1/2 + -   + * - -1 + - -1/2 + -   + * - \|\ ``a``\ \| > 1 + - QNAN + - ``status::errdom`` + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use asinpican be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vasinpi.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/atan.rst b/source/elements/oneMKL/source/domains/vm/atan.rst new file mode 100644 index 0000000000..e28da6cb7c --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/atan.rst @@ -0,0 +1,214 @@ +.. _atan: + +atan +==== + + +.. container:: + + + Computes inverse tangent of vector elements. + + + .. container:: section + :name: GUID-2C04260C-4B96-48EC-8552-19036F530B45 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void atan(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event atan(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``atan`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-15E2BF1F-0828-48B1-903F-5E3AA304A407 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The atan(a) function computes inverse tangent of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +\ ``π``/2 + -   + * - -∞ + - -``π``/2 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The atan function does not generate any errors. + + + Specificationsfor special values of the complex functions are defined + according to the following formula + + + ``atan(a) = -i*atanh(i*a)``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use atancan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vatan.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/atan2.rst b/source/elements/oneMKL/source/domains/vm/atan2.rst new file mode 100644 index 0000000000..a744205f6f --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/atan2.rst @@ -0,0 +1,361 @@ +.. _atan2: + +atan2 +===== + + +.. container:: + + + Computes four-quadrant inverse tangent of elements of two vectors. + + + .. container:: section + :name: GUID-4EBD17B8-6907-4FBE-BDF9-51E9E13C57CE + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void atan2(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event atan2(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``ad2d`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-D62F5991-3666-491A-A47D-8EFBD489F435 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The atan2(a,b) function computes four-quadrant inverse tangent of + elements of two vectors. + + + The elements of the output vectory are computed as the four-quadrant + arctangent of ``a[i] / b[i]``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - -∞ + - -∞ + - -3\*\ ``π``/4 + -   + * - -∞ + - b < +0 + - -``π``/2 + -   + * - -∞ + - -0 + - -``π``/2 + -   + * - -∞ + - +0 + - -``π``/2 + -   + * - -∞ + - b > +0 + - -``π``/2 + -   + * - -∞ + - +∞ + - -``π``/4 + -   + * - a < +0 + - -∞ + - -``π`` + -   + * - a < +0 + - -0 + - -``π``/2 + -   + * - a < +0 + - +0 + - -``π``/2 + -   + * - a < +0 + - +∞ + - -0 + -   + * - -0 + - -∞ + - -``π`` + -   + * - -0 + - b < +0 + - -``π`` + -   + * - -0 + - -0 + - -``π`` + -   + * - -0 + - +0 + - -0 + -   + * - -0 + - b > +0 + - -0 + -   + * - -0 + - +∞ + - -0 + -   + * - +0 + - -∞ + - +\ ``π`` + -   + * - +0 + - b < +0 + - +\ ``π`` + -   + * - +0 + - -0 + - +\ ``π`` + -   + * - +0 + - +0 + - +0 + -   + * - +0 + - b > +0 + - +0 + -   + * - +0 + - +∞ + - +0 + -   + * - a > +0 + - -∞ + - +\ ``π`` + -   + * - a > +0 + - -0 + - +\ ``π``/2 + -   + * - a > +0 + - +0 + - +\ ``π``/2 + -   + * - a > +0 + - +∞ + - +0 + -   + * - +∞ + - -∞ + - +3\*\ ``π``/4 + -   + * - +∞ + - b < +0 + - +\ ``π``/2 + -   + * - +∞ + - -0 + - +\ ``π``/2 + -   + * - +∞ + - +0 + - +\ ``π``/2 + -   + * - +∞ + - b > +0 + - +\ ``π``/2 + -   + * - +∞ + - +∞ + - +\ ``π``/4 + -   + * - a > +0 + - QNAN + - QNAN + -   + * - a > +0 + - SNAN + - QNAN + -   + * - QNAN + - b > +0 + - QNAN + -   + * - SNAN + - b > +0 + - QNAN + -   + * - QNAN + - QNAN + - QNAN + -   + * - QNAN + - SNAN + - QNAN + -   + * - SNAN + - QNAN + - QNAN + -   + * - SNAN + - SNAN + - QNAN + -   + + + + + The atan2(a,b) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use atan2can be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vatan2.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/atan2pi.rst b/source/elements/oneMKL/source/domains/vm/atan2pi.rst new file mode 100644 index 0000000000..09ecf9292e --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/atan2pi.rst @@ -0,0 +1,364 @@ +.. _atan2pi: + +atan2pi +======= + + +.. container:: + + + Computes the four-quadrant inverse tangent of the ratios of the + corresponding elements of two vectors divided by ``π``. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void atan2pi(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event atan2pi(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``atan2pi`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-1FBF445C-74AB-4D93-BCEE-45752AD50CDD + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The atan2pi(a,b) function computes the four-quadrant inverse tangent + of the ratios of the corresponding elements of two vectors divided by + ``π``. + + + For the elements of the output vector ``y``, the function computers + the four-quadrant arctangent of ``a``\ :sub:`i`/``b``\ :sub:`i`, with + the result divided by ``π``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - -∞ + - -∞ + - -3/4 + -   + * - -∞ + - ``b`` < +0 + - -1/2 + -   + * - -∞ + - -0 + - +1/2 + -   + * - -∞ + - +0 + - -1/2 + -   + * - -∞ + - ``x`` > +0 + - -1/2 + -   + * - -∞ + - +∞ + - -1/4 + -   + * - ``a`` < +0 + - -∞ + - -1 + -   + * - ``a`` < +0 + - -0 + - -1/2 + -   + * - ``a`` < +0 + - +0 + - -1/2 + -   + * - ``a`` < +0 + - +∞ + - -0 + -   + * - -0 + - -∞ + - -1 + -   + * - -0 + - ``b`` < +0 + - -1 + -   + * - -0 + - -0 + - -1 + -   + * - -0 + - +0 + - -0 + -   + * - -0 + - ``b`` > +0 + - -0 + -   + * - -0 + - +∞ + - -0 + -   + * - +0 + - -∞ + - +1 + -   + * - +0 + - ``b`` < +0 + - +1 + -   + * - +0 + - -0 + - +1 + -   + * - +0 + - +0 + - +0 + -   + * - +0 + - ``b`` > +0 + - +0 + -   + * - +0 + - +∞ + - +0 + -   + * - ``a`` > +0 + - -∞ + - +1 + -   + * - ``a`` > +0 + - -0 + - +1/2 + -   + * - ``x`` > +0 + - +0 + - +1/2 + -   + * - ``a`` > +0 + - +∞ + - +1/4 + -   + * - +∞ + - -∞ + - +3/4 + -   + * - +∞ + - ``b`` < +0 + - +1/2 + -   + * - +∞ + - -0 + - +1/2 + -   + * - +∞ + - +0 + - +1/2 + -   + * - +∞ + - ``b`` > +0 + - +1/2 + -   + * - +∞ + - +∞ + - +1/4 + -   + * - ``a`` > +0 + - QNAN + - QNAN + -   + * - ``a`` > +0 + - SNAN + - QNAN + -   + * - QNAN + - ``b`` > +0 + - QNAN + -   + * - SNAN + - ``x`` > +0 + - QNAN + -   + * - QNAN + - QNAN + - QNAN + -   + * - QNAN + - SNAN + - QNAN + -   + * - SNAN + - QNAN + - QNAN + -   + * - SNAN + - SNAN + - QNAN + -   + + + + + The atan2pi(a,b) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use atan2pican be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vatan2pi.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/atanh.rst b/source/elements/oneMKL/source/domains/vm/atanh.rst new file mode 100644 index 0000000000..d90bb43a20 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/atanh.rst @@ -0,0 +1,308 @@ +.. _atanh: + +atanh +===== + + +.. container:: + + + Computes inverse hyperbolic tangent of vector elements. + + + .. container:: section + :name: GUID-2CCDC84B-41CC-4B77-A2A9-504118A2C011 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void atanh(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event atanh(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``atanh`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-3A64A0E2-3410-4737-BFF6-1B95BA6927E6 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The atanh(a) function computes inverse hyperbolic tangent of vector + elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +1 + - +∞ + - ``status::sing`` + * - -1 + - -∞ + - ``status::sing`` + * - \|a\| > 1 + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - +∞ + - +∞ + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - RE(a) i·IM(a) + - -∞   + - -X   + - -0   + - +0   + - +X   + - +∞   + - NAN   + * - +i·∞ + - -0+i·\ ``π``/2 + - -0+i·\ ``π``/2 + - -0+i·\ ``π``/2 + - +0+i·\ ``π``/2 + - +0+i·\ ``π``/2 + - +0+i·\ ``π``/2 + - +0+i·\ ``π``/2 + * - +i·Y + - -0+i·\ ``π``/2 + -   + -   + -   + -   + - +0+i·\ ``π``/2 + - QNAN+i·QNAN + * - +i·0 + - -0+i·\ ``π``/2 + -   + - -0+i·0 + - +0+i·0 + -   + - +0+i·\ ``π``/2 + - QNAN+i·QNAN + * - -i·0 + - -0-i·\ ``π``/2 + -   + - -0-i·0 + - +0-i·0 + -   + - +0-i·\ ``π``/2 + - QNAN-i·QNAN + * - -i·Y + - -0-i·\ ``π``/2 + -   + -   + -   + -   + - +0-i·\ ``π``/2 + - QNAN+i·QNAN + * - -i·∞ + - -0-i·\ ``π``/2 + - -0-i·\ ``π``/2 + - -0-i·\ ``π``/2 + - +0-i·\ ``π``/2 + - +0-i·\ ``π``/2 + - +0-i·\ ``π``/2 + - +0-i·\ ``π``/2 + * - +i·NAN + - -0+i·QNAN + - QNAN+i·QNAN + - -0+i·QNAN + - +0+i·QNAN + - QNAN+i·QNAN + - +0+i·QNAN + - QNAN+i·QNAN + + + + + Notes: + + + - ``atanh(±1±i*0)=±∞±i*0``, and status::sing error is generated + + + - ``atanh(CONJ(a))=CONJ(atanh(a))`` + + + - ``atanh(-a)=-atanh(a)``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use atanhcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vatanh.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Hyperbolic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/atanpi.rst b/source/elements/oneMKL/source/domains/vm/atanpi.rst new file mode 100644 index 0000000000..1481d0cbbf --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/atanpi.rst @@ -0,0 +1,207 @@ +.. _atanpi: + +atanpi +====== + + +.. container:: + + + Computes the inverse tangent of vector elements divided by ``π``. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void atanpi(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event atanpi(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``atanpi`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-B54BFE44-523C-4869-9704-09BF8F77D46E + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The atanpi(a) function computes the inverse tangent of vector + elements divided by ``π``. For an argument ``a``, the function + computes atan(``a``)/``π``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +1/2 + -   + * - -∞ + - -1/2 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The atanpi function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use atanpican be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vatanpi.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/bibliography.rst b/source/elements/oneMKL/source/domains/vm/bibliography.rst new file mode 100644 index 0000000000..833021bb33 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/bibliography.rst @@ -0,0 +1,30 @@ +.. _vm_bibliography: + +Bibliography +============ + + +.. container:: + + + For more information about the VM functionality, refer to the + following publications: + + + - + + + .. container:: + :name: LI_9D2887B8C0CA4560BB845598887F6068 + + + **VM** + + + [IEEE754] + IEEE Standard for Binary Floating-Point Arithmetic. + ANSI/IEEE Std 754-2008. + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/cbrt.rst b/source/elements/oneMKL/source/domains/vm/cbrt.rst new file mode 100644 index 0000000000..7f7494f5b8 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/cbrt.rst @@ -0,0 +1,205 @@ +.. _cbrt: + +cbrt +==== + + +.. container:: + + + Computes a cube root of vector elements. + + + .. container:: section + :name: GUID-0A073949-C927-41EF-AA98-8EA0F93863BE + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void cbrt(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event cbrt(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``cbrt`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-ED1EC720-A9EC-4457-AF66-BA2A04062189 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The cbrt(a)function computes a cube root of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - -∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + * - +0 + - +0 + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use cbrtcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vcbrt.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/cdfnorm.rst b/source/elements/oneMKL/source/domains/vm/cdfnorm.rst new file mode 100644 index 0000000000..c217e45cb7 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/cdfnorm.rst @@ -0,0 +1,285 @@ +.. _cdfnorm: + +cdfnorm +======= + + +.. container:: + + + Computes the cumulative normal distribution function values of vector + elements. + + + .. container:: section + :name: GUID-1C0DF8A3-5375-4957-AE9D-0E0CF868EF1A + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void cdfnorm(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event cdfnorm(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``cdfnorm`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-B6D67607-83F0-4A45-8AC3-A577D1240A28 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The cdfnorm function computes the cumulative normal distribution + function values for elements of the input vector ``a`` and writes + them to the output vector ``y``. + + + The cumulative normal distribution function is defined as given by: + + + | + + + .. container:: imagecenter + + + |image0| + + + Useful relations: + + + | + + + .. container:: imagecenter + + + |image1| + + + where erfand erfcare the error and complementary error functions. + + + The following figure illustrates the relationships among erf family + functions (erf, erfc, cdfnorm). + + + .. container:: figtop + :name: GUID-C79F54F4-8A82-4E74-9DA6-1D7549A2D879 + + + cdfnorm Family Functions Relationship + | + + + .. container:: imagecenter + + + |image2| + + + Useful relations for these functions: + + + |image3| + + + | + + + .. container:: imagecenter + + + |image4| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - a < underflow + - +0 + - ``status::underflow`` + * - +∞ + - +1 + -   + * - -∞ + - +0 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use cdfnormcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vcdfnorm.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Special + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-817D9F12-6BD9-4B74-BFA0-39A03D0660C3-low.jpg + :class: .eq +.. |image1| image:: ../equations/GUID-7CA9B2F2-8D7C-4955-8EA8-D67616FB5B08-low.gif +.. |image2| image:: ../equations/GUID-0B9A59CC-C914-429D-AF87-93B16DABD291-low.jpg +.. |image3| image:: ../equations/GUID-02486559-84D2-4880-8EAB-2085A5BE2D10-low.jpg + :class: .eq +.. |image4| image:: ../equations/GUID-7CA9B2F2-8D7C-4955-8EA8-D67616FB5B08-low.gif + diff --git a/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst b/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst new file mode 100644 index 0000000000..6c224bc367 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst @@ -0,0 +1,305 @@ +.. _cdfnorminv: + +cdfnorminv +========== + + +.. container:: + + + Computes the inverse cumulative normal distribution function values + of vector elements. + + + .. container:: section + :name: GUID-1180EB84-8CC6-4777-BDBC-E14AB528AF5F + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void cdfnorminv(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event cdfnorminv(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``cdfnorminv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-735CEE50-6E74-441E-A540-2651797EB675 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The cdfnorminv(a) function computes the inverse cumulative normal + distribution function values for elements of the input vector ``a`` + and writes them to the output vector ``y``. + + + The inverse cumulative normal distribution function is defined as + given by: + + + | + + + .. container:: imagecenter + + + |image0| + + + where cdfnorm(x) denotes the cumulative normal distribution function. + + + Useful relations: + + + | + + + .. container:: imagecenter + + + |image1| + + + where erfinv(x)denotes the inverse error function and + erfcinv(x)denotes the inverse complementary error functions. + + + The following figure illustrates the relationships among erfinv + family functions (erfinv, erfcinv, cdfnorminv). + + + .. container:: figtop + :name: GUID-74857793-0E1E-4839-A913-8EC1C23DB719 + + + cdfnorminv Family Functions Relationship + | + + + .. container:: imagecenter + + + |image2| + + + Useful relations for these functions: + + + |image3| + + + | + + + .. container:: imagecenter + + + |image4| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0.5 + - +0 + -   + * - +1 + - +∞ + - ``status::sing`` + * - -0 + - -∞ + - ``status::sing`` + * - +0 + - -∞ + - ``status::sing`` + * - a < -0 + - QNAN + - ``status::errdom`` + * - a > +1 + - QNAN + - ``status::errdom`` + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use cdfnorminvcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vcdfnorminv.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Special + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-A3054E0D-CFC1-44E8-89F7-B5A232903EE9-low.jpg + :class: .eq +.. |image1| image:: ../equations/GUID-CF961E8B-3127-4493-839A-C045E325BC42-low.jpg +.. |image2| image:: ../equations/GUID-8C1F2803-8F8F-4795-BF16-41856C6442CF-low.jpg +.. |image3| image:: ../equations/GUID-D4002137-8BA4-4D20-871B-550F2C6F9CE8-low.gif + :class: .eq +.. |image4| image:: ../equations/GUID-CF961E8B-3127-4493-839A-C045E325BC42-low.jpg + diff --git a/source/elements/oneMKL/source/domains/vm/ceil.rst b/source/elements/oneMKL/source/domains/vm/ceil.rst new file mode 100644 index 0000000000..d1e5eadf07 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/ceil.rst @@ -0,0 +1,214 @@ +.. _ceil: + +ceil +==== + + +.. container:: + + + Computes an integer valuerounded towards plus infinity for each + vector element. + + + .. container:: section + :name: GUID-BC6BF105-11C2-491D-BDBF-1574EF510AA6 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void ceil(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event ceil(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``ceil`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-4F4B28FA-937B-4966-8078-90DE0E5AB226 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The ceil(a) functioncomputes an integer valuerounded towards plus + infinity for each vector element. + + + | + | |image0| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - -∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The ceil function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ceilcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vceil.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Rounding + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-A3089763-5ACF-46DB-AFFF-197043DD5932-low.gif + diff --git a/source/elements/oneMKL/source/domains/vm/cis.rst b/source/elements/oneMKL/source/domains/vm/cis.rst new file mode 100644 index 0000000000..cd9c0cd3f5 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/cis.rst @@ -0,0 +1,221 @@ +.. _cis: + +cis +=== + + +.. container:: + + + Computes complex exponent of real vector elements (cosine and sine of + real vector elements combined to complex value). + + + .. container:: section + :name: GUID-17081E6F-15C0-4E14-8B93-C1113AEC0663 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void cis(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event cis(queue& exec_queue, int64_t n, A\* a, R\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``cis`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + - R + * - ``float`` + - ``std::complex`` + * - ``double`` + - ``std::complex`` + + + + +.. container:: section + :name: GUID-7D4F56C4-F5E9-4AA9-8D7B-04CE2ED6584A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The cis(a) function computes complex exponent of real vector elements + (cosine and sine of real vector elements combined to complex value). + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - + 0 + - +1+i·0 + -   + * - - 0 + - +1-i·0 + -   + * - + ∞ + - QNAN+i·QNAN + - ``status::errdom`` + * - - ∞ + - QNAN+i·QNAN + - ``status::errdom`` + * - QNAN + - QNAN+i·QNAN + -   + * - SNAN + - QNAN+i·QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use ciscan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vcis.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/clear_status.rst b/source/elements/oneMKL/source/domains/vm/clear_status.rst new file mode 100644 index 0000000000..c865af23ab --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/clear_status.rst @@ -0,0 +1,117 @@ +.. _clear_status: + +clear_status +============ + + +.. container:: + + + Sets the VM Status according to ``status::success`` and returns the + previous VM Status. + + + .. container:: section + :name: GUID-927525F3-1A75-4E98-B8F3-7AF6A97263E0 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: uint8_t clear_status (queue& exec_queue ) + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The clear_status function sets the VM status to + ``status::success`` and returns the previous VM status. + + + The global VM Status is a single value and it accumulates all + errors that happen inside VM functions. The following table lists + the possible error values. + + + .. list-table:: + :header-rows: 1 + + * - Status + - Description + * - Successful Execution + * - ``status::success`` + - VM function execution completed successfully + * - ``status::not_defined`` + - VM status not defined + * - Warnings + * - ``status::accuracy_warning`` + - VM function execution completed successfully in a different accuracy mode + * - Computational Errors + * - ``status::errdom`` + - Values are out of a range of definition producing invalid (QNaN) result + * - ``status::sing`` + - Values cause divide-by-zero (singularity) errors and produce and invalid (QNaN or Inf) result + * - ``status::overflow`` + - An overflow happened during the calculation process + * - ``status::underflow`` + - An underflow happened during the calculation process + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + return value (old_status) + Specifies the former VM status. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + :: + + + uint8_t olderr = clear_status (exec_queue); + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Service + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/conj.rst b/source/elements/oneMKL/source/domains/vm/conj.rst new file mode 100644 index 0000000000..f884f5b229 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/conj.rst @@ -0,0 +1,176 @@ +.. _conj: + +conj +==== + + +.. container:: + + + Performs element by element conjugation of the vector. + + + .. container:: section + :name: GUID-3EEB696F-604F-42BC-B1E8-B6F55261DD02 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void conj(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event conj( queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``conj`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-4C759AF5-F683-48FE-8C47-42489060712D + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The conj function performs element by element conjugation of the + vector. + + + No special values are specified. The conj function does not generate + any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use conjcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vconj.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/copysign.rst b/source/elements/oneMKL/source/domains/vm/copysign.rst new file mode 100644 index 0000000000..90b01331a2 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/copysign.rst @@ -0,0 +1,207 @@ +.. _copysign: + +copysign +======== + + +.. container:: + + + Returns vector of elements of one argument with signs changed to + match other argument elements. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void copysign(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event copysign(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``copysign`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-D18021B3-0F13-4EB3-82CC-3F8D948E1B42 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The copysign(a,b) function returns the first vector argument elements + withthe sign changed to match the sign of the second vector + argument'scorresponding elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - any value + - positive value + - +any value + -   + * - any value + - negative value + - -any value + -   + + + + + The copysign(a,b) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use copysigncan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vcopysign.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Miscellaneous VM + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/cos.rst b/source/elements/oneMKL/source/domains/vm/cos.rst new file mode 100644 index 0000000000..37a17372ee --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/cos.rst @@ -0,0 +1,235 @@ +.. _cos: + +cos +=== + + +.. container:: + + + Computes cosine of vector elements. + + + .. container:: section + :name: GUID-DE4139A3-D1BE-4427-A179-6A642CCFFBCC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void cos(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event cos(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``cos`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-BDA09343-01F8-4DFD-8576-C32985D46319 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The cos(a) function computes cosine of vector elements. + + + Note that arguments ``abs(a[i]) ≤ 213`` and ``abs(a[i]) ≤ 216`` for + single and double precisions, respectively, are called fast + computational path. These are trigonometric function arguments for + which VM provides the best possible performance. Avoid arguments that + do not belong to the fast computational path in the VM High Accuracy + (HA) and Low Accuracy (LA) functions. Alternatively, you can use VM + Enhanced Performance (EP) functions that are fast on the entire + function domain. However, these functions provide less accuracy. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - VM Error Status + * - +0 + - +1 + -   + * - -0 + - +1 + -   + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + Specificationsfor special values of the complex functions are defined + according to the following formula + + + ``Cos(z) = Cosh(i*z)``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use coscan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vcos.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/cosd.rst b/source/elements/oneMKL/source/domains/vm/cosd.rst new file mode 100644 index 0000000000..cb1aaf37d5 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/cosd.rst @@ -0,0 +1,230 @@ +.. _cosd: + +cosd +==== + + +.. container:: + + + Computes the cosine of vector elements multiplied by ``π``/180. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void cosd(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event cosd(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``cosd`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-970C79B2-01A2-4220-98D7-8196EE565DD9 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The cosd(a) function is a degree argument trigonometric fuction. It + computes the cosine of vector elements multiplied by ``π``/180. For + an argument ``a``, the function computes cos(``π``\ \*\ ``a``/180). + + + Note that arguments abs(``a``\ :sub:`i`) ≤ 2\ :sup:`24` for single + precision or abs(``a``\ :sub:`i` ) ≤ 2\ :sup:`52` for double + precision, they belong to the *fast computational path*: + trigonometric function arguments for which VM provides the best + possible performance. Avoid arguments with do not belong to the fast + computational path in VM High Accuracy (HA) or Low Accuracy (LA) + functions. For arguments which do not belong to the fast + computational path you can use VM Enhanced Performance (EP) + functions, which are fast on the entire function domain. However, + these functions provide lower accuracy. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +1 + -   + * - -0 + - +1 + -   + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use cosdcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vcosd.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/cosh.rst b/source/elements/oneMKL/source/domains/vm/cosh.rst new file mode 100644 index 0000000000..25a3d9104f --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/cosh.rst @@ -0,0 +1,330 @@ +.. _cosh: + +cosh +==== + + +.. container:: + + + Computes hyperbolic cosine of vector elements. + + + .. container:: section + :name: GUID-1E7FCB76-249C-486E-A99E-6C2A83E29431 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void cosh(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event cosh(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``cosh`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-47AF986B-BB57-4675-9336-CB796EA4C19D + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The cosh(a) function computes hyperbolic cosine of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Data Type + - Threshold Limitations on Input Parameters + * - single precision + - ``-Log(FLT_MAX)-Log2 overflow + - +∞ + - ``status::overflow`` + * - X < -overflow + - +∞ + - ``status::overflow`` + * - +∞ + - +∞ + -   + * - -∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - + - + - + - + - + - + - + - + * - +i·∞ + - +∞+i·QNAN + - QNAN+i·QNAN + - QNAN-i·0 + - QNAN+i·0 + - QNAN+i·QNAN + - +∞+i·QNAN + - QNAN+i·QNAN + * - +i·Y + - +∞·Cos(Y)- i·∞·Sin(Y) + -   + -   + -   + -   + - +∞·CIS(Y) + - QNAN+i·QNAN + * - +i·0 + - +∞-i·0 + -   + - +1-i·0 + - +1+i·0 + -   + - +∞+i·0 + - QNAN+i·0 + * - -i·0 + - +∞+i·0 + -   + - +1+i·0 + - +1-i·0 + -   + - +∞-i·0 + - QNAN-i·0 + * - -i·Y + - +∞·Cos(Y)- i·∞·Sin(Y) + -   + -   + -   + -   + - +∞·CIS(Y) + - QNAN+i·QNAN + * - -i·∞ + - +∞+i·QNAN + - QNAN+i·QNAN + - QNAN+i·0 + - QNAN-i·0 + - QNAN+i·QNAN + - +∞+i·QNAN + - QNAN+i·QNAN + * - +i·NAN + - +∞+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN-i·QNAN + - QNAN+i·QNAN + - +∞+i·QNAN + - QNAN+i·QNAN + + + + + Notes: + + + - The complex cosh(a) function sets the VM Error Status to + status::overflow in the case of overflow, that is, when RE(a), + IM(a) are finite non-zero numbers, but the real or imaginary part + of the exact result is so large that it does not meet the target + precision. + + + - ``cosh(CONJ(a))=CONJ(cosh(a))`` + + + - ``cosh(-a)=cosh(a)``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use coshcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vcosh.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Hyperbolic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/cospi.rst b/source/elements/oneMKL/source/domains/vm/cospi.rst new file mode 100644 index 0000000000..d32715bb87 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/cospi.rst @@ -0,0 +1,232 @@ +.. _cospi: + +cospi +===== + + +.. container:: + + + Computes the cosine of vector elements multiplied by ``π``. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void cospi(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event cospi(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``cospi`` supports the following precisions.: + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-57828C59-AB09-4ACF-BF98-470A7BBED9DA + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The cospi(a) function computes the cosine of vector elements + multiplied by ``π``. For an argument ``a``, the function computes + cos(``π``\ \*\ ``a``). + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +1 + -   + * - -0 + - +1 + -   + * - ``n`` + 0.5, for any integer ``n`` where ``n`` + 0.5 is representable + - +0 + -   + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + If arguments abs(``a``\ :sub:`i`) ≤ 2\ :sup:`22` for single precision + or abs(``a``\ :sub:`i` ) ≤ 2\ :sup:`51` for double precision, they + belong to the *fast computational path*: arguments for which VM + provides the best possible performance. Avoid arguments which do not + belong to the fast computational path in VM High Accuracy (HA) or Low + Accuracy (LA) functions. For arguments which do not belong to the + fast computational path you can use VM Enhanced Performance (EP) + functions, which are fast on the entire function domain. However, + these functions provide lower accuracy. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use cospican be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vcospi.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/create_error_handler.rst b/source/elements/oneMKL/source/domains/vm/create_error_handler.rst new file mode 100644 index 0000000000..d8ebe514a4 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/create_error_handler.rst @@ -0,0 +1,413 @@ +.. _create_error_handler: + +create_error_handler +==================== + + +.. container:: + + + Creates the local VM Error Handler for a function.. + + + .. container:: section + :name: GUID-6F502D48-7B38-47E3-9A84-5A27A98BE930 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. container:: dlsyntaxpara + + + .. cpp:function:: error_handler create_error_handler( buffer & errarray, int64_t length = 1, uint8_t errstatus = status::not_defined, T fixup = 0.0, bool copysign = false ) + + USM API: + + + .. cpp:function:: error_handler create_error_handler( uint8_t\* errarray, int64_t length = 1, uint8_t errstatus = status::not_defined, T fixup = 0.0, bool copysign = false ) + + ``create_error_handler`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + + .. container:: section + :name: GUID-411FA652-F957-4C2D-95FA-3538EE600A54 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The create_error_handler creates the local VM Error handler to be + passed to VM functions which support error handling. + + + The local VM Error Handler supports three modes: + + + - **Single status mode**: all errors happened during function + execution are being written into one status value. + + + At the execution end the single value is either un-changed if + no errors happened or contained accumulated (merged by bitwise + OR) error statuses happened in function execution. + + + Set the array pointer to any ``status`` object and the length + equals 1 to enable this mode. + + + - **Multiple status mode**: error statuses are saved as an array + by indices where they happen. + + + Notice that only error statuses are being written into the + array, the success statuses are not to be written. + + + That means the array needs to be allocated and initialized by + user before function execution. + + + To enable this mode allocate ``status`` array with the same + size as argument and result vectors, set the errarray pointer + to it and the length to the vector size. + + + - **Fixup mode**: for all arguments which caused specific error + status results to be overwritten by a user-defined value. + + + To enable this mode set desirable errstatus and fixup values. + The fixup value is written to results for each argument which + caused the errstatus error. + + + If the copysign is set to true then fixup value’s sign set to + the same sign of the argument which caused the errstatus – a + suitable option for symmetric math functions. + + + The following table lists the possible computational error values. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Status + - Description + * - Successful Execution + * - ``status::success`` + - VM function execution completed successfully + * - ``status::not_defined`` + - VM status not defined + * - Warnings + * - ``status::accuracy_warning`` + - VM function execution completed successfully in a different accuracy mode + * - Computational Errors + * - ``status::errdom`` + - Values are out of a range of definition producing invalid (QNaN) result + * - ``status::sing`` + - Values cause divide-by-zero (singularity) errors and produce and invalid (QNaN or Inf) result + * - ``status::overflow`` + - An overflow happened during the calculation process + * - ``status::underflow`` + - An underflow happened during the calculation process + + + + + Notes: + + + - You must allocate and initialize array errarray before calling + VM functions in multiple status error handling mode. + + + The array should be large enough to contain ``n`` error codes, + where ``n`` is the same as input\output vector size for the VM + function. + + + - If no arguments passed to the create_error_handler function, + then the empty object is created with all of three error + handling modes disabled. + + + In this case, the VM math functions set the global error status + only. + + + .. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + errarray + Array to store error statuses (should be a buffer for buffer + API). + + + length + Length of the errarray. This is an optional argument, default + value is ``1``. + + + errcode + Error status to fixup results. This is an optional argument, + default value is ``status::not_defined``. + + + fixup + Fixup value for results. This is an optional argument, default + value is ``0.0``. + + + copysign + Flag for setting the fixup value's sign the same as the + argument’s. This is an optional argument, default value + ``false``. + + + .. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + return value + Specifies the error handler object to be created. + + + .. container:: section + :name: FUNCTN_VML_SETMODE-EX1 + + + .. rubric:: Examples + :name: examples + :class: sectiontitle + + + The following examples are possible usage models (USM API). + + + Single status mode with create_error_handler(): + + + :: + + + error_handler handler = vm::create_error_handler (st); + vm::sin(exec_queue, 1000, a, r, handler); + if ( st[0] & status::errdom) + { + std::cout << ”Errdom status returned” << std::endl; + } + + + Single status mode without create_error_handler(): + + + :: + + + vm::sin(exec_queue, 1000, a, r, {st }); + std::cout << status << std::endl; + if ( st[0] & status::errdom) + { + std::cout << ”Errdom status returned” << std::endl; + } + + + The ``st`` contains either ``status::success`` or accumulated + error statuses if computational errors occured in ``vm::erfinv``. + + + Multiple status mode with create_error_handler(): + + + :: + + + error_handler handler = vm::create_error_handler (st, 1000); + vm::inv(exec_queue, 1000, a, r, handler); + for(int i=0; i<1000; i++) + std::cout << st[i] << std::endl; + + + Multiple status mode without create_error_handler(): + + + :: + + + vm::inv(exec_queue, 1000, a, r, {st, 1000}); + for(int i=0; i<1000; i++) + std::cout << st[i] << std::endl; + + + The ``st`` array contains all codes for computational errors that + occur at the same vector indices ``i`` as the arguments that + caused the errors. + + + Fixup status mode with create_error_handler(): + + + :: + + + float fixup = 1.0; + error_handler handler = vm::create_error_handler (nullptr, 0, status::errdom, fixup, true); + vm::erfinv(exec_queue, 1000, a, r, handler); + + + Fixup status mode without create_error_handler(): + + + :: + + + float fixup = 1.0; + vm::erfinv(exec_queue, 1000, a, r, { nullptr, 0, status::errdom, fixup, true }); + + + All results in ``r`` which computation generated + ``status::errdom`` are replaced by ``fixup`` values. + + + In the example above all the erfinv function’s NAN results caused + by greater than \|1\| arguments are replaced by 1.0 value with the + same sign as the corresponding argument. + + + Mixed (Single and Fixup) status mode with create_error_handler(): + + + :: + + + float fixup = 1e38; + error_handler handler = vm::create_error_handler (st, 1, status::overflow, fixup); + vm::exp(exec_queue, 1000, a, r, handler); + if ( st & status::underflow) + { + std::cout << ”Underflow status returned” << std::endl; + } + + + Mixed (Single and Fixup) status mode without + create_error_handler(): + + + :: + + + float fixup = 1e38; + vm::exp(exec_queue, 1000, a, r, {st, 1, status::overflow, fixup}); + if ( st & status::underflow) + { + std::cout << ”Underflow status returned” << std::endl; + } + + + Mixed (Multiple and Fixup) status mode with + create_error_handler(): + + + :: + + + float fixup = 1.0; + error_handler handler = vm::create_error_handler (st, 1000, status::errdom, fixup); + vm::acospi(exec_queue, 1000, a, r, handler); + for(int i=0; i<1000; i++) + std::cout << st[i] << std::endl; + + + Mixed (Multiple and Fixup) status mode without + create_error_handler(): + + + :: + + + float fixup = 1.0; + vm::acospi(exec_queue, 1000, a, r,{ st, 1000, status::errdom, fixup}); + for(int i=0; i<1000; i++) + std::cout << st[i] << std::endl; + + + The ``st`` array contains all codes for computational errors that + occur at the same vector indices ``i`` as the arguments that + caused the errors. Additionally, all results in ``r`` which + computation generated ``status::errdom`` are replaced by ``fixup`` + values. + + + No local error handling mode: + + + :: + + + vm::pow(exec_queue, n, a, b, r); + uint8_t err = vm::get_status (exec_queue); + + + if (err & status::errdom) + { + std::cout << ”Errdom status returned” << std::endl; + } + + + if (err & status::sing) + { + std::cout << ”Singularity status returned” << std::endl; + } + + + Only global accumulated error status ``err`` is set. + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Service + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/div.rst b/source/elements/oneMKL/source/domains/vm/div.rst new file mode 100644 index 0000000000..48e8fbb159 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/div.rst @@ -0,0 +1,272 @@ +.. _div: + +div +=== + + +.. container:: + + + Performs element by element division of vector ``a`` by vector ``b`` + + + .. container:: section + :name: GUID-C1A3E7BF-3B61-46CE-9B46-F0F370C0020B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void div(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event div(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``div`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-F80A505B-EB8E-4F49-A7BA-FA962EB04EA3 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The div(a,b) function performs element by element division of vector + ``a`` by vector ``b``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - VM Error Status + * - X > +0 + - +0 + - +∞ + - ``status::sing`` + * - X > +0 + - -0 + - -∞ + - ``status::sing`` + * - X < +0 + - +0 + - -∞ + - ``status::sing`` + * - X < +0 + - -0 + - +∞ + - ``status::sing`` + * - +0 + - +0 + - QNAN + - ``status::sing`` + * - -0 + - -0 + - QNAN + - ``status::sing`` + * - X > +0 + - +∞ + - +0 + -   + * - X > +0 + - -∞ + - -0 + -   + * - +∞ + - +∞ + - QNAN + -   + * - -∞ + - -∞ + - QNAN + -   + * - QNAN + - QNAN + - QNAN + -   + * - SNAN + - SNAN + - QNAN + -   + + + + + Specifications for special values of the complex functions are + defined according to the following formula + + + ``Div(x1+i*y1,x2+i*y2) = (x1+i*y1)*(x2-i*y2)/(x2*x2+y2*y2)``. + + + Overflow in a complex function occurs when ``x2+i*y2`` is not zero, + x1, x2, y1, y2 are finite numbers, but the real or imaginary part of + the exact result is so large that it does not fit the target + precision. In that case, the function returns ∞ in that part of the + result, and sets the VM Error Status to status::overflow. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use divcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vdiv.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/erf.rst b/source/elements/oneMKL/source/domains/vm/erf.rst new file mode 100644 index 0000000000..0e6ea1df7a --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/erf.rst @@ -0,0 +1,283 @@ +.. _erf: + +erf +=== + + +.. container:: + + + Computes the error function value of vector elements. + + + .. container:: section + :name: GUID-3B72BA93-E9E8-4CC9-AB9D-8680D2B5D272 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void erf(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event erf(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``erf`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-79EB3648-1E04-434D-9F1C-ADD94918B7F5 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The erf function computes the error function values for elements of + the input vector ``a`` and writes them to the output vector ``y``. + + + The error function is defined as given by: + + + .. container:: imagecenter + + + |image0| + + + Useful relations: + + + |image1| + + + where erfc is the complementary error function. + + + |image2| + + + where + + + |image3| + + + is the cumulative normal distribution function. + + + |image4| + + + where ``Φ-1(x)`` and ``erf-1(x)`` are the inverses to ``Φ(x)`` and + ``erf(x)``, respectively. + + + The following figure illustrates the relationships among erf family + functions (erf, erfc, cdfnorm). + + + .. container:: figtop + :name: GUID-C79F54F4-8A82-4E74-9DA6-1D7549A2D879 + + + erf Family Functions Relationship + | + + + .. container:: imagecenter + + + |image5| + + + Useful relations for these functions: + + + |image6| + + + | + + + .. container:: imagecenter + + + |image7| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +∞ + - +1 + -   + * - -∞ + - -1 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use erfcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/verf.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Special + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-8742E2B1-94AF-4622-B964-181611E3D1F2-low.jpg + :class: .eq +.. |image1| image:: ../equations/GUID-6ABD7CD8-8E05-409D-B84F-9B88E4CDE9DB-low.gif + :class: .eq +.. |image2| image:: ../equations/GUID-41FCF9BC-28B7-4030-B904-1DBA03DD328C-low.gif + :class: .eq +.. |image3| image:: ../equations/GUID-EA77C856-3F93-40ED-AB2A-0F1BD8C4CE7A-low.jpg + :class: .eq +.. |image4| image:: ../equations/GUID-895E6B37-AC54-40D4-B134-E2816B7F30D3-low.gif + :class: .eq +.. |image5| image:: ../equations/GUID-0B9A59CC-C914-429D-AF87-93B16DABD291-low.jpg +.. |image6| image:: ../equations/GUID-02486559-84D2-4880-8EAB-2085A5BE2D10-low.jpg + :class: .eq +.. |image7| image:: ../equations/GUID-7CA9B2F2-8D7C-4955-8EA8-D67616FB5B08-low.gif + diff --git a/source/elements/oneMKL/source/domains/vm/erfc.rst b/source/elements/oneMKL/source/domains/vm/erfc.rst new file mode 100644 index 0000000000..bd8816a00e --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/erfc.rst @@ -0,0 +1,301 @@ +.. _erfc: + +erfc +==== + + +.. container:: + + + Computes the complementary error function value of vector elements. + + + .. container:: section + :name: GUID-0CFCF122-275C-4778-A86A-4F9E6DD81EBC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void erfc(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event erfc(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``erfc`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-453802E1-D316-46A3-B888-4605174DA49A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The erfc function computes the complementary error function values + for elements of the input vector ``a`` and writes them to the output + vector ``y``. + + + The complementary error function is defined as follows: + + + | + + + .. container:: imagecenter + + + |image0| + + + Useful relations: + + + |image1| + + + |image2| + + + where + + + |image3| + + + is the cumulative normal distribution function. + + + |image4| + + + where ``Φ-1(x)`` and ``erf-1(x)`` are the inverses to ``Φ(x)`` and + ``erf(x)``, respectively. + + + The following figure illustrates the relationships among erf family + functions (erf, erfc, cdfnorm). + + + .. container:: figtop + :name: GUID-C79F54F4-8A82-4E74-9DA6-1D7549A2D879 + + + erfc Family Functions Relationship + | + + + .. container:: imagecenter + + + |image5| + + + Useful relations for these functions: + + + |image6| + + + | + + + .. container:: imagecenter + + + |image7| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - a > underflow + - +0 + - ``status::underflow`` + * - +∞ + - +0 + -   + * - -∞ + - +2 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use erfccan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/verfc.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Special + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-FB387120-1A86-45B9-BE20-97247EF0ABB5-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-51FA6703-70D8-4D01-B7AB-A163F4CDFC94-low.jpg + :class: .eq +.. |image2| image:: ../equations/GUID-41FCF9BC-28B7-4030-B904-1DBA03DD328C-low.gif + :class: .eq +.. |image3| image:: ../equations/GUID-9A33FF12-964D-4450-949B-6AB7246435C7-low.gif + :class: .eq +.. |image4| image:: ../equations/GUID-ABAAF79E-E46B-4053-8A64-9CC8B9C84A3F-low.jpg + :class: .eq +.. |image5| image:: ../equations/GUID-0B9A59CC-C914-429D-AF87-93B16DABD291-low.jpg +.. |image6| image:: ../equations/GUID-02486559-84D2-4880-8EAB-2085A5BE2D10-low.jpg + :class: .eq +.. |image7| image:: ../equations/GUID-7CA9B2F2-8D7C-4955-8EA8-D67616FB5B08-low.gif + diff --git a/source/elements/oneMKL/source/domains/vm/erfcinv.rst b/source/elements/oneMKL/source/domains/vm/erfcinv.rst new file mode 100644 index 0000000000..8fa301652d --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/erfcinv.rst @@ -0,0 +1,310 @@ +.. _erfcinv: + +erfcinv +======= + + +.. container:: + + + Computes the inverse complementary error function value of vector + elements. + + + .. container:: section + :name: GUID-6FECC102-741F-405A-885A-61B224835365 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void erfcinv(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event erfcinv(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``erfcinv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-C96C0262-CEAA-4D3A-B1F3-687165647F9F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The erfcinv(a) function computes the inverse complimentary error + function values for elements of the input vector ``a`` and writes + them to the output vector ``y``. + + + The inverse complementary error function is defined as given by: + + + | + + + .. container:: imagecenter + + + |image0| + + + | + + + .. container:: imagecenter + + + |image1| + + + | + + + .. container:: imagecenter + + + |image2| + + + where erf(x) denotes the error function and erfinv(x) denotes the + inverse error function. + + + The following figure illustrates the relationships among erfinv + family functions (erfinv, erfcinv, cdfnorminv). + + + .. container:: figtop + :name: GUID-74857793-0E1E-4839-A913-8EC1C23DB719 + + + erfcinv Family Functions Relationship + | + + + .. container:: imagecenter + + + |image3| + + + Useful relations for these functions: + + + |image4| + + + | + + + .. container:: imagecenter + + + |image5| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +1 + - +0 + -   + * - +2 + - -∞ + - ``status::sing`` + * - -0 + - +∞ + - ``status::sing`` + * - +0 + - +∞ + - ``status::sing`` + * - a < -0 + - QNAN + - ``status::errdom`` + * - a > +2 + - QNAN + - ``status::errdom`` + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use erfcinvcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/verfcinv.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Special + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-9BCB2B87-3DED-4764-A182-30A4FAA4A2E2-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-5F24679E-82BB-4ECB-AC87-02FC7CF3C77F-low.jpg + :class: .eq +.. |image2| image:: ../equations/GUID-788A8218-34E5-4625-8E51-A5D36A113D23-low.gif + :class: .eq +.. |image3| image:: ../equations/GUID-8C1F2803-8F8F-4795-BF16-41856C6442CF-low.jpg +.. |image4| image:: ../equations/GUID-D4002137-8BA4-4D20-871B-550F2C6F9CE8-low.gif + :class: .eq +.. |image5| image:: ../equations/GUID-CF961E8B-3127-4493-839A-C045E325BC42-low.jpg + diff --git a/source/elements/oneMKL/source/domains/vm/erfinv.rst b/source/elements/oneMKL/source/domains/vm/erfinv.rst new file mode 100644 index 0000000000..ff73c69580 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/erfinv.rst @@ -0,0 +1,316 @@ +.. _erfinv: + +erfinv +====== + + +.. container:: + + + Computes inverse error function value of vector elements. + + + .. container:: section + :name: GUID-2527E9AC-23A0-4A39-9485-EE9CD4C48CC4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void erfinv(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event erfinv(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``erfinv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-16B0A421-303F-4559-8B48-87662E21759B + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The erfinv(a) function computes the inverse error function values for + elements of the input vector ``a`` and writes them to the output + vector ``y`` + + + ``y = erf-1(a)``, + + + | where ``erf(x)`` is the error function defined as given by: + + + .. container:: imagecenter + + + |image0| + + + Useful relations: + + + |image1| + + + where erfc is the complementary error function. + + + |image2| + + + where + + + |image3| + + + is the cumulative normal distribution function. + + + |image4| + + + where ``Φ-1(x)`` and ``erf-1(x)`` are the inverses to ``Φ(x)`` and + ``erf(x)``, respectively. + + + The following figure illustrates the relationships among erfinv + family functions (erfinv, erfcinv, cdfnorminv). + + + .. container:: figtop + :name: GUID-74857793-0E1E-4839-A913-8EC1C23DB719 + + + erfinv Family Functions Relationship + | + + + .. container:: imagecenter + + + |image5| + + + Useful relations for these functions: + + + |image6| + + + | + + + .. container:: imagecenter + + + |image7| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +1 + - +∞ + - ``status::sing`` + * - -1 + - -∞ + - ``status::sing`` + * - \|a\| > 1 + - QNAN + - ``status::errdom`` + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use erfinvcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/verfinv.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Special + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-4835D5B4-6232-45CD-9A49-0264F8B0DBF4-low.gif + :class: .eq +.. |image1| image:: ../equations/GUID-0A406EAC-6A1D-4D81-977C-08C018161E3F-low.jpg + :class: .eq +.. |image2| image:: ../equations/GUID-0026D841-74F3-43C0-8EB5-F9E4107EF95D-low.gif + :class: .eq +.. |image3| image:: ../equations/GUID-F928F918-624A-444A-BB76-7D26D1E1BC62-low.gif + :class: .eq +.. |image4| image:: ../equations/GUID-02EEA5FC-8F46-4034-86D9-99900F93373C-low.gif + :class: .eq +.. |image5| image:: ../equations/GUID-8C1F2803-8F8F-4795-BF16-41856C6442CF-low.jpg +.. |image6| image:: ../equations/GUID-D4002137-8BA4-4D20-871B-550F2C6F9CE8-low.gif + :class: .eq +.. |image7| image:: ../equations/GUID-CF961E8B-3127-4493-839A-C045E325BC42-low.jpg + diff --git a/source/elements/oneMKL/source/domains/vm/exp.rst b/source/elements/oneMKL/source/domains/vm/exp.rst new file mode 100644 index 0000000000..4fee79ffed --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/exp.rst @@ -0,0 +1,324 @@ +.. _exp: + +exp +=== + + +.. container:: + + + Computes an exponential of vector elements. + + + .. container:: section + :name: GUID-00F57D01-9DEC-4760-9E15-3F34947E08FC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void exp(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event exp(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``exp`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-B0C816A4-40E7-4221-B809-E4C3030A2073 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The exp(a) function computes an exponential of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Data Type + - Threshold Limitations on Input Parameters + * - single precision + - ``a[i] < Log( FLT_MAX )`` + * - double precision + - ``a[i] < Log( DBL_MAX )`` + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +1 + -   + * - -0 + - +1 + -   + * - a > overflow + - +∞ + - ``status::overflow`` + * - a < underflow + - +0 + - ``status::overflow`` + * - +∞ + - +∞ + -   + * - -∞ + - +0 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - + - + - + - + - + - + - + - + * - +i·∞ + - + - + - + - + - + - + - + * - +i·Y + - + -   + -   + -   + -   + - + - + * - +i·0 + - + -   + - + - + -   + - + - + * - -i·0 + - + -   + - + - + -   + - + - + * - -i·Y + - + -   + -   + -   + -   + - + - + * - -i·∞ + - + - + - + - + - + - + - + * - +i·NAN + - + - + - + - + - + - + - + + + + + Notes: + + + - The complex exp(z) function sets the VM Error Status to + status::overflow in the case of overflow, that is, when both RE(z) + and IM(z) are finite non-zero numbers, but the real or imaginary + part of the exact result is so large that it does not meet the + target precision. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use expcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vexp.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Exponential and Logarithmic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/exp10.rst b/source/elements/oneMKL/source/domains/vm/exp10.rst new file mode 100644 index 0000000000..57dabd2252 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/exp10.rst @@ -0,0 +1,239 @@ +.. _exp10: + +exp10 +===== + + +.. container:: + + + Computes the base 10 exponential of vector elements. + + + .. container:: section + :name: SYNTAX_8AF46B7241F94765A2CAFFAEB423AF8B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void exp10(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event exp10(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``exp10`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-FEBDD1DA-E7FD-4777-9455-9C0D5E73CD1B + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The exp10(a) function computes the base 10 exponential of vector + elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Data Type + - Threshold Limitations on Input Parameters + * - single precision + - ``a``\ :sub:`i` < log\ :sub:`10`\ (FLT_MAX) + * - double precision + - ``a``\ :sub:`i` < log\ :sub:`10`\ (DBL_MAX) + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - VM Error Status + * - +0 + - +1 + -   + * - -0 + - +1 + -   + * - ``a`` > overflow + - +∞ + - ``status::overflow`` + * - ``a`` < underflow + - +0 + - ``status::underflow`` + * - +∞ + - +∞ + -   + * - -∞ + - +0 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use exp10can be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vexp10.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Exponential and Logarithmic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/exp2.rst b/source/elements/oneMKL/source/domains/vm/exp2.rst new file mode 100644 index 0000000000..e0e3e23b62 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/exp2.rst @@ -0,0 +1,238 @@ +.. _exp2: + +exp2 +==== + + +.. container:: + + + Computes the base 2 exponential of vector elements. + + + .. container:: section + :name: SYNTAX_8AF46B7241F94765A2CAFFAEB423AF8B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void exp2(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event exp2(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``exp2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-27880C73-038D-4C81-8501-16F21AD14F70 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The exp2 function computes the base 2 exponential of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Data Type + - Threshold Limitations on Input Parameters + * - single precision + - ``a``\ :sub:`i` < log\ :sub:`2`\ (FLT_MAX) + * - double precision + - ``a``\ :sub:`i` < log\ :sub:`2`\ (DBL_MAX) + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +1 + -   + * - -0 + - +1 + -   + * - ``a`` > overflow + - +∞ + - ``status::overflow`` + * - ``a`` < underflow + - +0 + - ``status::underflow`` + * - +∞ + - +∞ + -   + * - -∞ + - +0 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use exp2can be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vexp2.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Exponential and Logarithmic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/expint1.rst b/source/elements/oneMKL/source/domains/vm/expint1.rst new file mode 100644 index 0000000000..1bc5b503cd --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/expint1.rst @@ -0,0 +1,234 @@ +.. _expint1: + +expint1 +======= + + +.. container:: + + + Computes the exponential integral of vector elements. + + + .. container:: section + :name: GUID-00E0B6DA-99CA-40FC-AD84-C9F08D78CD7B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void expint1(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event expint1(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``expint1`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-131CC04C-F0F5-48FB-83B3-EF2194D745C4 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The expint1(a) function computes the exponential integral of vector + elements of the input vector ``a`` and writes them to the output + vector ``y``. + + + For positive real values ``x``, this can be written as: + + + |image0|. + + + For negative real values ``x``, the result is defined as NAN. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - ``x`` < +0 + - QNAN + - ``status::errdom`` + * - +0 + - +∞ + - ``status::sing`` + * - -0 + - +∞ + - ``status::sing`` + * - +∞ + - +0 + -   + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use expint1can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vexpint1.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Special + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-B229F6A5-0619-4F06-994B-8A734C356ee1.png + :class: img-middle + diff --git a/source/elements/oneMKL/source/domains/vm/expm1.rst b/source/elements/oneMKL/source/domains/vm/expm1.rst new file mode 100644 index 0000000000..3d98368c85 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/expm1.rst @@ -0,0 +1,236 @@ +.. _expm1: + +expm1 +===== + + +.. container:: + + + Computes an exponential of vector elements decreased by 1. + + + .. container:: section + :name: GUID-00E0B6DA-99CA-40FC-AD84-C9F08D78CD7B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void expm1(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event expm1(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``expm1`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-4C82DE9D-9B68-4AB9-9766-E20DF13779B1 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The expm1(a) function computes an exponential of vector elements + decreased by 1. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +1 + -   + * - -0 + - +1 + -   + * - a > overflow + - +∞ + - ``status::overflow`` + * - +∞ + - +∞ + -   + * - -∞ + - -0 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Data Type + - Threshold Limitations on Input Parameters + * - single precision + - ``a[i] < Log( FLT_MAX )`` + * - double precision + - ``a[i] < Log( DBL_MAX )`` + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use expm1can be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vexpm1.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Exponential and Logarithmic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/exponential-and-logarithmic-functions.rst b/source/elements/oneMKL/source/domains/vm/exponential-and-logarithmic-functions.rst new file mode 100644 index 0000000000..849009c616 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/exponential-and-logarithmic-functions.rst @@ -0,0 +1,51 @@ +.. _exponential-and-logarithmic-functions: + +Exponential and Logarithmic Functions +===================================== + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Mathematical + Functions `__ + + +.. container:: + + + - `exp `__ + Computes an exponential of vector elements. + - `exp2 `__ + Computes the base 2 exponential of vector elements. + - `exp10 `__ + Computes the base 10 exponential of vector elements. + - `expm1 `__ + Computes an exponential of vector elements decreased by 1. + - `ln `__ + Computes natural logarithm of vector elements. + - `log2 `__ + Computes the base 2 logarithm of vector elements. + - `log10 `__ + Computes the base 10 logarithm of vector elements. + - `log1p `__ + Computes a natural logarithm of vector elements that are increased + by 1. + - `logb `__ + Computes the exponents of the elements of input vector ``a``. + +.. toctree:: + :hidden: + + exp + exp2 + exp10 + expm1 + ln + log2 + log10 + log1p + logb diff --git a/source/elements/oneMKL/source/domains/vm/fdim.rst b/source/elements/oneMKL/source/domains/vm/fdim.rst new file mode 100644 index 0000000000..e67aabf44b --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/fdim.rst @@ -0,0 +1,216 @@ +.. _fdim: + +fdim +==== + + +.. container:: + + + Returns vector containing the differences of the corresponding + elements of the vector arguments if the first is larger and +0 + otherwise. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void fdim(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event fdim(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``fdim`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-A095107B-945F-461D-8A26-1433A0F708FB + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The fdim(a,b) function returns a vector containing the differences of + the corresponding elements of the first and second vector arguments + if the first element is larger, and +0 otherwise. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - any + - QNAN + - QNAN + -   + * - any + - SNAN + - QNAN + -   + * - QNAN + - any + - QNAN + -   + * - SNAN + - any + - QNAN + -   + + + + + The fdim(a,b) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use fdimcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vfdim.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Miscellaneous VM + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/floor.rst b/source/elements/oneMKL/source/domains/vm/floor.rst new file mode 100644 index 0000000000..dd8208e7af --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/floor.rst @@ -0,0 +1,214 @@ +.. _floor: + +floor +===== + + +.. container:: + + + Computes an integer valuerounded towards minus infinity for each + vector element. + + + .. container:: section + :name: GUID-629F82E5-3A26-41F5-9CF0-9469F7123FE9 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void floor(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event floor(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``floor`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-12B3C003-3097-48C7-9AB4-998D0A9A29EE + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The floor(a)functioncomputes an integer valuerounded towards minus + infinity for each vector element. + + + | + | |image0| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - -∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The floor function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use floorcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vfloor.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Rounding + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-41F8B94B-EEFA-4308-925A-D2DF486FBF8B-low.gif + diff --git a/source/elements/oneMKL/source/domains/vm/fmax.rst b/source/elements/oneMKL/source/domains/vm/fmax.rst new file mode 100644 index 0000000000..f0dfd883aa --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/fmax.rst @@ -0,0 +1,212 @@ +.. _fmax: + +fmax +==== + + +.. container:: + + + Returns the larger of each pair of elements of the two vector + arguments. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void fmax(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event fmax(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``fmax`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-83772858-2D27-42D4-935D-E184F60C3242 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The fmax(a,b) function returns a vector with element values equal to + the larger value from each pair of corresponding elements of the two + vectors ``a`` and ``b``: if ``a`` < ``b``\ fmax(a,b) returns ``b``, + otherwise fmax(a,b) returns ``a``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - ``a`` not NAN + - NAN + - ``a`` + -   + * - NAN + - ``b`` not NAN + - ``b`` + -   + * - NAN + - NAN + - NAN + -   + + + + + The fmax(a,b) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use fmaxcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vfmax.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Miscellaneous VM + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/fmin.rst b/source/elements/oneMKL/source/domains/vm/fmin.rst new file mode 100644 index 0000000000..8aca9a57cb --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/fmin.rst @@ -0,0 +1,212 @@ +.. _fmin: + +fmin +==== + + +.. container:: + + + Returns the smaller of each pair of elements of the two vector + arguments. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void fmin(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event fmin(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``fmin`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-F5484B73-05EF-4305-88B3-02564D39F236 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The fmin(a,b) function returns a vector with element values equal to + the smaller value from each pair of corresponding elements of the two + vectors ``a`` and ``b``: if ``a`` > ``b``\ fmin(a,b) returns ``b``, + otherwise fmin(a,b) returns ``a``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - ``a`` not NAN + - NAN + - ``a`` + -   + * - NAN + - ``b`` not NAN + - ``b`` + -   + * - NAN + - NAN + - NAN + -   + + + + + The fmin(a,b) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use fmincan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vfmin.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Miscellaneous VM + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/fmod.rst b/source/elements/oneMKL/source/domains/vm/fmod.rst new file mode 100644 index 0000000000..5e06349c2b --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/fmod.rst @@ -0,0 +1,243 @@ +.. _fmod: + +fmod +==== + + +.. container:: + + + The fmod function performs element by element computation of the + modulus function of vector ``a`` with respect to vector ``b``. + + + .. container:: section + :name: SYNTAX_64545149F3C747DD84C9C42A7CA69BFC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void fmod(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event fmod( queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``fmod`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-A9A5BC7E-6DDF-47C7-8839-9623C6DA8469 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The fmod (a,b) function computes the modulus function of each element + of vector ``a``, with respect to the corresponding elements of vector + ``b``: + + + ``ai - bi*trunc(ai/bi)`` + + + In general, the modulus function ``fmod (ai, bi)`` returns the value + ``ai - n*bi`` for some integer ``n`` such that if ``b``\ :sub:`i` is + nonzero, the result has the same sign as ``a``\ :sub:`i` and a + magnitude less than the magnitude of ``b``\ :sub:`i`. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - ``a`` not NAN + - ±0 + - NAN + - ``status::sing`` + * - ±∞ + - ``b`` not NAN + - NAN + - ``status::sing`` + * - ±0 + - ``b``\ ≠ 0, not NAN + - ±0 + -   + * - ``a`` finite + - ±∞ + - ``a`` + -   + * - NAN + - ``b`` + -   + -   + * - ``a`` + - NAN + - NAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use fmodcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vfmod.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/frac.rst b/source/elements/oneMKL/source/domains/vm/frac.rst new file mode 100644 index 0000000000..e42ff8662a --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/frac.rst @@ -0,0 +1,213 @@ +.. _frac: + +frac +==== + + +.. container:: + + + Computes a signed fractional part for each vector element. + + + .. container:: section + :name: GUID-629F82E5-3A26-41F5-9CF0-9469F7123FE9 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void frac(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event frac(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``frac`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-4FC39D38-1947-4CA5-B114-86D5D47D964A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The frac(a) functioncomputes a signed fractional part for each vector + element. + + + | + | |image0| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +0 + -   + * - -∞ + - -0 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The frac function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use fraccan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vfrac.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Rounding + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-A43FDBB0-21D0-4087-AAD9-4289019DD4C3-low.gif + diff --git a/source/elements/oneMKL/source/domains/vm/get_mode.rst b/source/elements/oneMKL/source/domains/vm/get_mode.rst new file mode 100644 index 0000000000..bb8c6d627b --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/get_mode.rst @@ -0,0 +1,116 @@ +.. _get_mode: + +get_mode +======== + + +.. container:: + + + Gets the VM mode. + + + .. container:: section + :name: GUID-E3B47247-72E8-49A0-9017-0230E36B87A4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: uint64_t get_mode( queue& exec_queue ) + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The function get_mode function returns the global VM ``mode`` + parameter that controls accuracy, handling of denormalized + numbers, and error handling options. The variable value is a + combination by bitwise OR ( \| ) of the values listed in the + following table. + + + .. list-table:: + :header-rows: 1 + + * - Value of mode + - Description + * - Accuracy Control + * - ``mode::ha`` + - High accuracy versions of VM functions. + * - ``mode::la`` + - Low accuracy versions of VM functions. + * - ``mode::ep`` + - Enhanced performance accuracy versions of VM functions. + * - Denormalized Numbers Handling Control + * - ``mode::ftzdazon`` + - Faster processing of denormalized inputs is enabled. + * - ``mode::ftzdazoff`` + - Faster processing of denormalized inputs is disabled. + * - Other + * - ``mode::not_defined`` + - VM status not defined. + + + + + See example below: + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + return value (old_mode) + Specifies the global VM mode. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + :: + + + accm = get_mode (exec_queue) & mode::accuracy_mask; + denm = get_mode (exec_queue) & mode::ftzdaz_mask; + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Service + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/get_status.rst b/source/elements/oneMKL/source/domains/vm/get_status.rst new file mode 100644 index 0000000000..6dc1857dc9 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/get_status.rst @@ -0,0 +1,127 @@ +.. _get_status: + +get_status +========== + + +.. container:: + + + Gets the VM Status. + + + .. container:: section + :name: GUID-C9FAAEB3-53AB-477F-92EF-CD2CB190A331 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: uint8_t get_status (queue& exec_queue ) + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The get_status function gets the VM status. + + + The global VM Status is a single value and it accumulates via + bitwise OR ( \| ) all computational errors that happen inside VM + functions. The following table lists the possible error values. + + + .. list-table:: + :header-rows: 1 + + * - Status + - Description + * - Successful Execution + * - ``status::success`` + - VM function execution completed successfully + * - ``status::not_defined`` + - VM status not defined + * - Warnings + * - ``status::accuracy_warning`` + - VM function execution completed successfully in a different accuracy mode + * - Computational Errors + * - ``status::errdom`` + - Values are out of a range of definition producing invalid (QNaN) result + * - ``status::sing`` + - Values cause divide-by-zero (singularity) errors and produce and invalid (QNaN or Inf) result + * - ``status::overflow`` + - An overflow happened during the calculation process + * - ``status::underflow`` + - An underflow happened during the calculation process + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + return value (status) + Specifies the VM status. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + :: + + + uint8_t err = get_status (exec_queue); + + + if (err & status::errdom) + { + std::cout << ”Errdom status returned” << std::endl; + } + + + if (err & status::sing) + { + std::cout << ”Singularity status returned” << std::endl; + } + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Service + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/hyperbolic-functions.rst b/source/elements/oneMKL/source/domains/vm/hyperbolic-functions.rst new file mode 100644 index 0000000000..77a611ff1f --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/hyperbolic-functions.rst @@ -0,0 +1,41 @@ +.. _hyperbolic-functions: + +Hyperbolic Functions +==================== + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Mathematical + Functions `__ + + +.. container:: + + + - `cosh `__ + Computes hyperbolic cosine of vector elements. + - `sinh `__ + Computes hyperbolic sine of vector elements. + - `tanh `__ + Computes hyperbolic tangent of vector elements. + - `acosh `__ + Computes inverse hyperbolic cosine (nonnegative) of vector + elements. + - `asinh `__ + Computes inverse hyperbolic sine of vector elements. + - `atanh `__ + Computes inverse hyperbolic tangent of vector elements. + +.. toctree:: + :hidden: + + cosh + sinh + tanh + acosh + asinh + atanh diff --git a/source/elements/oneMKL/source/domains/vm/hypot.rst b/source/elements/oneMKL/source/domains/vm/hypot.rst new file mode 100644 index 0000000000..cec9b6acde --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/hypot.rst @@ -0,0 +1,245 @@ +.. _hypot: + +hypot +===== + + +.. container:: + + + Computes a square root of sum of two squared elements. + + + .. container:: section + :name: GUID-CF3FB628-7187-4B37-A07E-279D76B54767 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void hypot(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event hypot(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``hypot`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-5333E1C7-2C36-43FF-8761-DE21863EA23F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The function hypot(a,b) computes a square root of sum of two squared + elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - +0 + - +0 + - +0 + -   + * - -0 + - -0 + - +0 + -   + * - +∞ + - any value + - +∞ + -   + * - any value + - +∞ + - +∞ + -   + * - SNAN + - any value + - QNAN + - INVALID + * - any value + - SNAN + - QNAN + - INVALID + * - QNAN + - any value + - QNAN + -   + * - any value + - QNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Data Type + - Threshold Limitations on Input Parameters + * - single precision + - \ ``abs(a[i]) < sqrt(FLT_MAX)``\ \ ``abs(b[i]) < sqrt(FLT_MAX)``\ + * - double precision + - \ ``abs(a[i]) < sqrt(DBL_MAX)``\ \ ``abs(b[i]) < sqrt(DBL_MAX)``\ + + + + + The hypot(a,b) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use hypotcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vhypot.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/inv.rst b/source/elements/oneMKL/source/domains/vm/inv.rst new file mode 100644 index 0000000000..f621b283d6 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/inv.rst @@ -0,0 +1,217 @@ +.. _inv: + +inv +=== + + +.. container:: + + + Performs element by element inversion of the vector. + + + .. container:: section + :name: GUID-C03EEA21-2059-44D4-9FC1-3A4AEE09A359 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void inv(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event inv(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``inv`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-523D1797-C261-4A83-A7A1-33BD86AA82B4 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The inv(a) function performs element by element inversion of the + vector. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - VM Error Status + * - +0 + - +∞ + - ``status::sing`` + * - -0 + - -∞ + - ``status::sing`` + * - +∞ + - +0 + -   + * - -∞ + - -0 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use invcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vinv.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/invcbrt.rst b/source/elements/oneMKL/source/domains/vm/invcbrt.rst new file mode 100644 index 0000000000..a77148b773 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/invcbrt.rst @@ -0,0 +1,217 @@ +.. _invcbrt: + +invcbrt +======= + + +.. container:: + + + Computes an inverse cube root of vector elements. + + + .. container:: section + :name: GUID-9BD0C721-B038-4294-8B88-19F9B5019822 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void invcbrt(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event invcbrt(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``invcbrt`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-9B049109-DB6A-4D0C-8688-CE56FFC9A64B + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The invcbrt(a)function computes an inverse cube root of vector + elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +∞ + - ``status::sing`` + * - -0 + - -∞ + - ``status::sing`` + * - +∞ + - +0 + -   + * - -∞ + - -0 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use invcbrtcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vinvcbrt.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/invsqrt.rst b/source/elements/oneMKL/source/domains/vm/invsqrt.rst new file mode 100644 index 0000000000..83841f0d38 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/invsqrt.rst @@ -0,0 +1,220 @@ +.. _invsqrt: + +invsqrt +======= + + +.. container:: + + + Computes an inverse square root of vector elements. + + + .. container:: section + :name: GUID-8C642F4B-A159-442A-B2CC-6717398CC669 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void invsqrt(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event invsqrt(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``invsqrt`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-375D3B16-CAFB-4E47-B178-AAE626C5D0DD + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The invsqrt(a) function computes an inverse square root of vector + elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - VM Error Status + * - a < +0 + - QNAN + - ``status::errdom`` + * - +0 + - +∞ + - ``status::sing`` + * - -0 + - -∞ + - ``status::sing`` + * - -∞ + - QNAN + - ``status::errdom`` + * - +∞ + - +0 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use invsqrtcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vinvsqrt.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/lgamma.rst b/source/elements/oneMKL/source/domains/vm/lgamma.rst new file mode 100644 index 0000000000..7558b2adc1 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/lgamma.rst @@ -0,0 +1,234 @@ +.. _lgamma: + +lgamma +====== + + +.. container:: + + + Computes the natural logarithm of the absolute value of gamma + function for vector elements. + + + .. container:: section + :name: GUID-8730455C-72D0-4C56-AC39-80759E7F8868 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void lgamma(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event lgamma(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``lgamma`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-A776ADA1-C8A8-47C4-A4B3-2BDE01274F6A + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The lgamma(a) function computes the natural logarithm of the absolute + value of gamma function for elements of the input vector ``a`` and + writes them to the output vector ``y``. Precision overflow thresholds + for the lgamma function are beyond the scope of this document. If the + result does not meet the target precision, the function sets the VM + Error Status to status::overflow. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +1 + - +0 + -   + * - +2 + - +0 + -   + * - +0 + - +∞ + - ``status::sing`` + * - -0 + - +∞ + - ``status::sing`` + * - negative integer + - +∞ + - ``status::sing`` + * - -∞ + - +∞ + -   + * - +∞ + - +∞ + -   + * - a > overflow + - +∞ + - ``status::overflow`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use lgammacan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vlgamma.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Special + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/linearfrac.rst b/source/elements/oneMKL/source/domains/vm/linearfrac.rst new file mode 100644 index 0000000000..2635c896b8 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/linearfrac.rst @@ -0,0 +1,288 @@ +.. _linearfrac: + +linearfrac +========== + + +.. container:: + + + Performs linear fraction transformation of vectors ``a`` and ``b`` + with scalar parameters. + + + .. container:: section + :name: GUID-EDA7015A-0E9A-42AB-A7E3-AD81C19BE84B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void linearfrac(queue& exec_queue, int64_t n, buffer& a, buffer& b, T scalea, T shifta, T scaleb, T shiftb, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event linearfrac(queue& exec_queue, int64_t n, T\* a, T\* b, T scalea, T shifta, T scaleb, T shiftb, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``linearfrac`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-25BE7C74-FF96-4A0C-B8F7-93ECC1DA05E9 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The linearfrac(a,b,scalea,shifta,scaleb,shiftb) function performs a + linear fraction transformation of vector ``a`` by vector ``b`` with + scalar parameters: scaling multipliers scalea, scaleb and shifting + addends shifta, shiftb: + + + ``y[i]=(scalea·a[i]+shifta)/(scaleb·b[i]+shiftb)``, ``i``\ =1,2 … n + + + The linearfrac function is implemented in the EP accuracy mode only, + therefore no special values are defined for this function. If used in + HA or LA mode, linearfrac sets the VM Error Status to + status::accuracy_warning. Correctness is guaranteed within the + threshold limitationsdefined for each input parameter (see the table + below); otherwise, the behavior is unspecified. + + +   + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Threshold Limitations on Input Parameters + * - ``2EMIN/2≤ |scalea| ≤ 2(EMAX-2)/2`` + * - ``2EMIN/2≤ |scaleb| ≤ 2(EMAX-2)/2`` + * - ``|shifta| ≤ 2EMAX-2`` + * - ``|shiftb| ≤ 2EMAX-2`` + * - ``2EMIN/2≤a[i] ≤ 2(EMAX-2)/2`` + * - ``2EMIN/2≤b[i] ≤ 2(EMAX-2)/2`` + * - ``a[i] ≠ - (shifta/scalea)*(1-δ1), |δ1| ≤ 21-(p-1)/2`` + * - ``b[i] ≠ - (shiftb/scaleb)*(1-δ2), |δ2| ≤ 21-(p-1)/2`` + + + + + ``EMIN``\ and ``EMAX`` are the minimum and maximum exponents and + ``p`` is the number of significant bits (precision) for the + corresponding data type according to the ANSI/IEEE Standard 754-2008 + ([`IEEE754 `__]): + + + - for single precision\ ``EMIN`` = -126, ``EMAX`` = 127, ``p`` = 24 + + + - for double precision\ ``EMIN`` = -1022, ``EMAX`` = 1023, ``p`` = + 53 + + + The thresholds become less strict for common cases with scalea=0 + and/or scaleb=0: + + + - ifscalea=0, there are no limitations for the values of ``a[i]`` + and shifta. + + + - ifscaleb=0, there are no limitations for the values of ``b[i]`` + and shiftb. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + scalea + Constant value for scaling multipliers of vector ``a`` + + + shifta + Constant value for shifting addend of vector ``a`` + + + scaleb + Constant value for scaling multipliers of vector ``b`` + + + shiftb + Constant value for shifting addend of vector ``b`` + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The pointer ``a`` to thie 1st input vector of size ``n``. + + + b + The pointer ``b`` to the 2nd input vector of size ``n``. + + + scalea + Constant value for scaling multipliers of vector ``a`` + + + shifta + Constant value for shifting addend of vector ``a`` + + + scaleb + Constant value for scaling multipliers of vector ``b`` + + + shiftb + Constant value for shifting addend of vector ``b`` + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use linearfraccan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vllinearfrac.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/ln.rst b/source/elements/oneMKL/source/domains/vm/ln.rst new file mode 100644 index 0000000000..22dbd26b9f --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/ln.rst @@ -0,0 +1,302 @@ +.. _ln: + +ln +== + + +.. container:: + + + Computes natural logarithm of vector elements. + + + .. container:: section + :name: GUID-8AB5FE38-A52D-44DE-BB89-865CC91BCEAF + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void ln(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event ln(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``ln`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-CD893B76-7F70-46D2-BB55-631EA43FADDD + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The ln(a)function computes natural logarithm of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +1 + - +0 + -   + * - a <+0 + - QNAN + - ``status::errdom`` + * - +0 + - -∞ + - ``status::sing`` + * - -0 + - -∞ + - ``status::sing`` + * - -∞ + - QNAN + - ``status::errdom`` + * - +∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - RE(a) i·IM(a) + - -∞   + - -X   + - -0   + - +0   + - +X   + - +∞   + - NAN   + * - +i·∞ + - |image0| + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/2 + - +∞+i·\ ``π``/4 + - +∞+i·QNAN + * - +i·Y + - +∞-i·\ ``π`` + -   + -   + -   + -   + - +∞+i·0 + - QNAN+i·QNAN + * - +i·0 + - +∞-i·\ ``π`` + -   + - -∞+i·\ ``π`` + - -∞-i·0 + -   + - +∞+i·0 + - QNAN+i·QNAN + * - -i·0 + - +∞-i·\ ``π`` + -   + - -∞+i·\ ``π`` + - -∞-i·0 + -   + - +∞-i·0 + - QNAN+i·QNAN + * - -i·Y + - +∞-i·\ ``π`` + -   + -   + -   + -   + - +∞-i·0 + - QNAN+i·QNAN + * - -i·∞ + - |image1| + - +∞-i·\ ``π``/2 + - +∞-i·\ ``π``/2 + - +∞-i·\ ``π``/2 + - +∞-i·\ ``π``/2 + - +∞-i·\ ``π``/4 + - +∞+i·QNAN + * - +i·NAN + - +∞+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - +∞+i·QNAN + - QNAN+i·QNAN + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use lncan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vln.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Exponential and Logarithmic + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-6FB20CE7-1E2A-4340-995F-0E621DEF0E2D-low.jpg +.. |image1| image:: ../equations/GUID-0C4BC54F-4C29-4577-80AA-BCBCD291582A-low.jpg + diff --git a/source/elements/oneMKL/source/domains/vm/log10.rst b/source/elements/oneMKL/source/domains/vm/log10.rst new file mode 100644 index 0000000000..b7a32cd8df --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/log10.rst @@ -0,0 +1,319 @@ +.. _log10: + +log10 +===== + + +.. container:: + + + Computes the base 10 logarithm of vector elements. + + + .. container:: section + :name: GUID-29020D28-42E7-4969-A410-740513FC3F76 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void log10(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event log10(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``log10`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-62B1C679-FF49-45DA-9778-7199B9DE27A3 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The log10(a) function computes the base 10 logarithm of vector + elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +1 + - +0 + -   + * - a <+0 + - QNAN + - ``status::errdom`` + * - +0 + - -∞ + - ``status::sing`` + * - -0 + - -∞ + - ``status::sing`` + * - -∞ + - QNAN + - ``status::errdom`` + * - +∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - RE(a) i·IM(a) + - -∞ + - -X   + - -0 + - +0 + - +X   + - +∞   + - NAN   + * - +i·∞ + - |image0| + - |image1| + - |image2| + - |image3| + - |image4| + - |image5| + - +∞+i·QNAN + * - +i·Y + - |image6| + -   + -   + -   + -   + - +∞+i·0 + - QNAN+i·QNAN + * - +i·0 + - |image7| + -   + - |image8| + - -∞+i·0 + -   + - +∞+i·0 + - QNAN+i·QNAN + * - -i·0 + - |image9| + -   + - |image10| + - -∞-i·0 + -   + - +∞-i·0 + - QNAN-i·QNAN + * - -i·Y + - |image11| + -   + -   + -   + -   + - +∞-i·0 + - QNAN+i·QNAN + * - -i·∞ + - |image12| + - |image13| + - |image14| + - |image15| + - |image16| + - |image17| + - +∞+i·QNAN + * - +i·NAN + - +∞+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - +∞+i·QNAN + - QNAN+i·QNAN + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use log10can be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vlog10.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Exponential and Logarithmic + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-2293B947-42D6-4E5F-BBB3-9DC135AA724A-low.gif +.. |image1| image:: ../equations/GUID-7AE86F5B-8BE2-42D5-B6C7-AF9FF41CCE11-low.jpg +.. |image2| image:: ../equations/GUID-7AE86F5B-8BE2-42D5-B6C7-AF9FF41CCE11-low.jpg +.. |image3| image:: ../equations/GUID-7AE86F5B-8BE2-42D5-B6C7-AF9FF41CCE11-low.jpg +.. |image4| image:: ../equations/GUID-7AE86F5B-8BE2-42D5-B6C7-AF9FF41CCE11-low.jpg +.. |image5| image:: ../equations/GUID-98EC239E-D5C9-4960-834B-827656CF3052-low.gif +.. |image6| image:: ../equations/GUID-32A750B8-7BCC-409B-BD48-E88FBEF86D32-low.jpg +.. |image7| image:: ../equations/GUID-32A750B8-7BCC-409B-BD48-E88FBEF86D32-low.jpg +.. |image8| image:: ../equations/GUID-F01C1454-13EC-4D30-8E73-8E41755B8AF2-low.gif +.. |image9| image:: ../equations/GUID-8F8B1A27-FCBD-4E61-ACC0-459C9EBAE376-low.gif +.. |image10| image:: ../equations/GUID-DF275A8A-05D4-49D9-9031-E4A9382C284C-low.gif +.. |image11| image:: ../equations/GUID-8F8B1A27-FCBD-4E61-ACC0-459C9EBAE376-low.gif +.. |image12| image:: ../equations/GUID-2293B947-42D6-4E5F-BBB3-9DC135AA724A-low.gif +.. |image13| image:: ../equations/GUID-9AB7A841-1EEC-49D6-BBF8-5B346FB32C1A-low.jpg +.. |image14| image:: ../equations/GUID-9AB7A841-1EEC-49D6-BBF8-5B346FB32C1A-low.jpg +.. |image15| image:: ../equations/GUID-9AB7A841-1EEC-49D6-BBF8-5B346FB32C1A-low.jpg +.. |image16| image:: ../equations/GUID-9AB7A841-1EEC-49D6-BBF8-5B346FB32C1A-low.jpg +.. |image17| image:: ../equations/GUID-9114D36E-F829-485D-BF04-8747E20120BD-low.gif + diff --git a/source/elements/oneMKL/source/domains/vm/log1p.rst b/source/elements/oneMKL/source/domains/vm/log1p.rst new file mode 100644 index 0000000000..8073880a75 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/log1p.rst @@ -0,0 +1,224 @@ +.. _log1p: + +log1p +===== + + +.. container:: + + + Computes a natural logarithm of vector elements that are increased by + 1. + + + .. container:: section + :name: GUID-5628BCBD-9606-415D-BFE0-993FF76E4EFC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void log1p(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event log1p(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``log1p`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-F78AED6D-EB43-4933-B58E-B8B6931F1DC1 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The log1p(a) function computes a natural logarithm of vector elements + that are increased by 1. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - VM Error Status + * - -1 + - -∞ + - ``status::sing`` + * - a <-1 + - QNAN + - ``status::errdom`` + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - -∞ + - QNAN + - ``status::errdom`` + * - +∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use log1pcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vlog1p.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Exponential and Logarithmic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/log2.rst b/source/elements/oneMKL/source/domains/vm/log2.rst new file mode 100644 index 0000000000..2f3228bb5f --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/log2.rst @@ -0,0 +1,223 @@ +.. _log2: + +log2 +==== + + +.. container:: + + + Computes the base 2 logarithm of vector elements. + + + .. container:: section + :name: SYNTAX_8AF46B7241F94765A2CAFFAEB423AF8B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void log2(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event log2(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``log2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-8BB2D463-72C1-4611-BA30-9F2AACCD3B9E + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The log2(a) function computes the base 2 logarithm of vector + elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +1 + - +0 + -   + * - ``a`` < +0 + - QNAN + - ``status::errdom`` + * - +0 + - -∞ + - ``status::sing`` + * - -0 + - -∞ + - ``status::sing`` + * - -∞ + - QNAN + - ``status::errdom`` + * - +∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use log2can be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vlog2.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Exponential and Logarithmic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/logb.rst b/source/elements/oneMKL/source/domains/vm/logb.rst new file mode 100644 index 0000000000..da3ba8d2dc --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/logb.rst @@ -0,0 +1,220 @@ +.. _logb: + +logb +==== + + +.. container:: + + + Computes the exponents of the elements of input vector ``a``. + + + .. container:: section + :name: SYNTAX_8AF46B7241F94765A2CAFFAEB423AF8B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void logb(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event logb(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``logb`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-85BD092C-6E6B-4CEF-9C20-6486594FE697 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The logb(a) function computes the exponents of the elements of the + input vector ``a``. For each element ``a``\ :sub:`i` of vector ``a``, + this is the integral part of log\ :sub:`2`\ \|\ ``a``\ :sub:`i`\ \|. + The returned value is exact and is independent of the current + rounding direction mode. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - VM Error Status + * - +0 + - +∞ + - ``status::errdom`` + * - -0 + - -∞ + - ``status::errdom`` + * - -∞ + - +∞ + -   + * - +∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use logbcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vlogb.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Exponential and Logarithmic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/maxmag.rst b/source/elements/oneMKL/source/domains/vm/maxmag.rst new file mode 100644 index 0000000000..1435ad2a2b --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/maxmag.rst @@ -0,0 +1,222 @@ +.. _maxmag: + +maxmag +====== + + +.. container:: + + + Returns the element with the larger magnitude between each pair of + elements of the two vector arguments. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void maxmag(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event maxmag(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``maxmag`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-ECB5A7FD-CBFB-4FDC-BFEE-B3A6307CEB3C + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The maxmag(a,b) function returns a vector with element values equal + to the element with the larger magnitude from each pair of + corresponding elements of the two vectors ``a`` and ``b``: + + + - If \|\ ``a``\ \| > \|\ ``b``\ \| maxmag(a,b) returns ``a``, + otherwise maxmag(a,b) returns ``b``. + + + - If \|\ ``b``\ \| > \|\ ``a``\ \| maxmag(a,b) returns ``b``, + otherwise maxmag(a,b) returns ``a``. + + + - Otherwise maxmag(a,b) behaves like fmax. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - ``a`` not NAN + - NAN + - ``a`` + -   + * - NAN + - ``b`` not NAN + - ``b`` + -   + * - NAN + - NAN + - NAN + -   + + + + + The maxmag(a,b) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use maxmagcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vmaxmag.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Miscellaneous VM + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/minmag.rst b/source/elements/oneMKL/source/domains/vm/minmag.rst new file mode 100644 index 0000000000..a75f75917d --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/minmag.rst @@ -0,0 +1,222 @@ +.. _minmag: + +minmag +====== + + +.. container:: + + + Returns the element with the smaller magnitude between each pair of + elements of the two vector arguments. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void minmag(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event minmag(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``minmag`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-118702AA-6EEF-4CD2-B046-485F347F736E + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The minmag(a,b) function returns a vector with element values equal + to the element with the smaller magnitude from each pair of + corresponding elements of the two vectors ``a`` and ``b``: + + + - If \|\ ``a``\ \| < \|\ ``b``\ \| minmag(a,b) returns ``a``, + otherwise minmag(a,b) returns ``b``. + + + - If \|\ ``b``\ \| < \|\ ``a``\ \| minmag(a,b) returns ``b``, + otherwise minmag(a,b) returns ``a``. + + + - Otherwise minmag behaves like fmin. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - ``a`` not NAN + - NAN + - ``a`` + -   + * - NAN + - ``b`` not NAN + - ``b`` + -   + * - NAN + - NAN + - NAN + -   + + + + + The minmag(a,b) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use minmagcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vminmag.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Miscellaneous VM + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/miscellaneous-vm-functions.rst b/source/elements/oneMKL/source/domains/vm/miscellaneous-vm-functions.rst new file mode 100644 index 0000000000..fb5a6e7148 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/miscellaneous-vm-functions.rst @@ -0,0 +1,47 @@ +.. _miscellaneous-vm-functions: + +Miscellaneous VM Functions +========================== + + +.. container:: + + + - `copysign `__ + Returns vector of elements of one argument with signs changed to + match other argument elements. + - `nextafter `__ + Returns vector of elements containing the next representable + floating-point values following the values from the elements of + one vector in the direction of the corresponding elements of + another vector. + - `fdim `__ + Returns vector containing the differences of the corresponding + elements of the vector arguments if the first is larger and +0 + otherwise. + - `fmax `__ + Returns the larger of each pair of elements of the two vector + arguments. + - `fmin `__ + Returns the smaller of each pair of elements of the two vector + arguments. + - `maxmag `__ + Returns the element with the larger magnitude between each pair of + elements of the two vector arguments. + - `minmag `__ + Returns the element with the smaller magnitude between each pair + of elements of the two vector arguments. + + +**Parent topic:** :ref:`onemkl_vm` + +.. toctree:: + :hidden: + + copysign + nextafter + fdim + fmax + fmin + maxmag + minmag diff --git a/source/elements/oneMKL/source/domains/vm/modf.rst b/source/elements/oneMKL/source/domains/vm/modf.rst new file mode 100644 index 0000000000..ddf657173b --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/modf.rst @@ -0,0 +1,233 @@ +.. _modf: + +modf +==== + + +.. container:: + + + Computes a truncated integer value and the remaining fraction part + for each vector element. + + + .. container:: section + :name: GUID-F66BB36F-D7BF-4EEC-A9E7-A4666E85A1FA + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void modf(queue& exec_queue, int64_t n, buffer& a, buffer& y, buffer& z, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event modf(queue& exec_queue, int64_t n, T\* a, T\* y, T\* z, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``modf`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-F4792591-FD2F-45ED-AF28-7C03E3030B81 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The modf(a) functioncomputes a truncated integer value and the + remaining fraction part for each vector element. + + + | + | |image0| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result 1 + - Result 2 + - Error Code + * - +0 + - +0 + - +0 + -   + * - -0 + - -0 + - -0 + -   + * - +∞ + - +∞ + - +0 + -   + * - -∞ + - -∞ + - -0 + -   + * - SNAN + - QNAN + - QNAN + -   + * - QNAN + - QNAN + - QNAN + -   + + + + + The modf function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n`` for + truncated integer values. + + + z + The buffer ``z`` containing the output vector of size ``n`` for + remaining fraction parts. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n`` for truncated + integer values. + + + z + Pointer ``z`` to the output vector of size ``n`` for remaining + fraction parts. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use modfcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vmodf.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Rounding + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-38C12345-5E6E-4D94-8072-460502CB52EC-low.gif + diff --git a/source/elements/oneMKL/source/domains/vm/mul.rst b/source/elements/oneMKL/source/domains/vm/mul.rst new file mode 100644 index 0000000000..99ddb6dcdd --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/mul.rst @@ -0,0 +1,307 @@ +.. _mul: + +mul +=== + + +.. container:: + + + Performs element by element multiplication of vector ``a`` and vector + ``b``. + + + .. container:: section + :name: GUID-D4DC8FD8-7FF6-4A4B-A62B-BC72EFB22136 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void mul(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event mul(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``mul`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-CCDDF7AC-0DF5-48D3-B7BF-290C6A40D84F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The mul(a, b) function performs element by element multiplication of + vector ``a`` and vector ``b``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - +0 + - +0 + - +0 + -   + * - +0 + - -0 + - -0 + -   + * - -0 + - +0 + - -0 + -   + * - -0 + - -0 + - +0 + -   + * - +0 + - +∞ + - QNAN + -   + * - +0 + - -∞ + - QNAN + -   + * - -0 + - +∞ + - QNAN + -   + * - -0 + - -∞ + - QNAN + -   + * - +∞ + - +0 + - QNAN + -   + * - +∞ + - -0 + - QNAN + -   + * - -∞ + - +0 + - QNAN + -   + * - -∞ + - -0 + - QNAN + -   + * - +∞ + - +∞ + - +∞ + -   + * - +∞ + - -∞ + - -∞ + -   + * - -∞ + - +∞ + - -∞ + -   + * - -∞ + - -∞ + - +∞ + -   + * - SNAN + - any value + - QNAN + -   + * - any value + - SNAN + - QNAN + -   + * - QNAN + - non-SNAN + - QNAN + -   + * - non-SNAN + - QNAN + - QNAN + -   + + + + + Specifications for special values of the complex functions are + defined according to the following formula + + + ``mul(x1+i*y1,x2+i*y2) = (x1*x2-y1*y2) + i*(x1*y2+y1*x2)`` + + + Overflow in a complex function occurs (supported in the HA/LA + accuracy modes only) when all RE(x), RE(y), IM(x), IM(y) arguments + are finite numbers, but the real or imaginary part of the computed + result is so large that it does not fit the target precision. In this + case, the function returns ∞ in that part of the result, and sets the + VM Error Status to ``status::overflow`` (overriding any possible + ``status::accuracy_warning`` status). + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use mulcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vmul.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/mulbyconj.rst b/source/elements/oneMKL/source/domains/vm/mulbyconj.rst new file mode 100644 index 0000000000..3669586480 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/mulbyconj.rst @@ -0,0 +1,182 @@ +.. _mulbyconj: + +mulbyconj +========= + + +.. container:: + + + Performs element by element multiplication of vector ``a`` element + and conjugated vector ``b`` element. + + + .. container:: section + :name: GUID-6E6351E9-55A7-461D-A67F-C3C7A5D1AEBA + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void mulbyconj(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event mulbyconj(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``mulbyconj`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use mulbyconjcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vmulbyconj.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/nearbyint.rst b/source/elements/oneMKL/source/domains/vm/nearbyint.rst new file mode 100644 index 0000000000..f03cd014be --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/nearbyint.rst @@ -0,0 +1,207 @@ +.. _nearbyint: + +nearbyint +========= + + +.. container:: + + + Computes a rounded integer value in the current rounding mode for + each vector element. + + + .. container:: section + :name: GUID-3510288C-3A60-4912-8277-0012E2C172FC + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void nearbyint(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event nearbyint(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``nearbyint`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-53E014E6-61EA-45F0-9203-4E22D91EC860 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The nearbyint(a) functioncomputes a rounded integer value in a + current rounding mode for each vector element. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - -∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The nearbyint function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use nearbyintcan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vnearbyint.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Rounding + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/nextafter.rst b/source/elements/oneMKL/source/domains/vm/nextafter.rst new file mode 100644 index 0000000000..ff5d6e4b05 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/nextafter.rst @@ -0,0 +1,219 @@ +.. _nextafter: + +nextafter +========= + + +.. container:: + + + Returns vector of elements containing the next representable + floating-point values following the values from the elements of one + vector in the direction of the corresponding elements of another + vector. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void nextafter( queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event nextafter( queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``nextafter`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-7C6C326E-17CF-4C11-8D82-C05385748AD3 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The nextafter(a,b) function returns a vector containing the next + representable floating-point values following the first vector + argument elements in the direction of the second vector argument's + corresponding elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Arguments/Results + - Error Code + * - Input vector argument element is finite and the corresponding result vector element value is infinite + - ``status::overflow`` + * - Result vector element value is subnormal or zero, and different from the corresponding input vector argument element + - ``status::underflow`` + + + + + Even though underflow or overflow canoccur, the returned value is + independent of the current roundingdirection mode. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use nextaftercan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vnextafter.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Miscellaneous VM + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/pow.rst b/source/elements/oneMKL/source/domains/vm/pow.rst new file mode 100644 index 0000000000..4934450eb7 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/pow.rst @@ -0,0 +1,478 @@ +.. _pow: + +pow +=== + + +.. container:: + + + Computes ``a`` to the power ``b`` for elements of two vectors. + + + .. container:: section + :name: GUID-7DE07F1A-1D16-4E23-B1AB-9B798F71FD3B + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void pow(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event pow(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``pow`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-C055D80E-FB98-4BCC-800D-FA894D3210A1 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The pow(a,b) function computes ``a`` to the power ``b`` for elements + of two vectors. + + + The real function pow has certain limitations on the input range of + ``a`` and ``b`` parameters. Specifically, if ``a``\ [i] is positive, + then ``b``\ [i] may be arbitrary. For negative ``a``\ [i], the value + of ``b``\ [i] must be an integer (either positive or negative). + + + The complex function pow has no input range limitations. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - +0 + - neg. odd integer + - +∞ + - ``status::errdom`` + * - -0 + - neg. odd integer + - -∞ + - ``status::errdom`` + * - +0 + - neg. even integer + - +∞ + - ``status::errdom`` + * - -0 + - neg. even integer + - +∞ + - ``status::errdom`` + * - +0 + - neg. non-integer + - +∞ + - ``status::errdom`` + * - -0 + - neg. non-integer + - +∞ + - ``status::errdom`` + * - -0 + - pos. odd integer + - +0 + -   + * - -0 + - pos. odd integer + - -0 + -   + * - +0 + - pos. even integer + - +0 + -   + * - -0 + - pos. even integer + - +0 + -   + * - +0 + - pos. non-integer + - +0 + -   + * - -0 + - pos. non-integer + - +0 + -   + * - -1 + - +∞ + - +1 + -   + * - -1 + - -∞ + - +1 + -   + * - +1 + - any value + - +1 + -   + * - +1 + - +0 + - +1 + -   + * - +1 + - -0 + - +1 + -   + * - +1 + - +∞ + - +1 + -   + * - +1 + - -∞ + - +1 + -   + * - +1 + - QNAN + - +1 + -   + * - any value + - +0 + - +1 + -   + * - +0 + - +0 + - +1 + -   + * - -0 + - +0 + - +1 + -   + * - +∞ + - +0 + - +1 + -   + * - -∞ + - +0 + - +1 + -   + * - QNAN + - +0 + - +1 + -   + * - any value + - -0 + - +1 + -   + * - +0 + - -0 + - +1 + -   + * - -0 + - -0 + - +1 + -   + * - +∞ + - -0 + - +1 + -   + * - -∞ + - -0 + - +1 + -   + * - QNAN + - -0 + - +1 + -   + * - a < +0 + - non-integer + - QNAN + - ``status::errdom`` + * - \|a\| < 1 + - -∞ + - +∞ + -   + * - +0 + - -∞ + - +∞ + - ``status::errdom`` + * - -0 + - -∞ + - +∞ + - ``status::errdom`` + * - \|a\| > 1 + - -∞ + - +0 + -   + * - +∞ + - -∞ + - +0 + -   + * - -∞ + - -∞ + - +0 + -   + * - \|a\| < 1 + - +∞ + - +0 + -   + * - +0 + - +∞ + - +0 + -   + * - -0 + - +∞ + - +0 + -   + * - \|a\| > 1 + - +∞ + - +∞ + -   + * - +∞ + - +∞ + - +∞ + -   + * - -∞ + - +∞ + - +∞ + -   + * - -∞ + - neg. odd integer + - -0 + -   + * - -∞ + - neg. even integer + - +0 + -   + * - -∞ + - neg. non-integer + - +0 + -   + * - -∞ + - pos. odd integer + - -∞ + -   + * - -∞ + - pos. even integer + - +∞ + -   + * - -∞ + - pos. non-integer + - +∞ + -   + * - +∞ + - b < +0 + - +0 + -   + * - +∞ + - b > +0 + - +∞ + -   + * - Big finite value\* + - Big finite value\* + - +/-∞ + - ``status::overflow`` + * - QNAN + - QNAN + - QNAN + -   + * - QNAN + - SNAN + - QNAN + -   + * - SNAN + - QNAN + - QNAN + -   + * - SNAN + - SNAN + - QNAN + -   + + + + + \* Overflow in a real function is supported onlyin the HA/LA accuracy + modes. The overflow occurs when x and y are finite numbers, but the + result is too large to fit the target precision. In this case, the + function: + + + #. Returns ∞ in the result. + + + #. Sets the VM Error Statusto status::overflow. + + + Overflow in a complex function occurs (supported in the HA/LA + accuracy modes only) when all RE(x), RE(y), IM(x), IM(y) arguments + are finite numbers, but the real or imaginary part of the computed + result is so large that it does not fit the target precision. In this + case, the function returns ∞ in that part of the result, and sets the + VM Error Status to ``status::overflow`` (overriding any possible + ``status::accuracy_warning`` status). + + + The complex double precision versions of this function are + implemented in the EP accuracy mode only. If used in HA or LA mode, + the functions set the VM Error Status to + ``status::accuracy_warning``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use powcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vpow.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/pow2o3.rst b/source/elements/oneMKL/source/domains/vm/pow2o3.rst new file mode 100644 index 0000000000..37e6d84a86 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/pow2o3.rst @@ -0,0 +1,217 @@ +.. _pow2o3: + +pow2o3 +====== + + +.. container:: + + + Computes the cube root of the square of each vector element. + + + .. container:: section + :name: GUID-EEF5485E-8E00-4B0F-A9EE-62C65874D2F7 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void pow2o3(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event pow2o3(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``pow2o3`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-2605081D-FD41-48DF-83BA-719239D423E3 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The pow2o3(a)function computes the cube root of the square of each + vector element. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - +0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use pow2o3can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vpow203.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/pow3o2.rst b/source/elements/oneMKL/source/domains/vm/pow3o2.rst new file mode 100644 index 0000000000..68148da00d --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/pow3o2.rst @@ -0,0 +1,236 @@ +.. _pow3o2: + +pow3o2 +====== + + +.. container:: + + + Computes the square root of the cube of each vector element. + + + .. container:: section + :name: GUID-AA677C03-EE6E-4062-A2C0-D0B65DEAB664 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void pow3o2(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event pow3o2(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``pow3o2`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-A99862AB-E105-4B47-B077-F619BA14E210 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The pow3o2(a)function computes the square root of the cube of each + vector element. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Data Type + - Threshold Limitations on Input Parameters + * - single precision + - \|\ ``a``\ :sub:`i`\ \| < ``(FLT_MAX)``\ ``2/3`` + * - double precision + - \|\ ``a``\ :sub:`i`\ \| < ``(FLT_MAX)``\ ``2/3`` + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - VM Error Status + * - a < +0 + - QNAN + - ``status::errdom`` + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - -∞ + - QNAN + - ``status::errdom`` + * - +∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use pow3o2can be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vpow3o2.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/power-and-root-functions.rst b/source/elements/oneMKL/source/domains/vm/power-and-root-functions.rst new file mode 100644 index 0000000000..dd6965757b --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/power-and-root-functions.rst @@ -0,0 +1,60 @@ +.. _power-and-root-functions: + +Power and Root Functions +======================== + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Mathematical + Functions `__ + + +.. container:: + + + - `inv `__ + Performs element by element inversion of the vector. + - `div `__ + Performs element by element division of vector ``a`` by vector + ``b`` + - `sqrt `__ + Computes a square root of vector elements. + - `invsqrt `__ + Computes an inverse square root of vector elements. + - `cbrt `__ + Computes a cube root of vector elements. + - `invcbrt `__ + Computes an inverse cube root of vector elements. + - `pow2o3 `__ + Computes the cube root of the square of each vector element. + - `pow3o2 `__ + Computes the square root of the cube of each vector element. + - `pow `__ + Computes ``a`` to the power ``b`` for elements of two vectors. + - `powx `__ + Computes vector ``a`` to the scalar power ``b``. + - `powr `__ + Computes ``a`` to the power ``b`` for elements of two vectors, + where the elements of vector argument ``a`` are all non-negative. + - `hypot `__ + Computes a square root of sum of two squared elements. + +.. toctree:: + :hidden: + + inv + div + sqrt + invsqrt + cbrt + invcbrt + pow2o3 + pow3o2 + pow + powx + powr + hypot diff --git a/source/elements/oneMKL/source/domains/vm/powr.rst b/source/elements/oneMKL/source/domains/vm/powr.rst new file mode 100644 index 0000000000..2caa65e684 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/powr.rst @@ -0,0 +1,314 @@ +.. _powr: + +powr +==== + + +.. container:: + + + Computes ``a`` to the power ``b`` for elements of two vectors, where + the elements of vector argument ``a`` are all non-negative. + + + .. container:: section + :name: SYNTAX_0ACC976C27864E859D5C4385DE3EBC25 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void powr(queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event powr(queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``powr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-4F551F28-28FE-4426-B33E-DFF1778B1FDC + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The powr(a,b) function raises each element of vector ``a`` by the + corresponding element of vector ``b``. The elements of ``a`` are all + nonnegative (``a``\ :sub:`i`\ ≥ 0). + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Data Type + - Threshold Limitations on Input Parameters + * - single precision + - ``a``\ :sub:`i` < (FLT_MAX)\ :sup:`1/``b``\ i` + * - double precision + - ``a``\ :sub:`i` < (DBL_MAX)\ :sup:`1/``b``\ i` + + + + + Special values and VM Error Status treatment for v?Powr function are + the same as for pow, unless otherwise indicated in this table: + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - ``a`` < 0 + - any value ``b`` + - NAN + - ``status::errdom`` + * - 0 < ``a`` < ∞ + - ±0 + - 1 + -   + * - ±0 + - -∞ < ``b`` < 0 + - +∞ + -   + * - ±0 + - -∞ + - +∞ + -   + * - ±0 + - ``b`` > 0 + - +0 + -   + * - 1 + - -∞ < ``b`` < ∞ + - 1 + -   + * - ±0 + - ±0 + - NAN + -   + * - +∞ + - ±0 + - NAN + -   + * - 1 + - +∞ + - NAN + -   + * - ``a``\ ≥ 0 + - NAN + - NAN + -   + * - NAN + - any value ``b`` + - NAN + -   + * - 0 < ``a`` <1 + - -∞ + - +∞ + -   + * - ``a`` > 1 + - -∞ + - +0 + -   + * - 0 ≤\ ``a`` < 1 + - +∞ + - +0 + -   + * - ``a`` > 1 + - +∞ + - +∞ + -   + * - +∞ + - ``b`` < +0 + - +0 + -   + * - +∞ + - ``b`` > +0 + - +∞ + -   + * - QNAN + - QNAN + - QNAN + - ``status::errdom`` + * - QNAN + - SNAN + - QNAN + - ``status::errdom`` + * - SNAN + - QNAN + - QNAN + - ``status::errdom`` + * - SNAN + - SNAN + - QNAN + - ``status::errdom`` + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use powrcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vpowr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/powx.rst b/source/elements/oneMKL/source/domains/vm/powx.rst new file mode 100644 index 0000000000..7673277ed7 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/powx.rst @@ -0,0 +1,209 @@ +.. _powx: + +powx +==== + + +.. container:: + + + Computes vector ``a`` to the scalar power ``b``. + + + .. container:: section + :name: GUID-71AC966A-838E-47D1-9CA9-C0EDC80463D5 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void powx(queue& exec_queue, int64_t n, buffer& a, T b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event powx(queue& exec_queue, int64_t n, T\* a, T b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``powx`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-F3B0C52A-D11B-4954-AE5F-202C1B689A37 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The powx function computes ``a`` to the power ``b`` for a vector + ``a`` and a scalar ``b``. + + + The real function powx has certain limitations on the input range of + ``a`` and ``b`` parameters. Specifically, if ``a``\ [i] is positive, + then ``b`` may be arbitrary. For negative ``a``\ [i], the value of + ``b`` must be an integer (either positive or negative). + + + The complex function powx has no input range limitations. + + + Special values and VM Error Status treatment are the same as for the + powfunction. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + Fixed value of power ``b``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Fixed value of power ``b``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use powxcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vpowx.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/remainder.rst b/source/elements/oneMKL/source/domains/vm/remainder.rst new file mode 100644 index 0000000000..002024be08 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/remainder.rst @@ -0,0 +1,244 @@ +.. _remainder: + +remainder +========= + + +.. container:: + + + Performs element by element computation of the remainder function on + the elements of vector ``a`` and the corresponding elements of vector + ``b``. + + + .. container:: section + :name: SYNTAX_5F8501E202FA4C3D9E6FA24CD2E117CF + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void remainder( queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event remainder( queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``remainder`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-0807AC92-7DFF-4534-B6D9-B8472E591C83 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The ``remainder(a)`` function computes the remainder of each element + of vector ``a``, with respect to the corresponding elements of vector + ``b``: compute the values of ``n`` such that + + + ``n = ai - n*bi`` + + + where ``n`` is the integer nearest to the exact value of + ``a``\ :sub:`i`/``b``\ :sub:`i`. If two integers are equally close to + ``a``\ :sub:`i`/``b``\ :sub:`i`, ``n`` is the even one. If ``n`` is + zero, it has the same sign as ``a``\ :sub:`i`. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - VM Error Status + * - ``a`` not NAN + - ±0 + - NAN + - status::errdom + * - ±∞ + - ``b`` not NAN + - NAN + -   + * - ±0 + - ``b``\ ≠ 0, not NAN + - ±0 + -   + * - ``a`` finite + - ±∞ + - ``a`` + -   + * - NAN + - ``b`` + - NAN + -   + * - ``a`` + - NAN + - NAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use remaindercan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vremainder.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/rint.rst b/source/elements/oneMKL/source/domains/vm/rint.rst new file mode 100644 index 0000000000..e193f7a818 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/rint.rst @@ -0,0 +1,225 @@ +.. _rint: + +rint +==== + + +.. container:: + + + Computes a rounded integer value in the current rounding mode. + + + .. container:: section + :name: GUID-9E85B4D4-8A91-41C9-B7C9-58C1BF7B0267 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void rint(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event rint(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``rint`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-E1254097-BD26-429A-B5AC-ACF7FC358C61 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The rint(a)functioncomputes a rounded floating-point integer value + using the current rounding mode for each vector element. + + + The rounding mode affects the results computed for inputs that fall + between consecutive integers. For example: + + + - ``f(0.5) = 0``, for rounding modes set to round to nearest round + toward zero or to minus infinity. + + + - ``f(0.5) = 1``, for rounding modes set to plus infinity. + + + - ``f(-1.5) = -2``, for rounding modes set to round to nearest or to + minus infinity. + + + - ``f(-1.5) = -1``, for rounding modes set to roundtoward zero or to + plus infinity. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - -∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The rint function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use rintcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vrint.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Rounding + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/round.rst b/source/elements/oneMKL/source/domains/vm/round.rst new file mode 100644 index 0000000000..ca1e0488cb --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/round.rst @@ -0,0 +1,209 @@ +.. _round: + +round +===== + + +.. container:: + + + Computes a valuerounded to the nearest integer for each vector + element. + + + .. container:: section + :name: GUID-674C2B01-6620-4AD0-935D-4F189D1CCB79 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void round(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event round(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``round`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-113A1D5D-4C91-4A64-95C7-C24B7EBA779C + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The round(a) functioncomputes a valuerounded to the nearest + integerfor each vector element. Input elements that are halfway + between two consecutive integers are always rounded away from zero + regardless of the rounding mode. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - -∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The round(a) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use roundcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vround.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Rounding + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/rounding-functions.rst b/source/elements/oneMKL/source/domains/vm/rounding-functions.rst new file mode 100644 index 0000000000..64457a8e0f --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/rounding-functions.rst @@ -0,0 +1,52 @@ +.. _rounding-functions: + +Rounding Functions +================== + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Mathematical + Functions `__ + + +.. container:: + + + - `floor `__ + Computes an integer value rounded towards minus infinity for each + vector element. + - `ceil `__ + Computes an integer value rounded towards plus infinity for each + vector element. + - `trunc `__ + Computes an integer value rounded towards zero for each vector + element. + - `round `__ + Computes a value rounded to the nearest integer for each vector + element. + - `nearbyint `__ + Computes a rounded integer value in the current rounding mode for + each vector element. + - `rint `__ + Computes a rounded integer value in the current rounding mode. + - `modf `__ + Computes a truncated integer value and the remaining fraction part + for each vector element. + - `frac `__ + Computes a signed fractional part for each vector element. + +.. toctree:: + :hidden: + + floor + ceil + trunc + round + nearbyint + rint + modf + frac diff --git a/source/elements/oneMKL/source/domains/vm/set_status.rst b/source/elements/oneMKL/source/domains/vm/set_status.rst new file mode 100644 index 0000000000..c0d60968eb --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/set_status.rst @@ -0,0 +1,133 @@ +.. _set_status: + +set_status +========== + + +.. container:: + + + Sets the global VM Status according to new values and returns the + previous VM Status. + + + .. container:: section + :name: GUID-AE00FF02-7CB7-4B5B-B23F-04D49B61B34F + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: uint8_t set_status (queue& exec_queue,uint_8 new_status ) + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The set_status function sets the global VM Status to new value and + returns the previous VM Status. + + + The global VM Status is a single value and it accumulates via + bitwise OR ( \| ) all errors that happen inside VM functions. The + following table lists the possible error values. + + + .. list-table:: + :header-rows: 1 + + * - Status + - Description + * - Successful Execution + * - ``status::success`` + - VM function execution completed successfully + * - ``status::not_defined`` + - VM status not defined + * - Warnings + * - ``status::accuracy_warning`` + - VM function execution completed successfully in a different accuracy mode + * - Computational Errors + * - ``status::errdom`` + - Values are out of a range of definition producing invalid (QNaN) result + * - ``status::sing`` + - Values cause divide-by-zero (singularity) errors and produce and invalid (QNaN or Inf) result + * - ``status::overflow`` + - An overflow happened during the calculation process + * - ``status::underflow`` + - An underflow happened during the calculation process + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + new_status + Specifies the VM status to be set. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + return value (old_status) + Specifies the former VM status. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + :: + + + uint8_t olderr = set_status (exec_queue, status::success); + + + if (olderr & status::errdom) + { + std::cout << ”Errdom status returned” << std::endl; + } + + + if (olderr & status::sing) + { + std::cout << ”Singularity status returned” << std::endl; + } + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Service + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/setmode.rst b/source/elements/oneMKL/source/domains/vm/setmode.rst new file mode 100644 index 0000000000..e27a4025af --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/setmode.rst @@ -0,0 +1,143 @@ +.. _setmode: + +setmode +======= + + +.. container:: + + + Sets a new mode for VM functions according to the ``mode`` parameter + and returns the previous VM mode. + + + .. container:: section + :name: GUID-6F502D48-7B38-47E3-9A84-5A27A98BE930 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + .. cpp:function:: uint64_t set_mode(queue& exec_queue, uint64_t new_mode ) + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The set_mode function sets a new mode for VM functions according + to the ``new_mode`` parameter and returns the previous VM mode. + The mode change has a global effect on all the VM functions within + a thread. + + + The ``mode`` parameter is designed to control accuracy and + handling of denormalized numbers. You can obtain all other + possible values of the ``mode`` parameter using bitwise OR ( \| ) + operation to combine one value for handling of denormalized + numbers. + + + The mode::ftzdazonis specifically designed to improve the + performance of computations that involve denormalized numbers at + the cost of reasonable accuracy loss. This mode changes the + numeric behavior of the functions: denormalized input values are + treated as zeros (DAZ = denormals-are-zero) and denormalized + results are flushed to zero (FTZ = flush-to-zero). Accuracy loss + may occur if input and/or output values are close to denormal + range. + + + .. list-table:: + :header-rows: 1 + + * - Value of mode + - Description + * - Accuracy Control + * - ``mode::ha`` + - High accuracy versions of VM functions. + * - ``mode::la`` + - Low accuracy versions of VM functions. + * - ``mode::ep`` + - Enhanced performance accuracy versions of VM functions. + * - Denormalized Numbers Handling Control + * - ``mode::ftzdazon`` + - Faster processing of denormalized inputs is enabled. + * - ``mode::ftzdazoff`` + - Faster processing of denormalized inputs is disabled. + * - Other + * - ``mode::not_defined`` + - VM status not defined. + + + + + The default value of the mode parameter is: + + + :: + + + mode::ha | mode::ftdazoff + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + exec_queue + The queue where the routine should be executed. + + + new_mode + Specifies the VM mode to be set. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + return value (old_mode) + Specifies the former VM mode. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + :: + + + oldmode = set_mode (exec_queue , mode::la); + oldmode = set_mode (exec_queue , mode::ep | mode::ftzdazon); + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Service + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/sin.rst b/source/elements/oneMKL/source/domains/vm/sin.rst new file mode 100644 index 0000000000..e08ca49e65 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/sin.rst @@ -0,0 +1,235 @@ +.. _sin: + +sin +=== + + +.. container:: + + + Computes sine of vector elements. + + + .. container:: section + :name: GUID-E38CA6EA-C276-4081-85F3-BA2E1C22F119 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void sin(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event sin(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``sin`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-21D3D3F9-9511-4365-A855-8DE99294C5C3 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sin(a)function computes sine of vector elements. + + + Note that arguments ``abs(a[i]) ≤ 213`` and ``abs(a[i]) ≤ 216`` for + single and double precisions respectively are called fast + computational path. These are trigonometric function arguments for + which VM provides the best possible performance. Avoid arguments that + do not belong to the fast computational path in the VM High Accuracy + (HA) and Low Accuracy (LA) functions. Alternatively, you can use VM + Enhanced Performance (EP) functions that are fast on the entire + function domain. However, these functions provide less accuracy. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - VM Error Status + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + Specificationsfor special values of the complex functions are defined + according to the following formula + + + ``Sin(z) = -i*Sinh(i*z)``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use sincan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vsin.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/sincos.rst b/source/elements/oneMKL/source/domains/vm/sincos.rst new file mode 100644 index 0000000000..c7d646b371 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/sincos.rst @@ -0,0 +1,243 @@ +.. _sincos: + +sincos +====== + + +.. container:: + + + Computes sine and cosine of vector elements. + + + .. container:: section + :name: GUID-BFCA3F3F-F4E7-4E18-9C92-C219C41F5E3A + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void sincos(queue& exec_queue, int64_t n, buffer& a, buffer& y, buffer& z, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event sincos(queue& exec_queue, int64_t n, T\* a, T\* y, T\* z, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``sincos`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-B1D1E5EA-C097-4A5B-8671-EE84DB636AD6 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sincos(a) function computes sine and cosine of vector elements. + + + Note that arguments ``abs(a[i]) ≤ 213``\ and ``abs(a[i]) ≤ 216``\ for + single and double precisions respectively are called fast + computational path. These are trigonometric function arguments for + which VM provides the best possible performance. Avoid arguments that + do not belong to the fast computational path in the VM High Accuracy + (HA) and Low Accuracy (LA) functions. Alternatively, you can use VM + Enhanced Performance (EP) functions that are fast on the entire + function domain. However, these functions provide less accuracy. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result 1 + - Result 2 + - Error Code + * - +0 + - +0 + - +1 + -   + * - -0 + - -0 + - +1 + -   + * - +∞ + - QNAN + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + - QNAN + -   + * - SNAN + - QNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output sine vector of size ``n``. + + + z + The buffer ``z`` containing the output cosine vector of size + ``n``. + + + USM API: + + + y + Pointer ``y`` to the output sine vector of size ``n``. + + + z + The buffer ``z`` containing the output cosine vector of size + ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use sincoscan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vsincos.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/sind.rst b/source/elements/oneMKL/source/domains/vm/sind.rst new file mode 100644 index 0000000000..37a17fee3e --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/sind.rst @@ -0,0 +1,230 @@ +.. _sind: + +sind +==== + + +.. container:: + + + Computes the sine of vector elements multiplied by ``π``/180. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void sind(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event sind(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``sind`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-BF85B7CB-FF6B-4800-8EB6-75F5A279AA32 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sind(a) function is a degree argument trigonometric function. It + computes the sine of vector elements multiplied by ``π``/180. For an + argument ``a``, the function computes sin(``π``\ \*\ ``a``/180). + + + Note that arguments abs(``a``\ :sub:`i`) ≤ 2\ :sup:`24` for single + precision or abs(``a``\ :sub:`i` ) ≤ 2\ :sup:`52` for double + precision, they belong to the *fast computational path*: + trigonometric function arguments for which VM provides the best + possible performance. Avoid arguments with do not belong to the fast + computational path in VM High Accuracy (HA) or Low Accuracy (LA) + functions. For arguments which do not belong to the fast + computational path you can use VM Enhanced Performance (EP) + functions, which are fast on the entire function domain. However, + these functions provide lower accuracy. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use sindcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vsind.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/sinh.rst b/source/elements/oneMKL/source/domains/vm/sinh.rst new file mode 100644 index 0000000000..65f217c538 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/sinh.rst @@ -0,0 +1,330 @@ +.. _sinh: + +sinh +==== + + +.. container:: + + + Computes hyperbolic sine of vector elements. + + + .. container:: section + :name: GUID-BDC2B01B-DF48-43AB-BD52-25BEDE8290D3 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void sinh(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event sinh(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``sinh`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-9CA1335D-E846-4750-8710-177B8B025DD6 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sinh(a) function computes hyperbolic sine of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Data Type + - Threshold Limitations on Input Parameters + * - single precision + - ``-Log(FLT_MAX)-Log(2) overflow + - +∞ + - ``status::overflow`` + * - a < -overflow + - -∞ + - ``status::overflow`` + * - +∞ + - +∞ + -   + * - -∞ + - -∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - + - + - + - + - + - + - + - + * - +i·∞ + - -∞+i·QNAN + - QNAN+i·QNAN + - -0+i·QNAN + - +0+i·QNAN + - QNAN+i·QNAN + - +∞+i·QNAN + - QNAN+i·QNAN + * - +i·Y + - -∞·Cos(Y)+ i·∞·Sin(Y) + -   + -   + -   + -   + - +∞·CIS(Y) + - QNAN+i·QNAN + * - +i·0 + - -∞+i·0 + -   + - -0+i·0 + - +0+i·0 + -   + - +∞+i·0 + - QNAN+i·0 + * - -i·0 + - -∞-i·0 + -   + - -0-i·0 + - +0-i·0 + -   + - +∞-i·0 + - QNAN-i·0 + * - -i·Y + - -∞·Cos(Y)+ i·∞·Sin(Y) + -   + -   + -   + -   + - +∞·CIS(Y) + - QNAN+i·QNAN + * - -i·∞ + - -∞+i·QNAN + - QNAN+i·QNAN + - -0+i·QNAN + - +0+i·QNAN + - QNAN+i·QNAN + - +∞+i·QNAN + - QNAN+i·QNAN + * - +i·NAN + - -∞+i·QNAN + - QNAN+i·QNAN + - -0+i·QNAN + - +0+i·QNAN + - QNAN+i·QNAN + - +∞+i·QNAN + - QNAN+i·QNAN + + + + + Notes: + + + - The complex sinh(a) function sets the VM Error Status to + status::overflow in the case of overflow, that is, when RE(a), + IM(a) are finite non-zero numbers, but the real or imaginary part + of the exact result is so large that it does not meet the target + precision. + + + - ``sinh(CONJ(a))=CONJ(sinh(a))`` + + + - ``sinh(-a)=-sinh(a)``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use sinhcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vsinh.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Hyperbolic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/sinpi.rst b/source/elements/oneMKL/source/domains/vm/sinpi.rst new file mode 100644 index 0000000000..a11e646797 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/sinpi.rst @@ -0,0 +1,235 @@ +.. _sinpi: + +sinpi +===== + + +.. container:: + + + Computes the sine of vector elements multiplied by ``π``. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void sinpi(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event sinpi(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``sinpi`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-E91E43A7-AC3D-4B7B-B62F-DEEC45C2D291 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sinpi(a) function computes the sine of vector elements multiplied + by ``π``. For an argument ``a``, the function computes + sin(``π``\ \*\ ``a``). + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +\ ``n``, positive integer + - +0 + -   + * - -``n``, negative integer + - -0 + -   + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + If arguments abs(``a``\ :sub:`i`) ≤ 2\ :sup:`22` for single precision + or abs(``a``\ :sub:`i` ) ≤ 2\ :sup:`51` for double precision, they + belong to the *fast computational path*: arguments for which VM + provides the best possible performance. Avoid arguments which do not + belong to the fast computational path in VM High Accuracy (HA) or Low + Accuracy (LA) functions. For arguments which do not belong to the + fast computational path you can use VM Enhanced Performance (EP) + functions, which are fast on the entire function domain. However, + these functions provide lower accuracy. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use sinpican be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vsinpi.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/special-functions.rst b/source/elements/oneMKL/source/domains/vm/special-functions.rst new file mode 100644 index 0000000000..358f4dc9aa --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/special-functions.rst @@ -0,0 +1,54 @@ +.. _special-functions: + +Special Functions +================= + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Mathematical + Functions `__ + + +.. container:: + + + - `erf `__ + Computes the error function value of vector elements. + - `erfc `__ + Computes the complementary error function value of vector + elements. + - `cdfnorm `__ + Computes the cumulative normal distribution function values of + vector elements. + - `erfinv `__ + Computes inverse error function value of vector elements. + - `erfcinv `__ + Computes the inverse complementary error function value of vector + elements. + - `cdfnorminv `__ + Computes the inverse cumulative normal distribution function + values of vector elements. + - `lgamma `__ + Computes the natural logarithm of the absolute value of gamma + function for vector elements. + - `tgamma `__ + Computes the gamma function of vector elements. + - `expint1 `__ + Computes the exponential integral of vector elements. + +.. toctree:: + :hidden: + + erf + erfc + cdfnorm + erfinv + erfcinv + cdfnorminv + lgamma + tgamma + expint1 diff --git a/source/elements/oneMKL/source/domains/vm/special-value-notations.rst b/source/elements/oneMKL/source/domains/vm/special-value-notations.rst new file mode 100644 index 0000000000..ce5480aeba --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/special-value-notations.rst @@ -0,0 +1,60 @@ +.. _special-value-notations: + +Special Value Notations +======================= + + +.. container:: + + + This defines notations of special values for complex functions. The + definitions are provided in text, tables, or formulas. + + + - z, z1, z2, etc. denote complex numbers. + + + - i, ``i2=-1`` is the imaginary unit. + + + - x, X, x1, x2, etc. denote real imaginary parts. + + + - y, Y, y1, y2, etc. denote imaginary parts. + + + - X and Y represent any finite positive IEEE-754 floating point + values, if not stated otherwise. + + + - Quiet NaN and signaling NaN are denoted with QNAN and SNAN, + respectively. + + + - The IEEE-754 positive infinities or floating-point numbers are + denoted with a ``+`` sign before X, Y, etc. + + + - The IEEE-754 negative infinities or floating-point numbers are + denoted with a ``-`` sign before X, Y, etc. + + + ``CONJ(z)`` and ``CIS(z)`` are defined as follows: + + + ``CONJ(x+i·y)=x-i·y`` + + + ``CIS(y)=cos(y)+i·sin(y)``. + + + The special value tables show the result of the function for the z + argument at the intersection of the RE(z) column and the i*IM(z) row. + If the function raises an exception on the argument z, the lower part + of this cell shows the raised exception and the VM Error Status. An + empty cell indicates that this argument is normal and the result is + defined mathematically. + + +**Parent topic:** :ref:`onemkl_vm` + diff --git a/source/elements/oneMKL/source/domains/vm/sqr.rst b/source/elements/oneMKL/source/domains/vm/sqr.rst new file mode 100644 index 0000000000..2692d659bd --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/sqr.rst @@ -0,0 +1,205 @@ +.. _sqr: + +sqr +=== + + +.. container:: + + + Performs element by element squaring of the vector. + + + .. container:: section + :name: GUID-6CA37435-16EE-4C60-82C0-21C25BB5BA59 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void sqr( queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event sqr( queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``sqr`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-CCDDF7AC-0DF5-48D3-B7BF-290C6A40D84F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sqr() function performs element by element sqaring of the vector. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - +0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The ``sqr`` function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing the input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use sqrcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vsqr.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/sqrt.rst b/source/elements/oneMKL/source/domains/vm/sqrt.rst new file mode 100644 index 0000000000..ec024ff1f5 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/sqrt.rst @@ -0,0 +1,301 @@ +.. _sqrt: + +sqrt +==== + + +.. container:: + + + Computes a square root of vector elements. + + + .. container:: section + :name: GUID-EFEC353B-3FDA-45D7-BD63-76814D931C73 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void sqrt(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event sqrt(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``sqrt`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-51B494BC-9297-4A34-86C2-349D9F30E076 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sqrt function computes a square root of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - VM Error Status + * - a< +0 + - QNAN + - ``status::errdom`` + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - -∞ + - QNAN + - ``status::errdom`` + * - +∞ + - +∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - + - + - + - + - + - + - + - + * - +i·∞ + - +∞+i·∞ + - +∞+i·∞ + - +∞+i·∞ + - +∞+i·∞ + - +∞+i·∞ + - +∞+i·∞ + - +∞+i·∞ + * - +i·Y + - +0+i·∞ + -   + -   + -   + -   + - +∞+i·0 + - + * - +i·0 + - +0+i·∞ + -   + - +0+i·0 + - +0+i·0 + -   + - +∞+i·0 + - + * - -i·0 + - +0-i·∞ + -   + - +0-i·0 + - +0-i·0 + -   + - +∞-i·0 + - + * - -i·Y + - +0-i·∞ + -   + -   + -   + -   + - +∞-i·0 + - + * - -i·∞ + - +∞-i·∞ + - +∞-i·∞ + - +∞-i·∞ + - +∞-i·∞ + - +∞-i·∞ + - +∞-i·∞ + - +∞-i·∞ + * - +i·NAN + - + - + - + - + - + - + - + + + + + Notes: + + + - ``Sqrt(CONJ(z))=CONJ(Sqrt(z))``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use sqrtcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vsqrt.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Power and Root + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/sub.rst b/source/elements/oneMKL/source/domains/vm/sub.rst new file mode 100644 index 0000000000..e1b22d858b --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/sub.rst @@ -0,0 +1,267 @@ +.. _sub: + +sub +=== + + +.. container:: + + + Performs element by element subtraction of vector ``b`` from vector + ``a``. + + + .. container:: section + :name: GUID-CD3709AE-F9A1-4D3D-9BD8-C017E73618C9 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void sub( queue& exec_queue, int64_t n, buffer& a, buffer& b, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event sub( queue& exec_queue, int64_t n, T\* a, T\* b, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler - {} ) + + ``sub`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-CCDDF7AC-0DF5-48D3-B7BF-290C6A40D84F + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The sub(a, b) function performs element by element subtraction of + vector ``a`` and vector ``b``. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument 1 + - Argument 2 + - Result + - Error Code + * - +0 + - +0 + - +0 + -   + * - +0 + - -0 + - +0 + -   + * - -0 + - +0 + - +0 + -   + * - -0 + - -0 + - -0 + -   + * - +∞ + - +∞ + - QNAN + -   + * - +∞ + - -∞ + - +∞ + -   + * - -∞ + - +∞ + - -∞ + -   + * - -∞ + - -∞ + - QNAN + -   + * - SNAN + - any value + - QNAN + -   + * - any value + - SNAN + - QNAN + -   + + + + + Specifications for special values of the complex functions are + defined according to the following formula + + + ``sub(x1+i*y1,x2+i*y2) = (x1-x2) + i*(y1-y2)`` + + + Overflow in a complex function occurs (supported in the HA/LA + accuracy modes only) when all RE(x), RE(y), IM(x), IM(y) arguments + are finite numbers, but the real or imaginary part of the computed + result is so large that it does not fit the target precision. In this + case, the function returns ∞ in that part of the result, and sets the + VM Error Status to ``status::overflow`` (overriding any possible + ``status::accuracy_warning`` status). + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing 1st input vector of size ``n``. + + + b + The buffer ``b`` containing 2nd input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the 1st input vector of size ``n``. + + + b + Pointer ``b`` to the 2nd input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use subcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vsub.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Arithmetic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/tan.rst b/source/elements/oneMKL/source/domains/vm/tan.rst new file mode 100644 index 0000000000..9921cbc898 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/tan.rst @@ -0,0 +1,235 @@ +.. _tan: + +tan +=== + + +.. container:: + + + Computes tangent of vector elements. + + + .. container:: section + :name: GUID-6D99833C-1F80-403C-8000-8355E101AD69 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void tan(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event tan(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``tan`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-5ACA87D6-265E-4BB8-A6F2-DA8D82CCAF55 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tan(a) function computes tangent of vector elements. + + + Note that arguments ``abs(a[i]) ≤ 213``\ and ``abs(a[i]) ≤ 216``\ for + single and double precisions respectively are called fast + computational path. These are trigonometric function arguments for + which VM provides the best possible performance. Avoid arguments that + do not belong to the fast computational path in the VM High Accuracy + (HA) and Low Accuracy (LA) functions. Alternatively, you can use VM + Enhanced Performance (EP) functions that are fast on the entire + function domain. However, these functions provide less accuracy. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + Specificationsfor special values of the complex functions are defined + according to the following formula + + + ``Tan(z) = -i*Tanh(i*z)``. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use tancan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vtan.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/tand.rst b/source/elements/oneMKL/source/domains/vm/tand.rst new file mode 100644 index 0000000000..dd56bec0c1 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/tand.rst @@ -0,0 +1,230 @@ +.. _tand: + +tand +==== + + +.. container:: + + + Computes the tangent of vector elements multiplied by ``π``/180. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void tand(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event tand(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``tand`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-C2F9FC08-8C02-44F4-8140-831198C9C0A2 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tand(a) function computes the tangent of vector elements + multiplied by ``π``/180. For an argument ``x``, the function computes + tan(``π``\ \*\ ``x``/180). + + + Note that arguments abs(``a``\ :sub:`i`) ≤ 2\ :sup:`38` for single + precision or abs(``a``\ :sub:`i` ) ≤ 2\ :sup:`67` for double + precision, they belong to the *fast computational path*: + trigonometric function arguments for which VM provides the best + possible performance. Avoid arguments with do not belong to the fast + computational path in VM High Accuracy (HA) or Low Accuracy (LA) + functions. For arguments which do not belong to the fast + computational path you can use VM Enhanced Performance (EP) + functions, which are fast on the entire function domain. However, + these functions provide lower accuracy. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +1 + -   + * - -0 + - +1 + -   + * - ±∞ + - QNAN + - ``status::errdom`` + * - ±∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use tandcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vtand.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/tanh.rst b/source/elements/oneMKL/source/domains/vm/tanh.rst new file mode 100644 index 0000000000..8d075be8ec --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/tanh.rst @@ -0,0 +1,290 @@ +.. _tanh: + +tanh +==== + + +.. container:: + + + Computes hyperbolic tangent of vector elements. + + + .. container:: section + :name: GUID-DAEB1EBF-EC01-4458-AB18-4D7D7B75B89D + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void tanh(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event tanh(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``tanh`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + * - ``std::complex`` + * - ``std::complex`` + + + + +.. container:: section + :name: GUID-5AF8B657-65D9-4839-A32A-6D43FA7EC564 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tanh(a) function computes hyperbolic tangent of vector elements. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Erro Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +1 + -   + * - -∞ + - -1 + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - + - + - + - + - + - + - + - + * - +i·∞ + - -1+i·0 + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - +1+i·0 + - QNAN+i·QNAN + * - +i·Y + - -1+i·0·Tan(Y) + -   + -   + -   + -   + - +1+i·0·Tan(Y) + - QNAN+i·QNAN + * - +i·0 + - -1+i·0 + -   + - -0+i·0 + - +0+i·0 + -   + - +1+i·0 + - QNAN+i·0 + * - -i·0 + - -1-i·0 + -   + - -0-i·0 + - +0-i·0 + -   + - +1-i·0 + - QNAN-i·0 + * - -i·Y + - -1+i·0·Tan(Y) + -   + -   + -   + -   + - +1+i·0·Tan(Y) + - QNAN+i·QNAN + * - -i·∞ + - -1-i·0 + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - +1-i·0 + - QNAN+i·QNAN + * - +i·NAN + - -1+i·0 + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - QNAN+i·QNAN + - +1+i·0 + - QNAN+i·QNAN + + + + + Notes: + + + - ``tanh(CONJ(a))=CONJ(tanh(a))`` + + + - ``tanh(-a)=-tanh(a)``. + + + The tanh(a) function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use tanhcan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vtanh.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Hyperbolic + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/tanpi.rst b/source/elements/oneMKL/source/domains/vm/tanpi.rst new file mode 100644 index 0000000000..1fedf37733 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/tanpi.rst @@ -0,0 +1,246 @@ +.. _tanpi: + +tanpi +===== + + +.. container:: + + + Computes the tangent of vector elements multiplied by ``π``. + + + .. container:: section + :name: SYNTAX_86CD5B48F7F8421581B2186506AA2C36 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void tanpi(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event tanpi(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``tanpi`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-DF8B717D-CDFE-441D-8B48-643A7DA97E03 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tanpi(a) function computes the tangent of vector elements + multiplied by ``π``. For an argument ``a``, the function computes + tan(``π``\ \*\ ``a``). + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - +0 + -   + * - ``n``, even integer + - \*copysign(0.0, ``n``) + -   + * - ``n``, odd integer + - \*copysign(0.0, -``n``) + -   + * - ``n`` + 0.5, for ``n`` even integer and ``n`` + 0.5 representable + - +∞ + -   + * - ``n`` + 0.5, for ``n`` odd integer and ``n`` + 0.5 representable + - -∞ + -   + * - +∞ + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The copysign(``x``, ``y``) function returns the first vector argument + ``x`` with the sign changed to match that of the second argument + ``y``. + + + If arguments abs(``a``\ :sub:`i`) ≤ 2 :sup:`13` for single precision + or abs(``a``\ :sub:`i` ) ≤ 2 :sup:`67` for double precision, they + belong to the *fast computational path*: arguments for which VM + provides the best possible performance. Avoid arguments with do not + belong to the fast computational path in VM High Accuracy (HA) or Low + Accuracy (LA) functions. For arguments which do not belong to the + fast computational path you can use VM Enhanced Performance (EP) + functions, which are fast on the entire function domain. However, + these functions provide lower accuracy. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use tanpican be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vtanpi.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Trigonometric + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/tgamma.rst b/source/elements/oneMKL/source/domains/vm/tgamma.rst new file mode 100644 index 0000000000..874a553baf --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/tgamma.rst @@ -0,0 +1,227 @@ +.. _tgamma: + +tgamma +====== + + +.. container:: + + + Computes the gamma function of vector elements. + + + .. container:: section + :name: GUID-CE159D7D-1729-47B4-A6A3-A6F6C9874CA5 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void tgamma(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + USM API: + + + .. cpp:function:: event tgamma(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined, error_handler errhandler = {} ) + + ``tgamma`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-889535A0-20A9-4B0F-BB51-783348A1F9A6 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The tgamma(a) function computes the gamma function for elements of + the input vector ``a`` and writes them to the output vector ``y``. + Precision overflow thresholds for the tgamma function are beyond the + scope of this document. If the result does not meet the target + precision, the function raises sets the VM Error Status to + status::sing. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +∞ + - ``status::sing`` + * - -0 + - -∞ + - ``status::sing`` + * - negative integer + - QNAN + - ``status::errdom`` + * - -∞ + - QNAN + - ``status::errdom`` + * - +∞ + - +∞ + -   + * - a > overflow + - +∞ + - ``status::sing`` + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + errhandler + Sets local error handling mode for this function call. See the + `create_error_handler `__ + function for arguments and their descriptions. This is an optional + parameter. The local error handler is disabled by default. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use tgammacan be found in the oneMKL + installation directory, under: + + + :: + + + examples/sycl/vml/vtgamma.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Special + Functions `__ + + +.. container:: + diff --git a/source/elements/oneMKL/source/domains/vm/trigonometric-functions.rst b/source/elements/oneMKL/source/domains/vm/trigonometric-functions.rst new file mode 100644 index 0000000000..9d58941770 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/trigonometric-functions.rst @@ -0,0 +1,81 @@ +.. _trigonometric-functions: + +Trigonometric Functions +======================= + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `VM Mathematical + Functions `__ + + +.. container:: + + + - `cos `__ + Computes cosine of vector elements. + - `sin `__ + Computes sine of vector elements. + - `sincos `__ + Computes sine and cosine of vector elements. + - `cis `__ + Computes complex exponent of real vector elements (cosine and sine + of real vector elements combined to complex value). + - `tan `__ + Computes tangent of vector elements. + - `acos `__ + Computes inverse cosine of vector elements. + - `asin `__ + Computes inverse sine of vector elements. + - `atan `__ + Computes inverse tangent of vector elements. + - `atan2 `__ + Computes four-quadrant inverse tangent of elements of two vectors. + - `cospi `__ + Computes the cosine of vector elements multiplied by ``π``. + - `sinpi `__ + Computes the sine of vector elements multiplied by ``π``. + - `tanpi `__ + Computes the tangent of vector elements multiplied by ``π``. + - `acospi `__ + Computes the inverse cosine of vector elements divided by ``π``. + - `asinpi `__ + Computes the inverse sine of vector elements divided by ``π``. + - `atanpi `__ + Computes the inverse tangent of vector elements divided by ``π``. + - `atan2pi `__ + Computes the four-quadrant inverse tangent of the ratios of the + corresponding elements of two vectors divided by ``π``. + - `cosd `__ + Computes the cosine of vector elements multiplied by ``π``/180. + - `sind `__ + Computes the sine of vector elements multiplied by ``π``/180. + - `tand `__ + Computes the tangent of vector elements multiplied by ``π``/180. + +.. toctree:: + :hidden: + + cos + sin + sincos + cis + tan + acos + asin + atan + atan2 + cospi + sinpi + tanpi + acospi + asinpi + atanpi + atan2pi + cosd + sind + tand diff --git a/source/elements/oneMKL/source/domains/vm/trunc.rst b/source/elements/oneMKL/source/domains/vm/trunc.rst new file mode 100644 index 0000000000..c342c75b69 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/trunc.rst @@ -0,0 +1,214 @@ +.. _trunc: + +trunc +===== + + +.. container:: + + + Computes an integer valuerounded towards zero for each vector + element. + + + .. container:: section + :name: GUID-7C064574-4033-4AA4-B9AD-B7AADB25CAE4 + + + .. rubric:: Syntax + :name: syntax + :class: sectiontitle + + + Buffer API: + + + .. cpp:function:: void trunc(queue& exec_queue, int64_t n, buffer& a, buffer& y, uint64_t mode = mode::not_defined ) + + USM API: + + + .. cpp:function:: event trunc(queue& exec_queue, int64_t n, T\* a, T\* y, vector_class\* depends, uint64_t mode = mode::not_defined ) + + ``trunc`` supports the following precisions. + + + .. list-table:: + :header-rows: 1 + + * - T + * - ``float`` + * - ``double`` + + + + +.. container:: section + :name: GUID-0589178E-949F-4F9A-B773-98FF38619B20 + + + .. rubric:: Description + :name: description + :class: sectiontitle + + + The trunc(a)functioncomputes an integer valuerounded towards zero for + each vector element. + + + | + | |image0| + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Argument + - Result + - Error Code + * - +0 + - +0 + -   + * - -0 + - -0 + -   + * - +∞ + - +∞ + -   + * - -∞ + - -∞ + -   + * - QNAN + - QNAN + -   + * - SNAN + - QNAN + -   + + + + + The trunc function does not generate any errors. + + +.. container:: section + :name: GUID-8D31EE70-939F-4573-948A-01F1C3018531 + + + .. rubric:: Input Parameters + :name: input-parameters + :class: sectiontitle + + + Buffer API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + The buffer ``a`` containing input vector of size ``n``. + + + mode + Overrides the global VM mode setting for this function call. See + `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + + USM API: + + + exec_queue + The queue where the routine should be executed. + + + n + Specifies the number of elements to be calculated. + + + a + Pointer ``a`` to the input vector of size ``n``. + + + depends + Vector of dependent events (to wait for input data to be ready). + + + mode + Overrides the global VM mode setting for this function call. See + the `set_mode `__ + function for possible values and their description. This is an + optional parameter. The default value is ``mode::not_defined``. + + +.. container:: section + :name: GUID-08546E2A-7637-44E3-91A3-814E524F5FB7 + + + .. rubric:: Output Parameters + :name: output-parameters + :class: sectiontitle + + + Buffer API: + + + y + The buffer ``y`` containing the output vector of size ``n``. + + + USM API: + + + y + Pointer ``y`` to the output vector of size ``n``. + + + return value (event) + Function end event. + + +.. container:: section + :name: GUID-C97BF68F-B566-4164-95E0-A7ADC290DDE2 + + + .. rubric:: Example + :name: example + :class: sectiontitle + + + An example of how to use trunccan be found in the oneMKL installation + directory, under: + + + :: + + + examples/sycl/vml/vtrunc.cpp + + +.. container:: familylinks + + + .. container:: parentlink + + + **Parent topic:** `Rounding + Functions `__ + + +.. container:: + + +.. |image0| image:: ../equations/GUID-CA113DF0-DE46-42A1-99AF-93F6F76E72EA-low.gif + diff --git a/source/elements/oneMKL/source/domains/vm/vector_math.inc.rst b/source/elements/oneMKL/source/domains/vm/vector_math.inc.rst new file mode 100644 index 0000000000..64ab303468 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/vector_math.inc.rst @@ -0,0 +1,54 @@ +.. _onemkl_vm: + +Vector Math +------------ + +.. container:: + + + 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. + + - :ref:`special-value-notations` + - :ref:`miscellaneous-vm-functions` + +.. toctree:: + :hidden: + + vm/special-value-notations + vm/vm-mathematical-functions + vm/vm-service-functions + vm/miscellaneous-vm-functions + vm/bibliography diff --git a/source/elements/oneMKL/source/domains/vm/vm-mathematical-functions.rst b/source/elements/oneMKL/source/domains/vm/vm-mathematical-functions.rst new file mode 100644 index 0000000000..1f7c4a8444 --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/vm-mathematical-functions.rst @@ -0,0 +1,340 @@ +.. _vm-mathematical-functions: + +VM Mathematical Functions +========================= + + +.. container:: + + + This section describes VM functions that compute values of + mathematical functions on real and complex vector arguments with unit + increment. + + + Each function is introduced by its short name, a brief description of + its purpose, and the calling sequence for each type of data, as well + as a description of the input/output arguments. + + + The input range of parameters is equal to the mathematical range of + the input data type, unless the function description specifies input + threshold values, which mark off the precision overflow, as follows: + + + - + + + .. container:: + :name: LI_BD1C9B3D061F4CAEBA02237BA30BB74C + + + FLT_MAX denotes the maximum number representable in single + precision real data type + + + - + + + .. container:: + :name: LI_5B56F34431C341C1960E27ABE0B480E3 + + + DBL_MAX denotes the maximum number representable in double + precision real data type + + + `Table "VM Mathematical Functions" <#TBL9-2>`__ lists available + mathematical functions and associated data types. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Function + - Data Types + - Description + * - `Arithmetic Functions: `__ + - + - + * - `add `__ + - s, d, c, z + - Adds vector elements + * - `sub `__ + - s, d, c, z + - Subtracts vector elements + * - `sqr `__ + - s, d + - Squares vector elements + * - `mul `__ + - s, d, c, z + - Multiplies vector elements + * - `mulbyconj `__ + - c, z + - Multiplies elements of one vector by conjugated elements of the second vector + * - `conj `__ + - c, z + - Conjugates vector elements + * - `abs `__ + - s, d, c, z + - Computes the absolute value of vector elements + * - `arg `__ + - c, z + - Computes the argument of vector elements + * - `linearfrac `__ + - s, d + - Performs linear fraction transformation of vectors + * - `fmod `__ + - s, d + - Performs element by element computation of the modulus function of vector ``a`` with respect to vector ``b`` + * - `remainder `__ + - s, d + - Performs element by element computation of the remainder function on the elements of vector ``a`` and the corresponding elements of vector ``b`` + * - `Power and Root Functions: `__ + - + - + * - `inv `__ + - s, d + - Inverts vector elements + * - `div `__ + - s, d, c, z + - Divides elements of one vector by elements of the second vector + * - `sqrt `__ + - s, d, c, z + - Computes the square root of vector elements + * - `invsqrt `__ + - s, d + - Computes the inverse square root of vector elements + * - `cbrt `__ + - s, d + - Computes the cube root of vector elements + * - `invcbrt `__ + - s, d + - Computes the inverse cube root of vector elements + * - `pow2o3 `__ + - s, d + - Computes the cube root of the square of each vector element + * - `pow3o2 `__ + - s, d + - Computes the square root of the cube of each vector element + * - `pow `__ + - s, d, c, z + - Raises each vector element to the specified power + * - `powx `__ + - s, d, c, z + - Raises each vector element to the constant power + * - `powr `__ + - s, d + - Computes ``a`` to the power ``b`` for elements of two vectors, where the elements of vector argument ``a`` are all non-negative + * - `hypot `__ + - s, d + - Computes the square root of sum of squares + * - `Exponential and Logarithmic Functions: `__ + - + - + * - `exp `__ + - s, d, c, z + - Computes the base ``e`` exponential of vector elements + * - `exp2 `__ + - s, d + - Computes the base 2 exponential of vector elements + * - `exp10 `__ + - s, d + - Computes the base 10 exponential of vector elements + * - `expm1 `__ + - s, d + - Computes the base ``e`` exponential of vector elements decreased by 1 + * - `ln `__ + - s, d, c, z + - Computes the natural logarithm of vector elements + * - `log2 `__ + - s, d + - Computes the base 2 logarithm of vector elements + * - `log10 `__ + - s, d, c, z + - Computes the base 10 logarithm of vector elements + * - `log1p `__ + - s, d + - Computes the natural logarithm of vector elements that are increased by 1 + * - `logb `__ + - s, d + - Computes the exponents of the elements of input vector ``a`` + * - `Trigonometric Functions: `__ + - + - + * - `cos `__ + - s, d, c, z + - Computes the cosine of vector elements + * - `sin `__ + - s, d, c, z + - Computes the sine of vector elements + * - `sincos `__ + - s, d + - Computes the sine and cosine of vector elements + * - `cis `__ + - c, z + - Computes the complex exponent of vector elements (cosine and sine combined to complex value) + * - `tan `__ + - s, d, c, z + - Computes the tangent of vector elements + * - `acos `__ + - s, d, c, z + - Computes the inverse cosine of vector elements + * - `asin `__ + - s, d, c, z + - Computes the inverse sine of vector elements + * - `atan `__ + - s, d, c, z + - Computes the inverse tangent of vector elements + * - `atan2 `__ + - s, d + - Computes the four-quadrant inverse tangent of ratios of the elements of two vectors + * - `cospi `__ + - s, d + - Computes the cosine of vector elements multiplied by ``π`` + * - `sinpi `__ + - s, d + - Computes the sine of vector elements multiplied by ``π`` + * - `tanpi `__ + - s, d + - Computes the tangent of vector elements multiplied by ``π`` + * - `acospi `__ + - s, d + - Computes the inverse cosine of vector elements divided by ``π`` + * - `asinpi `__ + - s, d + - Computes the inverse sine of vector elements divided by ``π`` + * - `atanpi `__ + - s, d + - Computes the inverse tangent of vector elements divided by ``π`` + * - `atan2pi `__ + - s, d + - Computes the four-quadrant inverse tangent of the ratios of the corresponding elementss of two vectors divided by ``π`` + * - `cosd `__ + - s, d + - Computes the cosine of vector elements multiplied by ``π``/180 + * - `sind `__ + - s, d + - Computes the sine of vector elements multiplied by ``π``/180 + * - `tand `__ + - s, d + - Computes the tangent of vector elements multiplied by ``π``/180 + * - `Hyperbolic Functions: `__ + - + - + * - `cosh `__ + - s, d, c, z + - Computes the hyperbolic cosine of vector elements + * - `sinh `__ + - s, d, c, z + - Computes the hyperbolic sine of vector elements + * - `tanh `__ + - s, d, c, z + - Computes the hyperbolic tangent of vector elements + * - `acosh `__ + - s, d, c, z + - Computes the inverse hyperbolic cosine of vector elements + * - `asinh `__ + - s, d, c, z + - Computes the inverse hyperbolic sine of vector elements + * - `atanh `__ + - s, d, c, z + - Computes the inverse hyperbolic tangent of vector elements. + * - `Special Functions: `__ + - + - + * - `erf `__ + - s, d + - Computes the error function value of vector elements + * - `erfc `__ + - s, d + - Computes the complementary error function value of vector elements + * - `cdfnorm `__ + - s, d + - Computes the cumulative normal distribution function value of vector elements + * - `erfinv `__ + - s, d + - Computes the inverse error function value of vector elements + * - `erfcinv `__ + - s, d + - Computes the inverse complementary error function value of vector elements + * - `cdfnorminv `__ + - s, d + - Computes the inverse cumulative normal distribution function value of vector elements + * - `lgamma `__ + - s, d + - Computes the natural logarithm for the absolute value of the gamma function of vector elements + * - `tgamma `__ + - s, d + - Computes the gamma function of vector elements + * - `expint1 `__ + - s, d + - Computes the exponential integral of vector elements + * - `Rounding Functions: `__ + - + - + * - `floor `__ + - s, d + - Rounds towards minus infinity + * - `ceil `__ + - s, d + - Rounds towards plus infinity + * - `trunc `__ + - s, d + - Rounds towards zero infinity + * - `round `__ + - s, d + - Rounds to nearest integer + * - `nearbyint `__ + - s, d + - Rounds according to current mode + * - `rint `__ + - s, d + - Rounds according to current mode and raising inexact result exception + * - `modf `__ + - s, d + - Computes the integer and fractional parts + * - `frac `__ + - s, d + - Computes the fractional part + * - `Miscellaneous Functions: `__ + - + - + * - `copysign `__ + - s, d + - Returns vector of elements of one argument with signs changed to match other argument elements + * - `nextafter `__ + - s, d + - Returns vector of elements containing the next representable floating-point values following the values from the elements of one vector in the direction of the corresponding elements of another vector + * - `fdim `__ + - s, d + - Returns vector containing the differences of the corresponding elements of the vector arguments if the first is larger and +0 otherwise + * - `fmax `__ + - s, d + - Returns the larger of each pair of elements of the two vector arguments + * - `fmin `__ + - s, d + - Returns the smaller of each pair of elements of the two vector arguments + * - `maxmag `__ + - s, d + - Returns the element with the larger magnitude between each pair of elements of the two vector arguments + * - `minmag `__ + - s, d + - Returns the element with the smaller magnitude between each pair of elements of the two vector arguments + + +**Parent topic:** :ref:`onemkl_vm` + +.. toctree:: + :hidden: + + arithmetic-functions + power-and-root-functions + exponential-and-logarithmic-functions + trigonometric-functions + hyperbolic-functions + special-functions + rounding-functions diff --git a/source/elements/oneMKL/source/domains/vm/vm-service-functions.rst b/source/elements/oneMKL/source/domains/vm/vm-service-functions.rst new file mode 100644 index 0000000000..77fba527af --- /dev/null +++ b/source/elements/oneMKL/source/domains/vm/vm-service-functions.rst @@ -0,0 +1,48 @@ +.. _vm-service-functions: + +VM Service Functions +==================== + + +.. container:: + + + The VM Service functions enable you to set/get the accuracy mode and + error code. These functions are available both in the Fortran and C + interfaces. The table below lists available VM Service functions and + their short description. + + + .. container:: tablenoborder + + + .. list-table:: + :header-rows: 1 + + * - Function Short Name + - Description + * - `set_mode `__ + - Sets the VM mode + * - `get_mode `__ + - Gets the VM mode + * - `set_status `__ + - Sets the VM Error Status + * - `get_status `__ + - Gets the VM Error Status + * - `clear_status `__ + - Clears the VM Error Status + * - `create_error_handler `__ + - Creates the local VM error handler for a function + + +**Parent topic:** :ref:`onemkl_vm` + +.. toctree:: + :hidden: + + setmode + get_mode + set_status + get_status + clear_status + create_error_handler diff --git a/source/elements/oneMKL/source/index.rst b/source/elements/oneMKL/source/index.rst index 944c4ff13a..b4b62e8824 100644 --- a/source/elements/oneMKL/source/index.rst +++ b/source/elements/oneMKL/source/index.rst @@ -7,32 +7,14 @@ |mkl_full_name| (oneMKL) ======================== -The |mkl_full_name| (oneMKL) is a computing math library of highly -optimized and extensively parallelized routines for applications that -require maximum performance. oneMKL contains the high performance -optimizations from the full Intel® Math Kernel Library for CPU -architectures (with C/Fortran programming language interfaces) and -adds to them a set of Data Parallel C++ (DPC++) programming language -interfaces for achieving performance on various CPU and Intel® GPU -architectures for certain key functionalities. The new DPC++ -interfaces with optimizations for CPU and Intel® GPU architectures -have been added for key functionality in the following major areas of -computation: +The |mkl_full_name| (oneMKL) defines a set of fundamental mathematical routines for use in high-performance computing and other applications. As part of oneAPI, oneMKL is designed to allow execution on a wide variety of computational devices: CPUs, GPUs, FPGAs, and other accelerators. The functionality is subdivided into several domains: dense linear algebra, sparse linear algebra, discrete Fourier transforms, random number generators and vector math. -- BLAS and LAPACK - dense linear algebra routine +The general assumptions, design features and requirements for the oneMKL library and its routines will be described in :ref:`onemkl_architecture`. The individual domains and their APIs are described in :ref:`onemkl_domains`. -- Sparse BLAS - sparse linear algebra routines -- Fast Fourier Transform (FFT) +.. toctree:: + :maxdepth: 2 + :numbered: -- Random number generators (RNG) - -- Vector Mathematics (VM) routines for optimized mathematical operations on vectors - -Detailed API Descriptions -------------------------- - -The detailed list of functions and their specification can be found in -the `oneMKL specification`_. - -.. _`oneMKL specification`: https://spec.oneapi.com/versions/0.6.0/oneMKL/index.htm + architecture/architecture.rst + domains/domains.rst From 8d5178404180b0c5901d15662751ff334c85c845 Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Wed, 25 Mar 2020 00:00:31 -0400 Subject: [PATCH 22/31] add imagemagick, disable mkl tarball (#96) Co-authored-by: Robert Cohn --- scripts/install.sh | 1 + scripts/oneapi.py | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/install.sh b/scripts/install.sh index e89a3d44c8..9a0d26ac77 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -48,6 +48,7 @@ popd apt-get install -y \ enchant \ graphviz \ + imagemagick \ latexmk \ texlive-latex-base \ texlive-fonts-recommended \ diff --git a/scripts/oneapi.py b/scripts/oneapi.py index c6b637c4ee..22acf41471 100644 --- a/scripts/oneapi.py +++ b/scripts/oneapi.py @@ -323,7 +323,7 @@ def purge(root, target=None): root_only(root) for (r,dirs,files) in os.walk('site', topdown=True): r = r.replace('site/','') - dirs = remove_elements(dirs,['oneL0', 'oneMKL']) + dirs = remove_elements(dirs,['oneL0']) for file in files: print('http://spec.oneapi.com/%s/%s' % (r, file)) @@ -375,8 +375,7 @@ def ci(root, target=None): 'oneDPL', 'oneDNN'] -tarballs = ['oneMKL', - 'oneL0'] +tarballs = ['oneL0'] def main(): global args From b4771b87833bdb597ed144617ca7d97fefc2d6fd Mon Sep 17 00:00:00 2001 From: Alexey Kukanov <29803928+akukanov@users.noreply.github.com> Date: Thu, 26 Mar 2020 00:19:38 +0300 Subject: [PATCH 23/31] Change how standalone oneTBB and oneDPL specs are built (#97) --- .gitlab-ci-onetbb.yml | 49 ++++- source/conf.py | 2 - source/conf/common_conf.py | 23 ++ source/conf/element_conf.py | 18 -- .../elements/oneTBB/source/_static/custom.css | 3 - .../elements/oneTBB/source/_static/custom.js | 15 -- .../oneTBB/source/_templates/breadcrumbs.html | 7 - .../oneTBB/source/_templates/footer.html | 11 - source/elements/oneTBB/source/conf.py | 202 +----------------- 9 files changed, 74 insertions(+), 256 deletions(-) delete mode 100644 source/elements/oneTBB/source/_static/custom.css delete mode 100644 source/elements/oneTBB/source/_static/custom.js delete mode 100644 source/elements/oneTBB/source/_templates/breadcrumbs.html delete mode 100644 source/elements/oneTBB/source/_templates/footer.html diff --git a/.gitlab-ci-onetbb.yml b/.gitlab-ci-onetbb.yml index 125322cc88..86e7eac494 100644 --- a/.gitlab-ci-onetbb.yml +++ b/.gitlab-ci-onetbb.yml @@ -1,18 +1,55 @@ -build_tbb_spec: +build_oneTBB_html: stage: build - tags: [python-sphinx] + tags: [docker_linux] + image: tr_ubuntu18.04:oneapi-spec script: - - sphinx-build -b html source/elements/oneTBB/source onetbb_spec + - python3 -m pip install -r requirements.txt + - python3 scripts/oneapi.py html source/elements/oneTBB artifacts: - paths: [onetbb_spec] + paths: [source/elements/oneTBB/build/html] + expire_in: 3d + +build_oneTBB_pdf: + stage: build + tags: [docker_linux] + image: tr_ubuntu18.04:oneapi-spec + script: + - python3 -m pip install -r requirements.txt + - python3 scripts/oneapi.py latexpdf source/elements/oneTBB + artifacts: + paths: [source/elements/oneTBB/build/latex/*.pdf] + expire_in: 3d + +build_oneDPL_html: + stage: build + tags: [docker_linux] + image: tr_ubuntu18.04:oneapi-spec + script: + - python3 -m pip install -r requirements.txt + - python3 scripts/oneapi.py html source/elements/oneDPL + artifacts: + paths: [source/elements/oneDPL/build/html] + expire_in: 3d + +build_oneDPL_pdf: + stage: build + tags: [docker_linux] + image: tr_ubuntu18.04:oneapi-spec + script: + - python3 -m pip install -r requirements.txt + - python3 scripts/oneapi.py latexpdf source/elements/oneDPL + artifacts: + paths: [source/elements/oneDPL/build/latex/*.pdf] expire_in: 3d pages: stage: deploy tags: [linux] - needs: [build_tbb_spec] + needs: [build_oneTBB_html, build_oneDPL_html] only: [develop] script: - - mv onetbb_spec public + - mkdir -p public + - mv source/elements/oneTBB/build/html public/oneTBB + - mv source/elements/oneDPL/build/html public/oneDPL artifacts: paths: [public] diff --git a/source/conf.py b/source/conf.py index e97801e95f..30923ea5b0 100644 --- a/source/conf.py +++ b/source/conf.py @@ -238,6 +238,4 @@ breathe_default_project = 'oneAPI' notfound_default_language = 'versions' -def setup(app): - app.add_css_file('custom.css') diff --git a/source/conf/common_conf.py b/source/conf/common_conf.py index d18373a26c..ab2fbf9fe9 100644 --- a/source/conf/common_conf.py +++ b/source/conf/common_conf.py @@ -38,3 +38,26 @@ oneapi_spec_version = '0.6.0' primary_domain = 'cpp' + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + 'preamble': '\\DeclareUnicodeCharacter{2208}{$\\in$}', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', + 'extraclassoptions': 'openany,oneside' +} + +def setup(app): + add_custom_css = getattr(app,'add_css_file',getattr(app,'add_stylesheet')) + add_custom_css('custom.css') diff --git a/source/conf/element_conf.py b/source/conf/element_conf.py index 6dcf22b16e..9261459560 100644 --- a/source/conf/element_conf.py +++ b/source/conf/element_conf.py @@ -100,24 +100,6 @@ # -- Options for LaTeX output ------------------------------------------------ -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). diff --git a/source/elements/oneTBB/source/_static/custom.css b/source/elements/oneTBB/source/_static/custom.css deleted file mode 100644 index 5a12ade2d0..0000000000 --- a/source/elements/oneTBB/source/_static/custom.css +++ /dev/null @@ -1,3 +0,0 @@ -.wy-side-nav-search, .wy-nav-top { - background: #4308E5; -} diff --git a/source/elements/oneTBB/source/_static/custom.js b/source/elements/oneTBB/source/_static/custom.js deleted file mode 100644 index 5572415d67..0000000000 --- a/source/elements/oneTBB/source/_static/custom.js +++ /dev/null @@ -1,15 +0,0 @@ -//configure tms -var wapLocalCode = 'us-en'; -//dynamically set per localized site, see mapping table for values -var wapSection = "oneapi"; -//load tms -(function() { - var host = (window.document.location.protocol == 'http:') ? "http://www.intel.com" : "https://www.intel.com"; - var url = host+"/content/dam/www/global/wap/tms-loader.js"; //wap file url - var po = document.createElement('script'); - po.type = 'text/javascript'; - po.async = true; - po.src = url; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(po, s); -})(); diff --git a/source/elements/oneTBB/source/_templates/breadcrumbs.html b/source/elements/oneTBB/source/_templates/breadcrumbs.html deleted file mode 100644 index f2da77e73a..0000000000 --- a/source/elements/oneTBB/source/_templates/breadcrumbs.html +++ /dev/null @@ -1,7 +0,0 @@ -{%- extends "sphinx_rtd_theme/breadcrumbs.html" %} - -{% block breadcrumbs %} -{% endblock %} -{% block breadcrumbs_aside %} -{% endblock %} - diff --git a/source/elements/oneTBB/source/_templates/footer.html b/source/elements/oneTBB/source/_templates/footer.html deleted file mode 100644 index 9749acb9b0..0000000000 --- a/source/elements/oneTBB/source/_templates/footer.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends "!footer.html" %} - -{% block extrafooter %} -
    -
    -{% endblock %} - diff --git a/source/elements/oneTBB/source/conf.py b/source/elements/oneTBB/source/conf.py index cdbddd4af5..a8df99f901 100644 --- a/source/elements/oneTBB/source/conf.py +++ b/source/elements/oneTBB/source/conf.py @@ -12,68 +12,16 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) +import os +import sys +sys.path.insert(0, os.path.abspath(os.path.join('..','..','..','conf'))) +# element_conf needs to import this conf +sys.path.insert(0, os.path.abspath('.')) +project = 'oneTBB' -# -- Project information ----------------------------------------------------- +from element_conf import * -project = u'oneAPI Threading Building Blocks Specification' -copyright = u'2019, Intel Corporation' -author = u'Intel' - -# The short X.Y version -version = u'' -# The full version, including alpha/beta/rc tags -release = u'' - - -# -- General configuration --------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.doctest', -# 'sphinx.ext.intersphinx', - 'sphinx.ext.todo', - 'sphinx.ext.coverage', - 'sphinx.ext.mathjax', - 'sphinx.ext.ifconfig', - 'sphinx.ext.viewcode', -# 'sphinx.ext.githubpages', -# 'breathe', -# 'exhale' -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['nested-*.rst', 'uncategorized.rst', 'uncategorized/**', @@ -81,141 +29,7 @@ 'low_level_tasking/**', ] -# The name of the Pygments (syntax highlighting) style to use. -#pygments_style = None - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'sphinx_rtd_theme' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -# html_theme_options = {} - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] -html_js_files = ['custom.js'] - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# The default sidebars (for documents that don't match any pattern) are -# defined by theme itself. Builtin themes are using these templates by -# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', -# 'searchbox.html']``. -# -# html_sidebars = {} - - -# -- Options for HTMLHelp output --------------------------------------------- - -# Output file base name for HTML help builder. -htmlhelp_basename = 'oneTBB-spec' - - -# -- Options for LaTeX output ------------------------------------------------ - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, 'oneTBB-spec.tex', u'oneAPI Threading Building Blocks Specification', + ('index', 'oneTBB-spec.tex', u'oneAPI Threading Building Blocks Specification', u'Intel', 'manual'), ] - - -# -- Options for manual page output ------------------------------------------ - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'oneTBB-spec', u'oneAPI Threading Building Blocks Specification', - [author], 1) -] - - -# -- Options for Texinfo output ---------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'oneTBB-spec', u'oneAPI Threading Building Blocks Specification', - author, 'Intel', 'Specification for oneAPI Threading Building Blocks software.', - 'Miscellaneous'), -] - - -# -- Options for Epub output ------------------------------------------------- - -# Bibliographic Dublin Core info. -epub_title = project - -# The unique identifier of the text. This can be a ISBN number -# or the project homepage. -# -# epub_identifier = '' - -# A unique identification for the text. -# -# epub_uid = '' - -# A list of files that should not be packed into the epub file. -epub_exclude_files = ['search.html'] - - -# -- Extension configuration ------------------------------------------------- - -# -- Options for intersphinx extension --------------------------------------- - -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'https://docs.python.org/': None} - -# -- Options for todo extension ---------------------------------------------- - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = True - -breathe_projects = { - project:"../doxygen/xml" -} -breathe_default_project = project - -exhale_args = { - # These arguments are required - "containmentFolder": "./api", - "rootFileName": "library_root.rst", - "rootFileTitle": "Library API", - "doxygenStripFromPath": "..", - "fullApiSubSectionTitle": 'Full API' -} - -def setup(app): - add_custom_css = getattr(app,'add_css_file',getattr(app,'add_stylesheet')) - add_custom_css('custom.css') From 90702cdd894f8ddf095765d2b242162145504c37 Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Wed, 25 Mar 2020 17:45:00 -0400 Subject: [PATCH 24/31] add per-component version table (#98) Co-authored-by: Robert Cohn --- source/versions.rst | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/source/versions.rst b/source/versions.rst index 003fd06bff..14811b19c0 100644 --- a/source/versions.rst +++ b/source/versions.rst @@ -6,23 +6,35 @@ HTML and PDF Versions ===================== These are the versions that were available at time of publication. See -the `latest spec -`__ for newer +the `latest spec `__ for newer versions. ++---------+-------+--------+--------+--------+------------+--------+--------+--------+ +| oneAPI | DPC++ | oneDPL | oneDNN | oneCCL | Level Zero | oneTBB | oneVPL | oneMKL | ++=========+=======+========+========+========+============+========+========+========+ +| 0.7 | 0.7 | .91 | 0.7 | ++---------+--------+-------+--------+--------+------------+--------+--------+--------+ +| 0.6 | 0.6 | ++---------+-------+--------+--------+--------+------------+--------+--------+--------+ +| 0.5 | 0.5 | ++---------+-------+--------+--------+--------+------------+--------+--------+--------+ + ======== ========== ========= Version Date View ======== ========== ========= -0.6.0_ 01/31/2019 `HTML `__ `PDF `__ -0.5.0_ 11/17/2019 `HTML `__ +0.7 03/26/2020 `HTML `__ `PDF `__ +0.6 01/31/2020 `HTML `__ `PDF `__ +0.5 11/17/2019 `HTML `__ ======== ========== ========= -0.6.0 -+++++ +0.7 ++++ -Open source release +0.6 ++++ -0.5.0 -+++++ +0.5 ++++ Initial public release + From 93e265502a4b84d148ddefc8839b8bab191ffdac Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Fri, 27 Mar 2020 10:37:04 -0400 Subject: [PATCH 25/31] dpcpp update for 0.7 (#102) * Update DPC++ minimum C++ version and extension table/descriptions. Signed-off-by: Michael Kinsner * Fix up formatting of table Co-authored-by: Michael Kinsner Co-authored-by: Robert Cohn --- source/elements/dpcpp/source/index.rst | 97 ++++++++++++++++++++------ 1 file changed, 77 insertions(+), 20 deletions(-) diff --git a/source/elements/dpcpp/source/index.rst b/source/elements/dpcpp/source/index.rst index dc7fcaa6da..b2c86dfdfa 100644 --- a/source/elements/dpcpp/source/index.rst +++ b/source/elements/dpcpp/source/index.rst @@ -1,5 +1,5 @@ .. - Copyright 2019 Intel Corporation + Copyright 2019-2020 Intel Corporation .. _onedpcpp-section: @@ -10,13 +10,15 @@ Overview -------- -DPC++ is the language of oneAPI. It provides the features +DPC++ is the direct programming language and associated direct +programming APIs of oneAPI. It provides the features needed to define data parallel functions and to launch them on devices. The language is comprised of the following components: - C++. Every DPC++ program is also a C++ program. A - compliant DPC++ implementation must support C++11 or - later. See the `C++ Standard`_. + compliant DPC++ implementation must support the C++17 Core Language + (as specified in Sections 1-19 of ISO/IEC 14882:2017) or + newer. See the `C++ Standard`_. - SYCL. DPC++ includes the SYCL language. SYCL enables the definition of data parallel functions that can be offloaded to @@ -42,30 +44,59 @@ devices. The language is comprised of the following components: Table`_) for the classes of devices that the implementation can support. (See `SYCL Extensions`_.) -This specification requires a minimum of C++11, SYCL 1.2.1, and -DPC++ language features. These version and feature coverage requirements +This specification requires a minimum of C++17 Core Language support, SYCL 1.2.1, and +DPC++ extensions. These version and feature coverage requirements will evolve over time, with newer versions of C++ and SYCL being required, -some additional extensions being required, and some language features no longer +some additional extensions being required, and some DPC++ extensions no longer required if covered by newer C++ or SYCL versions directly. .. table:: DPC++ Extensions Table: Support requirements for DPC++ implementations supporting specific classes of devices :name: Extensions Table - ===================== ================ ================ ================ ============= - Extension CPU GPU FPGA Test [#test]_ - ===================== ================ ================ ================ ============= - USM Required [#USM]_ Required [#USM]_ Required [#USM]_ USM - In-order queues Required Required Required NA [#na]_ - Optional lambda name Required Required Required NA [#na]_ - Reduction Required Required Required NA [#na]_ - Subgroups Required Required Not required sub_group - Data flow pipes Not required Not required Required FPGA_tests - ===================== ================ ================ ================ ============= + ========================== ================ ================ ==================== ============= + Extension CPU GPU FPGA Test [#test]_ + ========================== ================ ================ ==================== ============= + `Unified Shared Memory`_ Required [#USM]_ Required [#USM]_ Required [#USM]_ `usm `__ + `In-order queues`_ Required Required Required NA [#na]_ + `Optional lambda name`_ Required Required Required NA [#na]_ + `Deduction guides`_ Required Required Required NA [#na]_ + `Reductions`_ Required Required Required NA [#na]_ + `Sub-groups`_ Required Required Not required [#tmp]_ `sub_group `__ + `Sub-group algorithms`_ Required Required Not required [#tmp]_ `sub_group `__ + `Enqueued barriers`_ Required Required Required NA + `Extended atomics`_ Required Required Required NA + `Group algorithms`_ Required Required Required NA + `Group mask`_ Required Required Required NA + `Restrict all arguments`_ Required Required Required NA + `Standard layout relaxed`_ Required Required Required NA + `Queue shortcuts`_ Required Required Required NA + `Reqd work-group size`_ Required Required Required NA + `Data flow pipes`_ Not required Not required Required `fpga_tests `__ + ========================== ================ ================ ==================== ============= + +.. _`Unified Shared Memory`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/USM +.. _`In-order queues`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/OrderedQueue +.. _`Optional lambda name`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/UnnamedKernelLambda +.. _`Deduction guides`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/guides +.. _`Reductions`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/Reduction +.. _`Sub-groups`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/SubGroup +.. _`Sub-group algorithms`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/SubGroupAlgorithms +.. _`Enqueued barriers`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/EnqueueBarrier +.. _`Extended atomics`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/ExtendedAtomics +.. _`Group algorithms`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/GroupAlgorithms +.. _`Group mask`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/GroupMask +.. _`Restrict all arguments`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/KernelRestrictAll +.. _`Standard layout relaxed`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/RelaxStdLayout +.. _`Queue shortcuts`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/QueueShortcuts +.. _`Reqd work-group size`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/ReqdWorkGroupSize +.. _`Data flow pipes`: https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions/DataFlowPipes + .. [#test] Test directory within `extension tests`_ -.. [#USM] Minimum explicit USM support +.. [#USM] Minimum of explicit USM support .. [#na] Not yet available. +.. [#tmp] Likely to be required in the future Detailed API and Language Descriptions -------------------------------------- @@ -83,14 +114,40 @@ A brief summary of the extensions is as follows: the *ordered_queue* class. - Optional lambda name - removes requirement to manually name lambdas that define kernels. Simplifies coding and enables composability with libraries. Lambdas can still be manually named, if - desired, such as when debugging. -- Reduction - provides a reduction abstraction to the ND-range form of *parallel_for*. Improves productivity + desired, such as when debugging or interfacing with a sycl::program object. +- Deduction guides - simplifies common code patterns and reduces code length and verbosity by enabling + Class Template Argument Deduction (CTAD) from modern C++. +- Reductions - provides a reduction abstraction to the ND-range form of *parallel_for*. Improves productivity by providing the common reduction pattern without explicit coding, and enables optimized implementations to exist for combinations of device, runtime, and reduction properties. - Subgroups - defines a grouping of work-items within a work-group. Synchronization of work-items in a subgroup can occur independently of work-items in other subgroups, and subgroups expose communication operations across work-items in the group. Subgroups commonly map to SIMD hardware where it exists. +- Subgroup algorithms - defines collective operations across work-items in a sub-group that are available + only for sub-groups. Also enables algorithms from the more generic "group algorithms" extension as sub-group + collective operations. +- Enqueued barriers - simplifies dependence creation and tracking for some common programming patterns by allowing + coarser grained synchronization within a queue without manual creation of fine grained dependencies. +- Extended atomics - provides atomic operations aligned with C++20, including support for floating-point types and + shorthand operators +- Group algorithms - defines collective operations that operate across groups of work-items, including broadcast, + reduce, and scan. Improves productivity by providing common algorithms without explicit coding, and enables optimized + implementations to exist for combinations of device and runtime. +- Group mask - defines a type that can represent a set of work-items from a group, and collective operations that create + or operate on that type such as ballot and count. +- Restrict all arguments - defines an attribute that can be applied to kernels (including lambda definitions of kernels) + which signals that there will be no memory aliasing between any pointer arguments that are passed to or captured + by a kernel. This is an optimization attribute that can have large impact when the developer knows more about the + kernel arguments than a compiler can infer or safely assume. +- Standard layout relaxed - removes the requirement that data shared by a host and device(s) must be C++ standard layout + types. Requires device compilers to validate layout compatibility. +- Queue shortcuts - defines kernel invocation functions directly on the queue classes, to simplify code patterns + where dependencies and/or accessors do not need to be created within the additional command group scope. Reduces + code verbosity in some common patterns. +- Required work-group size - defines an attribute that can be applied to kernels (including lambda definitions of kernels) + which signals that the kernel will only be invoked with a specific work-group size. This is an optimization attribute + that enables optimizations based on additional user-driven information. - Data flow pipes - enables efficient First-In, First-Out (FIFO) communication in DPC++, a mechanism commonly used when describing algorithms for spatial architectures such as FPGAs. From 4bf0c7e1d3d510d7e8f6a54648ba830e72029c54 Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Fri, 27 Mar 2020 11:54:11 -0400 Subject: [PATCH 26/31] add DAL, make level zero first (#99) --- source/conf.py | 3 +- source/conf/common_conf.py | 15 ++++- source/elements/dpcpp/source/index.rst | 10 +-- source/elements/l0/source/index.rst | 5 +- source/elements/oneCCL/source/index.rst | 6 +- source/elements/oneDAL/source/index.rst | 6 +- source/elements/oneDNN/source/index.rst | 6 +- source/elements/oneDPL/source/index.rst | 8 +-- source/elements/oneMKL/source/index.rst | 6 +- .../elements/oneTBB/source/nested-index.rst | 6 +- source/elements/oneVPL/source/index.rst | 6 +- source/index.rst | 1 - source/versions.rst | 66 +++++++++++-------- 13 files changed, 82 insertions(+), 62 deletions(-) diff --git a/source/conf.py b/source/conf.py index 30923ea5b0..89455c621d 100644 --- a/source/conf.py +++ b/source/conf.py @@ -26,8 +26,7 @@ author = u'Intel' # The short X.Y version -#version = u'0.61 <' + str(datetime.date.today()) + '>' -version = u'0.6.1' +version = u'0.7' # The full version, including alpha/beta/rc tags release = version diff --git a/source/conf/common_conf.py b/source/conf/common_conf.py index ab2fbf9fe9..3b09314af5 100644 --- a/source/conf/common_conf.py +++ b/source/conf/common_conf.py @@ -16,17 +16,26 @@ ] rst_prolog = """ +.. |dpcpp_full_name| replace:: oneAPI Data Parallel C++ +.. |dpcpp_version| replace:: 0.7 +.. |dpl_full_name| replace:: oneAPI DPC++ Library +.. |dpl_version| replace:: 0.7 .. |ccl_full_name| replace:: oneAPI Collective Communications Library +.. |ccl_version| replace:: 0.7 .. |dal_full_name| replace:: oneAPI Data Analytics Library .. |dal_short_name| replace:: oneDAL +.. |dal_version| replace:: 0.7 .. |dal_namespace| replace:: daal .. |dnn_full_name| replace:: oneAPI Deep Neural Network Library -.. |dpl_full_name| replace:: oneAPI DPC++ Library -.. |dpcpp_full_name| replace:: DPC++ +.. |dnn_version| replace:: 0.7 .. |l0_full_name| replace:: oneAPI Level Zero -.. |mkl_full_name| replace:: oneAPI Math Kernel Library +.. |l0_version| replace:: 0.91 .. |tbb_full_name| replace:: oneAPI Threading Building Blocks +.. |tbb_version| replace:: 0.7 .. |vpl_full_name| replace:: oneAPI Video Processing Library +.. |vpl_version| replace:: 0.7 +.. |mkl_full_name| replace:: oneAPI Math Kernel Library +.. |mkl_version| replace:: 0.7 """ # for substitutions in code blocks and sphinx-prompts: diff --git a/source/elements/dpcpp/source/index.rst b/source/elements/dpcpp/source/index.rst index b2c86dfdfa..805241a0cb 100644 --- a/source/elements/dpcpp/source/index.rst +++ b/source/elements/dpcpp/source/index.rst @@ -4,16 +4,16 @@ .. _onedpcpp-section: ========================= -|dpcpp_full_name| (DPC++) +DPC++ |dpcpp_version| ========================= Overview -------- -DPC++ is the direct programming language and associated direct -programming APIs of oneAPI. It provides the features -needed to define data parallel functions and to launch them on -devices. The language is comprised of the following components: +|dpcpp_full_name_| (DPC++) is the direct programming language and +associated direct programming APIs of oneAPI. It provides the +features needed to define data parallel functions and to launch them +on devices. The language is comprised of the following components: - C++. Every DPC++ program is also a C++ program. A compliant DPC++ implementation must support the C++17 Core Language diff --git a/source/elements/l0/source/index.rst b/source/elements/l0/source/index.rst index e9b6615569..23a468a25f 100644 --- a/source/elements/l0/source/index.rst +++ b/source/elements/l0/source/index.rst @@ -3,8 +3,9 @@ .. _l0-section: -|l0_full_name| (Level Zero) -=========================== +======================= +Level Zero |l0_version| +======================= The |l0_full_name| (Level Zero) provides low-level direct-to-metal interfaces that are tailored to the devices in a diff --git a/source/elements/oneCCL/source/index.rst b/source/elements/oneCCL/source/index.rst index 90a0923872..153bdb2c0b 100644 --- a/source/elements/oneCCL/source/index.rst +++ b/source/elements/oneCCL/source/index.rst @@ -1,8 +1,8 @@ .. _oneCCL-section: -========================== - |ccl_full_name| (oneCCL) -========================== +==================== +oneCCL |ccl_version| +==================== .. toctree:: diff --git a/source/elements/oneDAL/source/index.rst b/source/elements/oneDAL/source/index.rst index adf07d860f..133ae834e3 100644 --- a/source/elements/oneDAL/source/index.rst +++ b/source/elements/oneDAL/source/index.rst @@ -3,9 +3,9 @@ .. _oneDAL-section: -========================================== -|dal_full_name| (|dal_short_name|) -========================================== +============================== +|dal_short_name| |dal_version| +============================== .. |github| replace:: oneDAL GitHub\* page .. _github: https://github.com/intel/daal diff --git a/source/elements/oneDNN/source/index.rst b/source/elements/oneDNN/source/index.rst index 9255a1dbe1..09f2152dfe 100644 --- a/source/elements/oneDNN/source/index.rst +++ b/source/elements/oneDNN/source/index.rst @@ -5,9 +5,9 @@ .. _oneDNN-section: -======================== -|dnn_full_name| (oneDNN) -======================== +==================== +oneDNN |dnn_version| +==================== |dnn_full_name| (oneDNN) is an open-source performance library for deep learning applications. The library includes building blocks for diff --git a/source/elements/oneDPL/source/index.rst b/source/elements/oneDPL/source/index.rst index bb9269c93a..9cd931f945 100644 --- a/source/elements/oneDPL/source/index.rst +++ b/source/elements/oneDPL/source/index.rst @@ -3,11 +3,11 @@ .. _oneDPL-section: -======================== -|dpl_full_name| (oneDPL) -======================== +==================== +oneDPL |dpl_version| +==================== -The oneAPI Data Parallel C++ Library (oneDPL) provides the functionality +The |dpl_full_name| (oneDPL) provides the functionality specified in the C++ standard, with extensions to support data parallelism and offloading to devices, and with extensions to simplify its usage for implementing data parallel algorithms. diff --git a/source/elements/oneMKL/source/index.rst b/source/elements/oneMKL/source/index.rst index b4b62e8824..23ca98a00b 100644 --- a/source/elements/oneMKL/source/index.rst +++ b/source/elements/oneMKL/source/index.rst @@ -3,9 +3,9 @@ .. _oneMKL-section: -======================== -|mkl_full_name| (oneMKL) -======================== +==================== +oneMKL |mkl_version| +==================== The |mkl_full_name| (oneMKL) defines a set of fundamental mathematical routines for use in high-performance computing and other applications. As part of oneAPI, oneMKL is designed to allow execution on a wide variety of computational devices: CPUs, GPUs, FPGAs, and other accelerators. The functionality is subdivided into several domains: dense linear algebra, sparse linear algebra, discrete Fourier transforms, random number generators and vector math. diff --git a/source/elements/oneTBB/source/nested-index.rst b/source/elements/oneTBB/source/nested-index.rst index be769ba91d..70fec15966 100644 --- a/source/elements/oneTBB/source/nested-index.rst +++ b/source/elements/oneTBB/source/nested-index.rst @@ -1,8 +1,8 @@ .. _oneTBB-section: -======================== -|tbb_full_name| (oneTBB) -======================== +==================== +oneTBB |tbb_version| +==================== .. toctree:: :maxdepth: 2 diff --git a/source/elements/oneVPL/source/index.rst b/source/elements/oneVPL/source/index.rst index d47e999627..b4baf27de2 100644 --- a/source/elements/oneVPL/source/index.rst +++ b/source/elements/oneVPL/source/index.rst @@ -3,9 +3,9 @@ .. _oneVPL-section: -************************ -|vpl_full_name| (oneVPL) -************************ +******************** +oneVPL |vpl_version| +******************** The |vpl_full_name| is a programming interface for video processing and video analytics, focusing on building portable media pipeline on CPU, GPU, Deep Learning (DL) diff --git a/source/index.rst b/source/index.rst index f6cd78ed0f..4eced3df7e 100644 --- a/source/index.rst +++ b/source/index.rst @@ -8,7 +8,6 @@ oneAPI Specification .. toctree:: :maxdepth: 6 - :caption: Contents: introduction architecture diff --git a/source/versions.rst b/source/versions.rst index 14811b19c0..ccb6fe5665 100644 --- a/source/versions.rst +++ b/source/versions.rst @@ -2,39 +2,51 @@ Copyright 2020 Intel Corporation -HTML and PDF Versions -===================== - -These are the versions that were available at time of publication. See -the `latest spec `__ for newer -versions. - -+---------+-------+--------+--------+--------+------------+--------+--------+--------+ -| oneAPI | DPC++ | oneDPL | oneDNN | oneCCL | Level Zero | oneTBB | oneVPL | oneMKL | -+=========+=======+========+========+========+============+========+========+========+ -| 0.7 | 0.7 | .91 | 0.7 | -+---------+--------+-------+--------+--------+------------+--------+--------+--------+ -| 0.6 | 0.6 | -+---------+-------+--------+--------+--------+------------+--------+--------+--------+ -| 0.5 | 0.5 | -+---------+-------+--------+--------+--------+------------+--------+--------+--------+ - -======== ========== ========= -Version Date View -======== ========== ========= -0.7 03/26/2020 `HTML `__ `PDF `__ -0.6 01/31/2020 `HTML `__ `PDF `__ -0.5 11/17/2019 `HTML `__ -======== ========== ========= +======================= + HTML and PDF Versions +======================= + +This section describes the versions that were available at time of +publication. See the `latest specification +`__ for +updates. + +.. table:: oneAPI Versions Table + + ======== ========== ========= + Version Date View + ======== ========== ========= + `0.7`_ 03/26/2020 `HTML `__ `PDF `__ + `0.6`_ 01/31/2020 `HTML `__ `PDF `__ + `0.5`_ 11/17/2019 `HTML `__ + ======== ========== ========= + +Every component has its own version. This table shows the relationship +between oneAPI version and component versions. + +.. table:: Component Versions Table + + +---------+------------+--------+--------+--------+--------+--------+--------+--------+--------+ + | oneAPI | Level Zero | DPC++ | oneDPL | oneDNN | oneCCL | oneDAL | oneTBB | oneVPL | oneMKL | + +=========+============+========+========+========+========+========+========+========+========+ + | `0.7`_ | .91 | 0.7 | + +---------+------------+--------+--------+--------+--------+--------+--------+--------+--------+ + | `0.6`_ | .91 | 0.6 | + +---------+------------+--------+--------+--------+--------+--------+--------+--------+--------+ + | `0.5`_ | 0.5 | + +---------+------------+--------+--------+--------+--------+--------+--------+--------+--------+ + +Release Notes +============= 0.7 -+++ +--- 0.6 -+++ +--- 0.5 -+++ +--- Initial public release From 91eb4f40af9eac5a4290f98fbb532dcd8577ba44 Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Fri, 27 Mar 2020 14:20:46 -0400 Subject: [PATCH 27/31] spelling fixes for MKL (#103) --- .../source/architecture/memory_model.inc.rst | 2 +- .../source/domains/blas/gemmt-usm-version.rst | 2 +- .../oneMKL/source/domains/blas/gemmt.rst | 2 +- .../source/domains/blas/her-usm-version.rst | 6 +- .../oneMKL/source/domains/blas/her.rst | 6 +- .../source/domains/blas/her2-usm-version.rst | 6 +- .../oneMKL/source/domains/blas/her2.rst | 6 +- .../source/domains/blas/hpr-usm-version.rst | 6 +- .../oneMKL/source/domains/blas/hpr.rst | 6 +- .../source/domains/blas/hpr2-usm-version.rst | 6 +- .../oneMKL/source/domains/blas/hpr2.rst | 6 +- .../source/domains/blas/nrm2-usm-version.rst | 2 +- .../source/domains/blas/rotm-usm-version.rst | 4 +- .../oneMKL/source/domains/blas/rotm.rst | 4 +- .../source/domains/blas/spr-usm-version.rst | 4 +- .../oneMKL/source/domains/blas/spr.rst | 4 +- .../source/domains/blas/spr2-usm-version.rst | 4 +- .../oneMKL/source/domains/blas/spr2.rst | 4 +- .../source/domains/blas/symm-usm-version.rst | 4 +- .../source/domains/blas/syr-usm-version.rst | 4 +- .../oneMKL/source/domains/blas/syr.rst | 4 +- .../source/domains/blas/syr2-usm-version.rst | 4 +- .../oneMKL/source/domains/blas/syr2.rst | 4 +- .../source/domains/blas/syr2k-usm-version.rst | 2 +- .../oneMKL/source/domains/blas/syr2k.rst | 2 +- .../source/domains/blas/syrk-usm-version.rst | 2 +- .../oneMKL/source/domains/blas/trsm_batch.rst | 4 +- .../domains/dense_linear_algebra.inc.rst | 2 +- .../source/domains/lapack/gebrd_get_lwork.rst | 2 +- .../source/domains/lapack/geqrf_batch.rst | 2 +- .../source/domains/lapack/getrf_batch.rst | 2 +- .../oneMKL/source/domains/lapack/getri.rst | 4 +- .../source/domains/lapack/getri_batch.rst | 2 +- .../source/domains/lapack/getrs_batch.rst | 2 +- .../source/domains/lapack/hegvd_get_lwork.rst | 2 +- .../source/domains/lapack/orgqr_batch.rst | 2 +- .../oneMKL/source/domains/lapack/potrf.rst | 2 +- .../source/domains/lapack/potrf_batch.rst | 2 +- .../oneMKL/source/domains/lapack/potrs.rst | 2 +- .../source/domains/lapack/potrs_batch.rst | 2 +- .../oneMKL/source/domains/lapack/sytrf.rst | 6 +- .../source/domains/rng/mkl-rng-lognormal.rst | 4 +- .../domains/spblas/mkl-sparse-matrixinit.rst | 2 +- .../spblas/mkl-sparse-setcsrstructure.rst | 2 +- .../source/domains/spblas/mkl-sparse-symv.rst | 2 +- .../source/domains/spblas/mkl-sparse-trmv.rst | 2 +- .../spblas/mkl-sparse-trmvoptimize.rst | 2 +- .../source/domains/spblas/mkl-sparse-trsv.rst | 2 +- .../spblas/mkl-sparse-trsvoptimize.rst | 2 +- .../oneMKL/source/domains/spblas/spblas.rst | 2 +- .../elements/oneMKL/source/domains/vm/abs.rst | 4 +- .../oneMKL/source/domains/vm/acos.rst | 2 +- .../oneMKL/source/domains/vm/acosh.rst | 2 +- .../oneMKL/source/domains/vm/acospi.rst | 2 +- .../elements/oneMKL/source/domains/vm/add.rst | 2 +- .../elements/oneMKL/source/domains/vm/arg.rst | 2 +- .../oneMKL/source/domains/vm/asin.rst | 4 +- .../oneMKL/source/domains/vm/asinh.rst | 2 +- .../oneMKL/source/domains/vm/asinpi.rst | 2 +- .../oneMKL/source/domains/vm/atan.rst | 4 +- .../oneMKL/source/domains/vm/atan2.rst | 2 +- .../oneMKL/source/domains/vm/atan2pi.rst | 2 +- .../oneMKL/source/domains/vm/atanh.rst | 2 +- .../oneMKL/source/domains/vm/atanpi.rst | 2 +- .../oneMKL/source/domains/vm/cbrt.rst | 2 +- .../oneMKL/source/domains/vm/cdfnorm.rst | 2 +- .../oneMKL/source/domains/vm/cdfnorminv.rst | 2 +- .../oneMKL/source/domains/vm/ceil.rst | 6 +- .../elements/oneMKL/source/domains/vm/cis.rst | 2 +- .../oneMKL/source/domains/vm/conj.rst | 2 +- .../oneMKL/source/domains/vm/copysign.rst | 6 +- .../elements/oneMKL/source/domains/vm/cos.rst | 4 +- .../oneMKL/source/domains/vm/cosd.rst | 4 +- .../oneMKL/source/domains/vm/cosh.rst | 2 +- .../oneMKL/source/domains/vm/cospi.rst | 2 +- .../domains/vm/create_error_handler.rst | 2 +- .../elements/oneMKL/source/domains/vm/div.rst | 2 +- .../elements/oneMKL/source/domains/vm/erf.rst | 2 +- .../oneMKL/source/domains/vm/erfc.rst | 2 +- .../oneMKL/source/domains/vm/erfcinv.rst | 2 +- .../oneMKL/source/domains/vm/erfinv.rst | 2 +- .../elements/oneMKL/source/domains/vm/exp.rst | 2 +- .../oneMKL/source/domains/vm/fdim.rst | 2 +- .../oneMKL/source/domains/vm/floor.rst | 6 +- .../oneMKL/source/domains/vm/fmax.rst | 2 +- .../oneMKL/source/domains/vm/fmin.rst | 2 +- .../oneMKL/source/domains/vm/fmod.rst | 2 +- .../oneMKL/source/domains/vm/frac.rst | 4 +- .../oneMKL/source/domains/vm/hypot.rst | 2 +- .../elements/oneMKL/source/domains/vm/inv.rst | 2 +- .../oneMKL/source/domains/vm/invcbrt.rst | 2 +- .../oneMKL/source/domains/vm/invsqrt.rst | 2 +- .../oneMKL/source/domains/vm/lgamma.rst | 2 +- .../oneMKL/source/domains/vm/linearfrac.rst | 6 +- .../elements/oneMKL/source/domains/vm/ln.rst | 2 +- .../oneMKL/source/domains/vm/log1p.rst | 2 +- .../oneMKL/source/domains/vm/logb.rst | 2 +- .../oneMKL/source/domains/vm/maxmag.rst | 2 +- .../oneMKL/source/domains/vm/minmag.rst | 2 +- .../oneMKL/source/domains/vm/modf.rst | 4 +- .../elements/oneMKL/source/domains/vm/mul.rst | 2 +- .../oneMKL/source/domains/vm/mulbyconj.rst | 2 +- .../oneMKL/source/domains/vm/nearbyint.rst | 4 +- .../oneMKL/source/domains/vm/nextafter.rst | 10 +- .../elements/oneMKL/source/domains/vm/pow.rst | 6 +- .../oneMKL/source/domains/vm/powr.rst | 2 +- .../oneMKL/source/domains/vm/powx.rst | 4 +- .../oneMKL/source/domains/vm/remainder.rst | 2 +- .../oneMKL/source/domains/vm/rint.rst | 6 +- .../oneMKL/source/domains/vm/round.rst | 8 +- .../oneMKL/source/domains/vm/setmode.rst | 2 +- .../elements/oneMKL/source/domains/vm/sin.rst | 4 +- .../oneMKL/source/domains/vm/sincos.rst | 2 +- .../oneMKL/source/domains/vm/sind.rst | 2 +- .../oneMKL/source/domains/vm/sinh.rst | 2 +- .../oneMKL/source/domains/vm/sinpi.rst | 2 +- .../elements/oneMKL/source/domains/vm/sqr.rst | 4 +- .../oneMKL/source/domains/vm/sqrt.rst | 2 +- .../elements/oneMKL/source/domains/vm/sub.rst | 2 +- .../elements/oneMKL/source/domains/vm/tan.rst | 4 +- .../oneMKL/source/domains/vm/tand.rst | 2 +- .../oneMKL/source/domains/vm/tanh.rst | 2 +- .../oneMKL/source/domains/vm/tanpi.rst | 2 +- .../oneMKL/source/domains/vm/tgamma.rst | 2 +- .../oneMKL/source/domains/vm/trunc.rst | 6 +- .../domains/vm/vm-mathematical-functions.rst | 2 +- source/spelling_wordlist.txt | 380 ++++++++++++++++++ 127 files changed, 571 insertions(+), 191 deletions(-) diff --git a/source/elements/oneMKL/source/architecture/memory_model.inc.rst b/source/elements/oneMKL/source/architecture/memory_model.inc.rst index ae279a2365..c99d69d836 100644 --- a/source/elements/oneMKL/source/architecture/memory_model.inc.rst +++ b/source/elements/oneMKL/source/architecture/memory_model.inc.rst @@ -24,6 +24,6 @@ Unified Shared Memory model While the buffer model is powerful and elegantly expresses the data dependencies, it can be a burden for programmers to replace all pointers and arrays by buffers in their C++ applications. A pointer-based model called Unified Shared Memory (USM) has also been provided in the DPC++ language. This alternative approach allows the programmer to use standard C++ pointers that have been allocated using one of the DPC++ provided memory allocation routines (e.g., ``malloc_shared()``). The USM pointers, however, do not manage data dependencies between enqueued actions on the USM data, so DPC++ language provides ``sycl::event`` objects associated with each enqueued submission which can be used to explicitly manage the dependencies. -oneMKL provides APIs where USM pointers contain the memory for all non scalar input and output data arguments. Additionally, oneMKL APIs with USM pointers shall provide means to pass ``sycl::events`` to manage the data depednencies. See :ref:`onemkl_synchronization_with_usm` for the details. +oneMKL provides APIs where USM pointers contain the memory for all non scalar input and output data arguments. Additionally, oneMKL APIs with USM pointers shall provide means to pass ``sycl::events`` to manage the data dependencies. See :ref:`onemkl_synchronization_with_usm` for the details. diff --git a/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst index 2991ea6350..4d9978ba2c 100644 --- a/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst @@ -204,7 +204,7 @@ gemmt (USM Version) c Pointer to the output matrix, overwritten by the upper or lower - triangular part ofalpha\*op(``A``)*op(``B``) + beta\*\ ``C``. + triangular part of alpha\*op(``A``)*op(``B``) + beta\*\ ``C``. .. container:: section diff --git a/source/elements/oneMKL/source/domains/blas/gemmt.rst b/source/elements/oneMKL/source/domains/blas/gemmt.rst index e2ceb077d7..cef34ce4ec 100644 --- a/source/elements/oneMKL/source/domains/blas/gemmt.rst +++ b/source/elements/oneMKL/source/domains/blas/gemmt.rst @@ -198,7 +198,7 @@ gemmt c Output buffer, overwritten by the upper or lower triangular - part ofalpha\*op(``A``)*op(``B``) + beta\*\ ``C``. + part of alpha\*op(``A``)*op(``B``) + beta\*\ ``C``. .. container:: section diff --git a/source/elements/oneMKL/source/domains/blas/her-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her-usm-version.rst index 7442b015b9..f5ea9f99b3 100644 --- a/source/elements/oneMKL/source/domains/blas/her-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her-usm-version.rst @@ -135,13 +135,13 @@ her (USM Version) a - Pointer to the updated upper triangular part of theHermitian + Pointer to the updated upper triangular part of the Hermitian matrix ``A`` if ``upper_lower = upper`` or the updated - lowertriangular part of the Hermitian matrix ``A`` if + lower triangular part of the Hermitian matrix ``A`` if ``upper_lower = lower``. - The imaginary parts of the diagonal elementsare set to zero. + The imaginary parts of the diagonal elements are set to zero. .. container:: section diff --git a/source/elements/oneMKL/source/domains/blas/her.rst b/source/elements/oneMKL/source/domains/blas/her.rst index a13196fb64..0a12bb4d2f 100644 --- a/source/elements/oneMKL/source/domains/blas/her.rst +++ b/source/elements/oneMKL/source/domains/blas/her.rst @@ -125,13 +125,13 @@ her a - Buffer holding the updated upper triangular part of theHermitian + Buffer holding the updated upper triangular part of the Hermitian matrix ``A`` if ``upper_lower = upper`` or the updated - lowertriangular part of the Hermitian matrix ``A`` if + lower triangular part of the Hermitian matrix ``A`` if ``upper_lower = lower``. - The imaginary parts of the diagonal elementsare set to zero. + The imaginary parts of the diagonal elements are set to zero. .. container:: familylinks diff --git a/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst index 20306d9391..c0ae125f1f 100644 --- a/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst @@ -147,13 +147,13 @@ her2 (USM Version) a - Pointer to the updated upper triangular part of theHermitian + Pointer to the updated upper triangular part of the Hermitian matrix ``A`` if ``upper_lower = upper``, or the updated - lowertriangular part of the Hermitian matrix ``A`` if + lower triangular part of the Hermitian matrix ``A`` if ``upper_lower = lower``. - The imaginary parts of the diagonal elementsare set to zero. + The imaginary parts of the diagonal elements are set to zero. .. container:: section diff --git a/source/elements/oneMKL/source/domains/blas/her2.rst b/source/elements/oneMKL/source/domains/blas/her2.rst index 0c100195c8..e90fec6b5b 100644 --- a/source/elements/oneMKL/source/domains/blas/her2.rst +++ b/source/elements/oneMKL/source/domains/blas/her2.rst @@ -136,13 +136,13 @@ her2 a - Buffer holding the updated upper triangular part of theHermitian + Buffer holding the updated upper triangular part of the Hermitian matrix ``A`` if ``upper_lower = upper``, or the updated - lowertriangular part of the Hermitian matrix ``A`` if + lower triangular part of the Hermitian matrix ``A`` if ``upper_lower = lower``. - The imaginary parts of the diagonal elementsare set to zero. + The imaginary parts of the diagonal elements are set to zero. .. container:: familylinks diff --git a/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst index d5be662239..30e45d274a 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst @@ -136,13 +136,13 @@ hpr (USM Version) a - Pointer to the updated upper triangularpart of the Hermitian + Pointer to the updated upper triangular part of the Hermitian matrix ``A`` if ``upper_lower =upper``, or the updated lower - triangular part of theHermitian matrix ``A`` if + triangular part of the Hermitian matrix ``A`` if ``upper_lower =lower``. - The imaginary parts of the diagonal elements are set tozero. + The imaginary parts of the diagonal elements are set to zero. .. container:: section diff --git a/source/elements/oneMKL/source/domains/blas/hpr.rst b/source/elements/oneMKL/source/domains/blas/hpr.rst index 1c0f38a0cf..2098b9b969 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr.rst @@ -124,13 +124,13 @@ hpr a - Buffer holding the updated upper triangularpart of the Hermitian + Buffer holding the updated upper triangular part of the Hermitian matrix ``A`` if ``upper_lower =upper``, or the updated lower - triangular part of theHermitian matrix ``A`` if + triangular part of the Hermitian matrix ``A`` if ``upper_lower =lower``. - The imaginary parts of the diagonal elements are set tozero. + The imaginary parts of the diagonal elements are set to zero. .. container:: familylinks diff --git a/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst index 0422134408..5952b188f1 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst @@ -147,13 +147,13 @@ hpr2 (USM Version) a - Pointer to the updated upper triangularpart of the Hermitian + Pointer to the updated upper triangular part of the Hermitian matrix ``A`` if ``upper_lower =upper``, or the updated lower - triangular part of theHermitian matrix ``A`` if + triangular part of the Hermitian matrix ``A`` if ``upper_lower =lower``. - The imaginary parts of the diagonal elements are set tozero. + The imaginary parts of the diagonal elements are set to zero. .. container:: section diff --git a/source/elements/oneMKL/source/domains/blas/hpr2.rst b/source/elements/oneMKL/source/domains/blas/hpr2.rst index bfe83d4b6b..4e8acff99d 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr2.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr2.rst @@ -140,13 +140,13 @@ hpr2 a - Buffer holding the updated upper triangularpart of the Hermitian + Buffer holding the updated upper triangular part of the Hermitian matrix ``A`` if ``upper_lower =upper``, or the updated lower - triangular part of theHermitian matrix ``A`` if + triangular part of the Hermitian matrix ``A`` if ``upper_lower =lower``. - The imaginary parts of the diagonal elements are set tozero. + The imaginary parts of the diagonal elements are set to zero. .. container:: familylinks diff --git a/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst index a88492e19b..1df09c0afb 100644 --- a/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst @@ -86,7 +86,7 @@ nrm2 (USM Version) x - Pointer to input vector ``x``. The array holding input vectro + Pointer to input vector ``x``. The array holding input vector ``x`` must be of size at least (1 + (``n`` - 1)*abs(``incx``)). See `Matrix and Vector Storage <../matrix-storage.html>`__ for diff --git a/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst index 98b8bc6a8d..eadcd6a165 100644 --- a/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst @@ -108,11 +108,11 @@ rotm (USM Version) ``param``\ [1-4] contain *h\ 11*,\ *h\ 21*, *h\ 12*,\ *h\ 22* - respectively, the components ofthe modified Givens + respectively, the components of the modified Givens transformation matrix ``H``. - Depending on the values of ``flag``, thecomponents of ``H`` are + Depending on the values of ``flag``, the components of ``H`` are set as follows: diff --git a/source/elements/oneMKL/source/domains/blas/rotm.rst b/source/elements/oneMKL/source/domains/blas/rotm.rst index 4d025c4eaf..893a828fea 100644 --- a/source/elements/oneMKL/source/domains/blas/rotm.rst +++ b/source/elements/oneMKL/source/domains/blas/rotm.rst @@ -103,11 +103,11 @@ rotm ``param``\ [1-4] contain *h\ 11*,\ *h\ 21*, *h\ 12*,\ *h\ 22* - respectively, the components ofthe modified Givens transformation + respectively, the components of the modified Givens transformation matrix ``H``. - Depending on the values of ``flag``, thecomponents of ``H`` are + Depending on the values of ``flag``, the components of ``H`` are set as follows: diff --git a/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst index eabc3746dc..4ab287f9d2 100644 --- a/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst @@ -132,9 +132,9 @@ spr (USM Version) a - Pointer to the updated upper triangularpart of the symmetric + Pointer to the updated upper triangular part of the symmetric matrix ``A`` if ``upper_lower =upper``, or the updated lower - triangular part of thesymmetric matrix ``A`` if + triangular part of the symmetric matrix ``A`` if ``upper_lower =lower``. diff --git a/source/elements/oneMKL/source/domains/blas/spr.rst b/source/elements/oneMKL/source/domains/blas/spr.rst index 0112706b6a..afca2cfa86 100644 --- a/source/elements/oneMKL/source/domains/blas/spr.rst +++ b/source/elements/oneMKL/source/domains/blas/spr.rst @@ -125,9 +125,9 @@ spr a - Buffer holding the updated upper triangularpart of the symmetric + Buffer holding the updated upper triangular part of the symmetric matrix ``A`` if ``upper_lower =upper``, or the updated lower - triangular part of thesymmetric matrix ``A`` if + triangular part of the symmetric matrix ``A`` if ``upper_lower =lower``. diff --git a/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst index e0d1aacf38..71c615c604 100644 --- a/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst @@ -143,9 +143,9 @@ spr2 (USM Version) a - Pointer to the updated upper triangularpart of the symmetric + Pointer to the updated upper triangular part of the symmetric matrix ``A`` if ``upper_lower =upper`` or the updated lower - triangular part of thesymmetric matrix ``A`` if + triangular part of the symmetric matrix ``A`` if ``upper_lower =lower``. diff --git a/source/elements/oneMKL/source/domains/blas/spr2.rst b/source/elements/oneMKL/source/domains/blas/spr2.rst index ca78f30acd..2cdefc4fee 100644 --- a/source/elements/oneMKL/source/domains/blas/spr2.rst +++ b/source/elements/oneMKL/source/domains/blas/spr2.rst @@ -136,9 +136,9 @@ spr2 a - Buffer holding the updated upper triangularpart of the symmetric + Buffer holding the updated upper triangular part of the symmetric matrix ``A`` if ``upper_lower =upper`` or the updated lower - triangular part of thesymmetric matrix ``A`` if + triangular part of the symmetric matrix ``A`` if ``upper_lower =lower``. diff --git a/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst index f0d0a498d8..00dbe613e8 100644 --- a/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst @@ -7,8 +7,8 @@ symm (USM Version) .. container:: - Computes a matrix-matrix product where one input matrix is symmetrica - nd one matrix is general. + Computes a matrix-matrix product where one input matrix is + symmetric and one matrix is general. .. container:: section diff --git a/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst index 33ed8e4727..5c1b7b7501 100644 --- a/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst @@ -136,9 +136,9 @@ syr (USM Version) a - Pointer to the updated upper triangularpart of the symmetric + Pointer to the updated upper triangular part of the symmetric matrix ``A`` if ``upper_lower =upper`` or the updated lower - triangular part of thesymmetric matrix ``A`` if + triangular part of the symmetric matrix ``A`` if ``upper_lower =lower``. diff --git a/source/elements/oneMKL/source/domains/blas/syr.rst b/source/elements/oneMKL/source/domains/blas/syr.rst index e3ff12e6bf..408aa2772b 100644 --- a/source/elements/oneMKL/source/domains/blas/syr.rst +++ b/source/elements/oneMKL/source/domains/blas/syr.rst @@ -126,9 +126,9 @@ syr a - Buffer holding the updated upper triangularpart of the symmetric + Buffer holding the updated upper triangular part of the symmetric matrix ``A`` if ``upper_lower =upper`` or the updated lower - triangular part of thesymmetric matrix ``A`` if + triangular part of the symmetric matrix ``A`` if ``upper_lower =lower``. diff --git a/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst index 02e85862e3..a58efb4042 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst @@ -148,9 +148,9 @@ syr2 (USM Version) a - Pointer to the updated upper triangularpart of the symmetric + Pointer to the updated upper triangular part of the symmetric matrix ``A`` if ``upper_lower =upper``, or the updated lower - triangular part of thesymmetric matrix ``A`` if + triangular part of the symmetric matrix ``A`` if ``upper_lower =lower``. diff --git a/source/elements/oneMKL/source/domains/blas/syr2.rst b/source/elements/oneMKL/source/domains/blas/syr2.rst index 6459801cfb..74e52294de 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2.rst @@ -137,9 +137,9 @@ syr2 a - Buffer holding the updated upper triangularpart of the symmetric + Buffer holding the updated upper triangular part of the symmetric matrix ``A`` if ``upper_lower =upper``, or the updated lower - triangular part of thesymmetric matrix ``A`` if + triangular part of the symmetric matrix ``A`` if ``upper_lower =lower``. diff --git a/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst index 107fab7e59..b5bf4f7ce4 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst @@ -62,7 +62,7 @@ syr2k (USM Version) where ``A`` is ``n`` x ``k`` and ``B`` is ``k`` x ``n``. - If ``trans`` = ``transpose::trans``, the operationis defined as: + If ``trans`` = ``transpose::trans``, the operation is defined as: diff --git a/source/elements/oneMKL/source/domains/blas/syr2k.rst b/source/elements/oneMKL/source/domains/blas/syr2k.rst index e5687c856a..6334d02224 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2k.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2k.rst @@ -59,7 +59,7 @@ syr2k where ``A`` is ``n`` x ``k`` and ``B`` is ``k`` x ``n``. - If ``trans`` = ``transpose::trans``, the operationis defined as: + If ``trans`` = ``transpose::trans``, the operation is defined as: diff --git a/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst index fd2b28d82a..7473890d81 100644 --- a/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst @@ -24,7 +24,7 @@ syrk (USM Version) .. cpp:function:: event syrk(queue &exec_queue, uplo upper_lower, transpose trans, std::int64_t n, std::int64_t k, T alpha, const T\* a, std::int64_t lda, T beta, T\* c, std::int64_t ldc, const vector_class &dependencies = {}) - The USM version ofsyrk supports the following precisions. + The USM version of syrk supports the following precisions. .. list-table:: diff --git a/source/elements/oneMKL/source/domains/blas/trsm_batch.rst b/source/elements/oneMKL/source/domains/blas/trsm_batch.rst index 0cf82ce211..d43aedd5ad 100644 --- a/source/elements/oneMKL/source/domains/blas/trsm_batch.rst +++ b/source/elements/oneMKL/source/domains/blas/trsm_batch.rst @@ -129,8 +129,8 @@ trsm_batch ``A`` is either ``m`` x ``m`` or ``n`` x ``n``,depending on whether - it multiplies ``X`` on the leftor right. On return, the matrix ``B`` - is overwrittenby the solution matrix ``X``. + it multiplies ``X`` on the left or right. On return, the matrix ``B`` + is overwritten by the solution matrix ``X``. .. container:: section diff --git a/source/elements/oneMKL/source/domains/dense_linear_algebra.inc.rst b/source/elements/oneMKL/source/domains/dense_linear_algebra.inc.rst index 54a864cfba..d51a3b20c3 100644 --- a/source/elements/oneMKL/source/domains/dense_linear_algebra.inc.rst +++ b/source/elements/oneMKL/source/domains/dense_linear_algebra.inc.rst @@ -9,7 +9,7 @@ This section contains information about dense linear algebra routines: :ref:`onemkl_blas` provides vector, matrix-vector, and matrix-matrix routines for dense matrices and vector operations. -:ref:`onemkl_lapack` provides more complex dense linear algbra routines, e.g., solving dense systems of linear equations, least square problems, eigenvalue, singular value problems, and Sylvester's equations. +:ref:`onemkl_lapack` provides more complex dense linear algebra routines, e.g., solving dense systems of linear equations, least square problems, eigenvalue, singular value problems, and Sylvester's equations. .. toctree:: :hidden: diff --git a/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst index 7fea15451c..dcb878ad87 100644 --- a/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst @@ -51,7 +51,7 @@ gebrd_get_lwork Computes the worksize needed for the reduction of a general matrix - to bidagonal form + to bidiagonal form (`gebrd `__). Calls to this routine must specify the template parameter explicitly. diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst index 456d98454a..2a516e38a8 100644 --- a/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst @@ -141,7 +141,7 @@ geqrf_batch :class: sectiontitle - An example of how to use geqrf_batchcan be found in the oneMKL + An example of how to use geqrf_batch can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst index e375427b87..71b202b0a0 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst @@ -139,7 +139,7 @@ getrf_batch :class: sectiontitle - An example of how to use getrf_batchcan be found in the oneMKL + An example of how to use getrf_batch can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/lapack/getri.rst b/source/elements/oneMKL/source/domains/lapack/getri.rst index f5ab5e289d..856d647ca8 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri.rst @@ -23,7 +23,7 @@ getri .. cpp:function:: void getri_get_lwork(queue &exec_queue, std::int64_t n, buffer &a, std::int64_t lda, buffer &ipiv, buffer &work, std::int64_t lwork, buffer &info) - ``getri`` supports the following precisionss. + ``getri`` supports the following precisions. .. list-table:: @@ -149,7 +149,7 @@ getri GPU support is for only real precisions. - For GPU support, errors are reportedthrough the info parameter, but + For GPU support, errors are reported through the info parameter, but computation does not halt for an algorithmic error. diff --git a/source/elements/oneMKL/source/domains/lapack/getri_batch.rst b/source/elements/oneMKL/source/domains/lapack/getri_batch.rst index 63900805fd..161545f9e1 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri_batch.rst @@ -127,7 +127,7 @@ getri_batch :class: sectiontitle - An example of how to use getri_batchcan be found in the oneMKL + An example of how to use getri_batch can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst b/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst index 40e061a0ee..498878e392 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst @@ -165,7 +165,7 @@ getrs_batch :class: sectiontitle - An example of how to use getrs_batchcan be found in the oneMKL + An example of how to use getrs_batch can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst index 8638e2c8f1..a5d7bf5a25 100644 --- a/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst @@ -49,7 +49,7 @@ hegvd_get_lwork Computes the worksize needed for the computation of eigenvalues or - eigenvectors of a complex generalized Hermition positive-definite + eigenvectors of a complex generalized Hermitian positive-definite eigenproblem using a divide and conquer method (`hegvd `__). Calls to this routine must specify the template parameter diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst b/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst index 9d48ba5eaf..55d5661508 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst @@ -221,7 +221,7 @@ orgqr_batch :class: sectiontitle - An example of how to use orgqr_batchcan be found in the oneMKL + An example of how to use orgqr_batch can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/lapack/potrf.rst b/source/elements/oneMKL/source/domains/lapack/potrf.rst index 0a1715bd80..b07256bdbf 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf.rst @@ -171,7 +171,7 @@ potrf GPU support is for only real precisions. - GPU support for this function does not include error reportingthrough + GPU support for this function does not include error reporting through the info parameter. diff --git a/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst index 3dcce7623b..420cb9b2ea 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst @@ -161,7 +161,7 @@ potrf_batch :class: sectiontitle - An example of how to use potrf_batchcan be found in the oneMKL + An example of how to use potrf_batch can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/lapack/potrs.rst b/source/elements/oneMKL/source/domains/lapack/potrs.rst index bbdaa83f54..54dc0ad903 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrs.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrs.rst @@ -157,7 +157,7 @@ potrs GPU support is for only real precisions. - GPU support for this function does not include error reportingthrough + GPU support for this function does not include error reporting through the info parameter. diff --git a/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst b/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst index 7336f0012f..00df8d6099 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst @@ -174,7 +174,7 @@ potrs_batch :class: sectiontitle - An example of how to use potrs_batchcan be found in the oneMKL + An example of how to use potrs_batch can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/lapack/sytrf.rst b/source/elements/oneMKL/source/domains/lapack/sytrf.rst index ef298fdafa..29890ddb72 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrf.rst @@ -46,9 +46,9 @@ sytrf :class: sectiontitle - The routine computes thefactorization of a real/complex symmetric - matrix ``A`` usingthe Bunch-Kaufman diagonal pivoting method. The - form of thefactorization is: + The routine computes the factorization of a real/complex symmetric + matrix ``A`` using the Bunch-Kaufman diagonal pivoting method. The + form of the factorization is: - if ``upper_lower=uplo::upper``, ``A`` = ``U*D*U``\ :sup:`T` diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst index c9a7dbd456..e24c3ea060 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst @@ -1,13 +1,13 @@ .. _mkl-rng-lognormal: onemkl::rng::lognormal -=================== +====================== .. container:: - Generates lognormally distributed random numbers. + Generates log-normally distributed random numbers. .. container:: section diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst index 7abf480d22..84c69ae715 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-matrixinit: onemkl::sparse::matrixInit -======================= +========================== .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst index 6bfa2bdd52..c4014ff49b 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-setcsrstructure: onemkl::sparse::setCSRstructure -============================ +=============================== .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst index e4066fde8a..013eb3c645 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-symv: onemkl::sparse::symv -================= +==================== .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst index af05d61243..f5245f63ea 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-trmv: onemkl::sparse::trmv -================= +==================== .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst index 411e61859f..613c174c63 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-trmvoptimize: onemkl::sparse::trmvOptimize -========================= +============================ .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst index ec0f28b59e..947a6a492d 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-trsv: onemkl::sparse::trsv -================= +==================== .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst index 156cd1add5..db5effce71 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-trsvoptimize: onemkl::sparse::trsvOptimize -========================= +============================ .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/spblas.rst b/source/elements/oneMKL/source/domains/spblas/spblas.rst index d7fa0518e2..5e958f4fb5 100644 --- a/source/elements/oneMKL/source/domains/spblas/spblas.rst +++ b/source/elements/oneMKL/source/domains/spblas/spblas.rst @@ -5,7 +5,7 @@ Sparse BLAS Routines .. container:: - Sparse BLAS Routines provide basic operations on sparse vectors and matrice + Sparse BLAS Routines provide basic operations on sparse vectors and matrices .. container:: diff --git a/source/elements/oneMKL/source/domains/vm/abs.rst b/source/elements/oneMKL/source/domains/vm/abs.rst index 0f2331d36f..a9079bf891 100644 --- a/source/elements/oneMKL/source/domains/vm/abs.rst +++ b/source/elements/oneMKL/source/domains/vm/abs.rst @@ -87,7 +87,7 @@ abs - Specificationsfor special values of the complex functions are defined + Specifications for special values of the complex functions are defined according to the following formula @@ -190,7 +190,7 @@ abs :class: sectiontitle - An example of how to use abscan be found in the oneMKL installation + An example of how to use abs can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/acos.rst b/source/elements/oneMKL/source/domains/vm/acos.rst index f3de258691..a9554d8f94 100644 --- a/source/elements/oneMKL/source/domains/vm/acos.rst +++ b/source/elements/oneMKL/source/domains/vm/acos.rst @@ -283,7 +283,7 @@ acos :class: sectiontitle - An example of how to use acoscan be found in the oneMKL installation + An example of how to use acos can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/acosh.rst b/source/elements/oneMKL/source/domains/vm/acosh.rst index d6c1728cb5..4e1168c2a0 100644 --- a/source/elements/oneMKL/source/domains/vm/acosh.rst +++ b/source/elements/oneMKL/source/domains/vm/acosh.rst @@ -275,7 +275,7 @@ acosh :class: sectiontitle - An example of how to use acoshcan be found in the oneMKL installation + An example of how to use acosh can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/acospi.rst b/source/elements/oneMKL/source/domains/vm/acospi.rst index 9924ee6823..b25a8700f5 100644 --- a/source/elements/oneMKL/source/domains/vm/acospi.rst +++ b/source/elements/oneMKL/source/domains/vm/acospi.rst @@ -203,7 +203,7 @@ acospi :class: sectiontitle - An example of how to use acospican be found in the oneMKL + An example of how to use acospi can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/add.rst b/source/elements/oneMKL/source/domains/vm/add.rst index 1fbb045e08..21747487c9 100644 --- a/source/elements/oneMKL/source/domains/vm/add.rst +++ b/source/elements/oneMKL/source/domains/vm/add.rst @@ -243,7 +243,7 @@ add :class: sectiontitle - An example of how to use addcan be found in the oneMKL installation + An example of how to use add can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/arg.rst b/source/elements/oneMKL/source/domains/vm/arg.rst index 04e1ffb3d0..65f3917586 100644 --- a/source/elements/oneMKL/source/domains/vm/arg.rst +++ b/source/elements/oneMKL/source/domains/vm/arg.rst @@ -240,7 +240,7 @@ arg :class: sectiontitle - An example of how to use argcan be found in the oneMKL installation + An example of how to use arg can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/asin.rst b/source/elements/oneMKL/source/domains/vm/asin.rst index aed1e47027..624a1a7e03 100644 --- a/source/elements/oneMKL/source/domains/vm/asin.rst +++ b/source/elements/oneMKL/source/domains/vm/asin.rst @@ -96,7 +96,7 @@ asin - Specificationsfor special values of the complex functions are defined + Specifications for special values of the complex functions are defined according to the following formula @@ -210,7 +210,7 @@ asin :class: sectiontitle - An example of how to use asincan be found in the oneMKL installation + An example of how to use asin can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/asinh.rst b/source/elements/oneMKL/source/domains/vm/asinh.rst index 4bd24def2f..bf7130c14d 100644 --- a/source/elements/oneMKL/source/domains/vm/asinh.rst +++ b/source/elements/oneMKL/source/domains/vm/asinh.rst @@ -267,7 +267,7 @@ asinh :class: sectiontitle - An example of how to use asinhcan be found in the oneMKL installation + An example of how to use asinh can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/asinpi.rst b/source/elements/oneMKL/source/domains/vm/asinpi.rst index 45e5a760e3..f41eb410b3 100644 --- a/source/elements/oneMKL/source/domains/vm/asinpi.rst +++ b/source/elements/oneMKL/source/domains/vm/asinpi.rst @@ -203,7 +203,7 @@ asinpi :class: sectiontitle - An example of how to use asinpican be found in the oneMKL + An example of how to use asinpi can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/atan.rst b/source/elements/oneMKL/source/domains/vm/atan.rst index e28da6cb7c..add1714a2a 100644 --- a/source/elements/oneMKL/source/domains/vm/atan.rst +++ b/source/elements/oneMKL/source/domains/vm/atan.rst @@ -90,7 +90,7 @@ atan The atan function does not generate any errors. - Specificationsfor special values of the complex functions are defined + Specifications for special values of the complex functions are defined according to the following formula @@ -190,7 +190,7 @@ atan :class: sectiontitle - An example of how to use atancan be found in the oneMKL installation + An example of how to use atan can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/atan2.rst b/source/elements/oneMKL/source/domains/vm/atan2.rst index a744205f6f..050f3fdca3 100644 --- a/source/elements/oneMKL/source/domains/vm/atan2.rst +++ b/source/elements/oneMKL/source/domains/vm/atan2.rst @@ -55,7 +55,7 @@ atan2 elements of two vectors. - The elements of the output vectory are computed as the four-quadrant + The elements of the output vector are computed as the four-quadrant arctangent of ``a[i] / b[i]``. diff --git a/source/elements/oneMKL/source/domains/vm/atan2pi.rst b/source/elements/oneMKL/source/domains/vm/atan2pi.rst index 09ecf9292e..8b41b7c4a3 100644 --- a/source/elements/oneMKL/source/domains/vm/atan2pi.rst +++ b/source/elements/oneMKL/source/domains/vm/atan2pi.rst @@ -340,7 +340,7 @@ atan2pi :class: sectiontitle - An example of how to use atan2pican be found in the oneMKL + An example of how to use atan2pi can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/atanh.rst b/source/elements/oneMKL/source/domains/vm/atanh.rst index d90bb43a20..64fa1b14dc 100644 --- a/source/elements/oneMKL/source/domains/vm/atanh.rst +++ b/source/elements/oneMKL/source/domains/vm/atanh.rst @@ -284,7 +284,7 @@ atanh :class: sectiontitle - An example of how to use atanhcan be found in the oneMKL installation + An example of how to use atanh can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/atanpi.rst b/source/elements/oneMKL/source/domains/vm/atanpi.rst index 1481d0cbbf..c654e5aa57 100644 --- a/source/elements/oneMKL/source/domains/vm/atanpi.rst +++ b/source/elements/oneMKL/source/domains/vm/atanpi.rst @@ -183,7 +183,7 @@ atanpi :class: sectiontitle - An example of how to use atanpican be found in the oneMKL + An example of how to use atanpi can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/cbrt.rst b/source/elements/oneMKL/source/domains/vm/cbrt.rst index 7f7494f5b8..7dda6f6341 100644 --- a/source/elements/oneMKL/source/domains/vm/cbrt.rst +++ b/source/elements/oneMKL/source/domains/vm/cbrt.rst @@ -181,7 +181,7 @@ cbrt :class: sectiontitle - An example of how to use cbrtcan be found in the oneMKL installation + An example of how to use cbrt can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/cdfnorm.rst b/source/elements/oneMKL/source/domains/vm/cdfnorm.rst index c217e45cb7..2d87dd5e8d 100644 --- a/source/elements/oneMKL/source/domains/vm/cdfnorm.rst +++ b/source/elements/oneMKL/source/domains/vm/cdfnorm.rst @@ -252,7 +252,7 @@ cdfnorm :class: sectiontitle - An example of how to use cdfnormcan be found in the oneMKL + An example of how to use cdfnorm can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst b/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst index 6c224bc367..804a8a2419 100644 --- a/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst +++ b/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst @@ -272,7 +272,7 @@ cdfnorminv :class: sectiontitle - An example of how to use cdfnorminvcan be found in the oneMKL + An example of how to use cdfnorminv can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/ceil.rst b/source/elements/oneMKL/source/domains/vm/ceil.rst index d1e5eadf07..23335dfc08 100644 --- a/source/elements/oneMKL/source/domains/vm/ceil.rst +++ b/source/elements/oneMKL/source/domains/vm/ceil.rst @@ -7,7 +7,7 @@ ceil .. container:: - Computes an integer valuerounded towards plus infinity for each + Computes an integer value rounded towards plus infinity for each vector element. @@ -52,7 +52,7 @@ ceil :class: sectiontitle - The ceil(a) functioncomputes an integer valuerounded towards plus + The ceil(a) function computes an integer value rounded towards plus infinity for each vector element. @@ -187,7 +187,7 @@ ceil :class: sectiontitle - An example of how to use ceilcan be found in the oneMKL installation + An example of how to use ceil can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/cis.rst b/source/elements/oneMKL/source/domains/vm/cis.rst index cd9c0cd3f5..4c1207ab7b 100644 --- a/source/elements/oneMKL/source/domains/vm/cis.rst +++ b/source/elements/oneMKL/source/domains/vm/cis.rst @@ -197,7 +197,7 @@ cis :class: sectiontitle - An example of how to use ciscan be found in the oneMKL installation + An example of how to use cis can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/conj.rst b/source/elements/oneMKL/source/domains/vm/conj.rst index f884f5b229..02321ac35f 100644 --- a/source/elements/oneMKL/source/domains/vm/conj.rst +++ b/source/elements/oneMKL/source/domains/vm/conj.rst @@ -152,7 +152,7 @@ conj :class: sectiontitle - An example of how to use conjcan be found in the oneMKL installation + An example of how to use conj can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/copysign.rst b/source/elements/oneMKL/source/domains/vm/copysign.rst index 90b01331a2..59e5b87416 100644 --- a/source/elements/oneMKL/source/domains/vm/copysign.rst +++ b/source/elements/oneMKL/source/domains/vm/copysign.rst @@ -53,8 +53,8 @@ copysign The copysign(a,b) function returns the first vector argument elements - withthe sign changed to match the sign of the second vector - argument'scorresponding elements. + with the sign changed to match the sign of the second vector + argument's corresponding elements. .. container:: tablenoborder @@ -183,7 +183,7 @@ copysign :class: sectiontitle - An example of how to use copysigncan be found in the oneMKL + An example of how to use copysign can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/cos.rst b/source/elements/oneMKL/source/domains/vm/cos.rst index 37a17372ee..52fb3fab71 100644 --- a/source/elements/oneMKL/source/domains/vm/cos.rst +++ b/source/elements/oneMKL/source/domains/vm/cos.rst @@ -97,7 +97,7 @@ cos - Specificationsfor special values of the complex functions are defined + Specifications for special values of the complex functions are defined according to the following formula @@ -211,7 +211,7 @@ cos :class: sectiontitle - An example of how to use coscan be found in the oneMKL installation + An example of how to use cos can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/cosd.rst b/source/elements/oneMKL/source/domains/vm/cosd.rst index cb1aaf37d5..400fe83705 100644 --- a/source/elements/oneMKL/source/domains/vm/cosd.rst +++ b/source/elements/oneMKL/source/domains/vm/cosd.rst @@ -51,7 +51,7 @@ cosd :class: sectiontitle - The cosd(a) function is a degree argument trigonometric fuction. It + The cosd(a) function is a degree argument trigonometric function. It computes the cosine of vector elements multiplied by ``π``/180. For an argument ``a``, the function computes cos(``π``\ \*\ ``a``/180). @@ -206,7 +206,7 @@ cosd :class: sectiontitle - An example of how to use cosdcan be found in the oneMKL installation + An example of how to use cosd can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/cosh.rst b/source/elements/oneMKL/source/domains/vm/cosh.rst index 25a3d9104f..0c5d0d8e6e 100644 --- a/source/elements/oneMKL/source/domains/vm/cosh.rst +++ b/source/elements/oneMKL/source/domains/vm/cosh.rst @@ -306,7 +306,7 @@ cosh :class: sectiontitle - An example of how to use coshcan be found in the oneMKL installation + An example of how to use cosh can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/cospi.rst b/source/elements/oneMKL/source/domains/vm/cospi.rst index d32715bb87..f5f7167250 100644 --- a/source/elements/oneMKL/source/domains/vm/cospi.rst +++ b/source/elements/oneMKL/source/domains/vm/cospi.rst @@ -208,7 +208,7 @@ cospi :class: sectiontitle - An example of how to use cospican be found in the oneMKL installation + An example of how to use cospi can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/create_error_handler.rst b/source/elements/oneMKL/source/domains/vm/create_error_handler.rst index d8ebe514a4..4f3239da2e 100644 --- a/source/elements/oneMKL/source/domains/vm/create_error_handler.rst +++ b/source/elements/oneMKL/source/domains/vm/create_error_handler.rst @@ -249,7 +249,7 @@ create_error_handler The ``st`` contains either ``status::success`` or accumulated - error statuses if computational errors occured in ``vm::erfinv``. + error statuses if computational errors occurred in ``vm::erfinv``. Multiple status mode with create_error_handler(): diff --git a/source/elements/oneMKL/source/domains/vm/div.rst b/source/elements/oneMKL/source/domains/vm/div.rst index 48e8fbb159..c7a702bac2 100644 --- a/source/elements/oneMKL/source/domains/vm/div.rst +++ b/source/elements/oneMKL/source/domains/vm/div.rst @@ -248,7 +248,7 @@ div :class: sectiontitle - An example of how to use divcan be found in the oneMKL installation + An example of how to use div can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/erf.rst b/source/elements/oneMKL/source/domains/vm/erf.rst index 0e6ea1df7a..ef9b972d94 100644 --- a/source/elements/oneMKL/source/domains/vm/erf.rst +++ b/source/elements/oneMKL/source/domains/vm/erf.rst @@ -243,7 +243,7 @@ erf :class: sectiontitle - An example of how to use erfcan be found in the oneMKL installation + An example of how to use erf can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/erfc.rst b/source/elements/oneMKL/source/domains/vm/erfc.rst index bd8816a00e..04982899c5 100644 --- a/source/elements/oneMKL/source/domains/vm/erfc.rst +++ b/source/elements/oneMKL/source/domains/vm/erfc.rst @@ -261,7 +261,7 @@ erfc :class: sectiontitle - An example of how to use erfccan be found in the oneMKL installation + An example of how to use erfc can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/erfcinv.rst b/source/elements/oneMKL/source/domains/vm/erfcinv.rst index 8fa301652d..e78b8124ec 100644 --- a/source/elements/oneMKL/source/domains/vm/erfcinv.rst +++ b/source/elements/oneMKL/source/domains/vm/erfcinv.rst @@ -274,7 +274,7 @@ erfcinv :class: sectiontitle - An example of how to use erfcinvcan be found in the oneMKL + An example of how to use erfcinv can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/erfinv.rst b/source/elements/oneMKL/source/domains/vm/erfinv.rst index ff73c69580..4a1b623869 100644 --- a/source/elements/oneMKL/source/domains/vm/erfinv.rst +++ b/source/elements/oneMKL/source/domains/vm/erfinv.rst @@ -276,7 +276,7 @@ erfinv :class: sectiontitle - An example of how to use erfinvcan be found in the oneMKL + An example of how to use erfinv can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/exp.rst b/source/elements/oneMKL/source/domains/vm/exp.rst index 4fee79ffed..3d74e03145 100644 --- a/source/elements/oneMKL/source/domains/vm/exp.rst +++ b/source/elements/oneMKL/source/domains/vm/exp.rst @@ -300,7 +300,7 @@ exp :class: sectiontitle - An example of how to use expcan be found in the oneMKL installation + An example of how to use exp can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/fdim.rst b/source/elements/oneMKL/source/domains/vm/fdim.rst index e67aabf44b..efe7c91a04 100644 --- a/source/elements/oneMKL/source/domains/vm/fdim.rst +++ b/source/elements/oneMKL/source/domains/vm/fdim.rst @@ -192,7 +192,7 @@ fdim :class: sectiontitle - An example of how to use fdimcan be found in the oneMKL installation + An example of how to use fdim can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/floor.rst b/source/elements/oneMKL/source/domains/vm/floor.rst index dd8208e7af..0559fa97e3 100644 --- a/source/elements/oneMKL/source/domains/vm/floor.rst +++ b/source/elements/oneMKL/source/domains/vm/floor.rst @@ -7,7 +7,7 @@ floor .. container:: - Computes an integer valuerounded towards minus infinity for each + Computes an integer value rounded towards minus infinity for each vector element. @@ -52,7 +52,7 @@ floor :class: sectiontitle - The floor(a)functioncomputes an integer valuerounded towards minus + The floor(a)function computes an integer value rounded towards minus infinity for each vector element. @@ -187,7 +187,7 @@ floor :class: sectiontitle - An example of how to use floorcan be found in the oneMKL installation + An example of how to use floor can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/fmax.rst b/source/elements/oneMKL/source/domains/vm/fmax.rst index f0dfd883aa..a4ec596258 100644 --- a/source/elements/oneMKL/source/domains/vm/fmax.rst +++ b/source/elements/oneMKL/source/domains/vm/fmax.rst @@ -188,7 +188,7 @@ fmax :class: sectiontitle - An example of how to use fmaxcan be found in the oneMKL installation + An example of how to use fmax can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/fmin.rst b/source/elements/oneMKL/source/domains/vm/fmin.rst index 8aca9a57cb..934f1f7abf 100644 --- a/source/elements/oneMKL/source/domains/vm/fmin.rst +++ b/source/elements/oneMKL/source/domains/vm/fmin.rst @@ -188,7 +188,7 @@ fmin :class: sectiontitle - An example of how to use fmincan be found in the oneMKL installation + An example of how to use fmin can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/fmod.rst b/source/elements/oneMKL/source/domains/vm/fmod.rst index 5e06349c2b..bf34185004 100644 --- a/source/elements/oneMKL/source/domains/vm/fmod.rst +++ b/source/elements/oneMKL/source/domains/vm/fmod.rst @@ -219,7 +219,7 @@ fmod :class: sectiontitle - An example of how to use fmodcan be found in the oneMKL installation + An example of how to use fmod can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/frac.rst b/source/elements/oneMKL/source/domains/vm/frac.rst index e42ff8662a..30f392fbb1 100644 --- a/source/elements/oneMKL/source/domains/vm/frac.rst +++ b/source/elements/oneMKL/source/domains/vm/frac.rst @@ -51,7 +51,7 @@ frac :class: sectiontitle - The frac(a) functioncomputes a signed fractional part for each vector + The frac(a) function computes a signed fractional part for each vector element. @@ -186,7 +186,7 @@ frac :class: sectiontitle - An example of how to use fraccan be found in the oneMKL installation + An example of how to use frac can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/hypot.rst b/source/elements/oneMKL/source/domains/vm/hypot.rst index cec9b6acde..08eb87d2e5 100644 --- a/source/elements/oneMKL/source/domains/vm/hypot.rst +++ b/source/elements/oneMKL/source/domains/vm/hypot.rst @@ -221,7 +221,7 @@ hypot :class: sectiontitle - An example of how to use hypotcan be found in the oneMKL installation + An example of how to use hypot can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/inv.rst b/source/elements/oneMKL/source/domains/vm/inv.rst index f621b283d6..d1009a1c15 100644 --- a/source/elements/oneMKL/source/domains/vm/inv.rst +++ b/source/elements/oneMKL/source/domains/vm/inv.rst @@ -193,7 +193,7 @@ inv :class: sectiontitle - An example of how to use invcan be found in the oneMKL installation + An example of how to use inv can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/invcbrt.rst b/source/elements/oneMKL/source/domains/vm/invcbrt.rst index a77148b773..d12dbdb035 100644 --- a/source/elements/oneMKL/source/domains/vm/invcbrt.rst +++ b/source/elements/oneMKL/source/domains/vm/invcbrt.rst @@ -193,7 +193,7 @@ invcbrt :class: sectiontitle - An example of how to use invcbrtcan be found in the oneMKL + An example of how to use invcbrt can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/invsqrt.rst b/source/elements/oneMKL/source/domains/vm/invsqrt.rst index 83841f0d38..e3a8664103 100644 --- a/source/elements/oneMKL/source/domains/vm/invsqrt.rst +++ b/source/elements/oneMKL/source/domains/vm/invsqrt.rst @@ -196,7 +196,7 @@ invsqrt :class: sectiontitle - An example of how to use invsqrtcan be found in the oneMKL + An example of how to use invsqrt can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/lgamma.rst b/source/elements/oneMKL/source/domains/vm/lgamma.rst index 7558b2adc1..e6699af01f 100644 --- a/source/elements/oneMKL/source/domains/vm/lgamma.rst +++ b/source/elements/oneMKL/source/domains/vm/lgamma.rst @@ -210,7 +210,7 @@ lgamma :class: sectiontitle - An example of how to use lgammacan be found in the oneMKL + An example of how to use lgamma can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/linearfrac.rst b/source/elements/oneMKL/source/domains/vm/linearfrac.rst index 2635c896b8..c6b035b4ed 100644 --- a/source/elements/oneMKL/source/domains/vm/linearfrac.rst +++ b/source/elements/oneMKL/source/domains/vm/linearfrac.rst @@ -65,7 +65,7 @@ linearfrac therefore no special values are defined for this function. If used in HA or LA mode, linearfrac sets the VM Error Status to status::accuracy_warning. Correctness is guaranteed within the - threshold limitationsdefined for each input parameter (see the table + threshold limitations defined for each input parameter (see the table below); otherwise, the behavior is unspecified. @@ -187,7 +187,7 @@ linearfrac a - The pointer ``a`` to thie 1st input vector of size ``n``. + The pointer ``a`` to the 1st input vector of size ``n``. b @@ -264,7 +264,7 @@ linearfrac :class: sectiontitle - An example of how to use linearfraccan be found in the oneMKL + An example of how to use linearfrac can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/ln.rst b/source/elements/oneMKL/source/domains/vm/ln.rst index 22dbd26b9f..b14b5cca07 100644 --- a/source/elements/oneMKL/source/domains/vm/ln.rst +++ b/source/elements/oneMKL/source/domains/vm/ln.rst @@ -274,7 +274,7 @@ ln :class: sectiontitle - An example of how to use lncan be found in the oneMKL installation + An example of how to use ln can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/log1p.rst b/source/elements/oneMKL/source/domains/vm/log1p.rst index 8073880a75..04a9ad5484 100644 --- a/source/elements/oneMKL/source/domains/vm/log1p.rst +++ b/source/elements/oneMKL/source/domains/vm/log1p.rst @@ -200,7 +200,7 @@ log1p :class: sectiontitle - An example of how to use log1pcan be found in the oneMKL installation + An example of how to use log1p can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/logb.rst b/source/elements/oneMKL/source/domains/vm/logb.rst index da3ba8d2dc..b8a21ed83d 100644 --- a/source/elements/oneMKL/source/domains/vm/logb.rst +++ b/source/elements/oneMKL/source/domains/vm/logb.rst @@ -196,7 +196,7 @@ logb :class: sectiontitle - An example of how to use logbcan be found in the oneMKL installation + An example of how to use logb can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/maxmag.rst b/source/elements/oneMKL/source/domains/vm/maxmag.rst index 1435ad2a2b..286a101dbf 100644 --- a/source/elements/oneMKL/source/domains/vm/maxmag.rst +++ b/source/elements/oneMKL/source/domains/vm/maxmag.rst @@ -198,7 +198,7 @@ maxmag :class: sectiontitle - An example of how to use maxmagcan be found in the oneMKL + An example of how to use maxmag can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/minmag.rst b/source/elements/oneMKL/source/domains/vm/minmag.rst index a75f75917d..21daa7b033 100644 --- a/source/elements/oneMKL/source/domains/vm/minmag.rst +++ b/source/elements/oneMKL/source/domains/vm/minmag.rst @@ -198,7 +198,7 @@ minmag :class: sectiontitle - An example of how to use minmagcan be found in the oneMKL + An example of how to use minmag can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/modf.rst b/source/elements/oneMKL/source/domains/vm/modf.rst index ddf657173b..015ab8a6b2 100644 --- a/source/elements/oneMKL/source/domains/vm/modf.rst +++ b/source/elements/oneMKL/source/domains/vm/modf.rst @@ -52,7 +52,7 @@ modf :class: sectiontitle - The modf(a) functioncomputes a truncated integer value and the + The modf(a) function computes a truncated integer value and the remaining fraction part for each vector element. @@ -206,7 +206,7 @@ modf :class: sectiontitle - An example of how to use modfcan be found in the oneMKL installation + An example of how to use modf can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/mul.rst b/source/elements/oneMKL/source/domains/vm/mul.rst index 99ddb6dcdd..452d95f020 100644 --- a/source/elements/oneMKL/source/domains/vm/mul.rst +++ b/source/elements/oneMKL/source/domains/vm/mul.rst @@ -283,7 +283,7 @@ mul :class: sectiontitle - An example of how to use mulcan be found in the oneMKL installation + An example of how to use mul can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/mulbyconj.rst b/source/elements/oneMKL/source/domains/vm/mulbyconj.rst index 3669586480..67c6f8c11a 100644 --- a/source/elements/oneMKL/source/domains/vm/mulbyconj.rst +++ b/source/elements/oneMKL/source/domains/vm/mulbyconj.rst @@ -158,7 +158,7 @@ mulbyconj :class: sectiontitle - An example of how to use mulbyconjcan be found in the oneMKL + An example of how to use mulbyconj can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/nearbyint.rst b/source/elements/oneMKL/source/domains/vm/nearbyint.rst index f03cd014be..5d71df6f7e 100644 --- a/source/elements/oneMKL/source/domains/vm/nearbyint.rst +++ b/source/elements/oneMKL/source/domains/vm/nearbyint.rst @@ -52,7 +52,7 @@ nearbyint :class: sectiontitle - The nearbyint(a) functioncomputes a rounded integer value in a + The nearbyint(a) function computes a rounded integer value in a current rounding mode for each vector element. @@ -183,7 +183,7 @@ nearbyint :class: sectiontitle - An example of how to use nearbyintcan be found in the oneMKL + An example of how to use nearbyint can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/nextafter.rst b/source/elements/oneMKL/source/domains/vm/nextafter.rst index ff5d6e4b05..260b0dc3f3 100644 --- a/source/elements/oneMKL/source/domains/vm/nextafter.rst +++ b/source/elements/oneMKL/source/domains/vm/nextafter.rst @@ -68,16 +68,16 @@ nextafter * - Arguments/Results - Error Code - * - Input vector argument element is finite and the corresponding result vector element value is infinite + * - Input vector argument element is finite and the corresponding result vector element value is infinite - ``status::overflow`` - * - Result vector element value is subnormal or zero, and different from the corresponding input vector argument element + * - Result vector element value is subnormal or zero, and different from the corresponding input vector argument element - ``status::underflow`` - Even though underflow or overflow canoccur, the returned value is - independent of the current roundingdirection mode. + Even though underflow or overflow can occur, the returned value is + independent of the current rounding direction mode. .. container:: section @@ -195,7 +195,7 @@ nextafter :class: sectiontitle - An example of how to use nextaftercan be found in the oneMKL + An example of how to use nextafter can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/pow.rst b/source/elements/oneMKL/source/domains/vm/pow.rst index 4934450eb7..3a84033d03 100644 --- a/source/elements/oneMKL/source/domains/vm/pow.rst +++ b/source/elements/oneMKL/source/domains/vm/pow.rst @@ -312,7 +312,7 @@ pow - \* Overflow in a real function is supported onlyin the HA/LA accuracy + \* Overflow in a real function is supported only in the HA/LA accuracy modes. The overflow occurs when x and y are finite numbers, but the result is too large to fit the target precision. In this case, the function: @@ -321,7 +321,7 @@ pow #. Returns ∞ in the result. - #. Sets the VM Error Statusto status::overflow. + #. Sets the VM Error Status to status::overflow. Overflow in a complex function occurs (supported in the HA/LA @@ -454,7 +454,7 @@ pow :class: sectiontitle - An example of how to use powcan be found in the oneMKL installation + An example of how to use pow can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/powr.rst b/source/elements/oneMKL/source/domains/vm/powr.rst index 2caa65e684..695ff90150 100644 --- a/source/elements/oneMKL/source/domains/vm/powr.rst +++ b/source/elements/oneMKL/source/domains/vm/powr.rst @@ -290,7 +290,7 @@ powr :class: sectiontitle - An example of how to use powrcan be found in the oneMKL installation + An example of how to use powr can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/powx.rst b/source/elements/oneMKL/source/domains/vm/powx.rst index 7673277ed7..87583313d4 100644 --- a/source/elements/oneMKL/source/domains/vm/powx.rst +++ b/source/elements/oneMKL/source/domains/vm/powx.rst @@ -67,7 +67,7 @@ powx Special values and VM Error Status treatment are the same as for the - powfunction. + pow function. .. container:: section @@ -185,7 +185,7 @@ powx :class: sectiontitle - An example of how to use powxcan be found in the oneMKL installation + An example of how to use powx can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/remainder.rst b/source/elements/oneMKL/source/domains/vm/remainder.rst index 002024be08..8d99e9840e 100644 --- a/source/elements/oneMKL/source/domains/vm/remainder.rst +++ b/source/elements/oneMKL/source/domains/vm/remainder.rst @@ -220,7 +220,7 @@ remainder :class: sectiontitle - An example of how to use remaindercan be found in the oneMKL + An example of how to use remainder can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/rint.rst b/source/elements/oneMKL/source/domains/vm/rint.rst index e193f7a818..287642cd9f 100644 --- a/source/elements/oneMKL/source/domains/vm/rint.rst +++ b/source/elements/oneMKL/source/domains/vm/rint.rst @@ -51,7 +51,7 @@ rint :class: sectiontitle - The rint(a)functioncomputes a rounded floating-point integer value + The rint(a) function computes a rounded floating-point integer value using the current rounding mode for each vector element. @@ -70,7 +70,7 @@ rint minus infinity. - - ``f(-1.5) = -1``, for rounding modes set to roundtoward zero or to + - ``f(-1.5) = -1``, for rounding modes set to round toward zero or to plus infinity. @@ -201,7 +201,7 @@ rint :class: sectiontitle - An example of how to use rintcan be found in the oneMKL installation + An example of how to use rint can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/round.rst b/source/elements/oneMKL/source/domains/vm/round.rst index ca1e0488cb..904037a3fd 100644 --- a/source/elements/oneMKL/source/domains/vm/round.rst +++ b/source/elements/oneMKL/source/domains/vm/round.rst @@ -7,7 +7,7 @@ round .. container:: - Computes a valuerounded to the nearest integer for each vector + Computes a value rounded to the nearest integer for each vector element. @@ -52,8 +52,8 @@ round :class: sectiontitle - The round(a) functioncomputes a valuerounded to the nearest - integerfor each vector element. Input elements that are halfway + The round(a) function computes a value rounded to the nearest + integer for each vector element. Input elements that are halfway between two consecutive integers are always rounded away from zero regardless of the rounding mode. @@ -185,7 +185,7 @@ round :class: sectiontitle - An example of how to use roundcan be found in the oneMKL installation + An example of how to use round can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/setmode.rst b/source/elements/oneMKL/source/domains/vm/setmode.rst index e27a4025af..57d138ecbd 100644 --- a/source/elements/oneMKL/source/domains/vm/setmode.rst +++ b/source/elements/oneMKL/source/domains/vm/setmode.rst @@ -40,7 +40,7 @@ setmode numbers. - The mode::ftzdazonis specifically designed to improve the + The mode::ftzdazon is specifically designed to improve the performance of computations that involve denormalized numbers at the cost of reasonable accuracy loss. This mode changes the numeric behavior of the functions: denormalized input values are diff --git a/source/elements/oneMKL/source/domains/vm/sin.rst b/source/elements/oneMKL/source/domains/vm/sin.rst index e08ca49e65..f4c0bde6a3 100644 --- a/source/elements/oneMKL/source/domains/vm/sin.rst +++ b/source/elements/oneMKL/source/domains/vm/sin.rst @@ -97,7 +97,7 @@ sin - Specificationsfor special values of the complex functions are defined + Specifications for special values of the complex functions are defined according to the following formula @@ -211,7 +211,7 @@ sin :class: sectiontitle - An example of how to use sincan be found in the oneMKL installation + An example of how to use sin can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/sincos.rst b/source/elements/oneMKL/source/domains/vm/sincos.rst index c7d646b371..974a527bec 100644 --- a/source/elements/oneMKL/source/domains/vm/sincos.rst +++ b/source/elements/oneMKL/source/domains/vm/sincos.rst @@ -219,7 +219,7 @@ sincos :class: sectiontitle - An example of how to use sincoscan be found in the oneMKL + An example of how to use sincos can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/sind.rst b/source/elements/oneMKL/source/domains/vm/sind.rst index 37a17fee3e..34b97b2d62 100644 --- a/source/elements/oneMKL/source/domains/vm/sind.rst +++ b/source/elements/oneMKL/source/domains/vm/sind.rst @@ -206,7 +206,7 @@ sind :class: sectiontitle - An example of how to use sindcan be found in the oneMKL installation + An example of how to use sind can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/sinh.rst b/source/elements/oneMKL/source/domains/vm/sinh.rst index 65f217c538..56a6ed356e 100644 --- a/source/elements/oneMKL/source/domains/vm/sinh.rst +++ b/source/elements/oneMKL/source/domains/vm/sinh.rst @@ -306,7 +306,7 @@ sinh :class: sectiontitle - An example of how to use sinhcan be found in the oneMKL installation + An example of how to use sinh can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/sinpi.rst b/source/elements/oneMKL/source/domains/vm/sinpi.rst index a11e646797..4dd9c086e1 100644 --- a/source/elements/oneMKL/source/domains/vm/sinpi.rst +++ b/source/elements/oneMKL/source/domains/vm/sinpi.rst @@ -211,7 +211,7 @@ sinpi :class: sectiontitle - An example of how to use sinpican be found in the oneMKL installation + An example of how to use sinpi can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/sqr.rst b/source/elements/oneMKL/source/domains/vm/sqr.rst index 2692d659bd..e008f0ce88 100644 --- a/source/elements/oneMKL/source/domains/vm/sqr.rst +++ b/source/elements/oneMKL/source/domains/vm/sqr.rst @@ -51,7 +51,7 @@ sqr :class: sectiontitle - The sqr() function performs element by element sqaring of the vector. + The sqr() function performs element by element squaring of the vector. .. container:: tablenoborder @@ -181,7 +181,7 @@ sqr :class: sectiontitle - An example of how to use sqrcan be found in the oneMKL installation + An example of how to use sqr can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/sqrt.rst b/source/elements/oneMKL/source/domains/vm/sqrt.rst index ec024ff1f5..af9b50d900 100644 --- a/source/elements/oneMKL/source/domains/vm/sqrt.rst +++ b/source/elements/oneMKL/source/domains/vm/sqrt.rst @@ -277,7 +277,7 @@ sqrt :class: sectiontitle - An example of how to use sqrtcan be found in the oneMKL installation + An example of how to use sqrt can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/sub.rst b/source/elements/oneMKL/source/domains/vm/sub.rst index e1b22d858b..d587707e75 100644 --- a/source/elements/oneMKL/source/domains/vm/sub.rst +++ b/source/elements/oneMKL/source/domains/vm/sub.rst @@ -243,7 +243,7 @@ sub :class: sectiontitle - An example of how to use subcan be found in the oneMKL installation + An example of how to use sub can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/tan.rst b/source/elements/oneMKL/source/domains/vm/tan.rst index 9921cbc898..ede8e01f8b 100644 --- a/source/elements/oneMKL/source/domains/vm/tan.rst +++ b/source/elements/oneMKL/source/domains/vm/tan.rst @@ -97,7 +97,7 @@ tan - Specificationsfor special values of the complex functions are defined + Specifications for special values of the complex functions are defined according to the following formula @@ -211,7 +211,7 @@ tan :class: sectiontitle - An example of how to use tancan be found in the oneMKL installation + An example of how to use tan can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/tand.rst b/source/elements/oneMKL/source/domains/vm/tand.rst index dd56bec0c1..e8f04262ba 100644 --- a/source/elements/oneMKL/source/domains/vm/tand.rst +++ b/source/elements/oneMKL/source/domains/vm/tand.rst @@ -206,7 +206,7 @@ tand :class: sectiontitle - An example of how to use tandcan be found in the oneMKL installation + An example of how to use tand can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/tanh.rst b/source/elements/oneMKL/source/domains/vm/tanh.rst index 8d075be8ec..b31bfd678b 100644 --- a/source/elements/oneMKL/source/domains/vm/tanh.rst +++ b/source/elements/oneMKL/source/domains/vm/tanh.rst @@ -266,7 +266,7 @@ tanh :class: sectiontitle - An example of how to use tanhcan be found in the oneMKL installation + An example of how to use tanh can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/tanpi.rst b/source/elements/oneMKL/source/domains/vm/tanpi.rst index 1fedf37733..508191a9df 100644 --- a/source/elements/oneMKL/source/domains/vm/tanpi.rst +++ b/source/elements/oneMKL/source/domains/vm/tanpi.rst @@ -222,7 +222,7 @@ tanpi :class: sectiontitle - An example of how to use tanpican be found in the oneMKL installation + An example of how to use tanpi can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/tgamma.rst b/source/elements/oneMKL/source/domains/vm/tgamma.rst index 874a553baf..3f6dde99ec 100644 --- a/source/elements/oneMKL/source/domains/vm/tgamma.rst +++ b/source/elements/oneMKL/source/domains/vm/tgamma.rst @@ -203,7 +203,7 @@ tgamma :class: sectiontitle - An example of how to use tgammacan be found in the oneMKL + An example of how to use tgamma can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/trunc.rst b/source/elements/oneMKL/source/domains/vm/trunc.rst index c342c75b69..53ad858ff4 100644 --- a/source/elements/oneMKL/source/domains/vm/trunc.rst +++ b/source/elements/oneMKL/source/domains/vm/trunc.rst @@ -7,7 +7,7 @@ trunc .. container:: - Computes an integer valuerounded towards zero for each vector + Computes an integer value rounded towards zero for each vector element. @@ -52,7 +52,7 @@ trunc :class: sectiontitle - The trunc(a)functioncomputes an integer valuerounded towards zero for + The trunc(a) function computes an integer value rounded towards zero for each vector element. @@ -187,7 +187,7 @@ trunc :class: sectiontitle - An example of how to use trunccan be found in the oneMKL installation + An example of how to use trunc can be found in the oneMKL installation directory, under: diff --git a/source/elements/oneMKL/source/domains/vm/vm-mathematical-functions.rst b/source/elements/oneMKL/source/domains/vm/vm-mathematical-functions.rst index 1f7c4a8444..05b4357630 100644 --- a/source/elements/oneMKL/source/domains/vm/vm-mathematical-functions.rst +++ b/source/elements/oneMKL/source/domains/vm/vm-mathematical-functions.rst @@ -212,7 +212,7 @@ VM Mathematical Functions - Computes the inverse tangent of vector elements divided by ``π`` * - `atan2pi `__ - s, d - - Computes the four-quadrant inverse tangent of the ratios of the corresponding elementss of two vectors divided by ``π`` + - Computes the four-quadrant inverse tangent of the ratios of the corresponding elements of two vectors divided by ``π`` * - `cosd `__ - s, d - Computes the cosine of vector elements multiplied by ``π``/180 diff --git a/source/spelling_wordlist.txt b/source/spelling_wordlist.txt index 8586ea67dd..a035912649 100644 --- a/source/spelling_wordlist.txt +++ b/source/spelling_wordlist.txt @@ -1,3 +1,301 @@ +mrg +Γ +Φ +α +β +δ +λ +ν +π +σ +∞ +∈ +≤ +≥ +fi +fl +cosd +cospi +inv +mulbyconj +tanpi +ln +logb +maxmag +fmax +minmag +fmin +minmag +modf +SNAN +mulbyconf +nearbyint +nextafter +pos +powr +Powr +powx +errdom +rint +setmode +denormalized +ftzdazon +denormals +denormal +sincos +sind +sinh +sinpi +sqr +sqrt +tand +Erro +tgamma +matrixHandle +erfinv +erfcinv +cis +cods +cosp +inputoutput +errcode +erfinv +erfcinv +erfinv +erfcinv +expint +expm +fdim +fmax +frac +denormalized +hypot +invcbrt +invsqrt +lgamma +linearfrac +scalea +shifta +scaleb +linearfrac +dgebrd +ifscalea +ifscaleb +scalea +shifta +caleb +shiftb +syevd +Springer +multinomial +ntrials +cauchy +getrs +variates +gebrd +bidiangonal +lwork +tauq +superdiagonal +superdiagonals +factorizations +ipiv +tridiagonal +submatrix +heevd +jobz +heqvd +eigenproblem +itype +Cholesky +taup +hertrd +NaN +orgbr +sytrf +orthonormal +ormqr +potrf +potri +potrs +nrhs +Kahan +mkl +bidiagonal +getValue +worksize +subdiagonal +orgqr +lapack +ungqr +unmqr +sgebrd +orgqr +orgtr +ormtr +sygvd +sytrd +geqrf +gesvd +jobu +jobvt +trtrs +ungbr +cgebrd +zgebrd +ungbr +ungqr +ungtr +unmqr +unmtr +Bratley +Niederreiter +Coddington +L'Ecuyer +Stoll +Matsumoto +Nishimura +Spanier +Spring +Saito +Dror +Sobol +Levitan +Yu +Preprint +Weibull +Lognormal +Hypergeometric +rng +gaussian +ptpe +Multinomial +definitional +Weibull +Cheng +Johnk +ntrial +Multinomial +Philox +congruential +Wichmann +Mersenne +Wichmann +AVX +IntelSWMan +ars +bernoulli +scalefactor +Scalefactor +binomially +reccurents +rng +stddev +distr +gumbel +hypergeometric +hypergeometrically +laplace +subsequence +spblas +nontrans +conjtrans +gemvdot +gemvOptimize +QNAN +acosh +nonnegative +errhandler +acospi +acos +errhandler +nd +fmod +asin +errhandler +asinh +asinpi +errhandler +atan +cbrt +cdfnorm +erfand +erfcare +erf +erfc +cdfnorm +cdfnorminv +ceil +copysign +errhandler +cods +un +fixup +errstatus +errarray +QNAN +copysign +Fixup +subsequences +lognormal +lognormal +vt +displ +mcg +multinomial +multinomially +negbinonmial +niederreiter +irred +nondeterministic +poisson +philox +rayleigh +sfmt +sobol +weibull +wichmann +columnwise +rowwise +unconverged +rwork +pseudorandom +inout +ldu +ldvt +getrf +getri +lrwork +liwork +iwork +hegvd +hetrd +IOType +init +computeForward +ConfigParam +nullptr +BWD +dft +yparam +spr +tbsv +tpmv +trmv +trsm +trsv +onemkl +dft +dfti +hpp +templating +factorizations +setValue +ErrCode +deviceQueue +MKL +computeBackward +Im ALLgatherv Acar Adaptor @@ -29,6 +327,8 @@ Fortran Func Getter Hashcode +Hermitian +IM InputType Invariants KHash @@ -69,9 +369,13 @@ alloc allocator allocators analytics +ao arg +asum async +asynchronicity attr +axpy backend backends balancer @@ -83,6 +387,7 @@ bitflgs bitstream bitstreams bitwise +bo boolean breakpoint buf @@ -103,6 +408,7 @@ composability concat config conformant +conjg const construct constructible @@ -110,6 +416,7 @@ copyable cpu csr dataset +datatypes deallocated deallocates deallocation @@ -122,9 +429,12 @@ desctructor deserialization destructor destructors +diag dimensionality dmabuf dnnl +dotc +dotu dst dtype durations @@ -141,10 +451,28 @@ fc functor functors gRPC +gbmv gelu +gemm +gemmt +gemt +gemv +ger +gerc +geru hasher +hbmv +hemm +hemv +herk +hpmv +hpr +iamax +iamin ic idx +incx +incy initializer interfacex interoperability @@ -152,6 +480,10 @@ intptr iter kNN kh +ku +lda +ldb +ldc libsdc libstdc logsoftmax @@ -159,6 +491,7 @@ lookups macOS malloc matmul +matricies md mem memalign @@ -179,7 +512,9 @@ namespaces nen noncommutative nondeterministically +nonunit notational +nrm num nv oc @@ -195,6 +530,7 @@ opencl oqueueing parallelized parallelizing +param partitioner partitioners pipelined @@ -203,6 +539,7 @@ posix ppl pre preallocated +precisions preprocessing prescan prescanned @@ -227,44 +564,87 @@ reservable rethrown rhs rnn +rotg +rotm +rotmg runtime rvalue rvalues rw +sb +sbmv +scal scalability scalable +sdsdot signum softmax sortable splittable +spmv +spro src +stridea +strideb +stridec +strided subclases subclasses subclassing subcomputations +subdevice +subdevices subrange subranges subtasks subtree superset sycl +symm +symv +syr +syrk tanh tbb +tbmv templated th +tpsv +transa transactional +transb transcoding +trmm typedef typename uint unallocated unary uncancelled +negbinomial +matrixInit +matrixHanlde +setCSRstructure +nRows +nCols +rowIndex +colIndex +trmvOptimize +trsvOptimize +fp +intType +arctangent +atanh +atanpi +trunc +unconjugated unmap unmaps unmarks unregister +uplo userptr +ust vaapi variadic viewable From 9c5e735f7dfd962784c9638ebb0a19d259c6988e Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Fri, 27 Mar 2020 15:27:11 -0400 Subject: [PATCH 28/31] warnings: title underlines (#104) Co-authored-by: Robert Cohn --- ...l-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst | 2 +- ...precision-mkl-dft-domain-computebackward-typename-iotype.rst | 2 +- ...-precision-mkl-dft-domain-computeforward-typename-iotype.rst | 2 +- ...dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst | 2 +- ...mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst | 2 +- ...dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst | 2 +- .../dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst | 2 +- .../distributions-template-parameter-mkl-rng-method-values.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst | 2 +- .../elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst | 2 +- .../elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst | 2 +- .../oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst | 2 +- .../elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst | 2 +- .../elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst | 2 +- .../elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst | 2 +- .../oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst | 2 +- .../oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst | 2 +- .../elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst | 2 +- .../oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst | 2 +- .../oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst | 2 +- .../elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst | 2 +- source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst | 2 +- .../oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst | 2 +- .../elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst | 2 +- .../elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst | 2 +- .../oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst | 2 +- .../oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst | 2 +- 50 files changed, 50 insertions(+), 50 deletions(-) diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst index ea4f348162..0fe1dfb335 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst @@ -1,7 +1,7 @@ .. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit: onemkl::dft::Descriptor::commit -=================================================================== +============================================================================ .. container:: diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst index 5237a7b799..841e540157 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst @@ -1,7 +1,7 @@ .. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype: onemkl::dft::Descriptor::computeBackward -============================================================================================= +====================================================================================================== .. container:: diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst index 9d35d282a5..0bbe26948a 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst @@ -1,7 +1,7 @@ .. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype: onemkl::dft::Descriptor::computeForward -============================================================================================ +===================================================================================================== .. container:: diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst index 224fecff92..47fa316e93 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst @@ -1,7 +1,7 @@ .. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue: onemkl::dft::Descriptor::getValue -===================================================================== +============================================================================== .. container:: diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst index 5eb69078b7..dd7b0de850 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst @@ -1,7 +1,7 @@ .. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init: onemkl::dft::Descriptor::Init -================================================================= +========================================================================== .. container:: diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst index 7156acb673..d08147ffe5 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst @@ -1,7 +1,7 @@ .. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue: onemkl::dft::Descriptor::setValue -===================================================================== +============================================================================== .. container:: diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst index d3afe73022..7f4178a808 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst @@ -1,7 +1,7 @@ .. _mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain: onemkl::dft::Descriptor -=========================================================== +==================================================================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst b/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst index c2e0b2a429..7b967d1cd9 100644 --- a/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst +++ b/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst @@ -1,7 +1,7 @@ .. _distributions-template-parameter-mkl-rng-method-values: Distributions Template Parameter onemkl::rng::method Values -======================================================== +=========================================================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst index 4d787b93c0..fa3e26c2a9 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst @@ -1,7 +1,7 @@ .. _mkl-rng-ars5: onemkl::rng::ars5 -============== +================= .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst index 846f7b9bc7..d4fa77e6aa 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst @@ -1,7 +1,7 @@ .. _mkl-rng-bernoulli: onemkl::rng::bernoulli -=================== +====================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst index a6da7975f7..1c8dea06bd 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst @@ -1,7 +1,7 @@ .. _mkl-rng-beta: onemkl::rng::beta -============== +================= .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst index 7f87f5bfb4..ad52099bc9 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst @@ -1,7 +1,7 @@ .. _mkl-rng-binomial: onemkl::rng::binomial -================== +===================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst index 32c6ec236a..b56f98af44 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst @@ -1,7 +1,7 @@ .. _mkl-rng-bits: onemkl::rng::bits -============== +================= .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst index 5a0ed8b8b3..4d6f5cd78f 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst @@ -1,7 +1,7 @@ .. _mkl-rng-cauchy: onemkl::rng::cauchy -================ +=================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst index e3f1600c32..5dda3c5888 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst @@ -1,7 +1,7 @@ .. _mkl-rng-chi_square: onemkl::rng::chi_square -==================== +======================= .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst index c33777dd3b..7e1d35855b 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst @@ -1,7 +1,7 @@ .. _mkl-rng-exponential: onemkl::rng::exponential -===================== +======================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst index 7713343d0c..c1db7e5e09 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst @@ -1,7 +1,7 @@ .. _mkl-rng-gamma: onemkl::rng::gamma -=============== +================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst index db712f897e..d702bd57b8 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst @@ -1,7 +1,7 @@ .. _mkl-rng-gaussian: onemkl::rng::gaussian -================== +===================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst index 3700c22234..f42ee8fd1e 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst @@ -1,7 +1,7 @@ .. _mkl-rng-generate: onemkl::rng::generate -================== +===================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst index e8e82097f3..bd128b03cb 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst @@ -1,7 +1,7 @@ .. _mkl-rng-geometric: onemkl::rng::geometric -=================== +====================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst index 69d976b798..776fb2a2eb 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst @@ -1,7 +1,7 @@ .. _mkl-rng-gumbel: onemkl::rng::gumbel -================ +=================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst index f6b2b69696..68feb798fb 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst @@ -1,7 +1,7 @@ .. _mkl-rng-hypergeometric: onemkl::rng::hypergeometric -======================== +=========================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst index ff95f5bf2c..38c22f9fc2 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst @@ -1,7 +1,7 @@ .. _mkl-rng-laplace: onemkl::rng::laplace -================= +==================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst index 484685de44..cb8b36d9d8 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst @@ -1,7 +1,7 @@ .. _mkl-rng-leapfrog: onemkl::rng::leapfrog -================== +===================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst index 04a624e742..f88a830e04 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst @@ -1,7 +1,7 @@ .. _mkl-rng-mcg31m1: onemkl::rng::mcg31m1 -================= +==================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst index 67a270a18d..d0bb31412b 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst @@ -1,7 +1,7 @@ .. _mkl-rng-mcg59: onemkl::rng::mcg59 -=============== +================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst index 08e84b2bd8..725408a045 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst @@ -1,7 +1,7 @@ .. _mkl-rng-mrg32k3a: onemkl::rng::mrg32k3a -================== +===================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst index cc9546604f..f21dd78b2d 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst @@ -1,7 +1,7 @@ .. _mkl-rng-mt19937: onemkl::rng::mt19937 -================= +==================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst index 28d88b1f9b..60f6a425ab 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst @@ -1,7 +1,7 @@ .. _mkl-rng-mt2203: onemkl::rng::mt2203 -================ +=================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst index f1ab2e6823..c351eee416 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst @@ -1,7 +1,7 @@ .. _mkl-rng-multinomial: onemkl::rng::multinomial -===================== +======================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst index bc01166cfb..2cb61bb9bb 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst @@ -1,7 +1,7 @@ .. _mkl-rng-negbinomial: onemkl::rng::negbinomial -===================== +======================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst index 9725564b70..ea1dce9a72 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst @@ -1,7 +1,7 @@ .. _mkl-rng-niederreiter: onemkl::rng::niederreiter -====================== +========================= .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst index d030b516e0..a8bf521f25 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst @@ -1,7 +1,7 @@ .. _mkl-rng-nondeterministic: onemkl::rng::nondeterministic -========================== +============================= .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst index c331d96a1b..c766487cda 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst @@ -1,7 +1,7 @@ .. _mkl-rng-philox4x32x10: onemkl::rng::philox4x32x10 -======================= +========================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst index 3f2a7e7037..8e751cad2d 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst @@ -1,7 +1,7 @@ .. _mkl-rng-poisson: onemkl::rng::poisson -================= +==================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst index 2ef3107afc..27b82e823c 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst @@ -1,7 +1,7 @@ .. _mkl-rng-poisson_v: onemkl::rng::poisson_v -=================== +====================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst index f80eb16437..4a7ffa61e1 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst @@ -1,7 +1,7 @@ .. _mkl-rng-r250: onemkl::rng::r250 -============== +================= .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst index 6787694e89..5ac65bb7d8 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst @@ -1,7 +1,7 @@ .. _mkl-rng-rayleigh: onemkl::rng::rayleigh -================== +===================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst index bca40eca33..1e0e898f1c 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst @@ -1,7 +1,7 @@ .. _mkl-rng-sfmt19937: onemkl::rng::sfmt19937 -=================== +====================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst index 62ca587d28..47816a9cf4 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst @@ -1,7 +1,7 @@ .. _mkl-rng-skip_ahead: onemkl::rng::skip_ahead -==================== +======================= .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst index b46467455f..4fcc585423 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst @@ -1,7 +1,7 @@ .. _mkl-rng-sobol: onemkl::rng::sobol -=============== +================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst index f4a267ca68..b5baeb1f3f 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst @@ -1,7 +1,7 @@ .. _mkl-rng-uniform-continuous: onemkl::rng::uniform (Continuous) -============================== +================================= .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst index 770c4ac1c6..fa8591e087 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst @@ -1,7 +1,7 @@ .. _mkl-rng-uniform-discrete: onemkl::rng::uniform (Discrete) -============================ +=============================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst index 63b7f52745..8bb3c34f38 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst @@ -1,7 +1,7 @@ .. _mkl-rng-uniform_bits: onemkl::rng::uniform_bits -====================== +========================= .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst index 4950197798..4e64a0dea4 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst @@ -1,7 +1,7 @@ .. _mkl-rng-weibull: onemkl::rng::weibull -================= +==================== .. container:: diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst index 12dda1d7b6..56537837be 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst @@ -1,7 +1,7 @@ .. _mkl-rng-wichmann_hill: onemkl::rng::wichmann_hill -======================= +========================== .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst index adc919423a..9ae69e076f 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-gemm: onemkl::sparse::gemm -================= +==================== .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst index db672166a1..883f443da0 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-gemv: onemkl::sparse::gemv -================= +==================== .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst index 8db93debc3..0fcf819e52 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-gemvdot: onemkl::sparse::gemvdot -==================== +======================= .. container:: diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst index f8358d5e95..285a9485d7 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst @@ -1,7 +1,7 @@ .. _mkl-sparse-gemvoptimize: onemkl::sparse::gemvOptimize -========================= +============================ .. container:: From 5ec7b10378e1764d488364745309397ddbaef8bc Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Fri, 27 Mar 2020 15:55:44 -0400 Subject: [PATCH 29/31] warnings: empty container (#105) --- .../elements/oneMKL/source/domains/blas/asum-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/asum.rst | 3 --- .../elements/oneMKL/source/domains/blas/axpy-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/axpy.rst | 2 -- .../elements/oneMKL/source/domains/blas/copy-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/copy.rst | 2 -- source/elements/oneMKL/source/domains/blas/dot-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/dot.rst | 2 -- .../elements/oneMKL/source/domains/blas/dotc-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/dotc.rst | 2 -- .../elements/oneMKL/source/domains/blas/dotu-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/dotu.rst | 2 -- .../elements/oneMKL/source/domains/blas/gbmv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/gbmv.rst | 2 -- .../elements/oneMKL/source/domains/blas/gemm-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/gemm.rst | 2 -- source/elements/oneMKL/source/domains/blas/gemm_batch.rst | 2 -- source/elements/oneMKL/source/domains/blas/gemm_ext.rst | 2 -- .../elements/oneMKL/source/domains/blas/gemmt-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/gemmt.rst | 2 -- .../elements/oneMKL/source/domains/blas/gemv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/gemv.rst | 2 -- source/elements/oneMKL/source/domains/blas/ger-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/ger.rst | 2 -- .../elements/oneMKL/source/domains/blas/gerc-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/gerc.rst | 2 -- .../elements/oneMKL/source/domains/blas/geru-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/geru.rst | 2 -- .../elements/oneMKL/source/domains/blas/hbmv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/hbmv.rst | 2 -- .../elements/oneMKL/source/domains/blas/hemm-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/hemm.rst | 2 -- .../elements/oneMKL/source/domains/blas/hemv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/hemv.rst | 2 -- source/elements/oneMKL/source/domains/blas/her-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/her.rst | 2 -- .../elements/oneMKL/source/domains/blas/her2-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/her2.rst | 2 -- .../elements/oneMKL/source/domains/blas/her2k-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/her2k.rst | 2 -- .../elements/oneMKL/source/domains/blas/herk-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/herk.rst | 2 -- .../elements/oneMKL/source/domains/blas/hpmv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/hpmv.rst | 2 -- source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/hpr.rst | 2 -- .../elements/oneMKL/source/domains/blas/hpr2-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/hpr2.rst | 2 -- .../elements/oneMKL/source/domains/blas/iamax-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/iamax.rst | 2 -- .../elements/oneMKL/source/domains/blas/iamin-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/iamin.rst | 2 -- .../elements/oneMKL/source/domains/blas/nrm2-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/nrm2.rst | 2 -- source/elements/oneMKL/source/domains/blas/rot-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/rot.rst | 2 -- .../elements/oneMKL/source/domains/blas/rotg-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/rotg.rst | 2 -- .../elements/oneMKL/source/domains/blas/rotm-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/rotm.rst | 2 -- .../elements/oneMKL/source/domains/blas/rotmg-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/rotmg.rst | 2 -- .../elements/oneMKL/source/domains/blas/sbmv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/sbmv.rst | 2 -- .../elements/oneMKL/source/domains/blas/scal-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/scal.rst | 2 -- .../elements/oneMKL/source/domains/blas/spmv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/spmv.rst | 2 -- source/elements/oneMKL/source/domains/blas/spr-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/spr.rst | 2 -- .../elements/oneMKL/source/domains/blas/spr2-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/spr2.rst | 2 -- .../elements/oneMKL/source/domains/blas/swap-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/swap.rst | 2 -- .../elements/oneMKL/source/domains/blas/symm-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/symm.rst | 2 -- .../elements/oneMKL/source/domains/blas/symv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/symv.rst | 2 -- source/elements/oneMKL/source/domains/blas/syr-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/syr.rst | 2 -- .../elements/oneMKL/source/domains/blas/syr2-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/syr2.rst | 2 -- .../elements/oneMKL/source/domains/blas/syr2k-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/syr2k.rst | 2 -- .../elements/oneMKL/source/domains/blas/syrk-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/syrk.rst | 2 -- .../elements/oneMKL/source/domains/blas/tbmv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/tbmv.rst | 2 -- .../elements/oneMKL/source/domains/blas/tbsv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/tbsv.rst | 2 -- .../elements/oneMKL/source/domains/blas/tpmv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/tpmv.rst | 2 -- .../elements/oneMKL/source/domains/blas/tpsv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/tpsv.rst | 2 -- .../elements/oneMKL/source/domains/blas/trmm-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/trmm.rst | 2 -- .../elements/oneMKL/source/domains/blas/trmv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/trmv.rst | 2 -- .../elements/oneMKL/source/domains/blas/trsm-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/trsm.rst | 2 -- source/elements/oneMKL/source/domains/blas/trsm_batch.rst | 2 -- .../elements/oneMKL/source/domains/blas/trsv-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/blas/trsv.rst | 2 -- ...-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst | 2 -- ...recision-mkl-dft-domain-computebackward-typename-iotype.rst | 2 -- ...precision-mkl-dft-domain-computeforward-typename-iotype.rst | 2 -- ...ft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst | 3 +-- ...kl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst | 3 +-- ...ft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst | 3 +-- .../mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst | 3 +-- source/elements/oneMKL/source/domains/lapack/gebrd.rst | 2 -- .../elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/geqrf.rst | 2 -- source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst | 2 -- .../elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/gesvd.rst | 2 -- .../elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/getrf.rst | 2 -- source/elements/oneMKL/source/domains/lapack/getrf_batch.rst | 2 -- source/elements/oneMKL/source/domains/lapack/getri.rst | 2 -- source/elements/oneMKL/source/domains/lapack/getri_batch.rst | 2 -- .../elements/oneMKL/source/domains/lapack/getri_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/getrs.rst | 2 -- source/elements/oneMKL/source/domains/lapack/getrs_batch.rst | 2 -- source/elements/oneMKL/source/domains/lapack/heevd.rst | 2 -- .../elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/hegvd.rst | 2 -- .../elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/hetrd.rst | 2 -- .../elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/orgbr.rst | 2 -- .../elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/orgqr.rst | 2 -- source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst | 2 -- .../elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/orgtr.rst | 2 -- .../elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/ormqr.rst | 2 -- .../elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/ormtr.rst | 2 -- .../elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst | 2 -- .../oneMKL/source/domains/lapack/potrf-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/lapack/potrf.rst | 2 -- source/elements/oneMKL/source/domains/lapack/potrf_batch.rst | 2 -- source/elements/oneMKL/source/domains/lapack/potri.rst | 2 -- .../oneMKL/source/domains/lapack/potrs-usm-version.rst | 2 -- source/elements/oneMKL/source/domains/lapack/potrs.rst | 2 -- source/elements/oneMKL/source/domains/lapack/potrs_batch.rst | 2 -- source/elements/oneMKL/source/domains/lapack/syevd.rst | 2 -- .../elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/sygvd.rst | 2 -- .../elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/sytrd.rst | 2 -- .../elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/sytrf.rst | 2 -- .../elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/trtrs.rst | 2 -- source/elements/oneMKL/source/domains/lapack/ungbr.rst | 2 -- .../elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/ungqr.rst | 2 -- .../elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/ungtr.rst | 2 -- .../elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/unmqr.rst | 2 -- .../elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/lapack/unmtr.rst | 2 -- .../elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst | 2 -- source/elements/oneMKL/source/domains/rng/bibliography.rst | 2 -- .../distributions-template-parameter-mkl-rng-method-values.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst | 3 +-- .../elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst | 3 +-- source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst | 2 -- .../elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst | 2 -- .../elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst | 3 +-- .../elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst | 2 -- .../oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst | 2 -- .../elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst | 3 +-- source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst | 3 +-- source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst | 3 +-- source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst | 3 +-- source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst | 3 +-- .../elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst | 2 -- .../elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst | 2 -- .../oneMKL/source/domains/rng/mkl-rng-niederreiter.rst | 3 +-- .../oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst | 3 +-- .../oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst | 3 +-- source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst | 2 -- .../elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst | 3 +-- source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst | 2 -- .../elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst | 3 +-- .../elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst | 3 +-- .../oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst | 2 -- .../oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst | 2 -- .../oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst | 2 -- source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst | 2 -- .../oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst | 3 +-- source/elements/oneMKL/source/domains/spblas/exceptions.rst | 2 -- .../elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst | 3 +-- .../elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst | 2 -- .../oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst | 3 +-- .../oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst | 3 +-- .../source/domains/spblas/mkl-sparse-setcsrstructure.rst | 2 -- .../elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst | 3 +-- .../elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst | 3 +-- .../oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst | 3 +-- .../elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst | 2 -- .../oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst | 3 +-- .../elements/oneMKL/source/domains/spblas/supported-types.rst | 2 -- source/elements/oneMKL/source/domains/vm/abs.rst | 2 -- source/elements/oneMKL/source/domains/vm/acos.rst | 2 -- source/elements/oneMKL/source/domains/vm/acosh.rst | 2 -- source/elements/oneMKL/source/domains/vm/acospi.rst | 2 -- source/elements/oneMKL/source/domains/vm/add.rst | 2 -- source/elements/oneMKL/source/domains/vm/arg.rst | 2 -- source/elements/oneMKL/source/domains/vm/asin.rst | 2 -- source/elements/oneMKL/source/domains/vm/asinh.rst | 2 -- source/elements/oneMKL/source/domains/vm/asinpi.rst | 2 -- source/elements/oneMKL/source/domains/vm/atan.rst | 2 -- source/elements/oneMKL/source/domains/vm/atan2.rst | 2 -- source/elements/oneMKL/source/domains/vm/atan2pi.rst | 2 -- source/elements/oneMKL/source/domains/vm/atanh.rst | 2 -- source/elements/oneMKL/source/domains/vm/atanpi.rst | 2 -- source/elements/oneMKL/source/domains/vm/bibliography.rst | 2 -- source/elements/oneMKL/source/domains/vm/cbrt.rst | 2 -- source/elements/oneMKL/source/domains/vm/cdfnorm.rst | 2 -- source/elements/oneMKL/source/domains/vm/cdfnorminv.rst | 2 -- source/elements/oneMKL/source/domains/vm/ceil.rst | 2 -- source/elements/oneMKL/source/domains/vm/cis.rst | 2 -- source/elements/oneMKL/source/domains/vm/clear_status.rst | 2 -- source/elements/oneMKL/source/domains/vm/conj.rst | 2 -- source/elements/oneMKL/source/domains/vm/copysign.rst | 2 -- source/elements/oneMKL/source/domains/vm/cos.rst | 2 -- source/elements/oneMKL/source/domains/vm/cosd.rst | 2 -- source/elements/oneMKL/source/domains/vm/cosh.rst | 2 -- source/elements/oneMKL/source/domains/vm/cospi.rst | 2 -- .../elements/oneMKL/source/domains/vm/create_error_handler.rst | 2 -- source/elements/oneMKL/source/domains/vm/div.rst | 2 -- source/elements/oneMKL/source/domains/vm/erf.rst | 2 -- source/elements/oneMKL/source/domains/vm/erfc.rst | 2 -- source/elements/oneMKL/source/domains/vm/erfcinv.rst | 2 -- source/elements/oneMKL/source/domains/vm/erfinv.rst | 2 -- source/elements/oneMKL/source/domains/vm/exp.rst | 2 -- source/elements/oneMKL/source/domains/vm/exp10.rst | 2 -- source/elements/oneMKL/source/domains/vm/exp2.rst | 2 -- source/elements/oneMKL/source/domains/vm/expint1.rst | 2 -- source/elements/oneMKL/source/domains/vm/expm1.rst | 2 -- source/elements/oneMKL/source/domains/vm/fdim.rst | 2 -- source/elements/oneMKL/source/domains/vm/floor.rst | 2 -- source/elements/oneMKL/source/domains/vm/fmax.rst | 2 -- source/elements/oneMKL/source/domains/vm/fmin.rst | 2 -- source/elements/oneMKL/source/domains/vm/fmod.rst | 2 -- source/elements/oneMKL/source/domains/vm/frac.rst | 2 -- source/elements/oneMKL/source/domains/vm/get_mode.rst | 2 -- source/elements/oneMKL/source/domains/vm/get_status.rst | 2 -- source/elements/oneMKL/source/domains/vm/hypot.rst | 2 -- source/elements/oneMKL/source/domains/vm/inv.rst | 2 -- source/elements/oneMKL/source/domains/vm/invcbrt.rst | 2 -- source/elements/oneMKL/source/domains/vm/invsqrt.rst | 2 -- source/elements/oneMKL/source/domains/vm/lgamma.rst | 2 -- source/elements/oneMKL/source/domains/vm/linearfrac.rst | 2 -- source/elements/oneMKL/source/domains/vm/ln.rst | 2 -- source/elements/oneMKL/source/domains/vm/log10.rst | 2 -- source/elements/oneMKL/source/domains/vm/log1p.rst | 2 -- source/elements/oneMKL/source/domains/vm/log2.rst | 2 -- source/elements/oneMKL/source/domains/vm/logb.rst | 2 -- source/elements/oneMKL/source/domains/vm/maxmag.rst | 2 -- source/elements/oneMKL/source/domains/vm/minmag.rst | 2 -- source/elements/oneMKL/source/domains/vm/modf.rst | 2 -- source/elements/oneMKL/source/domains/vm/mul.rst | 2 -- source/elements/oneMKL/source/domains/vm/mulbyconj.rst | 2 -- source/elements/oneMKL/source/domains/vm/nearbyint.rst | 2 -- source/elements/oneMKL/source/domains/vm/nextafter.rst | 2 -- source/elements/oneMKL/source/domains/vm/pow.rst | 2 -- source/elements/oneMKL/source/domains/vm/pow2o3.rst | 2 -- source/elements/oneMKL/source/domains/vm/pow3o2.rst | 2 -- source/elements/oneMKL/source/domains/vm/powr.rst | 2 -- source/elements/oneMKL/source/domains/vm/powx.rst | 2 -- source/elements/oneMKL/source/domains/vm/remainder.rst | 2 -- source/elements/oneMKL/source/domains/vm/rint.rst | 2 -- source/elements/oneMKL/source/domains/vm/round.rst | 2 -- source/elements/oneMKL/source/domains/vm/set_status.rst | 2 -- source/elements/oneMKL/source/domains/vm/setmode.rst | 2 -- source/elements/oneMKL/source/domains/vm/sin.rst | 2 -- source/elements/oneMKL/source/domains/vm/sincos.rst | 2 -- source/elements/oneMKL/source/domains/vm/sind.rst | 2 -- source/elements/oneMKL/source/domains/vm/sinh.rst | 2 -- source/elements/oneMKL/source/domains/vm/sinpi.rst | 2 -- source/elements/oneMKL/source/domains/vm/sqr.rst | 2 -- source/elements/oneMKL/source/domains/vm/sqrt.rst | 2 -- source/elements/oneMKL/source/domains/vm/sub.rst | 2 -- source/elements/oneMKL/source/domains/vm/tan.rst | 2 -- source/elements/oneMKL/source/domains/vm/tand.rst | 2 -- source/elements/oneMKL/source/domains/vm/tanh.rst | 2 -- source/elements/oneMKL/source/domains/vm/tanpi.rst | 2 -- source/elements/oneMKL/source/domains/vm/tgamma.rst | 2 -- source/elements/oneMKL/source/domains/vm/trunc.rst | 2 -- 308 files changed, 26 insertions(+), 617 deletions(-) diff --git a/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst b/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst index 6575d4c28b..910fa2d16d 100644 --- a/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst @@ -135,8 +135,6 @@ asum (USM Version) -.. container:: - .. |image0| image:: ../equations/GUID-4F76F5A1-251F-4AC0-A2E0-A3B4B6F39ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/blas/asum.rst b/source/elements/oneMKL/source/domains/blas/asum.rst index 8e7f53092f..2b07e499d3 100644 --- a/source/elements/oneMKL/source/domains/blas/asum.rst +++ b/source/elements/oneMKL/source/domains/blas/asum.rst @@ -113,9 +113,6 @@ asum -.. container:: - - .. |image0| image:: ../equations/GUID-684BB993-83CA-4605-BD49-E493806C1ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst b/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst index d06fd83c5e..5f05548569 100644 --- a/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst @@ -152,5 +152,3 @@ axpy (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/axpy.rst b/source/elements/oneMKL/source/domains/blas/axpy.rst index 50f2ed9868..1d9b937a40 100644 --- a/source/elements/oneMKL/source/domains/blas/axpy.rst +++ b/source/elements/oneMKL/source/domains/blas/axpy.rst @@ -131,5 +131,3 @@ axpy -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst b/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst index 198a0dbe68..ce78720459 100644 --- a/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst @@ -133,5 +133,3 @@ copy (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/copy.rst b/source/elements/oneMKL/source/domains/blas/copy.rst index df47419aa4..cd49726db3 100644 --- a/source/elements/oneMKL/source/domains/blas/copy.rst +++ b/source/elements/oneMKL/source/domains/blas/copy.rst @@ -112,5 +112,3 @@ copy -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst index 859e3d3312..3f9522bae3 100644 --- a/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst @@ -150,8 +150,6 @@ dot (USM Version) -.. container:: - .. |image0| image:: ../equations/GUID-75532DED-BE44-4D85-B9C0-99C825778ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/blas/dot.rst b/source/elements/oneMKL/source/domains/blas/dot.rst index 7388eed8c5..af4881216e 100644 --- a/source/elements/oneMKL/source/domains/blas/dot.rst +++ b/source/elements/oneMKL/source/domains/blas/dot.rst @@ -128,8 +128,6 @@ dot -.. container:: - .. |image0| image:: ../equations/GUID-93DA36DC-40CA-4C01-B883-DABAB0D37ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst index 037aeadd17..c08b812ae8 100644 --- a/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst @@ -135,8 +135,6 @@ dotc (USM Version) -.. container:: - .. |image0| image:: ../equations/GUID-B2211D34-A472-4FB8-9CFB-1E11AF4F0ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/blas/dotc.rst b/source/elements/oneMKL/source/domains/blas/dotc.rst index 08e07d1d32..2478fbbe13 100644 --- a/source/elements/oneMKL/source/domains/blas/dotc.rst +++ b/source/elements/oneMKL/source/domains/blas/dotc.rst @@ -113,8 +113,6 @@ dotc -.. container:: - .. |image0| image:: ../equations/GUID-AED001B6-9056-491F-ACBE-E06C82D17ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst index 1f59c0aa90..8a5a200ad2 100644 --- a/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst @@ -134,8 +134,6 @@ dotu (USM Version) -.. container:: - .. |image0| image:: ../equations/GUID-42AF2BFE-F8F1-4F96-A4E0-05D4FB5A7ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/blas/dotu.rst b/source/elements/oneMKL/source/domains/blas/dotu.rst index 15cb71e7d5..0921493ac7 100644 --- a/source/elements/oneMKL/source/domains/blas/dotu.rst +++ b/source/elements/oneMKL/source/domains/blas/dotu.rst @@ -111,8 +111,6 @@ dotu -.. container:: - .. |image0| image:: ../equations/GUID-3605ACD9-02D1-46D7-B791-F2F76F0D9ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst index d53974633d..6e745f6be1 100644 --- a/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst @@ -204,5 +204,3 @@ gbmv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/gbmv.rst b/source/elements/oneMKL/source/domains/blas/gbmv.rst index 524d529721..1fa45aee44 100644 --- a/source/elements/oneMKL/source/domains/blas/gbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/gbmv.rst @@ -181,5 +181,3 @@ gbmv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst index f124c2cf79..5eb21234b5 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst @@ -231,5 +231,3 @@ gemm (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/gemm.rst b/source/elements/oneMKL/source/domains/blas/gemm.rst index 8e529b1e88..f6051b2c0b 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm.rst @@ -212,5 +212,3 @@ gemm -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/gemm_batch.rst b/source/elements/oneMKL/source/domains/blas/gemm_batch.rst index 11034ab68f..4883756dbb 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm_batch.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm_batch.rst @@ -426,8 +426,6 @@ gemm_batch -.. container:: - .. |image0| image:: ../equations/GUID-D797E8FA-B0CE-417C-98F1-896CDFB4Fee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/blas/gemm_ext.rst b/source/elements/oneMKL/source/domains/blas/gemm_ext.rst index a49fabe8d3..f3759d23bd 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm_ext.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm_ext.rst @@ -331,5 +331,3 @@ gemm_ext -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst index 4d9978ba2c..a60b47eb9c 100644 --- a/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst @@ -242,5 +242,3 @@ gemmt (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/gemmt.rst b/source/elements/oneMKL/source/domains/blas/gemmt.rst index cef34ce4ec..cc2d1d18a9 100644 --- a/source/elements/oneMKL/source/domains/blas/gemmt.rst +++ b/source/elements/oneMKL/source/domains/blas/gemmt.rst @@ -224,5 +224,3 @@ gemmt -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst index a5afbc8d31..d8171790c1 100644 --- a/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst @@ -191,5 +191,3 @@ gemv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/gemv.rst b/source/elements/oneMKL/source/domains/blas/gemv.rst index 1345bcdf03..629a7f402d 100644 --- a/source/elements/oneMKL/source/domains/blas/gemv.rst +++ b/source/elements/oneMKL/source/domains/blas/gemv.rst @@ -170,5 +170,3 @@ gemv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst b/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst index 513af99bce..b383e4841d 100644 --- a/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst @@ -172,5 +172,3 @@ ger (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/ger.rst b/source/elements/oneMKL/source/domains/blas/ger.rst index 1a122ce848..034b7863ba 100644 --- a/source/elements/oneMKL/source/domains/blas/ger.rst +++ b/source/elements/oneMKL/source/domains/blas/ger.rst @@ -150,5 +150,3 @@ ger -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst index ab90ebc6f0..aaf224a523 100644 --- a/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst @@ -173,5 +173,3 @@ gerc (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/gerc.rst b/source/elements/oneMKL/source/domains/blas/gerc.rst index 5a9c772ac9..0d08de74b4 100644 --- a/source/elements/oneMKL/source/domains/blas/gerc.rst +++ b/source/elements/oneMKL/source/domains/blas/gerc.rst @@ -150,5 +150,3 @@ gerc -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst b/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst index 7b5afbe8d0..7d294f6cf6 100644 --- a/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst @@ -174,5 +174,3 @@ geru (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/geru.rst b/source/elements/oneMKL/source/domains/blas/geru.rst index 121e2d13c0..85c0186c9f 100644 --- a/source/elements/oneMKL/source/domains/blas/geru.rst +++ b/source/elements/oneMKL/source/domains/blas/geru.rst @@ -150,5 +150,3 @@ geru -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst index cbf6ae5b5a..abb5653fdf 100644 --- a/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst @@ -183,5 +183,3 @@ hbmv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hbmv.rst b/source/elements/oneMKL/source/domains/blas/hbmv.rst index e23481a2a6..9cc93e15f0 100644 --- a/source/elements/oneMKL/source/domains/blas/hbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/hbmv.rst @@ -160,5 +160,3 @@ hbmv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst index 7ccb79979d..0b8e180208 100644 --- a/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst @@ -230,5 +230,3 @@ hemm (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hemm.rst b/source/elements/oneMKL/source/domains/blas/hemm.rst index bc597e2289..243513cead 100644 --- a/source/elements/oneMKL/source/domains/blas/hemm.rst +++ b/source/elements/oneMKL/source/domains/blas/hemm.rst @@ -210,5 +210,3 @@ hemm -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst index f7a109c377..ade547bc76 100644 --- a/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst @@ -177,5 +177,3 @@ hemv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hemv.rst b/source/elements/oneMKL/source/domains/blas/hemv.rst index 289cdc0a82..ad1b9a407c 100644 --- a/source/elements/oneMKL/source/domains/blas/hemv.rst +++ b/source/elements/oneMKL/source/domains/blas/hemv.rst @@ -154,5 +154,3 @@ hemv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/her-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her-usm-version.rst index f5ea9f99b3..0848b9ed88 100644 --- a/source/elements/oneMKL/source/domains/blas/her-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her-usm-version.rst @@ -166,5 +166,3 @@ her (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/her.rst b/source/elements/oneMKL/source/domains/blas/her.rst index 0a12bb4d2f..e9b068b3d6 100644 --- a/source/elements/oneMKL/source/domains/blas/her.rst +++ b/source/elements/oneMKL/source/domains/blas/her.rst @@ -144,5 +144,3 @@ her -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst index c0ae125f1f..ab91b499d0 100644 --- a/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst @@ -178,5 +178,3 @@ her2 (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/her2.rst b/source/elements/oneMKL/source/domains/blas/her2.rst index e90fec6b5b..1926f318e9 100644 --- a/source/elements/oneMKL/source/domains/blas/her2.rst +++ b/source/elements/oneMKL/source/domains/blas/her2.rst @@ -155,5 +155,3 @@ her2 -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst index 0bac929819..06afda812f 100644 --- a/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst @@ -219,5 +219,3 @@ her2k (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/her2k.rst b/source/elements/oneMKL/source/domains/blas/her2k.rst index 98e9cac4ff..13d9a0421d 100644 --- a/source/elements/oneMKL/source/domains/blas/her2k.rst +++ b/source/elements/oneMKL/source/domains/blas/her2k.rst @@ -194,5 +194,3 @@ her2k -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst b/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst index 601b115155..f75187eeda 100644 --- a/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst @@ -195,5 +195,3 @@ herk (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/herk.rst b/source/elements/oneMKL/source/domains/blas/herk.rst index 03b510a1fe..5589bf818c 100644 --- a/source/elements/oneMKL/source/domains/blas/herk.rst +++ b/source/elements/oneMKL/source/domains/blas/herk.rst @@ -171,5 +171,3 @@ herk -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst index b0b7fc62d2..bc505fd2d9 100644 --- a/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst @@ -177,5 +177,3 @@ hpmv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hpmv.rst b/source/elements/oneMKL/source/domains/blas/hpmv.rst index f71e4b3929..59a5e96128 100644 --- a/source/elements/oneMKL/source/domains/blas/hpmv.rst +++ b/source/elements/oneMKL/source/domains/blas/hpmv.rst @@ -153,5 +153,3 @@ hpmv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst index 30e45d274a..2afe216c72 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst @@ -167,5 +167,3 @@ hpr (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hpr.rst b/source/elements/oneMKL/source/domains/blas/hpr.rst index 2098b9b969..ca731e810b 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr.rst @@ -143,5 +143,3 @@ hpr -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst index 5952b188f1..d2f0cfda08 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst @@ -178,5 +178,3 @@ hpr2 (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/hpr2.rst b/source/elements/oneMKL/source/domains/blas/hpr2.rst index 4e8acff99d..0bb894b06e 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr2.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr2.rst @@ -159,5 +159,3 @@ hpr2 -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst b/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst index 20c5a2a1ff..b8e229054d 100644 --- a/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst @@ -149,5 +149,3 @@ iamax (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/iamax.rst b/source/elements/oneMKL/source/domains/blas/iamax.rst index 1678b7279f..d69216b2cd 100644 --- a/source/elements/oneMKL/source/domains/blas/iamax.rst +++ b/source/elements/oneMKL/source/domains/blas/iamax.rst @@ -128,5 +128,3 @@ iamax -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst b/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst index c71314123b..394dcc8eb6 100644 --- a/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst @@ -143,5 +143,3 @@ iamin (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/iamin.rst b/source/elements/oneMKL/source/domains/blas/iamin.rst index ca5ea696f6..710397680b 100644 --- a/source/elements/oneMKL/source/domains/blas/iamin.rst +++ b/source/elements/oneMKL/source/domains/blas/iamin.rst @@ -126,5 +126,3 @@ iamin -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst index 1df09c0afb..0aa31875b2 100644 --- a/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst @@ -138,5 +138,3 @@ nrm2 (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/nrm2.rst b/source/elements/oneMKL/source/domains/blas/nrm2.rst index dfbf2265c1..548798085c 100644 --- a/source/elements/oneMKL/source/domains/blas/nrm2.rst +++ b/source/elements/oneMKL/source/domains/blas/nrm2.rst @@ -117,5 +117,3 @@ nrm2 -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst index ce18cb96fe..2aa2788a77 100644 --- a/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst @@ -158,5 +158,3 @@ rot (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/rot.rst b/source/elements/oneMKL/source/domains/blas/rot.rst index 2dc20bdcec..116d1e8520 100644 --- a/source/elements/oneMKL/source/domains/blas/rot.rst +++ b/source/elements/oneMKL/source/domains/blas/rot.rst @@ -135,5 +135,3 @@ rot -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst index f154a0857e..9ff40f7260 100644 --- a/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst @@ -141,5 +141,3 @@ rotg (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/rotg.rst b/source/elements/oneMKL/source/domains/blas/rotg.rst index 3110a60a8a..edfc2dc9a8 100644 --- a/source/elements/oneMKL/source/domains/blas/rotg.rst +++ b/source/elements/oneMKL/source/domains/blas/rotg.rst @@ -121,5 +121,3 @@ rotg -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst index eadcd6a165..8595b00e21 100644 --- a/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst @@ -181,8 +181,6 @@ rotm (USM Version) -.. container:: - .. |image0| image:: ../equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee1.png .. |image1| image:: ../equations/GUID-67FC4AB3-40CB-441F-BA9F-88BAAC78Cee2.png diff --git a/source/elements/oneMKL/source/domains/blas/rotm.rst b/source/elements/oneMKL/source/domains/blas/rotm.rst index 893a828fea..39d495b581 100644 --- a/source/elements/oneMKL/source/domains/blas/rotm.rst +++ b/source/elements/oneMKL/source/domains/blas/rotm.rst @@ -159,8 +159,6 @@ rotm -.. container:: - .. |image0| image:: ../equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee1.png .. |image1| image:: ../equations/GUID-608D9BA6-827F-48DE-A01F-0EE5991F7ee2.png diff --git a/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst index 6541880c4b..2151c947ce 100644 --- a/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst @@ -174,8 +174,6 @@ rotmg (USM Version) -.. container:: - .. |image0| image:: ../equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee1.png .. |image1| image:: ../equations/GUID-DA21ECDC-F63E-4971-BA3F-492E69335ee2.png diff --git a/source/elements/oneMKL/source/domains/blas/rotmg.rst b/source/elements/oneMKL/source/domains/blas/rotmg.rst index 64d6543eab..e7ea336253 100644 --- a/source/elements/oneMKL/source/domains/blas/rotmg.rst +++ b/source/elements/oneMKL/source/domains/blas/rotmg.rst @@ -154,8 +154,6 @@ rotmg -.. container:: - .. |image0| image:: ../equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee1.png .. |image1| image:: ../equations/GUID-D6A2FFBB-116D-4A37-A278-47F163915ee2.png diff --git a/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst index 9aaf69379d..b8363c02d3 100644 --- a/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst @@ -183,5 +183,3 @@ sbmv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/sbmv.rst b/source/elements/oneMKL/source/domains/blas/sbmv.rst index b28b9b0274..a95f1faca9 100644 --- a/source/elements/oneMKL/source/domains/blas/sbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/sbmv.rst @@ -160,5 +160,3 @@ sbmv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst b/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst index f6e53db454..42a5e346a0 100644 --- a/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst @@ -142,5 +142,3 @@ scal (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/scal.rst b/source/elements/oneMKL/source/domains/blas/scal.rst index 97075eac60..d781466548 100644 --- a/source/elements/oneMKL/source/domains/blas/scal.rst +++ b/source/elements/oneMKL/source/domains/blas/scal.rst @@ -127,5 +127,3 @@ scal -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst index 28b3d9f0fa..22983457cb 100644 --- a/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst @@ -173,5 +173,3 @@ spmv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/spmv.rst b/source/elements/oneMKL/source/domains/blas/spmv.rst index 0b1690df5c..c190d161af 100644 --- a/source/elements/oneMKL/source/domains/blas/spmv.rst +++ b/source/elements/oneMKL/source/domains/blas/spmv.rst @@ -149,5 +149,3 @@ spmv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst index 4ab287f9d2..c6b3177334 100644 --- a/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst @@ -160,5 +160,3 @@ spr (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/spr.rst b/source/elements/oneMKL/source/domains/blas/spr.rst index afca2cfa86..35e1088017 100644 --- a/source/elements/oneMKL/source/domains/blas/spr.rst +++ b/source/elements/oneMKL/source/domains/blas/spr.rst @@ -141,5 +141,3 @@ spr -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst index 71c615c604..0d9824527b 100644 --- a/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst @@ -171,5 +171,3 @@ spr2 (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/spr2.rst b/source/elements/oneMKL/source/domains/blas/spr2.rst index 2cdefc4fee..65d2cd7db5 100644 --- a/source/elements/oneMKL/source/domains/blas/spr2.rst +++ b/source/elements/oneMKL/source/domains/blas/spr2.rst @@ -152,5 +152,3 @@ spr2 -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst b/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst index e29e5923ea..315331dc05 100644 --- a/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst @@ -144,5 +144,3 @@ swap (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/swap.rst b/source/elements/oneMKL/source/domains/blas/swap.rst index 3d45427796..64b65134f3 100644 --- a/source/elements/oneMKL/source/domains/blas/swap.rst +++ b/source/elements/oneMKL/source/domains/blas/swap.rst @@ -124,5 +124,3 @@ swap -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst index 00dbe613e8..10c59da023 100644 --- a/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst @@ -228,5 +228,3 @@ symm (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/symm.rst b/source/elements/oneMKL/source/domains/blas/symm.rst index c14d9d2bf5..c72cc9b443 100644 --- a/source/elements/oneMKL/source/domains/blas/symm.rst +++ b/source/elements/oneMKL/source/domains/blas/symm.rst @@ -202,5 +202,3 @@ symm -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst index 6b9e2cc492..0087f492aa 100644 --- a/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst @@ -173,5 +173,3 @@ symv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/symv.rst b/source/elements/oneMKL/source/domains/blas/symv.rst index 8d59ed90a7..62a2b6216c 100644 --- a/source/elements/oneMKL/source/domains/blas/symv.rst +++ b/source/elements/oneMKL/source/domains/blas/symv.rst @@ -150,5 +150,3 @@ symv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst index 5c1b7b7501..2ae68427ef 100644 --- a/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst @@ -164,5 +164,3 @@ syr (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/syr.rst b/source/elements/oneMKL/source/domains/blas/syr.rst index 408aa2772b..d92fdc769b 100644 --- a/source/elements/oneMKL/source/domains/blas/syr.rst +++ b/source/elements/oneMKL/source/domains/blas/syr.rst @@ -142,5 +142,3 @@ syr -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst index a58efb4042..21ac460323 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst @@ -176,5 +176,3 @@ syr2 (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/syr2.rst b/source/elements/oneMKL/source/domains/blas/syr2.rst index 74e52294de..5b0cbb6c78 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2.rst @@ -153,5 +153,3 @@ syr2 -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst index b5bf4f7ce4..c559a05d58 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst @@ -217,5 +217,3 @@ syr2k (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/syr2k.rst b/source/elements/oneMKL/source/domains/blas/syr2k.rst index 6334d02224..aa829540e3 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2k.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2k.rst @@ -192,5 +192,3 @@ syr2k -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst index 7473890d81..b4ae4e5d2f 100644 --- a/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst @@ -186,5 +186,3 @@ syrk (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/syrk.rst b/source/elements/oneMKL/source/domains/blas/syrk.rst index d097db2ddf..5089dfe21f 100644 --- a/source/elements/oneMKL/source/domains/blas/syrk.rst +++ b/source/elements/oneMKL/source/domains/blas/syrk.rst @@ -168,5 +168,3 @@ syrk -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst index 1d3ba77b1e..d63cca1ccf 100644 --- a/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst @@ -179,5 +179,3 @@ tbmv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/tbmv.rst b/source/elements/oneMKL/source/domains/blas/tbmv.rst index eb5f7acf03..f728cb6755 100644 --- a/source/elements/oneMKL/source/domains/blas/tbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/tbmv.rst @@ -156,5 +156,3 @@ tbmv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst index 493610a9e1..d3b34fe159 100644 --- a/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst @@ -181,5 +181,3 @@ tbsv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/tbsv.rst b/source/elements/oneMKL/source/domains/blas/tbsv.rst index 73aab67bdf..c7d2f0668c 100644 --- a/source/elements/oneMKL/source/domains/blas/tbsv.rst +++ b/source/elements/oneMKL/source/domains/blas/tbsv.rst @@ -158,5 +158,3 @@ tbsv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst index 2d01ab3837..ac59ed9e70 100644 --- a/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst @@ -169,5 +169,3 @@ tpmv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/tpmv.rst b/source/elements/oneMKL/source/domains/blas/tpmv.rst index f8bd2b136a..9bb620af6b 100644 --- a/source/elements/oneMKL/source/domains/blas/tpmv.rst +++ b/source/elements/oneMKL/source/domains/blas/tpmv.rst @@ -146,5 +146,3 @@ tpmv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst index 90cfb3c2f2..19b515e438 100644 --- a/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst @@ -172,5 +172,3 @@ tpsv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/tpsv.rst b/source/elements/oneMKL/source/domains/blas/tpsv.rst index 0ec419bd0c..dee6a78b69 100644 --- a/source/elements/oneMKL/source/domains/blas/tpsv.rst +++ b/source/elements/oneMKL/source/domains/blas/tpsv.rst @@ -149,5 +149,3 @@ tpsv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst index 44f06e9a3e..1b0854db67 100644 --- a/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst @@ -227,5 +227,3 @@ trmm (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/trmm.rst b/source/elements/oneMKL/source/domains/blas/trmm.rst index 2dbbc85b0f..ff63d5066c 100644 --- a/source/elements/oneMKL/source/domains/blas/trmm.rst +++ b/source/elements/oneMKL/source/domains/blas/trmm.rst @@ -204,5 +204,3 @@ trmm -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst index 75a8615735..d07e8d594a 100644 --- a/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst @@ -174,5 +174,3 @@ trmv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/trmv.rst b/source/elements/oneMKL/source/domains/blas/trmv.rst index 14476e1e84..1e63e29eac 100644 --- a/source/elements/oneMKL/source/domains/blas/trmv.rst +++ b/source/elements/oneMKL/source/domains/blas/trmv.rst @@ -151,5 +151,3 @@ trmv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst index 231b80d0cd..3ed370609e 100644 --- a/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst @@ -223,5 +223,3 @@ trsm (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/trsm.rst b/source/elements/oneMKL/source/domains/blas/trsm.rst index 958d231db6..0e75387d17 100644 --- a/source/elements/oneMKL/source/domains/blas/trsm.rst +++ b/source/elements/oneMKL/source/domains/blas/trsm.rst @@ -201,5 +201,3 @@ trsm -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/trsm_batch.rst b/source/elements/oneMKL/source/domains/blas/trsm_batch.rst index d43aedd5ad..bbdee69357 100644 --- a/source/elements/oneMKL/source/domains/blas/trsm_batch.rst +++ b/source/elements/oneMKL/source/domains/blas/trsm_batch.rst @@ -424,8 +424,6 @@ trsm_batch -.. container:: - .. |image0| image:: ../equations/GUID-D352DB8F-BC76-4A5E-A7CA-5B4CAAA90ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst index 43dec2458f..eda716a9a7 100644 --- a/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst @@ -176,5 +176,3 @@ trsv (USM Version) -.. container:: - diff --git a/source/elements/oneMKL/source/domains/blas/trsv.rst b/source/elements/oneMKL/source/domains/blas/trsv.rst index e1dba6e43c..00fd1d29e4 100644 --- a/source/elements/oneMKL/source/domains/blas/trsv.rst +++ b/source/elements/oneMKL/source/domains/blas/trsv.rst @@ -153,5 +153,3 @@ trsv -.. container:: - diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst index 0fe1dfb335..07b16e7ee8 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst @@ -156,5 +156,3 @@ onemkl::dft::Descriptor::commit Functions `__ - .. container:: - diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst index 841e540157..3024ffb6bc 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst @@ -182,5 +182,3 @@ onemkl::dft::Descriptor::computeBac Functions `__ - .. container:: - diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst index 0bbe26948a..2455bff8cb 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst @@ -181,5 +181,3 @@ onemkl::dft::Descriptor::computeFor Functions `__ - .. container:: - diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst index 47fa316e93..e46788e567 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst @@ -152,5 +152,4 @@ onemkl::dft::Descriptor::getValue Functions `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst index dd7b0de850..1983b8b631 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst @@ -163,5 +163,4 @@ onemkl::dft::Descriptor::Init Functions `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst index d08147ffe5..8322ba0b1f 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst @@ -174,5 +174,4 @@ onemkl::dft::Descriptor::setValue Functions `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst index 7f4178a808..98e0c16c01 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst @@ -74,5 +74,4 @@ onemkl::dft::Descriptor Functions `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/lapack/gebrd.rst b/source/elements/oneMKL/source/domains/lapack/gebrd.rst index 3bb2625d4c..d5b4b35673 100644 --- a/source/elements/oneMKL/source/domains/lapack/gebrd.rst +++ b/source/elements/oneMKL/source/domains/lapack/gebrd.rst @@ -227,8 +227,6 @@ gebrd Routines `__ -.. container:: - .. |image0| image:: ../equations/GUID-03C78F41-D16C-4BFE-B087-BE4F5A6A0ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst index dcb878ad87..9efd4a4e1b 100644 --- a/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst @@ -126,5 +126,3 @@ gebrd_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf.rst b/source/elements/oneMKL/source/domains/lapack/geqrf.rst index 02acd72e00..42d28f92b5 100644 --- a/source/elements/oneMKL/source/domains/lapack/geqrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/geqrf.rst @@ -161,5 +161,3 @@ geqrf Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst index 2a516e38a8..de06210046 100644 --- a/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst @@ -161,5 +161,3 @@ geqrf_batch Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst index 09e17d7341..5dadc8e1f1 100644 --- a/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst @@ -124,5 +124,3 @@ geqrf_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/gesvd.rst b/source/elements/oneMKL/source/domains/lapack/gesvd.rst index 1995b203c3..577848b0f1 100644 --- a/source/elements/oneMKL/source/domains/lapack/gesvd.rst +++ b/source/elements/oneMKL/source/domains/lapack/gesvd.rst @@ -303,5 +303,3 @@ gesvd Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst index 04fbc978fd..965f40a4a5 100644 --- a/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst @@ -181,5 +181,3 @@ gesvd_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/getrf.rst b/source/elements/oneMKL/source/domains/lapack/getrf.rst index 2f56b9e73c..b66e1af404 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrf.rst @@ -152,5 +152,3 @@ getrf Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst index 71b202b0a0..d5809903ce 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst @@ -159,8 +159,6 @@ getrf_batch Routines `__ -.. container:: - .. |image0| image:: ../equations/GUID-0F47CAD3-006C-4A78-B229-413313667ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/lapack/getri.rst b/source/elements/oneMKL/source/domains/lapack/getri.rst index 856d647ca8..1e244658e8 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri.rst @@ -163,5 +163,3 @@ getri Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/getri_batch.rst b/source/elements/oneMKL/source/domains/lapack/getri_batch.rst index 161545f9e1..cd52259945 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri_batch.rst @@ -147,5 +147,3 @@ getri_batch Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst index 20bf7c0f66..96504de0ef 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst @@ -122,5 +122,3 @@ getri_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/getrs.rst b/source/elements/oneMKL/source/domains/lapack/getrs.rst index 1612f98c31..8c8b9a1814 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrs.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrs.rst @@ -201,5 +201,3 @@ getrs Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst b/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst index 498878e392..dc1491c25a 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst @@ -185,5 +185,3 @@ getrs_batch Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/heevd.rst b/source/elements/oneMKL/source/domains/lapack/heevd.rst index c80dd62d47..321acfac3a 100644 --- a/source/elements/oneMKL/source/domains/lapack/heevd.rst +++ b/source/elements/oneMKL/source/domains/lapack/heevd.rst @@ -209,5 +209,3 @@ heevd Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst index 2eb236e602..fb77881215 100644 --- a/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst @@ -156,5 +156,3 @@ heevd_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/hegvd.rst b/source/elements/oneMKL/source/domains/lapack/hegvd.rst index b7d6e861ff..fac2651349 100644 --- a/source/elements/oneMKL/source/domains/lapack/hegvd.rst +++ b/source/elements/oneMKL/source/domains/lapack/hegvd.rst @@ -257,5 +257,3 @@ hegvd Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst index a5d7bf5a25..faefe69e96 100644 --- a/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst @@ -176,5 +176,3 @@ hegvd_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/hetrd.rst b/source/elements/oneMKL/source/domains/lapack/hetrd.rst index 4cce8f4d05..4cbbef1ae8 100644 --- a/source/elements/oneMKL/source/domains/lapack/hetrd.rst +++ b/source/elements/oneMKL/source/domains/lapack/hetrd.rst @@ -184,5 +184,3 @@ hetrd Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst index 70c11e7cb7..c253d151ce 100644 --- a/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst @@ -133,5 +133,3 @@ hetrd_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/orgbr.rst b/source/elements/oneMKL/source/domains/lapack/orgbr.rst index 6d5f4c11c0..cdb9e2c1cd 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgbr.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgbr.rst @@ -226,5 +226,3 @@ orgbr Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst index c51762949b..5b6602ebe0 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst @@ -154,5 +154,3 @@ orgbr_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr.rst b/source/elements/oneMKL/source/domains/lapack/orgqr.rst index c4e6caa02e..2dec6fa56d 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgqr.rst @@ -193,5 +193,3 @@ orgqr Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst b/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst index 55d5661508..bd79fbae55 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst @@ -241,5 +241,3 @@ orgqr_batch Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst index 196cc82fd6..cce468df84 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst @@ -125,5 +125,3 @@ orgqr_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/orgtr.rst b/source/elements/oneMKL/source/domains/lapack/orgtr.rst index e42b508883..2571692886 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgtr.rst @@ -153,5 +153,3 @@ orgtr Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst index 3742f764cb..33ba6ed8ce 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst @@ -126,5 +126,3 @@ orgtr_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/ormqr.rst b/source/elements/oneMKL/source/domains/lapack/ormqr.rst index d51ca7fb38..404d5ae5ff 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormqr.rst @@ -197,5 +197,3 @@ ormqr Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst index 56f7af7536..52b83e5f1d 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst @@ -151,5 +151,3 @@ ormqr_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/ormtr.rst b/source/elements/oneMKL/source/domains/lapack/ormtr.rst index 13c77c506e..588faaa354 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormtr.rst @@ -213,5 +213,3 @@ ormtr Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst index dddf5f0e29..4c883ea862 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst @@ -175,5 +175,3 @@ ormtr_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst b/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst index ff1fb865bd..0caadb363a 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst @@ -171,5 +171,3 @@ potrf (USM Version) Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/potrf.rst b/source/elements/oneMKL/source/domains/lapack/potrf.rst index b07256bdbf..29228d54c9 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf.rst @@ -185,5 +185,3 @@ potrf Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst index 420cb9b2ea..1e2cc739ec 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst @@ -181,5 +181,3 @@ potrf_batch Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/potri.rst b/source/elements/oneMKL/source/domains/lapack/potri.rst index c9b83b5af0..4d398b88c1 100644 --- a/source/elements/oneMKL/source/domains/lapack/potri.rst +++ b/source/elements/oneMKL/source/domains/lapack/potri.rst @@ -129,5 +129,3 @@ potri Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst b/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst index 0d05083020..f5f4e42f4e 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst @@ -180,5 +180,3 @@ potrs (USM Version) Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/potrs.rst b/source/elements/oneMKL/source/domains/lapack/potrs.rst index 54dc0ad903..ed63919292 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrs.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrs.rst @@ -171,5 +171,3 @@ potrs Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst b/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst index 00df8d6099..c7a86965e1 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst @@ -194,5 +194,3 @@ potrs_batch Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/syevd.rst b/source/elements/oneMKL/source/domains/lapack/syevd.rst index b508840104..31fd646d82 100644 --- a/source/elements/oneMKL/source/domains/lapack/syevd.rst +++ b/source/elements/oneMKL/source/domains/lapack/syevd.rst @@ -201,5 +201,3 @@ syevd Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst index 221145ecb0..77c0e8b2b2 100644 --- a/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst @@ -151,5 +151,3 @@ syevd_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/sygvd.rst b/source/elements/oneMKL/source/domains/lapack/sygvd.rst index 2ecd8d98e0..3810ee931e 100644 --- a/source/elements/oneMKL/source/domains/lapack/sygvd.rst +++ b/source/elements/oneMKL/source/domains/lapack/sygvd.rst @@ -258,5 +258,3 @@ sygvd Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst index b4cb48bf00..2832af57af 100644 --- a/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst @@ -166,5 +166,3 @@ sygvd_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/sytrd.rst b/source/elements/oneMKL/source/domains/lapack/sytrd.rst index 695284789e..237cb06544 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrd.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrd.rst @@ -182,5 +182,3 @@ sytrd Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst index 094fec86ad..67c8ced6d2 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst @@ -132,5 +132,3 @@ sytrd_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/sytrf.rst b/source/elements/oneMKL/source/domains/lapack/sytrf.rst index 29890ddb72..fb63e507f3 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrf.rst @@ -146,5 +146,3 @@ sytrf Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst index 432a53e13a..258dd11c21 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst @@ -136,5 +136,3 @@ sytrf_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/trtrs.rst b/source/elements/oneMKL/source/domains/lapack/trtrs.rst index c90648fba0..4d40276aba 100644 --- a/source/elements/oneMKL/source/domains/lapack/trtrs.rst +++ b/source/elements/oneMKL/source/domains/lapack/trtrs.rst @@ -183,5 +183,3 @@ trtrs Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/ungbr.rst b/source/elements/oneMKL/source/domains/lapack/ungbr.rst index 8a17462709..fb4c990d56 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungbr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungbr.rst @@ -228,5 +228,3 @@ ungbr Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst index f03eb70156..c797a7ebd2 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst @@ -154,5 +154,3 @@ ungbr_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/ungqr.rst b/source/elements/oneMKL/source/domains/lapack/ungqr.rst index 27f5e13ae6..4f4dabbc79 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungqr.rst @@ -193,5 +193,3 @@ ungqr Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst index 0aa50da23b..5309522462 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst @@ -125,5 +125,3 @@ ungqr_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/ungtr.rst b/source/elements/oneMKL/source/domains/lapack/ungtr.rst index 52586197b3..084794552a 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungtr.rst @@ -153,5 +153,3 @@ ungtr Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst index bafafd5050..608a5f49fa 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst @@ -126,5 +126,3 @@ ungtr_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/unmqr.rst b/source/elements/oneMKL/source/domains/lapack/unmqr.rst index b5155b24e9..35a10d434d 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmqr.rst @@ -200,5 +200,3 @@ unmqr Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst index d971367000..850f289290 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst @@ -149,5 +149,3 @@ unmqr_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/unmtr.rst b/source/elements/oneMKL/source/domains/lapack/unmtr.rst index 0ea8cf0e25..a374bda407 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmtr.rst @@ -220,5 +220,3 @@ unmtr Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst index 2f8abe9368..cd065489a1 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst @@ -163,5 +163,3 @@ unmtr_get_lwork Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/rng/bibliography.rst b/source/elements/oneMKL/source/domains/rng/bibliography.rst index 17116baed7..ef32b0dcc8 100644 --- a/source/elements/oneMKL/source/domains/rng/bibliography.rst +++ b/source/elements/oneMKL/source/domains/rng/bibliography.rst @@ -118,5 +118,3 @@ Bibliography http://software.intel.com/en-us/articles/intel-math-kernel-library-documentation/ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst b/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst index 7b967d1cd9..854c6a1e4d 100644 --- a/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst +++ b/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst @@ -95,8 +95,6 @@ Distributions Template Parameter onemkl::rng::method Values topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-50960934-BF9F-4070-BC8E-AE05FD9AFee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst index fa3e26c2a9..242c4214a2 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst @@ -94,5 +94,4 @@ onemkl::rng::ars5 Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst index d4fa77e6aa..3bc69589ef 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst @@ -120,8 +120,6 @@ onemkl::rng::bernoulli topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-7F65198B-719A-44FB-8983-BBD3C196A663-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst index 1c8dea06bd..eb5df250a5 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst @@ -118,8 +118,6 @@ onemkl::rng::beta topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-CD24FF51-197B-40A1-83A8-514788192ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst index ad52099bc9..074d1f33b3 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst @@ -116,8 +116,6 @@ onemkl::rng::binomial topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-D703292D-2A37-42C6-B713-E38B801F0114-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst index b56f98af44..7593ea2a95 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst @@ -82,5 +82,4 @@ onemkl::rng::bits topic:** `Distributions `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst index 4d6f5cd78f..549d44dacb 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst @@ -106,8 +106,6 @@ onemkl::rng::cauchy topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-04615D14-A026-4BF0-ACD6-0FC822FEC64E-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst index 5dda3c5888..65d8f336fe 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst @@ -99,8 +99,6 @@ onemkl::rng::chi_square topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-482EEED2-95DF-4AA3-A484-E2CC41F29ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst index 7e1d35855b..a075420f24 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst @@ -106,8 +106,6 @@ onemkl::rng::exponential topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-12315BD9-4F4D-42B0-A9B5-68A22D40756D-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst index c1db7e5e09..d1278cbcc4 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst @@ -106,5 +106,3 @@ onemkl::rng::gamma topic:** `Distributions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst index d702bd57b8..b7832e62d7 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst @@ -124,8 +124,6 @@ onemkl::rng::gaussian topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-281DBA27-691A-4B62-A255-FC33EA28D8D5-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst index f42ee8fd1e..3376a465b6 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst @@ -128,5 +128,4 @@ onemkl::rng::generate Routine `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst index bd128b03cb..23e807671d 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst @@ -106,8 +106,6 @@ onemkl::rng::geometric topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-2D60A1A4-9522-40FC-AEEA-B64EB795144C-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst index 776fb2a2eb..506c25ecb5 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst @@ -106,8 +106,6 @@ onemkl::rng::gumbel topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-09FC1496-B5B3-4DF6-A3EE-E6410BE1EFD2-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst index 68feb798fb..02db5f4113 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst @@ -122,8 +122,6 @@ onemkl::rng::hypergeometric topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-5159E8DD-25FF-473A-86AA-1E71FFCD018C-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst index 38c22f9fc2..5f91e747c7 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst @@ -110,8 +110,6 @@ onemkl::rng::laplace topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-1D36B5CE-3BF3-4762-926B-05C5527FAE45-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst index cb8b36d9d8..55df5a751d 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst @@ -139,8 +139,6 @@ onemkl::rng::leapfrog Routines `__ -.. container:: - .. |image0| image:: ../equations/GUID-D90F2CB0-58B4-42F5-A1F9-FD1EA859DD44-low.png diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst index e24c3ea060..8a5cfb7d8b 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst @@ -118,8 +118,6 @@ onemkl::rng::lognormal topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-4D962DF4-16F2-438B-8866-4F105DC41242-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst index f88a830e04..20b345a374 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst @@ -91,5 +91,4 @@ onemkl::rng::mcg31m1 Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst index d0bb31412b..cf55e12555 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst @@ -91,5 +91,4 @@ onemkl::rng::mcg59 Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst index 725408a045..a5c580aa91 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst @@ -91,5 +91,4 @@ onemkl::rng::mrg32k3a Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst index f21dd78b2d..e299366099 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst @@ -93,5 +93,4 @@ onemkl::rng::mt19937 Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst index 60f6a425ab..19e2c75117 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst @@ -102,5 +102,4 @@ onemkl::rng::mt2203 Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst index c351eee416..ca3d2e9c42 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst @@ -98,8 +98,6 @@ onemkl::rng::multinomial topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-749B9421-ABAF-41EA-B8B9-3C9941EF5B72-low.png :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst index 2cb61bb9bb..d80314b54f 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst @@ -113,8 +113,6 @@ onemkl::rng::negbinomial topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-A7CA23B7-756F-45C6-85B3-3A8924939D7D-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst index ea1dce9a72..c1fad538d6 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst @@ -96,5 +96,4 @@ onemkl::rng::niederreiter Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst index a8bf521f25..21445d2242 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst @@ -87,5 +87,4 @@ onemkl::rng::nondeterministic Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst index c766487cda..5edcb9f13b 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst @@ -92,5 +92,4 @@ onemkl::rng::philox4x32x10 Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst index 8e751cad2d..92b631d247 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst @@ -101,8 +101,6 @@ onemkl::rng::poisson topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-96C9ACB0-9A38-4682-85C6-4E71711C32C0-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst index 27b82e823c..86cfc35fa4 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst @@ -99,8 +99,6 @@ onemkl::rng::poisson_v topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-19F7C7EA-5657-4016-87A6-4E2721994C56-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst index 4a7ffa61e1..af60981f54 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst @@ -93,5 +93,4 @@ onemkl::rng::r250 Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst index 5ac65bb7d8..1abe44fdfe 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst @@ -111,8 +111,6 @@ onemkl::rng::rayleigh topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-96DF4ACE-8587-423F-B50A-E9A58BE272F9-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst index 1e0e898f1c..e4dc897332 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst @@ -96,5 +96,4 @@ onemkl::rng::sfmt19937 Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst index 47816a9cf4..c557c60aab 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst @@ -230,8 +230,6 @@ onemkl::rng::skip_ahead Routines `__ -.. container:: - .. |image0| image:: ../equations/GUID-061AF9F8-B166-4154-9BF1-4E2C99F1CE1F-low.png diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst index 4fcc585423..b765472526 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst @@ -97,5 +97,4 @@ onemkl::rng::sobol Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst index b5baeb1f3f..1ef6e79d7f 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst @@ -103,8 +103,6 @@ onemkl::rng::uniform (Continuous) topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-8AD223ED-624A-4390-9514-D8EF20BD04EE-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst index fa8591e087..5c9e3c547e 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst @@ -104,8 +104,6 @@ onemkl::rng::uniform (Discrete) topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-A5408434-7126-4EEC-8AD1-856204EBF263-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst index 8bb3c34f38..7e4610ef3e 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst @@ -72,5 +72,3 @@ onemkl::rng::uniform_bits topic:** `Distributions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst index 4e64a0dea4..bc24cb6f84 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst @@ -111,8 +111,6 @@ onemkl::rng::weibull topic:** `Distributions `__ -.. container:: - .. |image0| image:: ../equations/GUID-8F2DCE6A-CB54-4CEA-A5EB-937893A3DB34-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst index 56537837be..5f66bdc27d 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst @@ -96,5 +96,4 @@ onemkl::rng::wichmann_hill Generators) `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/spblas/exceptions.rst b/source/elements/oneMKL/source/domains/spblas/exceptions.rst index 983506491b..a828183d90 100644 --- a/source/elements/oneMKL/source/domains/spblas/exceptions.rst +++ b/source/elements/oneMKL/source/domains/spblas/exceptions.rst @@ -31,5 +31,3 @@ Exceptions -.. container:: - diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst index 9ae69e076f..2f87d10262 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst @@ -204,5 +204,4 @@ onemkl::sparse::gemm Routines `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst index 883f443da0..964b02d26c 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst @@ -227,5 +227,3 @@ onemkl::sparse::gemv Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst index 0fcf819e52..59d1a0c7b2 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst @@ -204,5 +204,4 @@ onemkl::sparse::gemvdot Routines `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst index 285a9485d7..d5c07d5409 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst @@ -132,5 +132,4 @@ onemkl::sparse::gemvOptimize Routines `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst index c4014ff49b..f212668960 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst @@ -158,5 +158,3 @@ onemkl::sparse::setCSRstructure Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst index 013eb3c645..b8a05c8c77 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst @@ -200,5 +200,4 @@ onemkl::sparse::symv Routines `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst index f5245f63ea..127154811d 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst @@ -231,5 +231,4 @@ onemkl::sparse::trmv Routines `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst index 613c174c63..3996fe4076 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst @@ -168,5 +168,4 @@ onemkl::sparse::trmvOptimize Routines `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst index 947a6a492d..c4f58cf066 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst @@ -219,5 +219,3 @@ onemkl::sparse::trsv Routines `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst index db5effce71..64b2cdf4b7 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst @@ -168,5 +168,4 @@ onemkl::sparse::trsvOptimize Routines `__ - .. container:: - + diff --git a/source/elements/oneMKL/source/domains/spblas/supported-types.rst b/source/elements/oneMKL/source/domains/spblas/supported-types.rst index 65201da573..da6bab2c8e 100644 --- a/source/elements/oneMKL/source/domains/spblas/supported-types.rst +++ b/source/elements/oneMKL/source/domains/spblas/supported-types.rst @@ -27,5 +27,3 @@ Supported Types -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/abs.rst b/source/elements/oneMKL/source/domains/vm/abs.rst index a9079bf891..23115ff73e 100644 --- a/source/elements/oneMKL/source/domains/vm/abs.rst +++ b/source/elements/oneMKL/source/domains/vm/abs.rst @@ -210,5 +210,3 @@ abs Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/acos.rst b/source/elements/oneMKL/source/domains/vm/acos.rst index a9554d8f94..cb876e89f0 100644 --- a/source/elements/oneMKL/source/domains/vm/acos.rst +++ b/source/elements/oneMKL/source/domains/vm/acos.rst @@ -303,5 +303,3 @@ acos Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/acosh.rst b/source/elements/oneMKL/source/domains/vm/acosh.rst index 4e1168c2a0..9e39358b82 100644 --- a/source/elements/oneMKL/source/domains/vm/acosh.rst +++ b/source/elements/oneMKL/source/domains/vm/acosh.rst @@ -295,8 +295,6 @@ acosh Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-6FB20CE7-1E2A-4340-995F-0E621DEF0E2D-low.jpg .. |image1| image:: ../equations/GUID-0C4BC54F-4C29-4577-80AA-BCBCD291582A-low.jpg diff --git a/source/elements/oneMKL/source/domains/vm/acospi.rst b/source/elements/oneMKL/source/domains/vm/acospi.rst index b25a8700f5..fa1c77a9e8 100644 --- a/source/elements/oneMKL/source/domains/vm/acospi.rst +++ b/source/elements/oneMKL/source/domains/vm/acospi.rst @@ -223,5 +223,3 @@ acospi Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/add.rst b/source/elements/oneMKL/source/domains/vm/add.rst index 21747487c9..74dc4c6704 100644 --- a/source/elements/oneMKL/source/domains/vm/add.rst +++ b/source/elements/oneMKL/source/domains/vm/add.rst @@ -263,5 +263,3 @@ add Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/arg.rst b/source/elements/oneMKL/source/domains/vm/arg.rst index 65f3917586..a39fac41ef 100644 --- a/source/elements/oneMKL/source/domains/vm/arg.rst +++ b/source/elements/oneMKL/source/domains/vm/arg.rst @@ -260,5 +260,3 @@ arg Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/asin.rst b/source/elements/oneMKL/source/domains/vm/asin.rst index 624a1a7e03..03f661af01 100644 --- a/source/elements/oneMKL/source/domains/vm/asin.rst +++ b/source/elements/oneMKL/source/domains/vm/asin.rst @@ -230,5 +230,3 @@ asin Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/asinh.rst b/source/elements/oneMKL/source/domains/vm/asinh.rst index bf7130c14d..4fa361f817 100644 --- a/source/elements/oneMKL/source/domains/vm/asinh.rst +++ b/source/elements/oneMKL/source/domains/vm/asinh.rst @@ -287,5 +287,3 @@ asinh Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/asinpi.rst b/source/elements/oneMKL/source/domains/vm/asinpi.rst index f41eb410b3..421ba21f2a 100644 --- a/source/elements/oneMKL/source/domains/vm/asinpi.rst +++ b/source/elements/oneMKL/source/domains/vm/asinpi.rst @@ -223,5 +223,3 @@ asinpi Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/atan.rst b/source/elements/oneMKL/source/domains/vm/atan.rst index add1714a2a..0452b9caca 100644 --- a/source/elements/oneMKL/source/domains/vm/atan.rst +++ b/source/elements/oneMKL/source/domains/vm/atan.rst @@ -210,5 +210,3 @@ atan Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/atan2.rst b/source/elements/oneMKL/source/domains/vm/atan2.rst index 050f3fdca3..f920c928d1 100644 --- a/source/elements/oneMKL/source/domains/vm/atan2.rst +++ b/source/elements/oneMKL/source/domains/vm/atan2.rst @@ -357,5 +357,3 @@ atan2 Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/atan2pi.rst b/source/elements/oneMKL/source/domains/vm/atan2pi.rst index 8b41b7c4a3..e55678a1be 100644 --- a/source/elements/oneMKL/source/domains/vm/atan2pi.rst +++ b/source/elements/oneMKL/source/domains/vm/atan2pi.rst @@ -360,5 +360,3 @@ atan2pi Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/atanh.rst b/source/elements/oneMKL/source/domains/vm/atanh.rst index 64fa1b14dc..bf3ca9a77c 100644 --- a/source/elements/oneMKL/source/domains/vm/atanh.rst +++ b/source/elements/oneMKL/source/domains/vm/atanh.rst @@ -304,5 +304,3 @@ atanh Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/atanpi.rst b/source/elements/oneMKL/source/domains/vm/atanpi.rst index c654e5aa57..ae7184de41 100644 --- a/source/elements/oneMKL/source/domains/vm/atanpi.rst +++ b/source/elements/oneMKL/source/domains/vm/atanpi.rst @@ -203,5 +203,3 @@ atanpi Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/bibliography.rst b/source/elements/oneMKL/source/domains/vm/bibliography.rst index 833021bb33..c841ead617 100644 --- a/source/elements/oneMKL/source/domains/vm/bibliography.rst +++ b/source/elements/oneMKL/source/domains/vm/bibliography.rst @@ -26,5 +26,3 @@ Bibliography ANSI/IEEE Std 754-2008. -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/cbrt.rst b/source/elements/oneMKL/source/domains/vm/cbrt.rst index 7dda6f6341..20ba9bc737 100644 --- a/source/elements/oneMKL/source/domains/vm/cbrt.rst +++ b/source/elements/oneMKL/source/domains/vm/cbrt.rst @@ -201,5 +201,3 @@ cbrt Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/cdfnorm.rst b/source/elements/oneMKL/source/domains/vm/cdfnorm.rst index 2d87dd5e8d..f4a5d3971f 100644 --- a/source/elements/oneMKL/source/domains/vm/cdfnorm.rst +++ b/source/elements/oneMKL/source/domains/vm/cdfnorm.rst @@ -272,8 +272,6 @@ cdfnorm Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-817D9F12-6BD9-4B74-BFA0-39A03D0660C3-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst b/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst index 804a8a2419..968bfbf676 100644 --- a/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst +++ b/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst @@ -292,8 +292,6 @@ cdfnorminv Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-A3054E0D-CFC1-44E8-89F7-B5A232903EE9-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/vm/ceil.rst b/source/elements/oneMKL/source/domains/vm/ceil.rst index 23335dfc08..242689ed64 100644 --- a/source/elements/oneMKL/source/domains/vm/ceil.rst +++ b/source/elements/oneMKL/source/domains/vm/ceil.rst @@ -207,8 +207,6 @@ ceil Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-A3089763-5ACF-46DB-AFFF-197043DD5932-low.gif diff --git a/source/elements/oneMKL/source/domains/vm/cis.rst b/source/elements/oneMKL/source/domains/vm/cis.rst index 4c1207ab7b..9aac8e9514 100644 --- a/source/elements/oneMKL/source/domains/vm/cis.rst +++ b/source/elements/oneMKL/source/domains/vm/cis.rst @@ -217,5 +217,3 @@ cis Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/clear_status.rst b/source/elements/oneMKL/source/domains/vm/clear_status.rst index c865af23ab..24f9029eda 100644 --- a/source/elements/oneMKL/source/domains/vm/clear_status.rst +++ b/source/elements/oneMKL/source/domains/vm/clear_status.rst @@ -113,5 +113,3 @@ clear_status Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/conj.rst b/source/elements/oneMKL/source/domains/vm/conj.rst index 02321ac35f..2f95eea0e0 100644 --- a/source/elements/oneMKL/source/domains/vm/conj.rst +++ b/source/elements/oneMKL/source/domains/vm/conj.rst @@ -172,5 +172,3 @@ conj Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/copysign.rst b/source/elements/oneMKL/source/domains/vm/copysign.rst index 59e5b87416..8d6d04d999 100644 --- a/source/elements/oneMKL/source/domains/vm/copysign.rst +++ b/source/elements/oneMKL/source/domains/vm/copysign.rst @@ -203,5 +203,3 @@ copysign Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/cos.rst b/source/elements/oneMKL/source/domains/vm/cos.rst index 52fb3fab71..fcff4ac46a 100644 --- a/source/elements/oneMKL/source/domains/vm/cos.rst +++ b/source/elements/oneMKL/source/domains/vm/cos.rst @@ -231,5 +231,3 @@ cos Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/cosd.rst b/source/elements/oneMKL/source/domains/vm/cosd.rst index 400fe83705..c44f1a59cb 100644 --- a/source/elements/oneMKL/source/domains/vm/cosd.rst +++ b/source/elements/oneMKL/source/domains/vm/cosd.rst @@ -226,5 +226,3 @@ cosd Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/cosh.rst b/source/elements/oneMKL/source/domains/vm/cosh.rst index 0c5d0d8e6e..04db789447 100644 --- a/source/elements/oneMKL/source/domains/vm/cosh.rst +++ b/source/elements/oneMKL/source/domains/vm/cosh.rst @@ -326,5 +326,3 @@ cosh Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/cospi.rst b/source/elements/oneMKL/source/domains/vm/cospi.rst index f5f7167250..e4db0198db 100644 --- a/source/elements/oneMKL/source/domains/vm/cospi.rst +++ b/source/elements/oneMKL/source/domains/vm/cospi.rst @@ -228,5 +228,3 @@ cospi Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/create_error_handler.rst b/source/elements/oneMKL/source/domains/vm/create_error_handler.rst index 4f3239da2e..2da3c25d0c 100644 --- a/source/elements/oneMKL/source/domains/vm/create_error_handler.rst +++ b/source/elements/oneMKL/source/domains/vm/create_error_handler.rst @@ -409,5 +409,3 @@ create_error_handler Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/div.rst b/source/elements/oneMKL/source/domains/vm/div.rst index c7a702bac2..8cfb22771b 100644 --- a/source/elements/oneMKL/source/domains/vm/div.rst +++ b/source/elements/oneMKL/source/domains/vm/div.rst @@ -268,5 +268,3 @@ div Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/erf.rst b/source/elements/oneMKL/source/domains/vm/erf.rst index ef9b972d94..66131c940c 100644 --- a/source/elements/oneMKL/source/domains/vm/erf.rst +++ b/source/elements/oneMKL/source/domains/vm/erf.rst @@ -263,8 +263,6 @@ erf Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-8742E2B1-94AF-4622-B964-181611E3D1F2-low.jpg :class: .eq diff --git a/source/elements/oneMKL/source/domains/vm/erfc.rst b/source/elements/oneMKL/source/domains/vm/erfc.rst index 04982899c5..6968386358 100644 --- a/source/elements/oneMKL/source/domains/vm/erfc.rst +++ b/source/elements/oneMKL/source/domains/vm/erfc.rst @@ -281,8 +281,6 @@ erfc Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-FB387120-1A86-45B9-BE20-97247EF0ABB5-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/vm/erfcinv.rst b/source/elements/oneMKL/source/domains/vm/erfcinv.rst index e78b8124ec..6fd091a9a4 100644 --- a/source/elements/oneMKL/source/domains/vm/erfcinv.rst +++ b/source/elements/oneMKL/source/domains/vm/erfcinv.rst @@ -294,8 +294,6 @@ erfcinv Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-9BCB2B87-3DED-4764-A182-30A4FAA4A2E2-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/vm/erfinv.rst b/source/elements/oneMKL/source/domains/vm/erfinv.rst index 4a1b623869..ba07cda48a 100644 --- a/source/elements/oneMKL/source/domains/vm/erfinv.rst +++ b/source/elements/oneMKL/source/domains/vm/erfinv.rst @@ -296,8 +296,6 @@ erfinv Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-4835D5B4-6232-45CD-9A49-0264F8B0DBF4-low.gif :class: .eq diff --git a/source/elements/oneMKL/source/domains/vm/exp.rst b/source/elements/oneMKL/source/domains/vm/exp.rst index 3d74e03145..aa8184ec97 100644 --- a/source/elements/oneMKL/source/domains/vm/exp.rst +++ b/source/elements/oneMKL/source/domains/vm/exp.rst @@ -320,5 +320,3 @@ exp Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/exp10.rst b/source/elements/oneMKL/source/domains/vm/exp10.rst index 57dabd2252..f91ba1adeb 100644 --- a/source/elements/oneMKL/source/domains/vm/exp10.rst +++ b/source/elements/oneMKL/source/domains/vm/exp10.rst @@ -235,5 +235,3 @@ exp10 Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/exp2.rst b/source/elements/oneMKL/source/domains/vm/exp2.rst index e0e3e23b62..52f3f4c805 100644 --- a/source/elements/oneMKL/source/domains/vm/exp2.rst +++ b/source/elements/oneMKL/source/domains/vm/exp2.rst @@ -234,5 +234,3 @@ exp2 Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/expint1.rst b/source/elements/oneMKL/source/domains/vm/expint1.rst index 1bc5b503cd..706a0f98d0 100644 --- a/source/elements/oneMKL/source/domains/vm/expint1.rst +++ b/source/elements/oneMKL/source/domains/vm/expint1.rst @@ -226,8 +226,6 @@ expint1 Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-B229F6A5-0619-4F06-994B-8A734C356ee1.png :class: img-middle diff --git a/source/elements/oneMKL/source/domains/vm/expm1.rst b/source/elements/oneMKL/source/domains/vm/expm1.rst index 3d98368c85..2a6999367e 100644 --- a/source/elements/oneMKL/source/domains/vm/expm1.rst +++ b/source/elements/oneMKL/source/domains/vm/expm1.rst @@ -232,5 +232,3 @@ expm1 Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/fdim.rst b/source/elements/oneMKL/source/domains/vm/fdim.rst index efe7c91a04..f9c2f6d314 100644 --- a/source/elements/oneMKL/source/domains/vm/fdim.rst +++ b/source/elements/oneMKL/source/domains/vm/fdim.rst @@ -212,5 +212,3 @@ fdim Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/floor.rst b/source/elements/oneMKL/source/domains/vm/floor.rst index 0559fa97e3..4df92420db 100644 --- a/source/elements/oneMKL/source/domains/vm/floor.rst +++ b/source/elements/oneMKL/source/domains/vm/floor.rst @@ -207,8 +207,6 @@ floor Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-41F8B94B-EEFA-4308-925A-D2DF486FBF8B-low.gif diff --git a/source/elements/oneMKL/source/domains/vm/fmax.rst b/source/elements/oneMKL/source/domains/vm/fmax.rst index a4ec596258..edd398d8ff 100644 --- a/source/elements/oneMKL/source/domains/vm/fmax.rst +++ b/source/elements/oneMKL/source/domains/vm/fmax.rst @@ -208,5 +208,3 @@ fmax Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/fmin.rst b/source/elements/oneMKL/source/domains/vm/fmin.rst index 934f1f7abf..b9d418baf9 100644 --- a/source/elements/oneMKL/source/domains/vm/fmin.rst +++ b/source/elements/oneMKL/source/domains/vm/fmin.rst @@ -208,5 +208,3 @@ fmin Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/fmod.rst b/source/elements/oneMKL/source/domains/vm/fmod.rst index bf34185004..fdebdbaa2f 100644 --- a/source/elements/oneMKL/source/domains/vm/fmod.rst +++ b/source/elements/oneMKL/source/domains/vm/fmod.rst @@ -239,5 +239,3 @@ fmod Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/frac.rst b/source/elements/oneMKL/source/domains/vm/frac.rst index 30f392fbb1..10ed665a8d 100644 --- a/source/elements/oneMKL/source/domains/vm/frac.rst +++ b/source/elements/oneMKL/source/domains/vm/frac.rst @@ -206,8 +206,6 @@ frac Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-A43FDBB0-21D0-4087-AAD9-4289019DD4C3-low.gif diff --git a/source/elements/oneMKL/source/domains/vm/get_mode.rst b/source/elements/oneMKL/source/domains/vm/get_mode.rst index bb8c6d627b..b116e60e29 100644 --- a/source/elements/oneMKL/source/domains/vm/get_mode.rst +++ b/source/elements/oneMKL/source/domains/vm/get_mode.rst @@ -112,5 +112,3 @@ get_mode Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/get_status.rst b/source/elements/oneMKL/source/domains/vm/get_status.rst index 6dc1857dc9..a78b13f0c2 100644 --- a/source/elements/oneMKL/source/domains/vm/get_status.rst +++ b/source/elements/oneMKL/source/domains/vm/get_status.rst @@ -123,5 +123,3 @@ get_status Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/hypot.rst b/source/elements/oneMKL/source/domains/vm/hypot.rst index 08eb87d2e5..2c2302b7ed 100644 --- a/source/elements/oneMKL/source/domains/vm/hypot.rst +++ b/source/elements/oneMKL/source/domains/vm/hypot.rst @@ -241,5 +241,3 @@ hypot Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/inv.rst b/source/elements/oneMKL/source/domains/vm/inv.rst index d1009a1c15..d007c06408 100644 --- a/source/elements/oneMKL/source/domains/vm/inv.rst +++ b/source/elements/oneMKL/source/domains/vm/inv.rst @@ -213,5 +213,3 @@ inv Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/invcbrt.rst b/source/elements/oneMKL/source/domains/vm/invcbrt.rst index d12dbdb035..c4ea4e5908 100644 --- a/source/elements/oneMKL/source/domains/vm/invcbrt.rst +++ b/source/elements/oneMKL/source/domains/vm/invcbrt.rst @@ -213,5 +213,3 @@ invcbrt Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/invsqrt.rst b/source/elements/oneMKL/source/domains/vm/invsqrt.rst index e3a8664103..dd9e56e795 100644 --- a/source/elements/oneMKL/source/domains/vm/invsqrt.rst +++ b/source/elements/oneMKL/source/domains/vm/invsqrt.rst @@ -216,5 +216,3 @@ invsqrt Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/lgamma.rst b/source/elements/oneMKL/source/domains/vm/lgamma.rst index e6699af01f..3376107cbf 100644 --- a/source/elements/oneMKL/source/domains/vm/lgamma.rst +++ b/source/elements/oneMKL/source/domains/vm/lgamma.rst @@ -230,5 +230,3 @@ lgamma Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/linearfrac.rst b/source/elements/oneMKL/source/domains/vm/linearfrac.rst index c6b035b4ed..f100335f3f 100644 --- a/source/elements/oneMKL/source/domains/vm/linearfrac.rst +++ b/source/elements/oneMKL/source/domains/vm/linearfrac.rst @@ -284,5 +284,3 @@ linearfrac Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/ln.rst b/source/elements/oneMKL/source/domains/vm/ln.rst index b14b5cca07..3adca28d3d 100644 --- a/source/elements/oneMKL/source/domains/vm/ln.rst +++ b/source/elements/oneMKL/source/domains/vm/ln.rst @@ -294,8 +294,6 @@ ln Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-6FB20CE7-1E2A-4340-995F-0E621DEF0E2D-low.jpg .. |image1| image:: ../equations/GUID-0C4BC54F-4C29-4577-80AA-BCBCD291582A-low.jpg diff --git a/source/elements/oneMKL/source/domains/vm/log10.rst b/source/elements/oneMKL/source/domains/vm/log10.rst index b7a32cd8df..aa24529abf 100644 --- a/source/elements/oneMKL/source/domains/vm/log10.rst +++ b/source/elements/oneMKL/source/domains/vm/log10.rst @@ -295,8 +295,6 @@ log10 Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-2293B947-42D6-4E5F-BBB3-9DC135AA724A-low.gif .. |image1| image:: ../equations/GUID-7AE86F5B-8BE2-42D5-B6C7-AF9FF41CCE11-low.jpg diff --git a/source/elements/oneMKL/source/domains/vm/log1p.rst b/source/elements/oneMKL/source/domains/vm/log1p.rst index 04a9ad5484..df294ffd5c 100644 --- a/source/elements/oneMKL/source/domains/vm/log1p.rst +++ b/source/elements/oneMKL/source/domains/vm/log1p.rst @@ -220,5 +220,3 @@ log1p Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/log2.rst b/source/elements/oneMKL/source/domains/vm/log2.rst index 2f3228bb5f..06303e8ffb 100644 --- a/source/elements/oneMKL/source/domains/vm/log2.rst +++ b/source/elements/oneMKL/source/domains/vm/log2.rst @@ -219,5 +219,3 @@ log2 Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/logb.rst b/source/elements/oneMKL/source/domains/vm/logb.rst index b8a21ed83d..914ded715d 100644 --- a/source/elements/oneMKL/source/domains/vm/logb.rst +++ b/source/elements/oneMKL/source/domains/vm/logb.rst @@ -216,5 +216,3 @@ logb Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/maxmag.rst b/source/elements/oneMKL/source/domains/vm/maxmag.rst index 286a101dbf..586324cb32 100644 --- a/source/elements/oneMKL/source/domains/vm/maxmag.rst +++ b/source/elements/oneMKL/source/domains/vm/maxmag.rst @@ -218,5 +218,3 @@ maxmag Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/minmag.rst b/source/elements/oneMKL/source/domains/vm/minmag.rst index 21daa7b033..ff8155a4bc 100644 --- a/source/elements/oneMKL/source/domains/vm/minmag.rst +++ b/source/elements/oneMKL/source/domains/vm/minmag.rst @@ -218,5 +218,3 @@ minmag Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/modf.rst b/source/elements/oneMKL/source/domains/vm/modf.rst index 015ab8a6b2..fa4bdb2c2a 100644 --- a/source/elements/oneMKL/source/domains/vm/modf.rst +++ b/source/elements/oneMKL/source/domains/vm/modf.rst @@ -226,8 +226,6 @@ modf Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-38C12345-5E6E-4D94-8072-460502CB52EC-low.gif diff --git a/source/elements/oneMKL/source/domains/vm/mul.rst b/source/elements/oneMKL/source/domains/vm/mul.rst index 452d95f020..0a254f5626 100644 --- a/source/elements/oneMKL/source/domains/vm/mul.rst +++ b/source/elements/oneMKL/source/domains/vm/mul.rst @@ -303,5 +303,3 @@ mul Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/mulbyconj.rst b/source/elements/oneMKL/source/domains/vm/mulbyconj.rst index 67c6f8c11a..22310234f9 100644 --- a/source/elements/oneMKL/source/domains/vm/mulbyconj.rst +++ b/source/elements/oneMKL/source/domains/vm/mulbyconj.rst @@ -178,5 +178,3 @@ mulbyconj Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/nearbyint.rst b/source/elements/oneMKL/source/domains/vm/nearbyint.rst index 5d71df6f7e..b3dc44e679 100644 --- a/source/elements/oneMKL/source/domains/vm/nearbyint.rst +++ b/source/elements/oneMKL/source/domains/vm/nearbyint.rst @@ -203,5 +203,3 @@ nearbyint Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/nextafter.rst b/source/elements/oneMKL/source/domains/vm/nextafter.rst index 260b0dc3f3..72ccce1262 100644 --- a/source/elements/oneMKL/source/domains/vm/nextafter.rst +++ b/source/elements/oneMKL/source/domains/vm/nextafter.rst @@ -215,5 +215,3 @@ nextafter Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/pow.rst b/source/elements/oneMKL/source/domains/vm/pow.rst index 3a84033d03..a079aeff6d 100644 --- a/source/elements/oneMKL/source/domains/vm/pow.rst +++ b/source/elements/oneMKL/source/domains/vm/pow.rst @@ -474,5 +474,3 @@ pow Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/pow2o3.rst b/source/elements/oneMKL/source/domains/vm/pow2o3.rst index 37e6d84a86..fbf7f4458e 100644 --- a/source/elements/oneMKL/source/domains/vm/pow2o3.rst +++ b/source/elements/oneMKL/source/domains/vm/pow2o3.rst @@ -213,5 +213,3 @@ pow2o3 Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/pow3o2.rst b/source/elements/oneMKL/source/domains/vm/pow3o2.rst index 68148da00d..316f3e1f94 100644 --- a/source/elements/oneMKL/source/domains/vm/pow3o2.rst +++ b/source/elements/oneMKL/source/domains/vm/pow3o2.rst @@ -232,5 +232,3 @@ pow3o2 Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/powr.rst b/source/elements/oneMKL/source/domains/vm/powr.rst index 695ff90150..55eb576d3d 100644 --- a/source/elements/oneMKL/source/domains/vm/powr.rst +++ b/source/elements/oneMKL/source/domains/vm/powr.rst @@ -310,5 +310,3 @@ powr Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/powx.rst b/source/elements/oneMKL/source/domains/vm/powx.rst index 87583313d4..410ad0185f 100644 --- a/source/elements/oneMKL/source/domains/vm/powx.rst +++ b/source/elements/oneMKL/source/domains/vm/powx.rst @@ -205,5 +205,3 @@ powx Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/remainder.rst b/source/elements/oneMKL/source/domains/vm/remainder.rst index 8d99e9840e..2d8e7ca958 100644 --- a/source/elements/oneMKL/source/domains/vm/remainder.rst +++ b/source/elements/oneMKL/source/domains/vm/remainder.rst @@ -240,5 +240,3 @@ remainder Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/rint.rst b/source/elements/oneMKL/source/domains/vm/rint.rst index 287642cd9f..16440b9e59 100644 --- a/source/elements/oneMKL/source/domains/vm/rint.rst +++ b/source/elements/oneMKL/source/domains/vm/rint.rst @@ -221,5 +221,3 @@ rint Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/round.rst b/source/elements/oneMKL/source/domains/vm/round.rst index 904037a3fd..af924605f0 100644 --- a/source/elements/oneMKL/source/domains/vm/round.rst +++ b/source/elements/oneMKL/source/domains/vm/round.rst @@ -205,5 +205,3 @@ round Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/set_status.rst b/source/elements/oneMKL/source/domains/vm/set_status.rst index c0d60968eb..537d3128fe 100644 --- a/source/elements/oneMKL/source/domains/vm/set_status.rst +++ b/source/elements/oneMKL/source/domains/vm/set_status.rst @@ -129,5 +129,3 @@ set_status Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/setmode.rst b/source/elements/oneMKL/source/domains/vm/setmode.rst index 57d138ecbd..b1151cefb8 100644 --- a/source/elements/oneMKL/source/domains/vm/setmode.rst +++ b/source/elements/oneMKL/source/domains/vm/setmode.rst @@ -139,5 +139,3 @@ setmode Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/sin.rst b/source/elements/oneMKL/source/domains/vm/sin.rst index f4c0bde6a3..d63e14023c 100644 --- a/source/elements/oneMKL/source/domains/vm/sin.rst +++ b/source/elements/oneMKL/source/domains/vm/sin.rst @@ -231,5 +231,3 @@ sin Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/sincos.rst b/source/elements/oneMKL/source/domains/vm/sincos.rst index 974a527bec..7a7e8f32bb 100644 --- a/source/elements/oneMKL/source/domains/vm/sincos.rst +++ b/source/elements/oneMKL/source/domains/vm/sincos.rst @@ -239,5 +239,3 @@ sincos Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/sind.rst b/source/elements/oneMKL/source/domains/vm/sind.rst index 34b97b2d62..2dc6ce565a 100644 --- a/source/elements/oneMKL/source/domains/vm/sind.rst +++ b/source/elements/oneMKL/source/domains/vm/sind.rst @@ -226,5 +226,3 @@ sind Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/sinh.rst b/source/elements/oneMKL/source/domains/vm/sinh.rst index 56a6ed356e..f422ec1af9 100644 --- a/source/elements/oneMKL/source/domains/vm/sinh.rst +++ b/source/elements/oneMKL/source/domains/vm/sinh.rst @@ -326,5 +326,3 @@ sinh Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/sinpi.rst b/source/elements/oneMKL/source/domains/vm/sinpi.rst index 4dd9c086e1..f5bac436e2 100644 --- a/source/elements/oneMKL/source/domains/vm/sinpi.rst +++ b/source/elements/oneMKL/source/domains/vm/sinpi.rst @@ -231,5 +231,3 @@ sinpi Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/sqr.rst b/source/elements/oneMKL/source/domains/vm/sqr.rst index e008f0ce88..813718631e 100644 --- a/source/elements/oneMKL/source/domains/vm/sqr.rst +++ b/source/elements/oneMKL/source/domains/vm/sqr.rst @@ -201,5 +201,3 @@ sqr Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/sqrt.rst b/source/elements/oneMKL/source/domains/vm/sqrt.rst index af9b50d900..d520cf0eb8 100644 --- a/source/elements/oneMKL/source/domains/vm/sqrt.rst +++ b/source/elements/oneMKL/source/domains/vm/sqrt.rst @@ -297,5 +297,3 @@ sqrt Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/sub.rst b/source/elements/oneMKL/source/domains/vm/sub.rst index d587707e75..7cc96586d5 100644 --- a/source/elements/oneMKL/source/domains/vm/sub.rst +++ b/source/elements/oneMKL/source/domains/vm/sub.rst @@ -263,5 +263,3 @@ sub Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/tan.rst b/source/elements/oneMKL/source/domains/vm/tan.rst index ede8e01f8b..f0e7680baa 100644 --- a/source/elements/oneMKL/source/domains/vm/tan.rst +++ b/source/elements/oneMKL/source/domains/vm/tan.rst @@ -231,5 +231,3 @@ tan Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/tand.rst b/source/elements/oneMKL/source/domains/vm/tand.rst index e8f04262ba..1d24c74512 100644 --- a/source/elements/oneMKL/source/domains/vm/tand.rst +++ b/source/elements/oneMKL/source/domains/vm/tand.rst @@ -226,5 +226,3 @@ tand Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/tanh.rst b/source/elements/oneMKL/source/domains/vm/tanh.rst index b31bfd678b..6739300176 100644 --- a/source/elements/oneMKL/source/domains/vm/tanh.rst +++ b/source/elements/oneMKL/source/domains/vm/tanh.rst @@ -286,5 +286,3 @@ tanh Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/tanpi.rst b/source/elements/oneMKL/source/domains/vm/tanpi.rst index 508191a9df..b71df94760 100644 --- a/source/elements/oneMKL/source/domains/vm/tanpi.rst +++ b/source/elements/oneMKL/source/domains/vm/tanpi.rst @@ -242,5 +242,3 @@ tanpi Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/tgamma.rst b/source/elements/oneMKL/source/domains/vm/tgamma.rst index 3f6dde99ec..a1db4f65fb 100644 --- a/source/elements/oneMKL/source/domains/vm/tgamma.rst +++ b/source/elements/oneMKL/source/domains/vm/tgamma.rst @@ -223,5 +223,3 @@ tgamma Functions `__ -.. container:: - diff --git a/source/elements/oneMKL/source/domains/vm/trunc.rst b/source/elements/oneMKL/source/domains/vm/trunc.rst index 53ad858ff4..e0ded5e890 100644 --- a/source/elements/oneMKL/source/domains/vm/trunc.rst +++ b/source/elements/oneMKL/source/domains/vm/trunc.rst @@ -207,8 +207,6 @@ trunc Functions `__ -.. container:: - .. |image0| image:: ../equations/GUID-CA113DF0-DE46-42A1-99AF-93F6F76E72EA-low.gif From a94f95701f9af33365134cc3f728a5f5f1c3ca85 Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Fri, 27 Mar 2020 18:34:20 -0400 Subject: [PATCH 30/31] warnings: delete duplicate names (#106) Co-authored-by: Robert Cohn --- scripts/cleanup-mkl.py | 20 +++++++++++++++++++ .../source/domains/blas/asum-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/asum.rst | 4 ---- .../source/domains/blas/axpy-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/axpy.rst | 4 ---- .../source/domains/blas/copy-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/copy.rst | 4 ---- .../source/domains/blas/dot-usm-version.rst | 5 ----- .../oneMKL/source/domains/blas/dot.rst | 5 ----- .../source/domains/blas/dotc-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/dotc.rst | 4 ---- .../source/domains/blas/dotu-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/dotu.rst | 4 ---- .../source/domains/blas/gbmv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/gbmv.rst | 4 ---- .../source/domains/blas/gemm-usm-version.rst | 5 ----- .../oneMKL/source/domains/blas/gemm.rst | 5 ----- .../oneMKL/source/domains/blas/gemm_batch.rst | 7 ------- .../oneMKL/source/domains/blas/gemm_ext.rst | 5 ----- .../source/domains/blas/gemmt-usm-version.rst | 5 ----- .../oneMKL/source/domains/blas/gemmt.rst | 5 ----- .../source/domains/blas/gemv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/gemv.rst | 4 ---- .../source/domains/blas/ger-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/ger.rst | 4 ---- .../source/domains/blas/gerc-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/gerc.rst | 4 ---- .../source/domains/blas/geru-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/geru.rst | 4 ---- .../source/domains/blas/hbmv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/hbmv.rst | 4 ---- .../source/domains/blas/hemm-usm-version.rst | 5 ----- .../oneMKL/source/domains/blas/hemm.rst | 5 ----- .../source/domains/blas/hemv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/hemv.rst | 4 ---- .../source/domains/blas/her-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/her.rst | 4 ---- .../source/domains/blas/her2-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/her2.rst | 4 ---- .../source/domains/blas/her2k-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/her2k.rst | 4 ---- .../source/domains/blas/herk-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/herk.rst | 4 ---- .../source/domains/blas/hpmv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/hpmv.rst | 4 ---- .../source/domains/blas/hpr-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/hpr.rst | 4 ---- .../source/domains/blas/hpr2-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/hpr2.rst | 4 ---- .../source/domains/blas/iamax-usm-version.rst | 5 ----- .../oneMKL/source/domains/blas/iamax.rst | 5 ----- .../source/domains/blas/iamin-usm-version.rst | 5 ----- .../oneMKL/source/domains/blas/iamin.rst | 5 ----- .../source/domains/blas/nrm2-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/nrm2.rst | 4 ---- .../source/domains/blas/rot-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/rot.rst | 4 ---- .../source/domains/blas/rotg-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/rotg.rst | 4 ---- .../source/domains/blas/rotm-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/rotm.rst | 4 ---- .../source/domains/blas/rotmg-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/rotmg.rst | 4 ---- .../source/domains/blas/sbmv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/sbmv.rst | 4 ---- .../source/domains/blas/scal-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/scal.rst | 4 ---- .../domains/blas/sdsdot-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/sdsdot.rst | 4 ---- .../source/domains/blas/spmv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/spmv.rst | 4 ---- .../source/domains/blas/spr-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/spr.rst | 4 ---- .../source/domains/blas/spr2-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/spr2.rst | 4 ---- .../source/domains/blas/swap-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/swap.rst | 4 ---- .../source/domains/blas/symm-usm-version.rst | 5 ----- .../oneMKL/source/domains/blas/symm.rst | 5 ----- .../source/domains/blas/symv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/symv.rst | 4 ---- .../source/domains/blas/syr-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/syr.rst | 4 ---- .../source/domains/blas/syr2-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/syr2.rst | 4 ---- .../source/domains/blas/syr2k-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/syr2k.rst | 4 ---- .../source/domains/blas/syrk-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/syrk.rst | 4 ---- .../source/domains/blas/tbmv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/tbmv.rst | 4 ---- .../source/domains/blas/tbsv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/tbsv.rst | 4 ---- .../source/domains/blas/tpmv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/tpmv.rst | 4 ---- .../source/domains/blas/tpsv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/tpsv.rst | 4 ---- .../source/domains/blas/trmm-usm-version.rst | 5 ----- .../oneMKL/source/domains/blas/trmm.rst | 5 ----- .../source/domains/blas/trmv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/trmv.rst | 4 ---- .../source/domains/blas/trsm-usm-version.rst | 5 ----- .../oneMKL/source/domains/blas/trsm.rst | 5 ----- .../oneMKL/source/domains/blas/trsm_batch.rst | 7 ------- .../source/domains/blas/trsv-usm-version.rst | 4 ---- .../oneMKL/source/domains/blas/trsv.rst | 4 ---- ...kl-dft-precision-mkl-dft-domain-commit.rst | 6 ------ ...domain-computebackward-typename-iotype.rst | 5 ----- ...-domain-computeforward-typename-iotype.rst | 5 ----- ...-dft-precision-mkl-dft-domain-getvalue.rst | 6 ------ ...-mkl-dft-precision-mkl-dft-domain-init.rst | 6 ------ ...-dft-precision-mkl-dft-domain-setvalue.rst | 6 ------ ...iptor-mkl-dft-precision-mkl-dft-domain.rst | 3 --- .../oneMKL/source/domains/lapack/gebrd.rst | 5 ----- .../source/domains/lapack/gebrd_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/geqrf.rst | 5 ----- .../source/domains/lapack/geqrf_batch.rst | 5 ----- .../source/domains/lapack/geqrf_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/gesvd.rst | 5 ----- .../source/domains/lapack/gesvd_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/getrf.rst | 5 ----- .../source/domains/lapack/getrf_batch.rst | 5 ----- .../oneMKL/source/domains/lapack/getri.rst | 5 ----- .../source/domains/lapack/getri_batch.rst | 5 ----- .../source/domains/lapack/getri_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/getrs.rst | 5 ----- .../source/domains/lapack/getrs_batch.rst | 5 ----- .../oneMKL/source/domains/lapack/heevd.rst | 5 ----- .../source/domains/lapack/heevd_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/hegvd.rst | 5 ----- .../source/domains/lapack/hegvd_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/hetrd.rst | 5 ----- .../source/domains/lapack/hetrd_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/lapack.rst | 1 - .../oneMKL/source/domains/lapack/orgbr.rst | 5 ----- .../source/domains/lapack/orgbr_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/orgqr.rst | 5 ----- .../source/domains/lapack/orgqr_batch.rst | 5 ----- .../source/domains/lapack/orgqr_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/orgtr.rst | 5 ----- .../source/domains/lapack/orgtr_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/ormqr.rst | 5 ----- .../source/domains/lapack/ormqr_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/ormtr.rst | 5 ----- .../source/domains/lapack/ormtr_get_lwork.rst | 5 ----- .../domains/lapack/potrf-usm-version.rst | 4 ---- .../oneMKL/source/domains/lapack/potrf.rst | 5 ----- .../source/domains/lapack/potrf_batch.rst | 5 ----- .../oneMKL/source/domains/lapack/potri.rst | 5 ----- .../domains/lapack/potrs-usm-version.rst | 4 ---- .../oneMKL/source/domains/lapack/potrs.rst | 5 ----- .../source/domains/lapack/potrs_batch.rst | 5 ----- .../oneMKL/source/domains/lapack/syevd.rst | 5 ----- .../source/domains/lapack/syevd_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/sygvd.rst | 5 ----- .../source/domains/lapack/sygvd_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/sytrd.rst | 5 ----- .../source/domains/lapack/sytrd_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/sytrf.rst | 5 ----- .../source/domains/lapack/sytrf_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/trtrs.rst | 5 ----- .../oneMKL/source/domains/lapack/ungbr.rst | 5 ----- .../source/domains/lapack/ungbr_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/ungqr.rst | 5 ----- .../source/domains/lapack/ungqr_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/ungtr.rst | 5 ----- .../source/domains/lapack/ungtr_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/unmqr.rst | 5 ----- .../source/domains/lapack/unmqr_get_lwork.rst | 5 ----- .../oneMKL/source/domains/lapack/unmtr.rst | 5 ----- .../source/domains/lapack/unmtr_get_lwork.rst | 5 ----- ...mplate-parameter-mkl-rng-method-values.rst | 1 - .../source/domains/rng/mkl-rng-ars5.rst | 4 ---- .../source/domains/rng/mkl-rng-bernoulli.rst | 4 ---- .../source/domains/rng/mkl-rng-beta.rst | 4 ---- .../source/domains/rng/mkl-rng-binomial.rst | 4 ---- .../source/domains/rng/mkl-rng-bits.rst | 4 ---- .../source/domains/rng/mkl-rng-cauchy.rst | 4 ---- .../source/domains/rng/mkl-rng-chi_square.rst | 4 ---- .../domains/rng/mkl-rng-exponential.rst | 4 ---- .../source/domains/rng/mkl-rng-gamma.rst | 4 ---- .../source/domains/rng/mkl-rng-gaussian.rst | 4 ---- .../source/domains/rng/mkl-rng-generate.rst | 4 ---- .../source/domains/rng/mkl-rng-geometric.rst | 4 ---- .../source/domains/rng/mkl-rng-gumbel.rst | 4 ---- .../domains/rng/mkl-rng-hypergeometric.rst | 4 ---- .../source/domains/rng/mkl-rng-laplace.rst | 4 ---- .../source/domains/rng/mkl-rng-leapfrog.rst | 4 ---- .../source/domains/rng/mkl-rng-lognormal.rst | 4 ---- .../source/domains/rng/mkl-rng-mcg31m1.rst | 4 ---- .../source/domains/rng/mkl-rng-mcg59.rst | 4 ---- .../source/domains/rng/mkl-rng-mrg32k3a.rst | 4 ---- .../source/domains/rng/mkl-rng-mt19937.rst | 4 ---- .../source/domains/rng/mkl-rng-mt2203.rst | 4 ---- .../domains/rng/mkl-rng-multinomial.rst | 4 ---- .../domains/rng/mkl-rng-negbinomial.rst | 4 ---- .../domains/rng/mkl-rng-niederreiter.rst | 4 ---- .../domains/rng/mkl-rng-nondeterministic.rst | 4 ---- .../domains/rng/mkl-rng-philox4x32x10.rst | 4 ---- .../source/domains/rng/mkl-rng-poisson.rst | 4 ---- .../source/domains/rng/mkl-rng-poisson_v.rst | 4 ---- .../source/domains/rng/mkl-rng-r250.rst | 4 ---- .../source/domains/rng/mkl-rng-rayleigh.rst | 4 ---- .../source/domains/rng/mkl-rng-sfmt19937.rst | 4 ---- .../source/domains/rng/mkl-rng-skip_ahead.rst | 4 ---- .../source/domains/rng/mkl-rng-sobol.rst | 4 ---- .../rng/mkl-rng-uniform-continuous.rst | 4 ---- .../domains/rng/mkl-rng-uniform-discrete.rst | 4 ---- .../domains/rng/mkl-rng-uniform_bits.rst | 4 ---- .../source/domains/rng/mkl-rng-weibull.rst | 4 ---- .../domains/rng/mkl-rng-wichmann_hill.rst | 4 ---- .../domains/rng/onemkl-rng-usage-model.rst | 1 - .../source/domains/spblas/mkl-sparse-gemm.rst | 9 --------- .../source/domains/spblas/mkl-sparse-gemv.rst | 10 ---------- .../domains/spblas/mkl-sparse-gemvdot.rst | 9 --------- .../spblas/mkl-sparse-gemvoptimize.rst | 8 -------- .../domains/spblas/mkl-sparse-matrixinit.rst | 4 ---- .../spblas/mkl-sparse-setcsrstructure.rst | 7 ------- .../source/domains/spblas/mkl-sparse-symv.rst | 9 --------- .../source/domains/spblas/mkl-sparse-trmv.rst | 9 --------- .../spblas/mkl-sparse-trmvoptimize.rst | 8 -------- .../source/domains/spblas/mkl-sparse-trsv.rst | 9 --------- .../spblas/mkl-sparse-trsvoptimize.rst | 8 -------- .../elements/oneMKL/source/domains/vm/abs.rst | 5 ----- .../oneMKL/source/domains/vm/acos.rst | 5 ----- .../oneMKL/source/domains/vm/acosh.rst | 5 ----- .../oneMKL/source/domains/vm/acospi.rst | 5 ----- .../elements/oneMKL/source/domains/vm/add.rst | 5 ----- .../elements/oneMKL/source/domains/vm/arg.rst | 6 ------ .../oneMKL/source/domains/vm/asin.rst | 5 ----- .../oneMKL/source/domains/vm/asinh.rst | 5 ----- .../oneMKL/source/domains/vm/asinpi.rst | 5 ----- .../oneMKL/source/domains/vm/atan.rst | 5 ----- .../oneMKL/source/domains/vm/atan2.rst | 5 ----- .../oneMKL/source/domains/vm/atan2pi.rst | 5 ----- .../oneMKL/source/domains/vm/atanh.rst | 5 ----- .../oneMKL/source/domains/vm/atanpi.rst | 5 ----- .../oneMKL/source/domains/vm/cbrt.rst | 5 ----- .../oneMKL/source/domains/vm/cdfnorm.rst | 5 ----- .../oneMKL/source/domains/vm/cdfnorminv.rst | 5 ----- .../oneMKL/source/domains/vm/ceil.rst | 5 ----- .../elements/oneMKL/source/domains/vm/cis.rst | 5 ----- .../oneMKL/source/domains/vm/clear_status.rst | 5 ----- .../oneMKL/source/domains/vm/conj.rst | 5 ----- .../oneMKL/source/domains/vm/copysign.rst | 5 ----- .../elements/oneMKL/source/domains/vm/cos.rst | 5 ----- .../oneMKL/source/domains/vm/cosd.rst | 5 ----- .../oneMKL/source/domains/vm/cosh.rst | 5 ----- .../oneMKL/source/domains/vm/cospi.rst | 5 ----- .../domains/vm/create_error_handler.rst | 5 ----- .../elements/oneMKL/source/domains/vm/div.rst | 5 ----- .../elements/oneMKL/source/domains/vm/erf.rst | 5 ----- .../oneMKL/source/domains/vm/erfc.rst | 5 ----- .../oneMKL/source/domains/vm/erfcinv.rst | 5 ----- .../oneMKL/source/domains/vm/erfinv.rst | 5 ----- .../elements/oneMKL/source/domains/vm/exp.rst | 5 ----- .../oneMKL/source/domains/vm/exp10.rst | 5 ----- .../oneMKL/source/domains/vm/exp2.rst | 5 ----- .../oneMKL/source/domains/vm/expint1.rst | 5 ----- .../oneMKL/source/domains/vm/expm1.rst | 5 ----- .../oneMKL/source/domains/vm/fdim.rst | 5 ----- .../oneMKL/source/domains/vm/floor.rst | 5 ----- .../oneMKL/source/domains/vm/fmax.rst | 5 ----- .../oneMKL/source/domains/vm/fmin.rst | 5 ----- .../oneMKL/source/domains/vm/fmod.rst | 5 ----- .../oneMKL/source/domains/vm/frac.rst | 5 ----- .../oneMKL/source/domains/vm/get_mode.rst | 5 ----- .../oneMKL/source/domains/vm/get_status.rst | 5 ----- .../oneMKL/source/domains/vm/hypot.rst | 5 ----- .../elements/oneMKL/source/domains/vm/inv.rst | 5 ----- .../oneMKL/source/domains/vm/invcbrt.rst | 5 ----- .../oneMKL/source/domains/vm/invsqrt.rst | 5 ----- .../oneMKL/source/domains/vm/lgamma.rst | 5 ----- .../oneMKL/source/domains/vm/linearfrac.rst | 5 ----- .../elements/oneMKL/source/domains/vm/ln.rst | 5 ----- .../oneMKL/source/domains/vm/log10.rst | 5 ----- .../oneMKL/source/domains/vm/log1p.rst | 5 ----- .../oneMKL/source/domains/vm/log2.rst | 5 ----- .../oneMKL/source/domains/vm/logb.rst | 5 ----- .../oneMKL/source/domains/vm/maxmag.rst | 5 ----- .../oneMKL/source/domains/vm/minmag.rst | 5 ----- .../oneMKL/source/domains/vm/modf.rst | 5 ----- .../elements/oneMKL/source/domains/vm/mul.rst | 5 ----- .../oneMKL/source/domains/vm/mulbyconj.rst | 4 ---- .../oneMKL/source/domains/vm/nearbyint.rst | 5 ----- .../oneMKL/source/domains/vm/nextafter.rst | 5 ----- .../elements/oneMKL/source/domains/vm/pow.rst | 5 ----- .../oneMKL/source/domains/vm/pow2o3.rst | 5 ----- .../oneMKL/source/domains/vm/pow3o2.rst | 5 ----- .../oneMKL/source/domains/vm/powr.rst | 5 ----- .../oneMKL/source/domains/vm/powx.rst | 5 ----- .../oneMKL/source/domains/vm/remainder.rst | 5 ----- .../oneMKL/source/domains/vm/rint.rst | 5 ----- .../oneMKL/source/domains/vm/round.rst | 5 ----- .../oneMKL/source/domains/vm/set_status.rst | 5 ----- .../oneMKL/source/domains/vm/setmode.rst | 5 ----- .../elements/oneMKL/source/domains/vm/sin.rst | 5 ----- .../oneMKL/source/domains/vm/sincos.rst | 5 ----- .../oneMKL/source/domains/vm/sind.rst | 5 ----- .../oneMKL/source/domains/vm/sinh.rst | 5 ----- .../oneMKL/source/domains/vm/sinpi.rst | 5 ----- .../elements/oneMKL/source/domains/vm/sqr.rst | 5 ----- .../oneMKL/source/domains/vm/sqrt.rst | 5 ----- .../elements/oneMKL/source/domains/vm/sub.rst | 5 ----- .../elements/oneMKL/source/domains/vm/tan.rst | 5 ----- .../oneMKL/source/domains/vm/tand.rst | 5 ----- .../oneMKL/source/domains/vm/tanh.rst | 5 ----- .../oneMKL/source/domains/vm/tanpi.rst | 5 ----- .../oneMKL/source/domains/vm/tgamma.rst | 5 ----- .../oneMKL/source/domains/vm/trunc.rst | 5 ----- 310 files changed, 20 insertions(+), 1449 deletions(-) create mode 100644 scripts/cleanup-mkl.py diff --git a/scripts/cleanup-mkl.py b/scripts/cleanup-mkl.py new file mode 100644 index 0000000000..064195fead --- /dev/null +++ b/scripts/cleanup-mkl.py @@ -0,0 +1,20 @@ +from os import walk +from os.path import join +import re + +r = re.compile(r'\W+:name: (include-files|note|note-1|note-2|note-3|syntax|description|input-parameters|output-parameters|example)') + +for root, dirs, files in walk("."): + for file in files: + if not file.endswith(".rst"): + continue + p = join(root, file) + print(p) + in_lines = open(p).readlines() + with open(p, 'w') as fout: + for line in in_lines: + if r.match(line): + print('omitting:', line) + else: + fout.write(line) + diff --git a/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst b/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst index 910fa2d16d..8b18e8083a 100644 --- a/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst @@ -15,7 +15,6 @@ asum (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ asum (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -69,7 +67,6 @@ asum (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -103,7 +100,6 @@ asum (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/asum.rst b/source/elements/oneMKL/source/domains/blas/asum.rst index 2b07e499d3..df4026db57 100644 --- a/source/elements/oneMKL/source/domains/blas/asum.rst +++ b/source/elements/oneMKL/source/domains/blas/asum.rst @@ -15,7 +15,6 @@ asum .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ asum .. rubric:: Description - :name: description :class: sectiontitle @@ -66,7 +64,6 @@ asum .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -94,7 +91,6 @@ asum .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst b/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst index 5f05548569..b3486f140f 100644 --- a/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst @@ -15,7 +15,6 @@ axpy (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ axpy (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -72,7 +70,6 @@ axpy (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -122,7 +119,6 @@ axpy (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/axpy.rst b/source/elements/oneMKL/source/domains/blas/axpy.rst index 1d9b937a40..b780041761 100644 --- a/source/elements/oneMKL/source/domains/blas/axpy.rst +++ b/source/elements/oneMKL/source/domains/blas/axpy.rst @@ -15,7 +15,6 @@ axpy .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ axpy .. rubric:: Description - :name: description :class: sectiontitle @@ -69,7 +67,6 @@ axpy .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -112,7 +109,6 @@ axpy .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst b/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst index ce78720459..b8e3b5b3e0 100644 --- a/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst @@ -15,7 +15,6 @@ copy (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ copy (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -65,7 +63,6 @@ copy (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -103,7 +100,6 @@ copy (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/copy.rst b/source/elements/oneMKL/source/domains/blas/copy.rst index cd49726db3..d8ae88fac1 100644 --- a/source/elements/oneMKL/source/domains/blas/copy.rst +++ b/source/elements/oneMKL/source/domains/blas/copy.rst @@ -15,7 +15,6 @@ copy .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ copy .. rubric:: Description - :name: description :class: sectiontitle @@ -62,7 +60,6 @@ copy .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -94,7 +91,6 @@ copy .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst index 3f9522bae3..55b07ed95f 100644 --- a/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst @@ -15,7 +15,6 @@ dot (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ dot (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -61,7 +59,6 @@ dot (USM Version) .. rubric:: Note - :name: note :class: NoteTipHead @@ -74,7 +71,6 @@ dot (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -120,7 +116,6 @@ dot (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/dot.rst b/source/elements/oneMKL/source/domains/blas/dot.rst index af4881216e..934df2c56d 100644 --- a/source/elements/oneMKL/source/domains/blas/dot.rst +++ b/source/elements/oneMKL/source/domains/blas/dot.rst @@ -15,7 +15,6 @@ dot .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ dot .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +56,6 @@ dot .. rubric:: Note - :name: note :class: NoteTipHead @@ -71,7 +68,6 @@ dot .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -110,7 +106,6 @@ dot .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst index c08b812ae8..96fb4e5f74 100644 --- a/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst @@ -16,7 +16,6 @@ dotc (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ dotc (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +57,6 @@ dotc (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -105,7 +102,6 @@ dotc (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/dotc.rst b/source/elements/oneMKL/source/domains/blas/dotc.rst index 2478fbbe13..86d2162942 100644 --- a/source/elements/oneMKL/source/domains/blas/dotc.rst +++ b/source/elements/oneMKL/source/domains/blas/dotc.rst @@ -16,7 +16,6 @@ dotc .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ dotc .. rubric:: Description - :name: description :class: sectiontitle @@ -56,7 +54,6 @@ dotc .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -95,7 +92,6 @@ dotc .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst index 8a5a200ad2..a80f2aa916 100644 --- a/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst @@ -15,7 +15,6 @@ dotu (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ dotu (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +56,6 @@ dotu (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -104,7 +101,6 @@ dotu (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/dotu.rst b/source/elements/oneMKL/source/domains/blas/dotu.rst index 0921493ac7..98b699d3ba 100644 --- a/source/elements/oneMKL/source/domains/blas/dotu.rst +++ b/source/elements/oneMKL/source/domains/blas/dotu.rst @@ -15,7 +15,6 @@ dotu .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ dotu .. rubric:: Description - :name: description :class: sectiontitle @@ -54,7 +52,6 @@ dotu .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -93,7 +90,6 @@ dotu .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst index 6e745f6be1..366ca8e135 100644 --- a/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst @@ -15,7 +15,6 @@ gbmv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ gbmv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -81,7 +79,6 @@ gbmv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -174,7 +171,6 @@ gbmv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gbmv.rst b/source/elements/oneMKL/source/domains/blas/gbmv.rst index 1fa45aee44..c0333202a1 100644 --- a/source/elements/oneMKL/source/domains/blas/gbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/gbmv.rst @@ -15,7 +15,6 @@ gbmv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ gbmv .. rubric:: Description - :name: description :class: sectiontitle @@ -78,7 +76,6 @@ gbmv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -163,7 +160,6 @@ gbmv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst index 5eb21234b5..03ae8d30fa 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst @@ -15,7 +15,6 @@ gemm (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ gemm (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -86,7 +84,6 @@ gemm (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -187,7 +184,6 @@ gemm (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -201,7 +197,6 @@ gemm (USM Version) .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemm.rst b/source/elements/oneMKL/source/domains/blas/gemm.rst index f6051b2c0b..24f81ae6d6 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm.rst @@ -15,7 +15,6 @@ gemm .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ gemm .. rubric:: Description - :name: description :class: sectiontitle @@ -84,7 +82,6 @@ gemm .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -180,7 +177,6 @@ gemm .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -194,7 +190,6 @@ gemm .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemm_batch.rst b/source/elements/oneMKL/source/domains/blas/gemm_batch.rst index 4883756dbb..22681128d4 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm_batch.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm_batch.rst @@ -15,7 +15,6 @@ gemm_batch .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ gemm_batch .. rubric:: Description - :name: description :class: sectiontitle @@ -125,7 +123,6 @@ gemm_batch .. rubric:: Input Parameters - Group API - :name: input-parameters---group-api :class: sectiontitle @@ -272,7 +269,6 @@ gemm_batch .. rubric:: Output Parameters - Group API - :name: output-parameters---group-api :class: sectiontitle @@ -286,7 +282,6 @@ gemm_batch .. rubric:: Input Parameters - Strided API - :name: input-parameters---strided-api :class: sectiontitle @@ -394,7 +389,6 @@ gemm_batch .. rubric:: Output Parameters - Strided API - :name: output-parameters---strided-api :class: sectiontitle @@ -408,7 +402,6 @@ gemm_batch .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemm_ext.rst b/source/elements/oneMKL/source/domains/blas/gemm_ext.rst index f3759d23bd..7fe950d313 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm_ext.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm_ext.rst @@ -15,7 +15,6 @@ gemm_ext .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -96,7 +95,6 @@ gemm_ext .. rubric:: Description - :name: description :class: sectiontitle @@ -154,7 +152,6 @@ gemm_ext .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -297,7 +294,6 @@ gemm_ext .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -313,7 +309,6 @@ gemm_ext .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst index a60b47eb9c..a80f5d376f 100644 --- a/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst @@ -16,7 +16,6 @@ gemmt (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ gemmt (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -83,7 +81,6 @@ gemmt (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -198,7 +195,6 @@ gemmt (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -212,7 +208,6 @@ gemmt (USM Version) .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemmt.rst b/source/elements/oneMKL/source/domains/blas/gemmt.rst index cc2d1d18a9..580f177155 100644 --- a/source/elements/oneMKL/source/domains/blas/gemmt.rst +++ b/source/elements/oneMKL/source/domains/blas/gemmt.rst @@ -16,7 +16,6 @@ gemmt .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ gemmt .. rubric:: Description - :name: description :class: sectiontitle @@ -82,7 +80,6 @@ gemmt .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -192,7 +189,6 @@ gemmt .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -206,7 +202,6 @@ gemmt .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst index d8171790c1..dedf1b6113 100644 --- a/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst @@ -15,7 +15,6 @@ gemv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ gemv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -77,7 +75,6 @@ gemv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -161,7 +158,6 @@ gemv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemv.rst b/source/elements/oneMKL/source/domains/blas/gemv.rst index 629a7f402d..89b8296942 100644 --- a/source/elements/oneMKL/source/domains/blas/gemv.rst +++ b/source/elements/oneMKL/source/domains/blas/gemv.rst @@ -15,7 +15,6 @@ gemv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ gemv .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ gemv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -151,7 +148,6 @@ gemv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst b/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst index b383e4841d..18fd01a79c 100644 --- a/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst @@ -15,7 +15,6 @@ ger (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ ger (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -76,7 +74,6 @@ ger (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -142,7 +139,6 @@ ger (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/ger.rst b/source/elements/oneMKL/source/domains/blas/ger.rst index 034b7863ba..32abeabdb7 100644 --- a/source/elements/oneMKL/source/domains/blas/ger.rst +++ b/source/elements/oneMKL/source/domains/blas/ger.rst @@ -15,7 +15,6 @@ ger .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ ger .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +71,6 @@ ger .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -132,7 +129,6 @@ ger .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst index aaf224a523..2f5e6a436a 100644 --- a/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst @@ -15,7 +15,6 @@ gerc (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ gerc (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -76,7 +74,6 @@ gerc (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -143,7 +140,6 @@ gerc (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gerc.rst b/source/elements/oneMKL/source/domains/blas/gerc.rst index 0d08de74b4..b782f783fb 100644 --- a/source/elements/oneMKL/source/domains/blas/gerc.rst +++ b/source/elements/oneMKL/source/domains/blas/gerc.rst @@ -15,7 +15,6 @@ gerc .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ gerc .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +71,6 @@ gerc .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -132,7 +129,6 @@ gerc .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst b/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst index 7d294f6cf6..0b80e9193d 100644 --- a/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst @@ -15,7 +15,6 @@ geru (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ geru (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -77,7 +75,6 @@ geru (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -144,7 +141,6 @@ geru (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/geru.rst b/source/elements/oneMKL/source/domains/blas/geru.rst index 85c0186c9f..2308e44024 100644 --- a/source/elements/oneMKL/source/domains/blas/geru.rst +++ b/source/elements/oneMKL/source/domains/blas/geru.rst @@ -15,7 +15,6 @@ geru .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ geru .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +71,6 @@ geru .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -132,7 +129,6 @@ geru .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst index abb5653fdf..7170ca2c5c 100644 --- a/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst @@ -15,7 +15,6 @@ hbmv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ hbmv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -75,7 +73,6 @@ hbmv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -153,7 +150,6 @@ hbmv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hbmv.rst b/source/elements/oneMKL/source/domains/blas/hbmv.rst index 9cc93e15f0..9a919b580a 100644 --- a/source/elements/oneMKL/source/domains/blas/hbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/hbmv.rst @@ -15,7 +15,6 @@ hbmv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ hbmv .. rubric:: Description - :name: description :class: sectiontitle @@ -72,7 +70,6 @@ hbmv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -142,7 +139,6 @@ hbmv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst index 0b8e180208..e5af105f40 100644 --- a/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst @@ -16,7 +16,6 @@ hemm (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ hemm (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -89,7 +87,6 @@ hemm (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -183,7 +180,6 @@ hemm (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -200,7 +196,6 @@ hemm (USM Version) .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hemm.rst b/source/elements/oneMKL/source/domains/blas/hemm.rst index 243513cead..5e93d181cb 100644 --- a/source/elements/oneMKL/source/domains/blas/hemm.rst +++ b/source/elements/oneMKL/source/domains/blas/hemm.rst @@ -16,7 +16,6 @@ hemm .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ hemm .. rubric:: Description - :name: description :class: sectiontitle @@ -86,7 +84,6 @@ hemm .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -171,7 +168,6 @@ hemm .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -192,7 +188,6 @@ hemm .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst index ade547bc76..7e1c526ee2 100644 --- a/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst @@ -15,7 +15,6 @@ hemv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ hemv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ hemv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -147,7 +144,6 @@ hemv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hemv.rst b/source/elements/oneMKL/source/domains/blas/hemv.rst index ad1b9a407c..ce120af0a0 100644 --- a/source/elements/oneMKL/source/domains/blas/hemv.rst +++ b/source/elements/oneMKL/source/domains/blas/hemv.rst @@ -15,7 +15,6 @@ hemv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ hemv .. rubric:: Description - :name: description :class: sectiontitle @@ -71,7 +69,6 @@ hemv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -136,7 +133,6 @@ hemv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/her-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her-usm-version.rst index 0848b9ed88..7176b5f2d3 100644 --- a/source/elements/oneMKL/source/domains/blas/her-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her-usm-version.rst @@ -15,7 +15,6 @@ her (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ her (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +71,6 @@ her (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -130,7 +127,6 @@ her (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/her.rst b/source/elements/oneMKL/source/domains/blas/her.rst index e9b068b3d6..c046963a29 100644 --- a/source/elements/oneMKL/source/domains/blas/her.rst +++ b/source/elements/oneMKL/source/domains/blas/her.rst @@ -15,7 +15,6 @@ her .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ her .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +68,6 @@ her .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -120,7 +117,6 @@ her .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst index ab91b499d0..637c20733d 100644 --- a/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst @@ -15,7 +15,6 @@ her2 (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ her2 (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +71,6 @@ her2 (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -142,7 +139,6 @@ her2 (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/her2.rst b/source/elements/oneMKL/source/domains/blas/her2.rst index 1926f318e9..4226512225 100644 --- a/source/elements/oneMKL/source/domains/blas/her2.rst +++ b/source/elements/oneMKL/source/domains/blas/her2.rst @@ -15,7 +15,6 @@ her2 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ her2 .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +68,6 @@ her2 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -131,7 +128,6 @@ her2 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst index 06afda812f..0cc8f090bb 100644 --- a/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst @@ -15,7 +15,6 @@ her2k (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ her2k (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -93,7 +91,6 @@ her2k (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -188,7 +185,6 @@ her2k (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/her2k.rst b/source/elements/oneMKL/source/domains/blas/her2k.rst index 13d9a0421d..b7b11dcc73 100644 --- a/source/elements/oneMKL/source/domains/blas/her2k.rst +++ b/source/elements/oneMKL/source/domains/blas/her2k.rst @@ -15,7 +15,6 @@ her2k .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ her2k .. rubric:: Description - :name: description :class: sectiontitle @@ -89,7 +87,6 @@ her2k .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -176,7 +173,6 @@ her2k .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst b/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst index f75187eeda..23b467646e 100644 --- a/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst @@ -15,7 +15,6 @@ herk (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ herk (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -80,7 +78,6 @@ herk (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -162,7 +159,6 @@ herk (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/herk.rst b/source/elements/oneMKL/source/domains/blas/herk.rst index 5589bf818c..ab00bc6284 100644 --- a/source/elements/oneMKL/source/domains/blas/herk.rst +++ b/source/elements/oneMKL/source/domains/blas/herk.rst @@ -15,7 +15,6 @@ herk .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ herk .. rubric:: Description - :name: description :class: sectiontitle @@ -76,7 +74,6 @@ herk .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -151,7 +148,6 @@ herk .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst index bc505fd2d9..d4dfc36970 100644 --- a/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst @@ -15,7 +15,6 @@ hpmv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ hpmv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -75,7 +73,6 @@ hpmv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -147,7 +144,6 @@ hpmv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hpmv.rst b/source/elements/oneMKL/source/domains/blas/hpmv.rst index 59a5e96128..42fafffb89 100644 --- a/source/elements/oneMKL/source/domains/blas/hpmv.rst +++ b/source/elements/oneMKL/source/domains/blas/hpmv.rst @@ -15,7 +15,6 @@ hpmv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ hpmv .. rubric:: Description - :name: description :class: sectiontitle @@ -71,7 +69,6 @@ hpmv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -135,7 +132,6 @@ hpmv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst index 2afe216c72..5fefd13c27 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst @@ -15,7 +15,6 @@ hpr (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ hpr (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -75,7 +73,6 @@ hpr (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -131,7 +128,6 @@ hpr (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hpr.rst b/source/elements/oneMKL/source/domains/blas/hpr.rst index ca731e810b..00ece1c64a 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr.rst @@ -15,7 +15,6 @@ hpr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ hpr .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +68,6 @@ hpr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -119,7 +116,6 @@ hpr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst index d2f0cfda08..80dde95746 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst @@ -15,7 +15,6 @@ hpr2 (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ hpr2 (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ hpr2 (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -142,7 +139,6 @@ hpr2 (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hpr2.rst b/source/elements/oneMKL/source/domains/blas/hpr2.rst index 0bb894b06e..9dfd156562 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr2.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr2.rst @@ -15,7 +15,6 @@ hpr2 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ hpr2 .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +68,6 @@ hpr2 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -130,7 +127,6 @@ hpr2 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst b/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst index b8e229054d..c3cf941593 100644 --- a/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst @@ -16,7 +16,6 @@ iamax (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ iamax (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +57,6 @@ iamax (USM Version) .. rubric:: Note - :name: note :class: NoteTipHead @@ -84,7 +81,6 @@ iamax (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -118,7 +114,6 @@ iamax (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/iamax.rst b/source/elements/oneMKL/source/domains/blas/iamax.rst index d69216b2cd..8de4839b79 100644 --- a/source/elements/oneMKL/source/domains/blas/iamax.rst +++ b/source/elements/oneMKL/source/domains/blas/iamax.rst @@ -16,7 +16,6 @@ iamax .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ iamax .. rubric:: Description - :name: description :class: sectiontitle @@ -56,7 +54,6 @@ iamax .. rubric:: Note - :name: note :class: NoteTipHead @@ -80,7 +77,6 @@ iamax .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -108,7 +104,6 @@ iamax .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst b/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst index 394dcc8eb6..09986b63f7 100644 --- a/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst @@ -15,7 +15,6 @@ iamin (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ iamin (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +56,6 @@ iamin (USM Version) .. rubric:: Note - :name: note :class: NoteTipHead @@ -83,7 +80,6 @@ iamin (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -112,7 +108,6 @@ iamin (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/iamin.rst b/source/elements/oneMKL/source/domains/blas/iamin.rst index 710397680b..5c6d3c2130 100644 --- a/source/elements/oneMKL/source/domains/blas/iamin.rst +++ b/source/elements/oneMKL/source/domains/blas/iamin.rst @@ -15,7 +15,6 @@ iamin .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ iamin .. rubric:: Description - :name: description :class: sectiontitle @@ -55,7 +53,6 @@ iamin .. rubric:: Note - :name: note :class: NoteTipHead @@ -79,7 +76,6 @@ iamin .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -107,7 +103,6 @@ iamin .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst index 0aa31875b2..b905554ee2 100644 --- a/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst @@ -15,7 +15,6 @@ nrm2 (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ nrm2 (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +71,6 @@ nrm2 (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -107,7 +104,6 @@ nrm2 (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/nrm2.rst b/source/elements/oneMKL/source/domains/blas/nrm2.rst index 548798085c..fa8bf16182 100644 --- a/source/elements/oneMKL/source/domains/blas/nrm2.rst +++ b/source/elements/oneMKL/source/domains/blas/nrm2.rst @@ -15,7 +15,6 @@ nrm2 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ nrm2 .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +68,6 @@ nrm2 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -98,7 +95,6 @@ nrm2 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst index 2aa2788a77..9c0311fd3c 100644 --- a/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst @@ -15,7 +15,6 @@ rot (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ rot (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +68,6 @@ rot (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -124,7 +121,6 @@ rot (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rot.rst b/source/elements/oneMKL/source/domains/blas/rot.rst index 116d1e8520..06ff30e40a 100644 --- a/source/elements/oneMKL/source/domains/blas/rot.rst +++ b/source/elements/oneMKL/source/domains/blas/rot.rst @@ -15,7 +15,6 @@ rot .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ rot .. rubric:: Description - :name: description :class: sectiontitle @@ -66,7 +64,6 @@ rot .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -113,7 +110,6 @@ rot .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst index 9ff40f7260..76b8eb77d3 100644 --- a/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst @@ -15,7 +15,6 @@ rotg (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ rotg (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -69,7 +67,6 @@ rotg (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -95,7 +92,6 @@ rotg (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rotg.rst b/source/elements/oneMKL/source/domains/blas/rotg.rst index edfc2dc9a8..4fd8d35a3c 100644 --- a/source/elements/oneMKL/source/domains/blas/rotg.rst +++ b/source/elements/oneMKL/source/domains/blas/rotg.rst @@ -15,7 +15,6 @@ rotg .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ rotg .. rubric:: Description - :name: description :class: sectiontitle @@ -66,7 +64,6 @@ rotg .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -87,7 +84,6 @@ rotg .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst index 8595b00e21..d185febb3e 100644 --- a/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst @@ -15,7 +15,6 @@ rotm (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ rotm (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -63,7 +61,6 @@ rotm (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -147,7 +144,6 @@ rotm (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rotm.rst b/source/elements/oneMKL/source/domains/blas/rotm.rst index 39d495b581..0ccbe5b9da 100644 --- a/source/elements/oneMKL/source/domains/blas/rotm.rst +++ b/source/elements/oneMKL/source/domains/blas/rotm.rst @@ -15,7 +15,6 @@ rotm .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ rotm .. rubric:: Description - :name: description :class: sectiontitle @@ -60,7 +58,6 @@ rotm .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -137,7 +134,6 @@ rotm .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst index 2151c947ce..a998aefd0f 100644 --- a/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst @@ -15,7 +15,6 @@ rotmg (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ rotmg (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -61,7 +59,6 @@ rotmg (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -97,7 +94,6 @@ rotmg (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rotmg.rst b/source/elements/oneMKL/source/domains/blas/rotmg.rst index e7ea336253..b669cdaa1c 100644 --- a/source/elements/oneMKL/source/domains/blas/rotmg.rst +++ b/source/elements/oneMKL/source/domains/blas/rotmg.rst @@ -15,7 +15,6 @@ rotmg .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ rotmg .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +56,6 @@ rotmg .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -89,7 +86,6 @@ rotmg .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst index b8363c02d3..2b3cb775ac 100644 --- a/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst @@ -15,7 +15,6 @@ sbmv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ sbmv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -75,7 +73,6 @@ sbmv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -153,7 +150,6 @@ sbmv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/sbmv.rst b/source/elements/oneMKL/source/domains/blas/sbmv.rst index a95f1faca9..00b4e5aaed 100644 --- a/source/elements/oneMKL/source/domains/blas/sbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/sbmv.rst @@ -15,7 +15,6 @@ sbmv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ sbmv .. rubric:: Description - :name: description :class: sectiontitle @@ -72,7 +70,6 @@ sbmv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -142,7 +139,6 @@ sbmv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst b/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst index 42a5e346a0..9dba7c43a6 100644 --- a/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst @@ -15,7 +15,6 @@ scal (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -53,7 +52,6 @@ scal (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -80,7 +78,6 @@ scal (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -112,7 +109,6 @@ scal (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/scal.rst b/source/elements/oneMKL/source/domains/blas/scal.rst index d781466548..848faa94f7 100644 --- a/source/elements/oneMKL/source/domains/blas/scal.rst +++ b/source/elements/oneMKL/source/domains/blas/scal.rst @@ -15,7 +15,6 @@ scal .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -50,7 +49,6 @@ scal .. rubric:: Description - :name: description :class: sectiontitle @@ -77,7 +75,6 @@ scal .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -109,7 +106,6 @@ scal .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst index 2859434f2d..28f61722a4 100644 --- a/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst @@ -15,7 +15,6 @@ sdsdot (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -25,7 +24,6 @@ sdsdot (USM Version) .. cpp:function:: event sdsdot(queue &exec_queue, std::int64_t n, float sb, const float \*x, std::int64_t incx, const float \*y, std::int64_t incy, float \*result, const vector_class &dependencies = {}) .. rubric:: Description - :name: description :class: sectiontitle @@ -37,7 +35,6 @@ sdsdot (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -83,7 +80,6 @@ sdsdot (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/sdsdot.rst b/source/elements/oneMKL/source/domains/blas/sdsdot.rst index 11414fd5ba..3c30ba2cd3 100644 --- a/source/elements/oneMKL/source/domains/blas/sdsdot.rst +++ b/source/elements/oneMKL/source/domains/blas/sdsdot.rst @@ -15,14 +15,12 @@ sdsdot .. rubric:: Syntax - :name: syntax :class: sectiontitle .. cpp:function:: void sdsdot(queue &exec_queue, std::int64_t n, float sb, buffer &x, std::int64_t incx, buffer &y, std::int64_t incy, buffer &result) .. rubric:: Description - :name: description :class: sectiontitle @@ -34,7 +32,6 @@ sdsdot .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -75,7 +72,6 @@ sdsdot .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst index 22983457cb..afaece88ad 100644 --- a/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst @@ -15,7 +15,6 @@ spmv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ spmv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -75,7 +73,6 @@ spmv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -143,7 +140,6 @@ spmv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/spmv.rst b/source/elements/oneMKL/source/domains/blas/spmv.rst index c190d161af..77c5faba40 100644 --- a/source/elements/oneMKL/source/domains/blas/spmv.rst +++ b/source/elements/oneMKL/source/domains/blas/spmv.rst @@ -15,7 +15,6 @@ spmv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ spmv .. rubric:: Description - :name: description :class: sectiontitle @@ -71,7 +69,6 @@ spmv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -131,7 +128,6 @@ spmv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst index c6b3177334..3dca086281 100644 --- a/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst @@ -15,7 +15,6 @@ spr (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ spr (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -75,7 +73,6 @@ spr (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -127,7 +124,6 @@ spr (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/spr.rst b/source/elements/oneMKL/source/domains/blas/spr.rst index 35e1088017..47e18af31c 100644 --- a/source/elements/oneMKL/source/domains/blas/spr.rst +++ b/source/elements/oneMKL/source/domains/blas/spr.rst @@ -15,7 +15,6 @@ spr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ spr .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +68,6 @@ spr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -115,7 +112,6 @@ spr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst index 0d9824527b..7510667bfd 100644 --- a/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst @@ -15,7 +15,6 @@ spr2 (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ spr2 (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ spr2 (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -138,7 +135,6 @@ spr2 (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/spr2.rst b/source/elements/oneMKL/source/domains/blas/spr2.rst index 65d2cd7db5..7ffce6416b 100644 --- a/source/elements/oneMKL/source/domains/blas/spr2.rst +++ b/source/elements/oneMKL/source/domains/blas/spr2.rst @@ -15,7 +15,6 @@ spr2 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ spr2 .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +68,6 @@ spr2 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -126,7 +123,6 @@ spr2 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst b/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst index 315331dc05..200c826010 100644 --- a/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst @@ -15,7 +15,6 @@ swap (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ swap (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -64,7 +62,6 @@ swap (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -108,7 +105,6 @@ swap (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/swap.rst b/source/elements/oneMKL/source/domains/blas/swap.rst index 64b65134f3..b01097ec2c 100644 --- a/source/elements/oneMKL/source/domains/blas/swap.rst +++ b/source/elements/oneMKL/source/domains/blas/swap.rst @@ -15,7 +15,6 @@ swap .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ swap .. rubric:: Description - :name: description :class: sectiontitle @@ -61,7 +59,6 @@ swap .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -100,7 +97,6 @@ swap .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst index 10c59da023..9431ad8a7a 100644 --- a/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst @@ -16,7 +16,6 @@ symm (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ symm (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -91,7 +89,6 @@ symm (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -181,7 +178,6 @@ symm (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -198,7 +194,6 @@ symm (USM Version) .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/symm.rst b/source/elements/oneMKL/source/domains/blas/symm.rst index c72cc9b443..225a4c381f 100644 --- a/source/elements/oneMKL/source/domains/blas/symm.rst +++ b/source/elements/oneMKL/source/domains/blas/symm.rst @@ -16,7 +16,6 @@ symm .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ symm .. rubric:: Description - :name: description :class: sectiontitle @@ -87,7 +85,6 @@ symm .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -168,7 +165,6 @@ symm .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -184,7 +180,6 @@ symm .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst index 0087f492aa..f7faeafdde 100644 --- a/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst @@ -15,7 +15,6 @@ symv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ symv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ symv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -143,7 +140,6 @@ symv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/symv.rst b/source/elements/oneMKL/source/domains/blas/symv.rst index 62a2b6216c..4543b203ac 100644 --- a/source/elements/oneMKL/source/domains/blas/symv.rst +++ b/source/elements/oneMKL/source/domains/blas/symv.rst @@ -15,7 +15,6 @@ symv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ symv .. rubric:: Description - :name: description :class: sectiontitle @@ -71,7 +69,6 @@ symv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -132,7 +129,6 @@ symv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst index 2ae68427ef..3cbb71e41f 100644 --- a/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst @@ -15,7 +15,6 @@ syr (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ syr (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ syr (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -131,7 +128,6 @@ syr (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syr.rst b/source/elements/oneMKL/source/domains/blas/syr.rst index d92fdc769b..563cada587 100644 --- a/source/elements/oneMKL/source/domains/blas/syr.rst +++ b/source/elements/oneMKL/source/domains/blas/syr.rst @@ -15,7 +15,6 @@ syr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ syr .. rubric:: Description - :name: description :class: sectiontitle @@ -71,7 +69,6 @@ syr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -121,7 +118,6 @@ syr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst index 21ac460323..082e9eb60e 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst @@ -15,7 +15,6 @@ syr2 (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ syr2 (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ syr2 (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -143,7 +140,6 @@ syr2 (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syr2.rst b/source/elements/oneMKL/source/domains/blas/syr2.rst index 5b0cbb6c78..6eb6010890 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2.rst @@ -15,7 +15,6 @@ syr2 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -39,7 +38,6 @@ syr2 .. rubric:: Description - :name: description :class: sectiontitle @@ -71,7 +69,6 @@ syr2 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -132,7 +129,6 @@ syr2 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst index c559a05d58..c835815405 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst @@ -15,7 +15,6 @@ syr2k (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ syr2k (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -92,7 +90,6 @@ syr2k (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -186,7 +183,6 @@ syr2k (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syr2k.rst b/source/elements/oneMKL/source/domains/blas/syr2k.rst index aa829540e3..16bbfe8bab 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2k.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2k.rst @@ -15,7 +15,6 @@ syr2k .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ syr2k .. rubric:: Description - :name: description :class: sectiontitle @@ -88,7 +86,6 @@ syr2k .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -174,7 +171,6 @@ syr2k .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst index b4ae4e5d2f..f1df40d332 100644 --- a/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst @@ -15,7 +15,6 @@ syrk (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ syrk (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -79,7 +77,6 @@ syrk (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -154,7 +151,6 @@ syrk (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syrk.rst b/source/elements/oneMKL/source/domains/blas/syrk.rst index 5089dfe21f..5d727432a9 100644 --- a/source/elements/oneMKL/source/domains/blas/syrk.rst +++ b/source/elements/oneMKL/source/domains/blas/syrk.rst @@ -15,7 +15,6 @@ syrk .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ syrk .. rubric:: Description - :name: description :class: sectiontitle @@ -76,7 +74,6 @@ syrk .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -149,7 +146,6 @@ syrk .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst index d63cca1ccf..4106c6fccd 100644 --- a/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst @@ -15,7 +15,6 @@ tbmv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ tbmv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -77,7 +75,6 @@ tbmv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -149,7 +146,6 @@ tbmv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tbmv.rst b/source/elements/oneMKL/source/domains/blas/tbmv.rst index f728cb6755..ee8c84bfb0 100644 --- a/source/elements/oneMKL/source/domains/blas/tbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/tbmv.rst @@ -15,7 +15,6 @@ tbmv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ tbmv .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ tbmv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -138,7 +135,6 @@ tbmv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst index d3b34fe159..aeee763f2c 100644 --- a/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst @@ -16,7 +16,6 @@ tbsv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ tbsv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -79,7 +77,6 @@ tbsv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -151,7 +148,6 @@ tbsv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tbsv.rst b/source/elements/oneMKL/source/domains/blas/tbsv.rst index c7d2f0668c..b3060a7789 100644 --- a/source/elements/oneMKL/source/domains/blas/tbsv.rst +++ b/source/elements/oneMKL/source/domains/blas/tbsv.rst @@ -16,7 +16,6 @@ tbsv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ tbsv .. rubric:: Description - :name: description :class: sectiontitle @@ -76,7 +74,6 @@ tbsv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -140,7 +137,6 @@ tbsv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst index ac59ed9e70..fadfb72dac 100644 --- a/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst @@ -15,7 +15,6 @@ tpmv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ tpmv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -77,7 +75,6 @@ tpmv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -139,7 +136,6 @@ tpmv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tpmv.rst b/source/elements/oneMKL/source/domains/blas/tpmv.rst index 9bb620af6b..6d25c439fd 100644 --- a/source/elements/oneMKL/source/domains/blas/tpmv.rst +++ b/source/elements/oneMKL/source/domains/blas/tpmv.rst @@ -15,7 +15,6 @@ tpmv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ tpmv .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ tpmv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -128,7 +125,6 @@ tpmv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst index 19b515e438..eb606f0549 100644 --- a/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst @@ -16,7 +16,6 @@ tpsv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ tpsv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -79,7 +77,6 @@ tpsv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -142,7 +139,6 @@ tpsv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tpsv.rst b/source/elements/oneMKL/source/domains/blas/tpsv.rst index dee6a78b69..bc34bc6d6d 100644 --- a/source/elements/oneMKL/source/domains/blas/tpsv.rst +++ b/source/elements/oneMKL/source/domains/blas/tpsv.rst @@ -16,7 +16,6 @@ tpsv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ tpsv .. rubric:: Description - :name: description :class: sectiontitle @@ -76,7 +74,6 @@ tpsv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -131,7 +128,6 @@ tpsv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst index 1b0854db67..969f86aa7b 100644 --- a/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst @@ -16,7 +16,6 @@ trmm (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ trmm (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -94,7 +92,6 @@ trmm (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -182,7 +179,6 @@ trmm (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -197,7 +193,6 @@ trmm (USM Version) .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trmm.rst b/source/elements/oneMKL/source/domains/blas/trmm.rst index ff63d5066c..d824d6da33 100644 --- a/source/elements/oneMKL/source/domains/blas/trmm.rst +++ b/source/elements/oneMKL/source/domains/blas/trmm.rst @@ -16,7 +16,6 @@ trmm .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ trmm .. rubric:: Description - :name: description :class: sectiontitle @@ -91,7 +89,6 @@ trmm .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -172,7 +169,6 @@ trmm .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -186,7 +182,6 @@ trmm .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst index d07e8d594a..65d2dc05f2 100644 --- a/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst @@ -15,7 +15,6 @@ trmv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ trmv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -77,7 +75,6 @@ trmv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -144,7 +141,6 @@ trmv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trmv.rst b/source/elements/oneMKL/source/domains/blas/trmv.rst index 1e63e29eac..4cd7d2b008 100644 --- a/source/elements/oneMKL/source/domains/blas/trmv.rst +++ b/source/elements/oneMKL/source/domains/blas/trmv.rst @@ -15,7 +15,6 @@ trmv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ trmv .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ trmv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -133,7 +130,6 @@ trmv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst index 3ed370609e..5d37f242f2 100644 --- a/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst @@ -15,7 +15,6 @@ trsm (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ trsm (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -92,7 +90,6 @@ trsm (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -179,7 +176,6 @@ trsm (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -193,7 +189,6 @@ trsm (USM Version) .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trsm.rst b/source/elements/oneMKL/source/domains/blas/trsm.rst index 0e75387d17..43e2a9ce6f 100644 --- a/source/elements/oneMKL/source/domains/blas/trsm.rst +++ b/source/elements/oneMKL/source/domains/blas/trsm.rst @@ -15,7 +15,6 @@ trsm .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ trsm .. rubric:: Description - :name: description :class: sectiontitle @@ -89,7 +87,6 @@ trsm .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -170,7 +167,6 @@ trsm .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -183,7 +179,6 @@ trsm .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trsm_batch.rst b/source/elements/oneMKL/source/domains/blas/trsm_batch.rst index bbdee69357..c3592b437b 100644 --- a/source/elements/oneMKL/source/domains/blas/trsm_batch.rst +++ b/source/elements/oneMKL/source/domains/blas/trsm_batch.rst @@ -15,7 +15,6 @@ trsm_batch .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ trsm_batch .. rubric:: Description - :name: description :class: sectiontitle @@ -138,7 +136,6 @@ trsm_batch .. rubric:: Input Parameters - Group API - :name: input-parameters---group-api :class: sectiontitle @@ -269,7 +266,6 @@ trsm_batch .. rubric:: Output Parameters - Group API - :name: output-parameters---group-api :class: sectiontitle @@ -283,7 +279,6 @@ trsm_batch .. rubric:: Input Parameters - Strided API - :name: input-parameters---strided-api :class: sectiontitle @@ -392,7 +387,6 @@ trsm_batch .. rubric:: Output Parameters - Strided API - :name: output-parameters---strided-api :class: sectiontitle @@ -406,7 +400,6 @@ trsm_batch .. rubric:: Notes - :name: notes :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst index eda716a9a7..57bb6cf8d5 100644 --- a/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst @@ -16,7 +16,6 @@ trsv (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ trsv (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -78,7 +76,6 @@ trsv (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -146,7 +143,6 @@ trsv (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trsv.rst b/source/elements/oneMKL/source/domains/blas/trsv.rst index 00fd1d29e4..225ac9f8bc 100644 --- a/source/elements/oneMKL/source/domains/blas/trsv.rst +++ b/source/elements/oneMKL/source/domains/blas/trsv.rst @@ -16,7 +16,6 @@ trsv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ trsv .. rubric:: Description - :name: description :class: sectiontitle @@ -75,7 +73,6 @@ trsv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -135,7 +132,6 @@ trsv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst index 07b16e7ee8..575d732b8f 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst @@ -15,7 +15,6 @@ onemkl::dft::Descriptor::commit .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -25,7 +24,6 @@ onemkl::dft::Descriptor::commit .. cpp:function:: onemkl::dft::ErrCode descriptor.Commit (cl::sycl::queue &in ) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -33,7 +31,6 @@ onemkl::dft::Descriptor::commit .. rubric:: Description - :name: description :class: sectiontitle @@ -49,7 +46,6 @@ onemkl::dft::Descriptor::commit .. rubric:: Note - :name: note :class: NoteTipHead @@ -72,7 +68,6 @@ onemkl::dft::Descriptor::commit .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -94,7 +89,6 @@ onemkl::dft::Descriptor::commit .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst index 3024ffb6bc..a6866feaef 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst @@ -15,7 +15,6 @@ onemkl::dft::Descriptor::computeBac .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -27,7 +26,6 @@ onemkl::dft::Descriptor::computeBac .. cpp:function:: onemkl::dft::ErrCode descriptor.computeBackward (cl::sycl::buffer &in , cl::sycl::buffer &out , cl::sycl::event\* event = nullptr) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -35,7 +33,6 @@ onemkl::dft::Descriptor::computeBac .. rubric:: Description - :name: description :class: sectiontitle @@ -71,7 +68,6 @@ onemkl::dft::Descriptor::computeBac .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -104,7 +100,6 @@ onemkl::dft::Descriptor::computeBac .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst index 2455bff8cb..0cb2a80f8c 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst @@ -15,7 +15,6 @@ onemkl::dft::Descriptor::computeFor .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -27,7 +26,6 @@ onemkl::dft::Descriptor::computeFor .. cpp:function:: onemkl::dft::ErrCode descriptor.computeForward (cl::sycl::buffer &in , cl::sycl::buffer &out , cl::sycl::event\* event = nullptr) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -35,7 +33,6 @@ onemkl::dft::Descriptor::computeFor .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +67,6 @@ onemkl::dft::Descriptor::computeFor .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -103,7 +99,6 @@ onemkl::dft::Descriptor::computeFor .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst index e46788e567..334312e87c 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst @@ -16,7 +16,6 @@ onemkl::dft::Descriptor::getValue .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -26,7 +25,6 @@ onemkl::dft::Descriptor::getValue .. cpp:function:: onemkl::dft::ErrCode descriptor.getValue (onemkl::dft::ConfigParam param , ...) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -34,7 +32,6 @@ onemkl::dft::Descriptor::getValue .. rubric:: Description - :name: description :class: sectiontitle @@ -48,7 +45,6 @@ onemkl::dft::Descriptor::getValue .. rubric:: Note - :name: note :class: NoteTipHead @@ -64,7 +60,6 @@ onemkl::dft::Descriptor::getValue .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -89,7 +84,6 @@ onemkl::dft::Descriptor::getValue .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst index 1983b8b631..0787449f06 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst @@ -16,7 +16,6 @@ onemkl::dft::Descriptor::Init .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -26,7 +25,6 @@ onemkl::dft::Descriptor::Init .. cpp:function:: onemkl::dft::ErrCode descriptor.init (dimension ) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -34,7 +32,6 @@ onemkl::dft::Descriptor::Init .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +56,6 @@ onemkl::dft::Descriptor::Init .. rubric:: Input Parameters: 1-Dimensional - :name: input-parameters-1-dimensional :class: sectiontitle @@ -81,7 +77,6 @@ onemkl::dft::Descriptor::Init .. rubric:: Input Parameters: N-Dimensional - :name: input-parameters-n-dimensional :class: sectiontitle @@ -103,7 +98,6 @@ onemkl::dft::Descriptor::Init .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst index 8322ba0b1f..588673b1e3 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst @@ -16,7 +16,6 @@ onemkl::dft::Descriptor::setValue .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -26,7 +25,6 @@ onemkl::dft::Descriptor::setValue .. cpp:function:: onemkl::dft::ErrCode descriptor.setValue (onemkl::dft::ConfigParam param , ...) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -34,7 +32,6 @@ onemkl::dft::Descriptor::setValue .. rubric:: Description - :name: description :class: sectiontitle @@ -48,7 +45,6 @@ onemkl::dft::Descriptor::setValue .. rubric:: Note - :name: note :class: NoteTipHead @@ -89,7 +85,6 @@ onemkl::dft::Descriptor::setValue .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -114,7 +109,6 @@ onemkl::dft::Descriptor::setValue .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst index 98e0c16c01..9ac561d314 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain.rst @@ -16,7 +16,6 @@ onemkl::dft::Descriptor .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -26,7 +25,6 @@ onemkl::dft::Descriptor .. cpp:function:: onemkl::dft::Descriptor descriptor .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -34,7 +32,6 @@ onemkl::dft::Descriptor .. rubric:: Description - :name: description :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/gebrd.rst b/source/elements/oneMKL/source/domains/lapack/gebrd.rst index d5b4b35673..d78b586ee3 100644 --- a/source/elements/oneMKL/source/domains/lapack/gebrd.rst +++ b/source/elements/oneMKL/source/domains/lapack/gebrd.rst @@ -16,7 +16,6 @@ gebrd .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -50,7 +49,6 @@ gebrd .. rubric:: Description - :name: description :class: sectiontitle @@ -104,7 +102,6 @@ gebrd .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -140,7 +137,6 @@ gebrd .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -203,7 +199,6 @@ gebrd .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst index 9efd4a4e1b..f9948536b7 100644 --- a/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst @@ -17,7 +17,6 @@ gebrd_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ gebrd_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -62,7 +60,6 @@ gebrd_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -87,7 +84,6 @@ gebrd_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -102,7 +98,6 @@ gebrd_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf.rst b/source/elements/oneMKL/source/domains/lapack/geqrf.rst index 42d28f92b5..e9a350b491 100644 --- a/source/elements/oneMKL/source/domains/lapack/geqrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/geqrf.rst @@ -16,7 +16,6 @@ geqrf .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ geqrf .. rubric:: Description - :name: description :class: sectiontitle @@ -61,7 +59,6 @@ geqrf .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -97,7 +94,6 @@ geqrf .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -137,7 +133,6 @@ geqrf .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst index de06210046..9801ed1788 100644 --- a/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst @@ -16,7 +16,6 @@ geqrf_batch .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ geqrf_batch .. rubric:: Description - :name: description :class: sectiontitle @@ -65,7 +63,6 @@ geqrf_batch .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -99,7 +96,6 @@ geqrf_batch .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -137,7 +133,6 @@ geqrf_batch .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst index 5dadc8e1f1..63c7387725 100644 --- a/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst @@ -16,7 +16,6 @@ geqrf_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ geqrf_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -60,7 +58,6 @@ geqrf_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -85,7 +82,6 @@ geqrf_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -100,7 +96,6 @@ geqrf_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/gesvd.rst b/source/elements/oneMKL/source/domains/lapack/gesvd.rst index 577848b0f1..d37eafc849 100644 --- a/source/elements/oneMKL/source/domains/lapack/gesvd.rst +++ b/source/elements/oneMKL/source/domains/lapack/gesvd.rst @@ -16,7 +16,6 @@ gesvd .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -50,7 +49,6 @@ gesvd .. rubric:: Description - :name: description :class: sectiontitle @@ -78,7 +76,6 @@ gesvd .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -168,7 +165,6 @@ gesvd .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -279,7 +275,6 @@ gesvd .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst index 965f40a4a5..36f19147e1 100644 --- a/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst @@ -17,7 +17,6 @@ gesvd_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ gesvd_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -62,7 +60,6 @@ gesvd_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -142,7 +139,6 @@ gesvd_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -157,7 +153,6 @@ gesvd_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/getrf.rst b/source/elements/oneMKL/source/domains/lapack/getrf.rst index b66e1af404..5e323b6b8e 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrf.rst @@ -16,7 +16,6 @@ getrf .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ getrf .. rubric:: Description - :name: description :class: sectiontitle @@ -67,7 +65,6 @@ getrf .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -93,7 +90,6 @@ getrf .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -115,7 +111,6 @@ getrf .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst index d5809903ce..c5d2abbcc8 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst @@ -16,7 +16,6 @@ getrf_batch .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ getrf_batch .. rubric:: Description - :name: description :class: sectiontitle @@ -69,7 +67,6 @@ getrf_batch .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -103,7 +100,6 @@ getrf_batch .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -135,7 +131,6 @@ getrf_batch .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/getri.rst b/source/elements/oneMKL/source/domains/lapack/getri.rst index 1e244658e8..d1b188bde5 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri.rst @@ -17,7 +17,6 @@ getri .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ getri .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +56,6 @@ getri .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -96,7 +93,6 @@ getri .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -123,7 +119,6 @@ getri .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/getri_batch.rst b/source/elements/oneMKL/source/domains/lapack/getri_batch.rst index cd52259945..3035cc0d94 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri_batch.rst @@ -17,7 +17,6 @@ getri_batch .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ getri_batch .. rubric:: Description - :name: description :class: sectiontitle @@ -63,7 +61,6 @@ getri_batch .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -99,7 +96,6 @@ getri_batch .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -123,7 +119,6 @@ getri_batch .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst index 96504de0ef..439f47d3b5 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst @@ -17,7 +17,6 @@ getri_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ getri_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -62,7 +60,6 @@ getri_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -83,7 +80,6 @@ getri_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -98,7 +94,6 @@ getri_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/getrs.rst b/source/elements/oneMKL/source/domains/lapack/getrs.rst index 8c8b9a1814..a882ab2b92 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrs.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrs.rst @@ -17,7 +17,6 @@ getrs .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ getrs .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +72,6 @@ getrs .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -137,7 +134,6 @@ getrs .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -164,7 +160,6 @@ getrs .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst b/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst index dc1491c25a..5af5194963 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst @@ -17,7 +17,6 @@ getrs_batch .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ getrs_batch .. rubric:: Description - :name: description :class: sectiontitle @@ -79,7 +77,6 @@ getrs_batch .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -133,7 +130,6 @@ getrs_batch .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -161,7 +157,6 @@ getrs_batch .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/heevd.rst b/source/elements/oneMKL/source/domains/lapack/heevd.rst index 321acfac3a..1e1071301e 100644 --- a/source/elements/oneMKL/source/domains/lapack/heevd.rst +++ b/source/elements/oneMKL/source/domains/lapack/heevd.rst @@ -17,7 +17,6 @@ heevd .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ heevd .. rubric:: Description - :name: description :class: sectiontitle @@ -69,7 +67,6 @@ heevd .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -133,7 +130,6 @@ heevd .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -185,7 +181,6 @@ heevd .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst index fb77881215..72dbc20d1b 100644 --- a/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst @@ -17,7 +17,6 @@ heevd_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ heevd_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -61,7 +59,6 @@ heevd_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -105,7 +102,6 @@ heevd_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -132,7 +128,6 @@ heevd_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/hegvd.rst b/source/elements/oneMKL/source/domains/lapack/hegvd.rst index fac2651349..69ade3fd8a 100644 --- a/source/elements/oneMKL/source/domains/lapack/hegvd.rst +++ b/source/elements/oneMKL/source/domains/lapack/hegvd.rst @@ -18,7 +18,6 @@ hegvd .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ hegvd .. rubric:: Description - :name: description :class: sectiontitle @@ -66,7 +64,6 @@ hegvd .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -158,7 +155,6 @@ hegvd .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -233,7 +229,6 @@ hegvd .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst index faefe69e96..b53b643937 100644 --- a/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst @@ -17,7 +17,6 @@ hegvd_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ hegvd_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -61,7 +59,6 @@ hegvd_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -125,7 +122,6 @@ hegvd_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -152,7 +148,6 @@ hegvd_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/hetrd.rst b/source/elements/oneMKL/source/domains/lapack/hetrd.rst index 4cbbef1ae8..509770e648 100644 --- a/source/elements/oneMKL/source/domains/lapack/hetrd.rst +++ b/source/elements/oneMKL/source/domains/lapack/hetrd.rst @@ -16,7 +16,6 @@ hetrd .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ hetrd .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +57,6 @@ hetrd .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -106,7 +103,6 @@ hetrd .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -160,7 +156,6 @@ hetrd .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst index c253d151ce..96d254a97d 100644 --- a/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst @@ -17,7 +17,6 @@ hetrd_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ hetrd_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -60,7 +58,6 @@ hetrd_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -94,7 +91,6 @@ hetrd_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -109,7 +105,6 @@ hetrd_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/lapack.rst b/source/elements/oneMKL/source/domains/lapack/lapack.rst index 1d1f534ff6..de25fa6677 100644 --- a/source/elements/oneMKL/source/domains/lapack/lapack.rst +++ b/source/elements/oneMKL/source/domains/lapack/lapack.rst @@ -51,7 +51,6 @@ LAPACK Routines .. rubric:: Note - :name: note :class: NoteTipHead diff --git a/source/elements/oneMKL/source/domains/lapack/orgbr.rst b/source/elements/oneMKL/source/domains/lapack/orgbr.rst index cdb9e2c1cd..8db646829e 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgbr.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgbr.rst @@ -18,7 +18,6 @@ orgbr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ orgbr .. rubric:: Description - :name: description :class: sectiontitle @@ -101,7 +99,6 @@ orgbr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -173,7 +170,6 @@ orgbr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -202,7 +198,6 @@ orgbr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst index 5b6602ebe0..81ee5b7738 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst @@ -17,7 +17,6 @@ orgbr_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ orgbr_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +57,6 @@ orgbr_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -115,7 +112,6 @@ orgbr_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -130,7 +126,6 @@ orgbr_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr.rst b/source/elements/oneMKL/source/domains/lapack/orgqr.rst index 2dec6fa56d..386cfe52db 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgqr.rst @@ -16,7 +16,6 @@ orgqr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ orgqr .. rubric:: Description - :name: description :class: sectiontitle @@ -96,7 +94,6 @@ orgqr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -141,7 +138,6 @@ orgqr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -169,7 +165,6 @@ orgqr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst b/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst index bd79fbae55..1baaa9d67f 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst @@ -17,7 +17,6 @@ orgqr_batch .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ orgqr_batch .. rubric:: Description - :name: description :class: sectiontitle @@ -148,7 +146,6 @@ orgqr_batch .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -193,7 +190,6 @@ orgqr_batch .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -217,7 +213,6 @@ orgqr_batch .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst index cce468df84..b764e9e0d9 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst @@ -16,7 +16,6 @@ orgqr_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ orgqr_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -57,7 +55,6 @@ orgqr_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -87,7 +84,6 @@ orgqr_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -101,7 +97,6 @@ orgqr_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/orgtr.rst b/source/elements/oneMKL/source/domains/lapack/orgtr.rst index 2571692886..48edd4261c 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgtr.rst @@ -17,7 +17,6 @@ orgtr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ orgtr .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +56,6 @@ orgtr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -102,7 +99,6 @@ orgtr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -129,7 +125,6 @@ orgtr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst index 33ba6ed8ce..a0b3c37c4d 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst @@ -17,7 +17,6 @@ orgtr_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ orgtr_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -60,7 +58,6 @@ orgtr_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -87,7 +84,6 @@ orgtr_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -102,7 +98,6 @@ orgtr_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/ormqr.rst b/source/elements/oneMKL/source/domains/lapack/ormqr.rst index 404d5ae5ff..b19ca312b8 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormqr.rst @@ -17,7 +17,6 @@ ormqr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ ormqr .. rubric:: Description - :name: description :class: sectiontitle @@ -63,7 +61,6 @@ ormqr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -144,7 +141,6 @@ ormqr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -173,7 +169,6 @@ ormqr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst index 52b83e5f1d..d08d3e82e0 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst @@ -17,7 +17,6 @@ ormqr_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ ormqr_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -60,7 +58,6 @@ ormqr_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -112,7 +109,6 @@ ormqr_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -127,7 +123,6 @@ ormqr_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/ormtr.rst b/source/elements/oneMKL/source/domains/lapack/ormtr.rst index 588faaa354..fe381dc0fb 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormtr.rst @@ -18,7 +18,6 @@ ormtr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ ormtr .. rubric:: Description - :name: description :class: sectiontitle @@ -64,7 +62,6 @@ ormtr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -161,7 +158,6 @@ ormtr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -189,7 +185,6 @@ ormtr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst index 4c883ea862..f06b735cb3 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst @@ -17,7 +17,6 @@ ormtr_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ ormtr_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -60,7 +58,6 @@ ormtr_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -136,7 +133,6 @@ ormtr_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -151,7 +147,6 @@ ormtr_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst b/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst index 0caadb363a..2cf425eb2e 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst @@ -17,7 +17,6 @@ potrf (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ potrf (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -77,7 +75,6 @@ potrf (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -124,7 +121,6 @@ potrf (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/potrf.rst b/source/elements/oneMKL/source/domains/lapack/potrf.rst index 29228d54c9..068544cb76 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf.rst @@ -17,7 +17,6 @@ potrf .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ potrf .. rubric:: Description - :name: description :class: sectiontitle @@ -72,7 +70,6 @@ potrf .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -115,7 +112,6 @@ potrf .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -145,7 +141,6 @@ potrf .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst index 1e2cc739ec..9435e034ac 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst @@ -17,7 +17,6 @@ potrf_batch .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ potrf_batch .. rubric:: Description - :name: description :class: sectiontitle @@ -81,7 +79,6 @@ potrf_batch .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -126,7 +123,6 @@ potrf_batch .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -157,7 +153,6 @@ potrf_batch .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/potri.rst b/source/elements/oneMKL/source/domains/lapack/potri.rst index 4d398b88c1..a0fb21f512 100644 --- a/source/elements/oneMKL/source/domains/lapack/potri.rst +++ b/source/elements/oneMKL/source/domains/lapack/potri.rst @@ -17,7 +17,6 @@ potri .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ potri .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +57,6 @@ potri .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -85,7 +82,6 @@ potri .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -105,7 +101,6 @@ potri .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst b/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst index f5f4e42f4e..17630ad814 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrs-usm-version.rst @@ -17,7 +17,6 @@ potrs (USM Version) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ potrs (USM Version) .. rubric:: Description - :name: description :class: sectiontitle @@ -84,7 +82,6 @@ potrs (USM Version) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -147,7 +144,6 @@ potrs (USM Version) .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/potrs.rst b/source/elements/oneMKL/source/domains/lapack/potrs.rst index ed63919292..a7a7c93785 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrs.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrs.rst @@ -17,7 +17,6 @@ potrs .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ potrs .. rubric:: Description - :name: description :class: sectiontitle @@ -79,7 +77,6 @@ potrs .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -111,7 +108,6 @@ potrs .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -131,7 +127,6 @@ potrs .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst b/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst index c7a86965e1..4611a5404b 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst @@ -17,7 +17,6 @@ potrs_batch .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -46,7 +45,6 @@ potrs_batch .. rubric:: Description - :name: description :class: sectiontitle @@ -82,7 +80,6 @@ potrs_batch .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -143,7 +140,6 @@ potrs_batch .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -170,7 +166,6 @@ potrs_batch .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/syevd.rst b/source/elements/oneMKL/source/domains/lapack/syevd.rst index 31fd646d82..8caab8c532 100644 --- a/source/elements/oneMKL/source/domains/lapack/syevd.rst +++ b/source/elements/oneMKL/source/domains/lapack/syevd.rst @@ -17,7 +17,6 @@ syevd .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ syevd .. rubric:: Description - :name: description :class: sectiontitle @@ -69,7 +67,6 @@ syevd .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -128,7 +125,6 @@ syevd .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -177,7 +173,6 @@ syevd .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst index 77c0e8b2b2..7c0f2af363 100644 --- a/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst @@ -17,7 +17,6 @@ syevd_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ syevd_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -61,7 +59,6 @@ syevd_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -106,7 +103,6 @@ syevd_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -127,7 +123,6 @@ syevd_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/sygvd.rst b/source/elements/oneMKL/source/domains/lapack/sygvd.rst index 3810ee931e..b3fe2f3bd2 100644 --- a/source/elements/oneMKL/source/domains/lapack/sygvd.rst +++ b/source/elements/oneMKL/source/domains/lapack/sygvd.rst @@ -18,7 +18,6 @@ sygvd .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ sygvd .. rubric:: Description - :name: description :class: sectiontitle @@ -66,7 +64,6 @@ sygvd .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -149,7 +146,6 @@ sygvd .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -234,7 +230,6 @@ sygvd .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst index 2832af57af..a322304a19 100644 --- a/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst @@ -17,7 +17,6 @@ sygvd_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ sygvd_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -60,7 +58,6 @@ sygvd_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -121,7 +118,6 @@ sygvd_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -142,7 +138,6 @@ sygvd_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/sytrd.rst b/source/elements/oneMKL/source/domains/lapack/sytrd.rst index 237cb06544..efce81f54a 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrd.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrd.rst @@ -16,7 +16,6 @@ sytrd .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ sytrd .. rubric:: Description - :name: description :class: sectiontitle @@ -56,7 +54,6 @@ sytrd .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -103,7 +100,6 @@ sytrd .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -158,7 +154,6 @@ sytrd .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst index 67c8ced6d2..95823b4d13 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst @@ -17,7 +17,6 @@ sytrd_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ sytrd_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -60,7 +58,6 @@ sytrd_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -93,7 +90,6 @@ sytrd_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -108,7 +104,6 @@ sytrd_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/sytrf.rst b/source/elements/oneMKL/source/domains/lapack/sytrf.rst index fb63e507f3..06f4fe5874 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrf.rst @@ -16,7 +16,6 @@ sytrf .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ sytrf .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +68,6 @@ sytrf .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -98,7 +95,6 @@ sytrf .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -122,7 +118,6 @@ sytrf .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst index 258dd11c21..5f9c2ad82a 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst @@ -16,7 +16,6 @@ sytrf_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -45,7 +44,6 @@ sytrf_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -61,7 +59,6 @@ sytrf_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -97,7 +94,6 @@ sytrf_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -112,7 +108,6 @@ sytrf_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/trtrs.rst b/source/elements/oneMKL/source/domains/lapack/trtrs.rst index 4d40276aba..741b763ee4 100644 --- a/source/elements/oneMKL/source/domains/lapack/trtrs.rst +++ b/source/elements/oneMKL/source/domains/lapack/trtrs.rst @@ -17,7 +17,6 @@ trtrs .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ trtrs .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +71,6 @@ trtrs .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -109,7 +106,6 @@ trtrs .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -146,7 +142,6 @@ trtrs .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/ungbr.rst b/source/elements/oneMKL/source/domains/lapack/ungbr.rst index fb4c990d56..7ebff5e798 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungbr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungbr.rst @@ -17,7 +17,6 @@ ungbr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ ungbr .. rubric:: Description - :name: description :class: sectiontitle @@ -100,7 +98,6 @@ ungbr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -175,7 +172,6 @@ ungbr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -204,7 +200,6 @@ ungbr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst index c797a7ebd2..5253e02ad7 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst @@ -17,7 +17,6 @@ ungbr_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ ungbr_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +57,6 @@ ungbr_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -115,7 +112,6 @@ ungbr_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -130,7 +126,6 @@ ungbr_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/ungqr.rst b/source/elements/oneMKL/source/domains/lapack/ungqr.rst index 4f4dabbc79..8a507a5237 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungqr.rst @@ -16,7 +16,6 @@ ungqr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ ungqr .. rubric:: Description - :name: description :class: sectiontitle @@ -96,7 +94,6 @@ ungqr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -141,7 +138,6 @@ ungqr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -169,7 +165,6 @@ ungqr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst index 5309522462..129755d479 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst @@ -16,7 +16,6 @@ ungqr_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ ungqr_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -57,7 +55,6 @@ ungqr_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -87,7 +84,6 @@ ungqr_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -101,7 +97,6 @@ ungqr_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/ungtr.rst b/source/elements/oneMKL/source/domains/lapack/ungtr.rst index 084794552a..77c91c9a0b 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungtr.rst @@ -17,7 +17,6 @@ ungtr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ ungtr .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +56,6 @@ ungtr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -102,7 +99,6 @@ ungtr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -129,7 +125,6 @@ ungtr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst index 608a5f49fa..f5f49bd275 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst @@ -17,7 +17,6 @@ ungtr_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ ungtr_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -60,7 +58,6 @@ ungtr_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -87,7 +84,6 @@ ungtr_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -102,7 +98,6 @@ ungtr_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/unmqr.rst b/source/elements/oneMKL/source/domains/lapack/unmqr.rst index 35a10d434d..e2eb28fe93 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmqr.rst @@ -17,7 +17,6 @@ unmqr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ unmqr .. rubric:: Description - :name: description :class: sectiontitle @@ -61,7 +59,6 @@ unmqr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -146,7 +143,6 @@ unmqr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -176,7 +172,6 @@ unmqr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst index 850f289290..604e0c4cf8 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst @@ -16,7 +16,6 @@ unmqr_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -43,7 +42,6 @@ unmqr_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +57,6 @@ unmqr_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -111,7 +108,6 @@ unmqr_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -125,7 +121,6 @@ unmqr_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/unmtr.rst b/source/elements/oneMKL/source/domains/lapack/unmtr.rst index a374bda407..5797426cb0 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmtr.rst @@ -18,7 +18,6 @@ unmtr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ unmtr .. rubric:: Description - :name: description :class: sectiontitle @@ -64,7 +62,6 @@ unmtr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -167,7 +164,6 @@ unmtr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -196,7 +192,6 @@ unmtr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst index cd065489a1..7c5ee64b3c 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst @@ -17,7 +17,6 @@ unmtr_get_lwork .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ unmtr_get_lwork .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +57,6 @@ unmtr_get_lwork .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -124,7 +121,6 @@ unmtr_get_lwork .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -139,7 +135,6 @@ unmtr_get_lwork .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst b/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst index 854c6a1e4d..a4524231c6 100644 --- a/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst +++ b/source/elements/oneMKL/source/domains/rng/distributions-template-parameter-mkl-rng-method-values.rst @@ -77,7 +77,6 @@ Distributions Template Parameter onemkl::rng::method Values .. rubric:: Note - :name: note :class: NoteTipHead diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst index 242c4214a2..37b4a5e775 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-ars5.rst @@ -17,7 +17,6 @@ onemkl::rng::ars5 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ onemkl::rng::ars5 .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -49,7 +47,6 @@ onemkl::rng::ars5 .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +56,6 @@ onemkl::rng::ars5 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst index 3bc69589ef..2e5cb8f455 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-bernoulli.rst @@ -15,7 +15,6 @@ onemkl::rng::bernoulli .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -38,7 +37,6 @@ onemkl::rng::bernoulli .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -46,7 +44,6 @@ onemkl::rng::bernoulli .. rubric:: Description - :name: description :class: sectiontitle @@ -90,7 +87,6 @@ onemkl::rng::bernoulli .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst index eb5df250a5..c8a1bbe59e 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-beta.rst @@ -15,7 +15,6 @@ onemkl::rng::beta .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ onemkl::rng::beta .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -52,7 +50,6 @@ onemkl::rng::beta .. rubric:: Description - :name: description :class: sectiontitle @@ -79,7 +76,6 @@ onemkl::rng::beta .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst index 074d1f33b3..a948a7a7a6 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-binomial.rst @@ -15,7 +15,6 @@ onemkl::rng::binomial .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::binomial .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::binomial .. rubric:: Description - :name: description :class: sectiontitle @@ -83,7 +80,6 @@ onemkl::rng::binomial .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst index 7593ea2a95..653c697ed8 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-bits.rst @@ -15,7 +15,6 @@ onemkl::rng::bits .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -27,7 +26,6 @@ onemkl::rng::bits .. cpp:function:: class bits {} .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -35,7 +33,6 @@ onemkl::rng::bits .. rubric:: Description - :name: description :class: sectiontitle @@ -55,7 +52,6 @@ onemkl::rng::bits .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst index 549d44dacb..40acb98b3b 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-cauchy.rst @@ -15,7 +15,6 @@ onemkl::rng::cauchy .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::cauchy .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::cauchy .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +70,6 @@ onemkl::rng::cauchy .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst index 65d8f336fe..5aef568a6c 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-chi_square.rst @@ -15,7 +15,6 @@ onemkl::rng::chi_square .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -38,7 +37,6 @@ onemkl::rng::chi_square .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -46,7 +44,6 @@ onemkl::rng::chi_square .. rubric:: Description - :name: description :class: sectiontitle @@ -69,7 +66,6 @@ onemkl::rng::chi_square .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst index a075420f24..013e4a3f0e 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-exponential.rst @@ -15,7 +15,6 @@ onemkl::rng::exponential .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::exponential .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::exponential .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +70,6 @@ onemkl::rng::exponential .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst index d1278cbcc4..3bd815d25c 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gamma.rst @@ -15,7 +15,6 @@ onemkl::rng::gamma .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ onemkl::rng::gamma .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -50,7 +48,6 @@ onemkl::rng::gamma .. rubric:: Description - :name: description :class: sectiontitle @@ -70,7 +67,6 @@ onemkl::rng::gamma .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst index b7832e62d7..84ef6f0fa6 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gaussian.rst @@ -15,7 +15,6 @@ onemkl::rng::gaussian .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::gaussian .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::gaussian .. rubric:: Description - :name: description :class: sectiontitle @@ -91,7 +88,6 @@ onemkl::rng::gaussian .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst index 3376a465b6..f6fa17999e 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-generate.rst @@ -16,7 +16,6 @@ onemkl::rng::generate .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -38,7 +37,6 @@ onemkl::rng::generate .. cpp:function:: cl::sycl::event generate (const Distr& distr, EngineType& engine, const std::int64_t n, T \* r , const cl::sycl::vector_class & dependencies) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -46,7 +44,6 @@ onemkl::rng::generate .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -74,7 +71,6 @@ onemkl::rng::generate .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst index 23e807671d..af344a7a83 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-geometric.rst @@ -15,7 +15,6 @@ onemkl::rng::geometric .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -38,7 +37,6 @@ onemkl::rng::geometric .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -46,7 +44,6 @@ onemkl::rng::geometric .. rubric:: Description - :name: description :class: sectiontitle @@ -76,7 +73,6 @@ onemkl::rng::geometric .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst index 506c25ecb5..d8a93ce2dc 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-gumbel.rst @@ -15,7 +15,6 @@ onemkl::rng::gumbel .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::gumbel .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::gumbel .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +70,6 @@ onemkl::rng::gumbel .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst index 02db5f4113..7ba194e0df 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-hypergeometric.rst @@ -15,7 +15,6 @@ onemkl::rng::hypergeometric .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ onemkl::rng::hypergeometric .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -50,7 +48,6 @@ onemkl::rng::hypergeometric .. rubric:: Description - :name: description :class: sectiontitle @@ -86,7 +83,6 @@ onemkl::rng::hypergeometric .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst index 5f91e747c7..d94cfd2f2f 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-laplace.rst @@ -15,7 +15,6 @@ onemkl::rng::laplace .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::laplace .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::laplace .. rubric:: Description - :name: description :class: sectiontitle @@ -77,7 +74,6 @@ onemkl::rng::laplace .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst index 55df5a751d..af0d03791c 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-leapfrog.rst @@ -15,7 +15,6 @@ onemkl::rng::leapfrog .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -24,7 +23,6 @@ onemkl::rng::leapfrog .. cpp:function:: void leapfrog (EngineType& engine, std::uint64_t idx, std::uint64_t stride) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -32,7 +30,6 @@ onemkl::rng::leapfrog .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -60,7 +57,6 @@ onemkl::rng::leapfrog .. rubric:: Description - :name: description :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst index 8a5cfb7d8b..a2e011bb60 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-lognormal.rst @@ -15,7 +15,6 @@ onemkl::rng::lognormal .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ onemkl::rng::lognormal .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -52,7 +50,6 @@ onemkl::rng::lognormal .. rubric:: Description - :name: description :class: sectiontitle @@ -79,7 +76,6 @@ onemkl::rng::lognormal .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst index 20b345a374..8ff97ab82b 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg31m1.rst @@ -16,7 +16,6 @@ onemkl::rng::mcg31m1 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -38,7 +37,6 @@ onemkl::rng::mcg31m1 .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -46,7 +44,6 @@ onemkl::rng::mcg31m1 .. rubric:: Description - :name: description :class: sectiontitle @@ -56,7 +53,6 @@ onemkl::rng::mcg31m1 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst index cf55e12555..db3648428b 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mcg59.rst @@ -16,7 +16,6 @@ onemkl::rng::mcg59 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -38,7 +37,6 @@ onemkl::rng::mcg59 .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -46,7 +44,6 @@ onemkl::rng::mcg59 .. rubric:: Description - :name: description :class: sectiontitle @@ -56,7 +53,6 @@ onemkl::rng::mcg59 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst index a5c580aa91..1e0adc5a4b 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mrg32k3a.rst @@ -16,7 +16,6 @@ onemkl::rng::mrg32k3a .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -38,7 +37,6 @@ onemkl::rng::mrg32k3a .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -46,7 +44,6 @@ onemkl::rng::mrg32k3a .. rubric:: Description - :name: description :class: sectiontitle @@ -56,7 +53,6 @@ onemkl::rng::mrg32k3a .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst index e299366099..8276e31701 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt19937.rst @@ -16,7 +16,6 @@ onemkl::rng::mt19937 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::mt19937 .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::mt19937 .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +55,6 @@ onemkl::rng::mt19937 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst index 19e2c75117..10771f29cf 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-mt2203.rst @@ -18,7 +18,6 @@ onemkl::rng::mt2203 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ onemkl::rng::mt2203 .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -50,7 +48,6 @@ onemkl::rng::mt2203 .. rubric:: Description - :name: description :class: sectiontitle @@ -64,7 +61,6 @@ onemkl::rng::mt2203 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst index ca3d2e9c42..69d55f600f 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-multinomial.rst @@ -15,7 +15,6 @@ onemkl::rng::multinomial .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -38,7 +37,6 @@ onemkl::rng::multinomial .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -46,7 +44,6 @@ onemkl::rng::multinomial .. rubric:: Description - :name: description :class: sectiontitle @@ -65,7 +62,6 @@ onemkl::rng::multinomial .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst index d80314b54f..38f0b36391 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-negbinomial.rst @@ -15,7 +15,6 @@ onemkl::rng::negbinomial .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::negbinomial .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::negbinomial .. rubric:: Description - :name: description :class: sectiontitle @@ -80,7 +77,6 @@ onemkl::rng::negbinomial .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst index c1fad538d6..9ecc1ad919 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-niederreiter.rst @@ -16,7 +16,6 @@ onemkl::rng::niederreiter .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::niederreiter .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::niederreiter .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +55,6 @@ onemkl::rng::niederreiter .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst index 21445d2242..17bd7c3d9d 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-nondeterministic.rst @@ -16,7 +16,6 @@ onemkl::rng::nondeterministic .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -38,7 +37,6 @@ onemkl::rng::nondeterministic .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -46,7 +44,6 @@ onemkl::rng::nondeterministic .. rubric:: Description - :name: description :class: sectiontitle @@ -55,7 +52,6 @@ onemkl::rng::nondeterministic .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst index 5edcb9f13b..e3046a3d9b 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-philox4x32x10.rst @@ -16,7 +16,6 @@ onemkl::rng::philox4x32x10 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::philox4x32x10 .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::philox4x32x10 .. rubric:: Description - :name: description :class: sectiontitle @@ -57,7 +54,6 @@ onemkl::rng::philox4x32x10 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst index 92b631d247..bf1c084077 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson.rst @@ -15,7 +15,6 @@ onemkl::rng::poisson .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -38,7 +37,6 @@ onemkl::rng::poisson .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -46,7 +44,6 @@ onemkl::rng::poisson .. rubric:: Description - :name: description :class: sectiontitle @@ -71,7 +68,6 @@ onemkl::rng::poisson .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst index 86cfc35fa4..24560bfce6 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-poisson_v.rst @@ -15,7 +15,6 @@ onemkl::rng::poisson_v .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -36,7 +35,6 @@ onemkl::rng::poisson_v .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -44,7 +42,6 @@ onemkl::rng::poisson_v .. rubric:: Description - :name: description :class: sectiontitle @@ -69,7 +66,6 @@ onemkl::rng::poisson_v .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst index af60981f54..547b21faa0 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-r250.rst @@ -16,7 +16,6 @@ onemkl::rng::r250 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::r250 .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::r250 .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +55,6 @@ onemkl::rng::r250 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst index 1abe44fdfe..0151da2071 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-rayleigh.rst @@ -15,7 +15,6 @@ onemkl::rng::rayleigh .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::rayleigh .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::rayleigh .. rubric:: Description - :name: description :class: sectiontitle @@ -78,7 +75,6 @@ onemkl::rng::rayleigh .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst index e4dc897332..d28e667cf6 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-sfmt19937.rst @@ -17,7 +17,6 @@ onemkl::rng::sfmt19937 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ onemkl::rng::sfmt19937 .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -49,7 +47,6 @@ onemkl::rng::sfmt19937 .. rubric:: Description - :name: description :class: sectiontitle @@ -61,7 +58,6 @@ onemkl::rng::sfmt19937 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst index c557c60aab..8680ee57f8 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-skip_ahead.rst @@ -15,7 +15,6 @@ onemkl::rng::skip_ahead .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -44,7 +43,6 @@ onemkl::rng::skip_ahead .. cpp:function:: void skip_ahead (EngineType& engine, std::initializer_list num_to_skip) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -52,7 +50,6 @@ onemkl::rng::skip_ahead .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -99,7 +96,6 @@ onemkl::rng::skip_ahead .. rubric:: Description - :name: description :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst index b765472526..8b153c1f39 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-sobol.rst @@ -16,7 +16,6 @@ onemkl::rng::sobol .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::sobol .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::sobol .. rubric:: Description - :name: description :class: sectiontitle @@ -59,7 +56,6 @@ onemkl::rng::sobol .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst index 1ef6e79d7f..fa9d2a69ab 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-continuous.rst @@ -15,7 +15,6 @@ onemkl::rng::uniform (Continuous) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::uniform (Continuous) .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::uniform (Continuous) .. rubric:: Description - :name: description :class: sectiontitle @@ -73,7 +70,6 @@ onemkl::rng::uniform (Continuous) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst index 5c9e3c547e..17f02567c5 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform-discrete.rst @@ -16,7 +16,6 @@ onemkl::rng::uniform (Discrete) .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -41,7 +40,6 @@ onemkl::rng::uniform (Discrete) .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -49,7 +47,6 @@ onemkl::rng::uniform (Discrete) .. rubric:: Description - :name: description :class: sectiontitle @@ -74,7 +71,6 @@ onemkl::rng::uniform (Discrete) .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst index 7e4610ef3e..4521ae30f6 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-uniform_bits.rst @@ -15,7 +15,6 @@ onemkl::rng::uniform_bits .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -24,7 +23,6 @@ onemkl::rng::uniform_bits .. cpp:function:: class uniform_bits {} .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -32,7 +30,6 @@ onemkl::rng::uniform_bits .. rubric:: Description - :name: description :class: sectiontitle @@ -45,7 +42,6 @@ onemkl::rng::uniform_bits .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst index bc24cb6f84..f89f33d78f 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-weibull.rst @@ -15,7 +15,6 @@ onemkl::rng::weibull .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -42,7 +41,6 @@ onemkl::rng::weibull .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -50,7 +48,6 @@ onemkl::rng::weibull .. rubric:: Description - :name: description :class: sectiontitle @@ -75,7 +72,6 @@ onemkl::rng::weibull .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst b/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst index 5f66bdc27d..c14924aea3 100644 --- a/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst +++ b/source/elements/oneMKL/source/domains/rng/mkl-rng-wichmann_hill.rst @@ -16,7 +16,6 @@ onemkl::rng::wichmann_hill .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -40,7 +39,6 @@ onemkl::rng::wichmann_hill .. cpp:function:: } .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,7 +46,6 @@ onemkl::rng::wichmann_hill .. rubric:: Description - :name: description :class: sectiontitle @@ -58,7 +55,6 @@ onemkl::rng::wichmann_hill .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/rng/onemkl-rng-usage-model.rst b/source/elements/oneMKL/source/domains/rng/onemkl-rng-usage-model.rst index 4fece67b19..5ac3cb2fad 100644 --- a/source/elements/oneMKL/source/domains/rng/onemkl-rng-usage-model.rst +++ b/source/elements/oneMKL/source/domains/rng/onemkl-rng-usage-model.rst @@ -38,7 +38,6 @@ oneMKL RNG Usage Model .. rubric:: Example of RNG Usage - :name: example-of-rng-usage :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst index 2f87d10262..f9bf420502 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemm.rst @@ -17,7 +17,6 @@ onemkl::sparse::gemm .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -25,7 +24,6 @@ onemkl::sparse::gemm .. rubric:: Note - :name: note :class: NoteTipHead @@ -46,7 +44,6 @@ onemkl::sparse::gemm .. cpp:function:: void onemkl::sparse::gemm (cl::sycl::queue & queue, onemkl::transpose transpose_val, const fp alpha, matrixHandle_t handle, const fp \*b, const std::int64_t columns, const std::int64_t ldb, const fp beta, fp \*c, const std::int64_t ldc) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -54,12 +51,10 @@ onemkl::sparse::gemm .. rubric:: Description - :name: description :class: sectiontitle .. rubric:: Note - :name: note-1 :class: NoteTipHead @@ -92,7 +87,6 @@ onemkl::sparse::gemm .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -125,7 +119,6 @@ onemkl::sparse::gemm .. rubric:: Note - :name: note-2 :class: NoteTipHead @@ -147,7 +140,6 @@ onemkl::sparse::gemm .. rubric:: Note - :name: note-3 :class: NoteTipHead @@ -186,7 +178,6 @@ onemkl::sparse::gemm .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst index 964b02d26c..9e79906923 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst @@ -15,7 +15,6 @@ onemkl::sparse::gemv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -23,7 +22,6 @@ onemkl::sparse::gemv .. rubric:: Note - :name: note :class: NoteTipHead @@ -41,7 +39,6 @@ onemkl::sparse::gemv .. cpp:function:: void onemkl::sparse::gemv (cl::sycl::queue & queue, onemkl::transpose transpose_val, fp alpha, matrixHandle_t handle, fp \*x, fp beta, fp \*y) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -49,12 +46,10 @@ onemkl::sparse::gemv .. rubric:: Description - :name: description :class: sectiontitle .. rubric:: Note - :name: note-1 :class: NoteTipHead @@ -86,7 +81,6 @@ onemkl::sparse::gemv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -119,7 +113,6 @@ onemkl::sparse::gemv .. rubric:: Note - :name: note-2 :class: NoteTipHead @@ -141,7 +134,6 @@ onemkl::sparse::gemv .. rubric:: Note - :name: note-3 :class: NoteTipHead @@ -172,7 +164,6 @@ onemkl::sparse::gemv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -197,7 +188,6 @@ onemkl::sparse::gemv .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst index 59d1a0c7b2..8dc4f7ccf3 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvdot.rst @@ -15,7 +15,6 @@ onemkl::sparse::gemvdot .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -23,7 +22,6 @@ onemkl::sparse::gemvdot .. rubric:: Note - :name: note :class: NoteTipHead @@ -44,7 +42,6 @@ onemkl::sparse::gemvdot .. cpp:function:: void onemkl::sparse::gemvdot (cl::sycl::queue & queue, onemkl::transpose transpose_val, fp alpha, matrixHandle_t handle, fp \*x, fp beta, fp \*y, fp \*d) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -52,12 +49,10 @@ onemkl::sparse::gemvdot .. rubric:: Description - :name: description :class: sectiontitle .. rubric:: Note - :name: note-1 :class: NoteTipHead @@ -96,7 +91,6 @@ onemkl::sparse::gemvdot .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -129,7 +123,6 @@ onemkl::sparse::gemvdot .. rubric:: Note - :name: note-2 :class: NoteTipHead @@ -151,7 +144,6 @@ onemkl::sparse::gemvdot .. rubric:: Note - :name: note-3 :class: NoteTipHead @@ -182,7 +174,6 @@ onemkl::sparse::gemvdot .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst index d5c07d5409..6b85c3d21b 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemvoptimize.rst @@ -16,7 +16,6 @@ onemkl::sparse::gemvOptimize .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -24,7 +23,6 @@ onemkl::sparse::gemvOptimize .. rubric:: Note - :name: note :class: NoteTipHead @@ -40,7 +38,6 @@ onemkl::sparse::gemvOptimize .. cpp:function:: void onemkl::sparse::gemvOptimize (cl::sycl::queue & queue, onemkl::transpose transpose_val, matrixHandle_t handle) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,12 +45,10 @@ onemkl::sparse::gemvOptimize .. rubric:: Description - :name: description :class: sectiontitle .. rubric:: Note - :name: note-1 :class: NoteTipHead @@ -66,7 +61,6 @@ onemkl::sparse::gemvOptimize .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -96,7 +90,6 @@ onemkl::sparse::gemvOptimize .. rubric:: Note - :name: note-2 :class: NoteTipHead @@ -114,7 +107,6 @@ onemkl::sparse::gemvOptimize .. rubric:: Note - :name: note-3 :class: NoteTipHead diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst index 84c69ae715..83e95042bf 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-matrixinit.rst @@ -15,7 +15,6 @@ onemkl::sparse::matrixInit .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -25,7 +24,6 @@ onemkl::sparse::matrixInit .. cpp:function:: void onemkl::sparse::matrixInit (matrixHandle_t hMatrix) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -33,7 +31,6 @@ onemkl::sparse::matrixInit .. rubric:: Description - :name: description :class: sectiontitle @@ -43,7 +40,6 @@ onemkl::sparse::matrixInit .. rubric:: Note - :name: note :class: NoteTipHead diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst index f212668960..e04904b813 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-setcsrstructure.rst @@ -15,7 +15,6 @@ onemkl::sparse::setCSRstructure .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -30,7 +29,6 @@ onemkl::sparse::setCSRstructure .. cpp:function:: void onemkl::sparse::setCSRstructure (matrixHandle_t handle, intType nRows, intType nCols, onemkl::index_base index, intType \*rowIndex, intType \*colIndex, fp \*values) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -38,7 +36,6 @@ onemkl::sparse::setCSRstructure .. rubric:: Description - :name: description :class: sectiontitle @@ -48,7 +45,6 @@ onemkl::sparse::setCSRstructure .. rubric:: Note - :name: note :class: NoteTipHead @@ -60,7 +56,6 @@ onemkl::sparse::setCSRstructure .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -108,7 +103,6 @@ onemkl::sparse::setCSRstructure .. rubric:: Note - :name: note-1 :class: NoteTipHead @@ -139,7 +133,6 @@ onemkl::sparse::setCSRstructure .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst index b8a05c8c77..6e603870bc 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-symv.rst @@ -15,7 +15,6 @@ onemkl::sparse::symv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -23,7 +22,6 @@ onemkl::sparse::symv .. rubric:: Note - :name: note :class: NoteTipHead @@ -44,7 +42,6 @@ onemkl::sparse::symv .. cpp:function:: void onemkl::sparse::symv (cl::sycl::queue & queue, onemkl::uplo uplo_val, fp alpha, matrixHandle_t handle, fp \*x, fp beta, fp \*y) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -52,12 +49,10 @@ onemkl::sparse::symv .. rubric:: Description - :name: description :class: sectiontitle .. rubric:: Note - :name: note-1 :class: NoteTipHead @@ -88,7 +83,6 @@ onemkl::sparse::symv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -129,7 +123,6 @@ onemkl::sparse::symv .. rubric:: Note - :name: note-2 :class: NoteTipHead @@ -156,7 +149,6 @@ onemkl::sparse::symv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -169,7 +161,6 @@ onemkl::sparse::symv .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst index 127154811d..5e07c976b1 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmv.rst @@ -16,7 +16,6 @@ onemkl::sparse::trmv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -24,7 +23,6 @@ onemkl::sparse::trmv .. rubric:: Note - :name: note :class: NoteTipHead @@ -45,7 +43,6 @@ onemkl::sparse::trmv .. cpp:function:: void onemkl::sparse::trmv (cl::sycl::queue & queue, onemkl::uplo uplo_val, onemkl::transpose transpose_val, onemkl::diag diag_val, fp alpha, matrixHandle_t handle, fp \*x, fp beta, fp \*y) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -53,12 +50,10 @@ onemkl::sparse::trmv .. rubric:: Description - :name: description :class: sectiontitle .. rubric:: Note - :name: note-1 :class: NoteTipHead @@ -91,7 +86,6 @@ onemkl::sparse::trmv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -142,7 +136,6 @@ onemkl::sparse::trmv .. rubric:: Note - :name: note-2 :class: NoteTipHead @@ -182,7 +175,6 @@ onemkl::sparse::trmv .. rubric:: Note - :name: note-3 :class: NoteTipHead @@ -213,7 +205,6 @@ onemkl::sparse::trmv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst index 3996fe4076..b522c520a8 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trmvoptimize.rst @@ -16,7 +16,6 @@ onemkl::sparse::trmvOptimize .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -24,7 +23,6 @@ onemkl::sparse::trmvOptimize .. rubric:: Note - :name: note :class: NoteTipHead @@ -40,7 +38,6 @@ onemkl::sparse::trmvOptimize .. cpp:function:: void onemkl::sparse::trmvOptimize (cl::sycl::queue & queue, onemkl::uplo uplo_val, onemkl::transpose transpose_val, onemkl::diag diag_val, matrixHandle_t handle) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,12 +45,10 @@ onemkl::sparse::trmvOptimize .. rubric:: Description - :name: description :class: sectiontitle .. rubric:: Note - :name: note-1 :class: NoteTipHead @@ -66,7 +61,6 @@ onemkl::sparse::trmvOptimize .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -114,7 +108,6 @@ onemkl::sparse::trmvOptimize .. rubric:: Note - :name: note-2 :class: NoteTipHead @@ -150,7 +143,6 @@ onemkl::sparse::trmvOptimize .. rubric:: Note - :name: note-3 :class: NoteTipHead diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst index c4f58cf066..da77e90899 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsv.rst @@ -15,7 +15,6 @@ onemkl::sparse::trsv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -23,7 +22,6 @@ onemkl::sparse::trsv .. rubric:: Note - :name: note :class: NoteTipHead @@ -41,7 +39,6 @@ onemkl::sparse::trsv .. cpp:function:: void onemkl::sparse::trsv (cl::sycl::queue & queue, onemkl::uplo uplo_val, onemkl::transpose transpose_val, onemkl::diag diag_val, matrixHandle_t handle, fp \*x, fp \*y) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -49,12 +46,10 @@ onemkl::sparse::trsv .. rubric:: Description - :name: description :class: sectiontitle .. rubric:: Note - :name: note-1 :class: NoteTipHead @@ -84,7 +79,6 @@ onemkl::sparse::trsv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -136,7 +130,6 @@ onemkl::sparse::trsv .. rubric:: Note - :name: note-2 :class: NoteTipHead @@ -172,7 +165,6 @@ onemkl::sparse::trsv .. rubric:: Note - :name: note-3 :class: NoteTipHead @@ -199,7 +191,6 @@ onemkl::sparse::trsv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst index 64b2cdf4b7..4639923f45 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-trsvoptimize.rst @@ -16,7 +16,6 @@ onemkl::sparse::trsvOptimize .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -24,7 +23,6 @@ onemkl::sparse::trsvOptimize .. rubric:: Note - :name: note :class: NoteTipHead @@ -40,7 +38,6 @@ onemkl::sparse::trsvOptimize .. cpp:function:: void onemkl::sparse::trsvOptimize (cl::sycl::queue & queue, onemkl::uplo uplo_val, onemkl::transpose transpose_val, onemkl::diag diag_val, matrixHandle_t handle) .. rubric:: Include Files - :name: include-files :class: sectiontitle @@ -48,12 +45,10 @@ onemkl::sparse::trsvOptimize .. rubric:: Description - :name: description :class: sectiontitle .. rubric:: Note - :name: note-1 :class: NoteTipHead @@ -66,7 +61,6 @@ onemkl::sparse::trsvOptimize .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -114,7 +108,6 @@ onemkl::sparse::trsvOptimize .. rubric:: Note - :name: note-2 :class: NoteTipHead @@ -150,7 +143,6 @@ onemkl::sparse::trsvOptimize .. rubric:: Note - :name: note-3 :class: NoteTipHead diff --git a/source/elements/oneMKL/source/domains/vm/abs.rst b/source/elements/oneMKL/source/domains/vm/abs.rst index 23115ff73e..088203472a 100644 --- a/source/elements/oneMKL/source/domains/vm/abs.rst +++ b/source/elements/oneMKL/source/domains/vm/abs.rst @@ -15,7 +15,6 @@ abs .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ abs .. rubric:: Description - :name: description :class: sectiontitle @@ -102,7 +100,6 @@ abs .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -159,7 +156,6 @@ abs .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -186,7 +182,6 @@ abs .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/acos.rst b/source/elements/oneMKL/source/domains/vm/acos.rst index cb876e89f0..7cc5964ded 100644 --- a/source/elements/oneMKL/source/domains/vm/acos.rst +++ b/source/elements/oneMKL/source/domains/vm/acos.rst @@ -15,7 +15,6 @@ acos .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ acos .. rubric:: Description - :name: description :class: sectiontitle @@ -181,7 +179,6 @@ acos .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -252,7 +249,6 @@ acos .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -279,7 +275,6 @@ acos .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/acosh.rst b/source/elements/oneMKL/source/domains/vm/acosh.rst index 9e39358b82..ad93e8c942 100644 --- a/source/elements/oneMKL/source/domains/vm/acosh.rst +++ b/source/elements/oneMKL/source/domains/vm/acosh.rst @@ -15,7 +15,6 @@ acosh .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ acosh .. rubric:: Description - :name: description :class: sectiontitle @@ -173,7 +171,6 @@ acosh .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -244,7 +241,6 @@ acosh .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -271,7 +267,6 @@ acosh .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/acospi.rst b/source/elements/oneMKL/source/domains/vm/acospi.rst index fa1c77a9e8..6c6e15f47b 100644 --- a/source/elements/oneMKL/source/domains/vm/acospi.rst +++ b/source/elements/oneMKL/source/domains/vm/acospi.rst @@ -15,7 +15,6 @@ acospi .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ acospi .. rubric:: Description - :name: description :class: sectiontitle @@ -101,7 +99,6 @@ acospi .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -172,7 +169,6 @@ acospi .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -199,7 +195,6 @@ acospi .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/add.rst b/source/elements/oneMKL/source/domains/vm/add.rst index 74dc4c6704..8c8c5b4b31 100644 --- a/source/elements/oneMKL/source/domains/vm/add.rst +++ b/source/elements/oneMKL/source/domains/vm/add.rst @@ -16,7 +16,6 @@ add .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -50,7 +49,6 @@ add .. rubric:: Description - :name: description :class: sectiontitle @@ -133,7 +131,6 @@ add .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -212,7 +209,6 @@ add .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -239,7 +235,6 @@ add .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/arg.rst b/source/elements/oneMKL/source/domains/vm/arg.rst index a39fac41ef..fda34f1b57 100644 --- a/source/elements/oneMKL/source/domains/vm/arg.rst +++ b/source/elements/oneMKL/source/domains/vm/arg.rst @@ -15,7 +15,6 @@ arg .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ arg .. rubric:: Description - :name: description :class: sectiontitle @@ -137,7 +135,6 @@ arg .. rubric:: Note - :name: note :class: NoteTipHead @@ -152,7 +149,6 @@ arg .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -209,7 +205,6 @@ arg .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -236,7 +231,6 @@ arg .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/asin.rst b/source/elements/oneMKL/source/domains/vm/asin.rst index 03f661af01..76057d817e 100644 --- a/source/elements/oneMKL/source/domains/vm/asin.rst +++ b/source/elements/oneMKL/source/domains/vm/asin.rst @@ -15,7 +15,6 @@ asin .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ asin .. rubric:: Description - :name: description :class: sectiontitle @@ -108,7 +106,6 @@ asin .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -179,7 +176,6 @@ asin .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -206,7 +202,6 @@ asin .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/asinh.rst b/source/elements/oneMKL/source/domains/vm/asinh.rst index 4fa361f817..994d9de0b7 100644 --- a/source/elements/oneMKL/source/domains/vm/asinh.rst +++ b/source/elements/oneMKL/source/domains/vm/asinh.rst @@ -15,7 +15,6 @@ asinh .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ asinh .. rubric:: Description - :name: description :class: sectiontitle @@ -179,7 +177,6 @@ asinh .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -236,7 +233,6 @@ asinh .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -263,7 +259,6 @@ asinh .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/asinpi.rst b/source/elements/oneMKL/source/domains/vm/asinpi.rst index 421ba21f2a..30034dd1e9 100644 --- a/source/elements/oneMKL/source/domains/vm/asinpi.rst +++ b/source/elements/oneMKL/source/domains/vm/asinpi.rst @@ -15,7 +15,6 @@ asinpi .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ asinpi .. rubric:: Description - :name: description :class: sectiontitle @@ -101,7 +99,6 @@ asinpi .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -172,7 +169,6 @@ asinpi .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -199,7 +195,6 @@ asinpi .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/atan.rst b/source/elements/oneMKL/source/domains/vm/atan.rst index 0452b9caca..d288bffa86 100644 --- a/source/elements/oneMKL/source/domains/vm/atan.rst +++ b/source/elements/oneMKL/source/domains/vm/atan.rst @@ -15,7 +15,6 @@ atan .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ atan .. rubric:: Description - :name: description :class: sectiontitle @@ -102,7 +100,6 @@ atan .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -159,7 +156,6 @@ atan .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -186,7 +182,6 @@ atan .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/atan2.rst b/source/elements/oneMKL/source/domains/vm/atan2.rst index f920c928d1..8e7080b647 100644 --- a/source/elements/oneMKL/source/domains/vm/atan2.rst +++ b/source/elements/oneMKL/source/domains/vm/atan2.rst @@ -15,7 +15,6 @@ atan2 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ atan2 .. rubric:: Description - :name: description :class: sectiontitle @@ -241,7 +239,6 @@ atan2 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -306,7 +303,6 @@ atan2 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -333,7 +329,6 @@ atan2 .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/atan2pi.rst b/source/elements/oneMKL/source/domains/vm/atan2pi.rst index e55678a1be..a6ab420df2 100644 --- a/source/elements/oneMKL/source/domains/vm/atan2pi.rst +++ b/source/elements/oneMKL/source/domains/vm/atan2pi.rst @@ -16,7 +16,6 @@ atan2pi .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ atan2pi .. rubric:: Description - :name: description :class: sectiontitle @@ -244,7 +242,6 @@ atan2pi .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -309,7 +306,6 @@ atan2pi .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -336,7 +332,6 @@ atan2pi .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/atanh.rst b/source/elements/oneMKL/source/domains/vm/atanh.rst index bf3ca9a77c..32bb1df94b 100644 --- a/source/elements/oneMKL/source/domains/vm/atanh.rst +++ b/source/elements/oneMKL/source/domains/vm/atanh.rst @@ -15,7 +15,6 @@ atanh .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ atanh .. rubric:: Description - :name: description :class: sectiontitle @@ -182,7 +180,6 @@ atanh .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -253,7 +250,6 @@ atanh .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -280,7 +276,6 @@ atanh .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/atanpi.rst b/source/elements/oneMKL/source/domains/vm/atanpi.rst index ae7184de41..b92a25a4f6 100644 --- a/source/elements/oneMKL/source/domains/vm/atanpi.rst +++ b/source/elements/oneMKL/source/domains/vm/atanpi.rst @@ -15,7 +15,6 @@ atanpi .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ atanpi .. rubric:: Description - :name: description :class: sectiontitle @@ -95,7 +93,6 @@ atanpi .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -152,7 +149,6 @@ atanpi .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -179,7 +175,6 @@ atanpi .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/cbrt.rst b/source/elements/oneMKL/source/domains/vm/cbrt.rst index 20ba9bc737..658178e00f 100644 --- a/source/elements/oneMKL/source/domains/vm/cbrt.rst +++ b/source/elements/oneMKL/source/domains/vm/cbrt.rst @@ -15,7 +15,6 @@ cbrt .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ cbrt .. rubric:: Description - :name: description :class: sectiontitle @@ -93,7 +91,6 @@ cbrt .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -150,7 +147,6 @@ cbrt .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -177,7 +173,6 @@ cbrt .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/cdfnorm.rst b/source/elements/oneMKL/source/domains/vm/cdfnorm.rst index f4a5d3971f..c436939ce7 100644 --- a/source/elements/oneMKL/source/domains/vm/cdfnorm.rst +++ b/source/elements/oneMKL/source/domains/vm/cdfnorm.rst @@ -16,7 +16,6 @@ cdfnorm .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ cdfnorm .. rubric:: Description - :name: description :class: sectiontitle @@ -150,7 +148,6 @@ cdfnorm .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -221,7 +218,6 @@ cdfnorm .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -248,7 +244,6 @@ cdfnorm .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst b/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst index 968bfbf676..9e7f181119 100644 --- a/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst +++ b/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst @@ -16,7 +16,6 @@ cdfnorminv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ cdfnorminv .. rubric:: Description - :name: description :class: sectiontitle @@ -170,7 +168,6 @@ cdfnorminv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -241,7 +238,6 @@ cdfnorminv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -268,7 +264,6 @@ cdfnorminv .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/ceil.rst b/source/elements/oneMKL/source/domains/vm/ceil.rst index 242689ed64..b73397de6c 100644 --- a/source/elements/oneMKL/source/domains/vm/ceil.rst +++ b/source/elements/oneMKL/source/domains/vm/ceil.rst @@ -16,7 +16,6 @@ ceil .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ ceil .. rubric:: Description - :name: description :class: sectiontitle @@ -99,7 +97,6 @@ ceil .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -156,7 +153,6 @@ ceil .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -183,7 +179,6 @@ ceil .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/cis.rst b/source/elements/oneMKL/source/domains/vm/cis.rst index 9aac8e9514..51a04bf9c7 100644 --- a/source/elements/oneMKL/source/domains/vm/cis.rst +++ b/source/elements/oneMKL/source/domains/vm/cis.rst @@ -16,7 +16,6 @@ cis .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -51,7 +50,6 @@ cis .. rubric:: Description - :name: description :class: sectiontitle @@ -95,7 +93,6 @@ cis .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -166,7 +163,6 @@ cis .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -193,7 +189,6 @@ cis .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/clear_status.rst b/source/elements/oneMKL/source/domains/vm/clear_status.rst index 24f9029eda..810c2c20e9 100644 --- a/source/elements/oneMKL/source/domains/vm/clear_status.rst +++ b/source/elements/oneMKL/source/domains/vm/clear_status.rst @@ -16,14 +16,12 @@ clear_status .. rubric:: Syntax - :name: syntax :class: sectiontitle .. cpp:function:: uint8_t clear_status (queue& exec_queue ) .. rubric:: Description - :name: description :class: sectiontitle @@ -67,7 +65,6 @@ clear_status .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -80,7 +77,6 @@ clear_status .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -93,7 +89,6 @@ clear_status .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/conj.rst b/source/elements/oneMKL/source/domains/vm/conj.rst index 2f95eea0e0..b9b89cada4 100644 --- a/source/elements/oneMKL/source/domains/vm/conj.rst +++ b/source/elements/oneMKL/source/domains/vm/conj.rst @@ -15,7 +15,6 @@ conj .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ conj .. rubric:: Description - :name: description :class: sectiontitle @@ -64,7 +62,6 @@ conj .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -121,7 +118,6 @@ conj .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -148,7 +144,6 @@ conj .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/copysign.rst b/source/elements/oneMKL/source/domains/vm/copysign.rst index 8d6d04d999..5a2071a958 100644 --- a/source/elements/oneMKL/source/domains/vm/copysign.rst +++ b/source/elements/oneMKL/source/domains/vm/copysign.rst @@ -16,7 +16,6 @@ copysign .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ copysign .. rubric:: Description - :name: description :class: sectiontitle @@ -87,7 +85,6 @@ copysign .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -152,7 +149,6 @@ copysign .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -179,7 +175,6 @@ copysign .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/cos.rst b/source/elements/oneMKL/source/domains/vm/cos.rst index fcff4ac46a..d2b133a0e5 100644 --- a/source/elements/oneMKL/source/domains/vm/cos.rst +++ b/source/elements/oneMKL/source/domains/vm/cos.rst @@ -15,7 +15,6 @@ cos .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ cos .. rubric:: Description - :name: description :class: sectiontitle @@ -109,7 +107,6 @@ cos .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -180,7 +177,6 @@ cos .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -207,7 +203,6 @@ cos .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/cosd.rst b/source/elements/oneMKL/source/domains/vm/cosd.rst index c44f1a59cb..338105754d 100644 --- a/source/elements/oneMKL/source/domains/vm/cosd.rst +++ b/source/elements/oneMKL/source/domains/vm/cosd.rst @@ -15,7 +15,6 @@ cosd .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ cosd .. rubric:: Description - :name: description :class: sectiontitle @@ -104,7 +102,6 @@ cosd .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -175,7 +172,6 @@ cosd .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -202,7 +198,6 @@ cosd .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/cosh.rst b/source/elements/oneMKL/source/domains/vm/cosh.rst index 04db789447..eda5621441 100644 --- a/source/elements/oneMKL/source/domains/vm/cosh.rst +++ b/source/elements/oneMKL/source/domains/vm/cosh.rst @@ -15,7 +15,6 @@ cosh .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ cosh .. rubric:: Description - :name: description :class: sectiontitle @@ -204,7 +202,6 @@ cosh .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -275,7 +272,6 @@ cosh .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -302,7 +298,6 @@ cosh .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/cospi.rst b/source/elements/oneMKL/source/domains/vm/cospi.rst index e4db0198db..25c0cf9746 100644 --- a/source/elements/oneMKL/source/domains/vm/cospi.rst +++ b/source/elements/oneMKL/source/domains/vm/cospi.rst @@ -15,7 +15,6 @@ cospi .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ cospi .. rubric:: Description - :name: description :class: sectiontitle @@ -106,7 +104,6 @@ cospi .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -177,7 +174,6 @@ cospi .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -204,7 +200,6 @@ cospi .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/create_error_handler.rst b/source/elements/oneMKL/source/domains/vm/create_error_handler.rst index 2da3c25d0c..4bb5fb8d69 100644 --- a/source/elements/oneMKL/source/domains/vm/create_error_handler.rst +++ b/source/elements/oneMKL/source/domains/vm/create_error_handler.rst @@ -15,7 +15,6 @@ create_error_handler .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -52,7 +51,6 @@ create_error_handler .. rubric:: Description - :name: description :class: sectiontitle @@ -165,7 +163,6 @@ create_error_handler .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -200,7 +197,6 @@ create_error_handler .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -213,7 +209,6 @@ create_error_handler .. rubric:: Examples - :name: examples :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/div.rst b/source/elements/oneMKL/source/domains/vm/div.rst index 8cfb22771b..daba6752f9 100644 --- a/source/elements/oneMKL/source/domains/vm/div.rst +++ b/source/elements/oneMKL/source/domains/vm/div.rst @@ -15,7 +15,6 @@ div .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ div .. rubric:: Description - :name: description :class: sectiontitle @@ -138,7 +136,6 @@ div .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -217,7 +214,6 @@ div .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -244,7 +240,6 @@ div .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/erf.rst b/source/elements/oneMKL/source/domains/vm/erf.rst index 66131c940c..0a91024a57 100644 --- a/source/elements/oneMKL/source/domains/vm/erf.rst +++ b/source/elements/oneMKL/source/domains/vm/erf.rst @@ -15,7 +15,6 @@ erf .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ erf .. rubric:: Description - :name: description :class: sectiontitle @@ -155,7 +153,6 @@ erf .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -212,7 +209,6 @@ erf .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -239,7 +235,6 @@ erf .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/erfc.rst b/source/elements/oneMKL/source/domains/vm/erfc.rst index 6968386358..6e999e3a7d 100644 --- a/source/elements/oneMKL/source/domains/vm/erfc.rst +++ b/source/elements/oneMKL/source/domains/vm/erfc.rst @@ -15,7 +15,6 @@ erfc .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ erfc .. rubric:: Description - :name: description :class: sectiontitle @@ -159,7 +157,6 @@ erfc .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -230,7 +227,6 @@ erfc .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -257,7 +253,6 @@ erfc .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/erfcinv.rst b/source/elements/oneMKL/source/domains/vm/erfcinv.rst index 6fd091a9a4..64017dc110 100644 --- a/source/elements/oneMKL/source/domains/vm/erfcinv.rst +++ b/source/elements/oneMKL/source/domains/vm/erfcinv.rst @@ -16,7 +16,6 @@ erfcinv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ erfcinv .. rubric:: Description - :name: description :class: sectiontitle @@ -172,7 +170,6 @@ erfcinv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -243,7 +240,6 @@ erfcinv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -270,7 +266,6 @@ erfcinv .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/erfinv.rst b/source/elements/oneMKL/source/domains/vm/erfinv.rst index ba07cda48a..2d5e415b4b 100644 --- a/source/elements/oneMKL/source/domains/vm/erfinv.rst +++ b/source/elements/oneMKL/source/domains/vm/erfinv.rst @@ -15,7 +15,6 @@ erfinv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ erfinv .. rubric:: Description - :name: description :class: sectiontitle @@ -174,7 +172,6 @@ erfinv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -245,7 +242,6 @@ erfinv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -272,7 +268,6 @@ erfinv .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/exp.rst b/source/elements/oneMKL/source/domains/vm/exp.rst index aa8184ec97..4f94e3dc2b 100644 --- a/source/elements/oneMKL/source/domains/vm/exp.rst +++ b/source/elements/oneMKL/source/domains/vm/exp.rst @@ -15,7 +15,6 @@ exp .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ exp .. rubric:: Description - :name: description :class: sectiontitle @@ -198,7 +196,6 @@ exp .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -269,7 +266,6 @@ exp .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -296,7 +292,6 @@ exp .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/exp10.rst b/source/elements/oneMKL/source/domains/vm/exp10.rst index f91ba1adeb..2e2d55ce0a 100644 --- a/source/elements/oneMKL/source/domains/vm/exp10.rst +++ b/source/elements/oneMKL/source/domains/vm/exp10.rst @@ -15,7 +15,6 @@ exp10 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ exp10 .. rubric:: Description - :name: description :class: sectiontitle @@ -113,7 +111,6 @@ exp10 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -184,7 +181,6 @@ exp10 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -211,7 +207,6 @@ exp10 .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/exp2.rst b/source/elements/oneMKL/source/domains/vm/exp2.rst index 52f3f4c805..6dfa6e4eab 100644 --- a/source/elements/oneMKL/source/domains/vm/exp2.rst +++ b/source/elements/oneMKL/source/domains/vm/exp2.rst @@ -15,7 +15,6 @@ exp2 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ exp2 .. rubric:: Description - :name: description :class: sectiontitle @@ -112,7 +110,6 @@ exp2 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -183,7 +180,6 @@ exp2 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -210,7 +206,6 @@ exp2 .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/expint1.rst b/source/elements/oneMKL/source/domains/vm/expint1.rst index 706a0f98d0..9a570ded2e 100644 --- a/source/elements/oneMKL/source/domains/vm/expint1.rst +++ b/source/elements/oneMKL/source/domains/vm/expint1.rst @@ -15,7 +15,6 @@ expint1 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ expint1 .. rubric:: Description - :name: description :class: sectiontitle @@ -104,7 +102,6 @@ expint1 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -175,7 +172,6 @@ expint1 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -202,7 +198,6 @@ expint1 .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/expm1.rst b/source/elements/oneMKL/source/domains/vm/expm1.rst index 2a6999367e..964786f03c 100644 --- a/source/elements/oneMKL/source/domains/vm/expm1.rst +++ b/source/elements/oneMKL/source/domains/vm/expm1.rst @@ -15,7 +15,6 @@ expm1 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ expm1 .. rubric:: Description - :name: description :class: sectiontitle @@ -110,7 +108,6 @@ expm1 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -181,7 +178,6 @@ expm1 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -208,7 +204,6 @@ expm1 .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/fdim.rst b/source/elements/oneMKL/source/domains/vm/fdim.rst index f9c2f6d314..e6fdaedf93 100644 --- a/source/elements/oneMKL/source/domains/vm/fdim.rst +++ b/source/elements/oneMKL/source/domains/vm/fdim.rst @@ -17,7 +17,6 @@ fdim .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ fdim .. rubric:: Description - :name: description :class: sectiontitle @@ -96,7 +94,6 @@ fdim .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -161,7 +158,6 @@ fdim .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -188,7 +184,6 @@ fdim .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/floor.rst b/source/elements/oneMKL/source/domains/vm/floor.rst index 4df92420db..af3bf607cc 100644 --- a/source/elements/oneMKL/source/domains/vm/floor.rst +++ b/source/elements/oneMKL/source/domains/vm/floor.rst @@ -16,7 +16,6 @@ floor .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ floor .. rubric:: Description - :name: description :class: sectiontitle @@ -99,7 +97,6 @@ floor .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -156,7 +153,6 @@ floor .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -183,7 +179,6 @@ floor .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/fmax.rst b/source/elements/oneMKL/source/domains/vm/fmax.rst index edd398d8ff..1f361bcbc1 100644 --- a/source/elements/oneMKL/source/domains/vm/fmax.rst +++ b/source/elements/oneMKL/source/domains/vm/fmax.rst @@ -16,7 +16,6 @@ fmax .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ fmax .. rubric:: Description - :name: description :class: sectiontitle @@ -92,7 +90,6 @@ fmax .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -157,7 +154,6 @@ fmax .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -184,7 +180,6 @@ fmax .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/fmin.rst b/source/elements/oneMKL/source/domains/vm/fmin.rst index b9d418baf9..716f5fcbfa 100644 --- a/source/elements/oneMKL/source/domains/vm/fmin.rst +++ b/source/elements/oneMKL/source/domains/vm/fmin.rst @@ -16,7 +16,6 @@ fmin .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ fmin .. rubric:: Description - :name: description :class: sectiontitle @@ -92,7 +90,6 @@ fmin .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -157,7 +154,6 @@ fmin .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -184,7 +180,6 @@ fmin .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/fmod.rst b/source/elements/oneMKL/source/domains/vm/fmod.rst index fdebdbaa2f..0f7e0fd5a6 100644 --- a/source/elements/oneMKL/source/domains/vm/fmod.rst +++ b/source/elements/oneMKL/source/domains/vm/fmod.rst @@ -16,7 +16,6 @@ fmod .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ fmod .. rubric:: Description - :name: description :class: sectiontitle @@ -109,7 +107,6 @@ fmod .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -188,7 +185,6 @@ fmod .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -215,7 +211,6 @@ fmod .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/frac.rst b/source/elements/oneMKL/source/domains/vm/frac.rst index 10ed665a8d..eaacde4f06 100644 --- a/source/elements/oneMKL/source/domains/vm/frac.rst +++ b/source/elements/oneMKL/source/domains/vm/frac.rst @@ -15,7 +15,6 @@ frac .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ frac .. rubric:: Description - :name: description :class: sectiontitle @@ -98,7 +96,6 @@ frac .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -155,7 +152,6 @@ frac .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -182,7 +178,6 @@ frac .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/get_mode.rst b/source/elements/oneMKL/source/domains/vm/get_mode.rst index b116e60e29..0510c0e192 100644 --- a/source/elements/oneMKL/source/domains/vm/get_mode.rst +++ b/source/elements/oneMKL/source/domains/vm/get_mode.rst @@ -15,14 +15,12 @@ get_mode .. rubric:: Syntax - :name: syntax :class: sectiontitle .. cpp:function:: uint64_t get_mode( queue& exec_queue ) .. rubric:: Description - :name: description :class: sectiontitle @@ -65,7 +63,6 @@ get_mode .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -78,7 +75,6 @@ get_mode .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -91,7 +87,6 @@ get_mode .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/get_status.rst b/source/elements/oneMKL/source/domains/vm/get_status.rst index a78b13f0c2..031cb194e4 100644 --- a/source/elements/oneMKL/source/domains/vm/get_status.rst +++ b/source/elements/oneMKL/source/domains/vm/get_status.rst @@ -15,14 +15,12 @@ get_status .. rubric:: Syntax - :name: syntax :class: sectiontitle .. cpp:function:: uint8_t get_status (queue& exec_queue ) .. rubric:: Description - :name: description :class: sectiontitle @@ -65,7 +63,6 @@ get_status .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -78,7 +75,6 @@ get_status .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -91,7 +87,6 @@ get_status .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/hypot.rst b/source/elements/oneMKL/source/domains/vm/hypot.rst index 2c2302b7ed..afa3e5b384 100644 --- a/source/elements/oneMKL/source/domains/vm/hypot.rst +++ b/source/elements/oneMKL/source/domains/vm/hypot.rst @@ -15,7 +15,6 @@ hypot .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ hypot .. rubric:: Description - :name: description :class: sectiontitle @@ -125,7 +123,6 @@ hypot .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -190,7 +187,6 @@ hypot .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -217,7 +213,6 @@ hypot .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/inv.rst b/source/elements/oneMKL/source/domains/vm/inv.rst index d007c06408..4b22d2bbaa 100644 --- a/source/elements/oneMKL/source/domains/vm/inv.rst +++ b/source/elements/oneMKL/source/domains/vm/inv.rst @@ -15,7 +15,6 @@ inv .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ inv .. rubric:: Description - :name: description :class: sectiontitle @@ -91,7 +89,6 @@ inv .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -162,7 +159,6 @@ inv .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -189,7 +185,6 @@ inv .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/invcbrt.rst b/source/elements/oneMKL/source/domains/vm/invcbrt.rst index c4ea4e5908..5708a94470 100644 --- a/source/elements/oneMKL/source/domains/vm/invcbrt.rst +++ b/source/elements/oneMKL/source/domains/vm/invcbrt.rst @@ -15,7 +15,6 @@ invcbrt .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ invcbrt .. rubric:: Description - :name: description :class: sectiontitle @@ -91,7 +89,6 @@ invcbrt .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -162,7 +159,6 @@ invcbrt .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -189,7 +185,6 @@ invcbrt .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/invsqrt.rst b/source/elements/oneMKL/source/domains/vm/invsqrt.rst index dd9e56e795..4a04ab12a9 100644 --- a/source/elements/oneMKL/source/domains/vm/invsqrt.rst +++ b/source/elements/oneMKL/source/domains/vm/invsqrt.rst @@ -15,7 +15,6 @@ invsqrt .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ invsqrt .. rubric:: Description - :name: description :class: sectiontitle @@ -94,7 +92,6 @@ invsqrt .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -165,7 +162,6 @@ invsqrt .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -192,7 +188,6 @@ invsqrt .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/lgamma.rst b/source/elements/oneMKL/source/domains/vm/lgamma.rst index 3376107cbf..e89017d9e2 100644 --- a/source/elements/oneMKL/source/domains/vm/lgamma.rst +++ b/source/elements/oneMKL/source/domains/vm/lgamma.rst @@ -16,7 +16,6 @@ lgamma .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ lgamma .. rubric:: Description - :name: description :class: sectiontitle @@ -108,7 +106,6 @@ lgamma .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -179,7 +176,6 @@ lgamma .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -206,7 +202,6 @@ lgamma .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/linearfrac.rst b/source/elements/oneMKL/source/domains/vm/linearfrac.rst index f100335f3f..04e9495324 100644 --- a/source/elements/oneMKL/source/domains/vm/linearfrac.rst +++ b/source/elements/oneMKL/source/domains/vm/linearfrac.rst @@ -16,7 +16,6 @@ linearfrac .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ linearfrac .. rubric:: Description - :name: description :class: sectiontitle @@ -122,7 +120,6 @@ linearfrac .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -233,7 +230,6 @@ linearfrac .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -260,7 +256,6 @@ linearfrac .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/ln.rst b/source/elements/oneMKL/source/domains/vm/ln.rst index 3adca28d3d..ca805df639 100644 --- a/source/elements/oneMKL/source/domains/vm/ln.rst +++ b/source/elements/oneMKL/source/domains/vm/ln.rst @@ -15,7 +15,6 @@ ln .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ ln .. rubric:: Description - :name: description :class: sectiontitle @@ -172,7 +170,6 @@ ln .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -243,7 +240,6 @@ ln .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -270,7 +266,6 @@ ln .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/log10.rst b/source/elements/oneMKL/source/domains/vm/log10.rst index aa24529abf..4e859dc8ea 100644 --- a/source/elements/oneMKL/source/domains/vm/log10.rst +++ b/source/elements/oneMKL/source/domains/vm/log10.rst @@ -15,7 +15,6 @@ log10 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ log10 .. rubric:: Description - :name: description :class: sectiontitle @@ -173,7 +171,6 @@ log10 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -244,7 +241,6 @@ log10 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -271,7 +267,6 @@ log10 .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/log1p.rst b/source/elements/oneMKL/source/domains/vm/log1p.rst index df294ffd5c..234cfe2a0b 100644 --- a/source/elements/oneMKL/source/domains/vm/log1p.rst +++ b/source/elements/oneMKL/source/domains/vm/log1p.rst @@ -16,7 +16,6 @@ log1p .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ log1p .. rubric:: Description - :name: description :class: sectiontitle @@ -98,7 +96,6 @@ log1p .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -169,7 +166,6 @@ log1p .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -196,7 +192,6 @@ log1p .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/log2.rst b/source/elements/oneMKL/source/domains/vm/log2.rst index 06303e8ffb..ca4a96a6f4 100644 --- a/source/elements/oneMKL/source/domains/vm/log2.rst +++ b/source/elements/oneMKL/source/domains/vm/log2.rst @@ -15,7 +15,6 @@ log2 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ log2 .. rubric:: Description - :name: description :class: sectiontitle @@ -97,7 +95,6 @@ log2 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -168,7 +165,6 @@ log2 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -195,7 +191,6 @@ log2 .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/logb.rst b/source/elements/oneMKL/source/domains/vm/logb.rst index 914ded715d..bcc3c10d9e 100644 --- a/source/elements/oneMKL/source/domains/vm/logb.rst +++ b/source/elements/oneMKL/source/domains/vm/logb.rst @@ -15,7 +15,6 @@ logb .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ logb .. rubric:: Description - :name: description :class: sectiontitle @@ -94,7 +92,6 @@ logb .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -165,7 +162,6 @@ logb .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -192,7 +188,6 @@ logb .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/maxmag.rst b/source/elements/oneMKL/source/domains/vm/maxmag.rst index 586324cb32..240dbb7a1e 100644 --- a/source/elements/oneMKL/source/domains/vm/maxmag.rst +++ b/source/elements/oneMKL/source/domains/vm/maxmag.rst @@ -16,7 +16,6 @@ maxmag .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ maxmag .. rubric:: Description - :name: description :class: sectiontitle @@ -102,7 +100,6 @@ maxmag .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -167,7 +164,6 @@ maxmag .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -194,7 +190,6 @@ maxmag .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/minmag.rst b/source/elements/oneMKL/source/domains/vm/minmag.rst index ff8155a4bc..1b21d8c386 100644 --- a/source/elements/oneMKL/source/domains/vm/minmag.rst +++ b/source/elements/oneMKL/source/domains/vm/minmag.rst @@ -16,7 +16,6 @@ minmag .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ minmag .. rubric:: Description - :name: description :class: sectiontitle @@ -102,7 +100,6 @@ minmag .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -167,7 +164,6 @@ minmag .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -194,7 +190,6 @@ minmag .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/modf.rst b/source/elements/oneMKL/source/domains/vm/modf.rst index fa4bdb2c2a..4524516526 100644 --- a/source/elements/oneMKL/source/domains/vm/modf.rst +++ b/source/elements/oneMKL/source/domains/vm/modf.rst @@ -16,7 +16,6 @@ modf .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ modf .. rubric:: Description - :name: description :class: sectiontitle @@ -106,7 +104,6 @@ modf .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -163,7 +160,6 @@ modf .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -202,7 +198,6 @@ modf .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/mul.rst b/source/elements/oneMKL/source/domains/vm/mul.rst index 0a254f5626..bd2f2df18b 100644 --- a/source/elements/oneMKL/source/domains/vm/mul.rst +++ b/source/elements/oneMKL/source/domains/vm/mul.rst @@ -16,7 +16,6 @@ mul .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -50,7 +49,6 @@ mul .. rubric:: Description - :name: description :class: sectiontitle @@ -173,7 +171,6 @@ mul .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -252,7 +249,6 @@ mul .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -279,7 +275,6 @@ mul .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/mulbyconj.rst b/source/elements/oneMKL/source/domains/vm/mulbyconj.rst index 22310234f9..f40c584273 100644 --- a/source/elements/oneMKL/source/domains/vm/mulbyconj.rst +++ b/source/elements/oneMKL/source/domains/vm/mulbyconj.rst @@ -16,7 +16,6 @@ mulbyconj .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ mulbyconj .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -127,7 +125,6 @@ mulbyconj .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -154,7 +151,6 @@ mulbyconj .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/nearbyint.rst b/source/elements/oneMKL/source/domains/vm/nearbyint.rst index b3dc44e679..a3dc40235c 100644 --- a/source/elements/oneMKL/source/domains/vm/nearbyint.rst +++ b/source/elements/oneMKL/source/domains/vm/nearbyint.rst @@ -16,7 +16,6 @@ nearbyint .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ nearbyint .. rubric:: Description - :name: description :class: sectiontitle @@ -95,7 +93,6 @@ nearbyint .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -152,7 +149,6 @@ nearbyint .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -179,7 +175,6 @@ nearbyint .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/nextafter.rst b/source/elements/oneMKL/source/domains/vm/nextafter.rst index 72ccce1262..5b02945fb0 100644 --- a/source/elements/oneMKL/source/domains/vm/nextafter.rst +++ b/source/elements/oneMKL/source/domains/vm/nextafter.rst @@ -18,7 +18,6 @@ nextafter .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -50,7 +49,6 @@ nextafter .. rubric:: Description - :name: description :class: sectiontitle @@ -85,7 +83,6 @@ nextafter .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -164,7 +161,6 @@ nextafter .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -191,7 +187,6 @@ nextafter .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/pow.rst b/source/elements/oneMKL/source/domains/vm/pow.rst index a079aeff6d..00458fd1e6 100644 --- a/source/elements/oneMKL/source/domains/vm/pow.rst +++ b/source/elements/oneMKL/source/domains/vm/pow.rst @@ -15,7 +15,6 @@ pow .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ pow .. rubric:: Description - :name: description :class: sectiontitle @@ -344,7 +342,6 @@ pow .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -423,7 +420,6 @@ pow .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -450,7 +446,6 @@ pow .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/pow2o3.rst b/source/elements/oneMKL/source/domains/vm/pow2o3.rst index fbf7f4458e..474dd87b73 100644 --- a/source/elements/oneMKL/source/domains/vm/pow2o3.rst +++ b/source/elements/oneMKL/source/domains/vm/pow2o3.rst @@ -15,7 +15,6 @@ pow2o3 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ pow2o3 .. rubric:: Description - :name: description :class: sectiontitle @@ -91,7 +89,6 @@ pow2o3 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -162,7 +159,6 @@ pow2o3 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -189,7 +185,6 @@ pow2o3 .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/pow3o2.rst b/source/elements/oneMKL/source/domains/vm/pow3o2.rst index 316f3e1f94..86ba356434 100644 --- a/source/elements/oneMKL/source/domains/vm/pow3o2.rst +++ b/source/elements/oneMKL/source/domains/vm/pow3o2.rst @@ -15,7 +15,6 @@ pow3o2 .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ pow3o2 .. rubric:: Description - :name: description :class: sectiontitle @@ -110,7 +108,6 @@ pow3o2 .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -181,7 +178,6 @@ pow3o2 .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -208,7 +204,6 @@ pow3o2 .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/powr.rst b/source/elements/oneMKL/source/domains/vm/powr.rst index 55eb576d3d..b25d1c03f3 100644 --- a/source/elements/oneMKL/source/domains/vm/powr.rst +++ b/source/elements/oneMKL/source/domains/vm/powr.rst @@ -16,7 +16,6 @@ powr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ powr .. rubric:: Description - :name: description :class: sectiontitle @@ -180,7 +178,6 @@ powr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -259,7 +256,6 @@ powr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -286,7 +282,6 @@ powr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/powx.rst b/source/elements/oneMKL/source/domains/vm/powx.rst index 410ad0185f..68ac99b108 100644 --- a/source/elements/oneMKL/source/domains/vm/powx.rst +++ b/source/elements/oneMKL/source/domains/vm/powx.rst @@ -15,7 +15,6 @@ powx .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ powx .. rubric:: Description - :name: description :class: sectiontitle @@ -75,7 +73,6 @@ powx .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -154,7 +151,6 @@ powx .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -181,7 +177,6 @@ powx .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/remainder.rst b/source/elements/oneMKL/source/domains/vm/remainder.rst index 2d8e7ca958..44088066e4 100644 --- a/source/elements/oneMKL/source/domains/vm/remainder.rst +++ b/source/elements/oneMKL/source/domains/vm/remainder.rst @@ -17,7 +17,6 @@ remainder .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ remainder .. rubric:: Description - :name: description :class: sectiontitle @@ -110,7 +108,6 @@ remainder .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -189,7 +186,6 @@ remainder .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -216,7 +212,6 @@ remainder .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/rint.rst b/source/elements/oneMKL/source/domains/vm/rint.rst index 16440b9e59..337e970a9e 100644 --- a/source/elements/oneMKL/source/domains/vm/rint.rst +++ b/source/elements/oneMKL/source/domains/vm/rint.rst @@ -15,7 +15,6 @@ rint .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ rint .. rubric:: Description - :name: description :class: sectiontitle @@ -113,7 +111,6 @@ rint .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -170,7 +167,6 @@ rint .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -197,7 +193,6 @@ rint .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/round.rst b/source/elements/oneMKL/source/domains/vm/round.rst index af924605f0..cdb8163a93 100644 --- a/source/elements/oneMKL/source/domains/vm/round.rst +++ b/source/elements/oneMKL/source/domains/vm/round.rst @@ -16,7 +16,6 @@ round .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ round .. rubric:: Description - :name: description :class: sectiontitle @@ -97,7 +95,6 @@ round .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -154,7 +151,6 @@ round .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -181,7 +177,6 @@ round .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/set_status.rst b/source/elements/oneMKL/source/domains/vm/set_status.rst index 537d3128fe..a41e41f549 100644 --- a/source/elements/oneMKL/source/domains/vm/set_status.rst +++ b/source/elements/oneMKL/source/domains/vm/set_status.rst @@ -16,14 +16,12 @@ set_status .. rubric:: Syntax - :name: syntax :class: sectiontitle .. cpp:function:: uint8_t set_status (queue& exec_queue,uint_8 new_status ) .. rubric:: Description - :name: description :class: sectiontitle @@ -67,7 +65,6 @@ set_status .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -84,7 +81,6 @@ set_status .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -97,7 +93,6 @@ set_status .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/setmode.rst b/source/elements/oneMKL/source/domains/vm/setmode.rst index b1151cefb8..2814977c3f 100644 --- a/source/elements/oneMKL/source/domains/vm/setmode.rst +++ b/source/elements/oneMKL/source/domains/vm/setmode.rst @@ -16,14 +16,12 @@ setmode .. rubric:: Syntax - :name: syntax :class: sectiontitle .. cpp:function:: uint64_t set_mode(queue& exec_queue, uint64_t new_mode ) .. rubric:: Description - :name: description :class: sectiontitle @@ -88,7 +86,6 @@ setmode .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -105,7 +102,6 @@ setmode .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -118,7 +114,6 @@ setmode .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/sin.rst b/source/elements/oneMKL/source/domains/vm/sin.rst index d63e14023c..c253d1dcd8 100644 --- a/source/elements/oneMKL/source/domains/vm/sin.rst +++ b/source/elements/oneMKL/source/domains/vm/sin.rst @@ -15,7 +15,6 @@ sin .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ sin .. rubric:: Description - :name: description :class: sectiontitle @@ -109,7 +107,6 @@ sin .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -180,7 +177,6 @@ sin .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -207,7 +203,6 @@ sin .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/sincos.rst b/source/elements/oneMKL/source/domains/vm/sincos.rst index 7a7e8f32bb..cc2b736615 100644 --- a/source/elements/oneMKL/source/domains/vm/sincos.rst +++ b/source/elements/oneMKL/source/domains/vm/sincos.rst @@ -15,7 +15,6 @@ sincos .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ sincos .. rubric:: Description - :name: description :class: sectiontitle @@ -107,7 +105,6 @@ sincos .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -178,7 +175,6 @@ sincos .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -215,7 +211,6 @@ sincos .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/sind.rst b/source/elements/oneMKL/source/domains/vm/sind.rst index 2dc6ce565a..b15fed9079 100644 --- a/source/elements/oneMKL/source/domains/vm/sind.rst +++ b/source/elements/oneMKL/source/domains/vm/sind.rst @@ -15,7 +15,6 @@ sind .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ sind .. rubric:: Description - :name: description :class: sectiontitle @@ -104,7 +102,6 @@ sind .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -175,7 +172,6 @@ sind .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -202,7 +198,6 @@ sind .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/sinh.rst b/source/elements/oneMKL/source/domains/vm/sinh.rst index f422ec1af9..b1abc4c19d 100644 --- a/source/elements/oneMKL/source/domains/vm/sinh.rst +++ b/source/elements/oneMKL/source/domains/vm/sinh.rst @@ -15,7 +15,6 @@ sinh .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ sinh .. rubric:: Description - :name: description :class: sectiontitle @@ -204,7 +202,6 @@ sinh .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -275,7 +272,6 @@ sinh .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -302,7 +298,6 @@ sinh .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/sinpi.rst b/source/elements/oneMKL/source/domains/vm/sinpi.rst index f5bac436e2..6b34658bf0 100644 --- a/source/elements/oneMKL/source/domains/vm/sinpi.rst +++ b/source/elements/oneMKL/source/domains/vm/sinpi.rst @@ -15,7 +15,6 @@ sinpi .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ sinpi .. rubric:: Description - :name: description :class: sectiontitle @@ -109,7 +107,6 @@ sinpi .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -180,7 +177,6 @@ sinpi .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -207,7 +203,6 @@ sinpi .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/sqr.rst b/source/elements/oneMKL/source/domains/vm/sqr.rst index 813718631e..cb6314d90e 100644 --- a/source/elements/oneMKL/source/domains/vm/sqr.rst +++ b/source/elements/oneMKL/source/domains/vm/sqr.rst @@ -15,7 +15,6 @@ sqr .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ sqr .. rubric:: Description - :name: description :class: sectiontitle @@ -93,7 +91,6 @@ sqr .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -150,7 +147,6 @@ sqr .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -177,7 +173,6 @@ sqr .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/sqrt.rst b/source/elements/oneMKL/source/domains/vm/sqrt.rst index d520cf0eb8..4426f037fb 100644 --- a/source/elements/oneMKL/source/domains/vm/sqrt.rst +++ b/source/elements/oneMKL/source/domains/vm/sqrt.rst @@ -15,7 +15,6 @@ sqrt .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ sqrt .. rubric:: Description - :name: description :class: sectiontitle @@ -175,7 +173,6 @@ sqrt .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -246,7 +243,6 @@ sqrt .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -273,7 +269,6 @@ sqrt .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/sub.rst b/source/elements/oneMKL/source/domains/vm/sub.rst index 7cc96586d5..88ac20d5ce 100644 --- a/source/elements/oneMKL/source/domains/vm/sub.rst +++ b/source/elements/oneMKL/source/domains/vm/sub.rst @@ -16,7 +16,6 @@ sub .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -50,7 +49,6 @@ sub .. rubric:: Description - :name: description :class: sectiontitle @@ -133,7 +131,6 @@ sub .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -212,7 +209,6 @@ sub .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -239,7 +235,6 @@ sub .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/tan.rst b/source/elements/oneMKL/source/domains/vm/tan.rst index f0e7680baa..46aa6e81fa 100644 --- a/source/elements/oneMKL/source/domains/vm/tan.rst +++ b/source/elements/oneMKL/source/domains/vm/tan.rst @@ -15,7 +15,6 @@ tan .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ tan .. rubric:: Description - :name: description :class: sectiontitle @@ -109,7 +107,6 @@ tan .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -180,7 +177,6 @@ tan .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -207,7 +203,6 @@ tan .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/tand.rst b/source/elements/oneMKL/source/domains/vm/tand.rst index 1d24c74512..4704de8e89 100644 --- a/source/elements/oneMKL/source/domains/vm/tand.rst +++ b/source/elements/oneMKL/source/domains/vm/tand.rst @@ -15,7 +15,6 @@ tand .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ tand .. rubric:: Description - :name: description :class: sectiontitle @@ -104,7 +102,6 @@ tand .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -175,7 +172,6 @@ tand .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -202,7 +198,6 @@ tand .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/tanh.rst b/source/elements/oneMKL/source/domains/vm/tanh.rst index 6739300176..c11282b0e9 100644 --- a/source/elements/oneMKL/source/domains/vm/tanh.rst +++ b/source/elements/oneMKL/source/domains/vm/tanh.rst @@ -15,7 +15,6 @@ tanh .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -49,7 +48,6 @@ tanh .. rubric:: Description - :name: description :class: sectiontitle @@ -178,7 +176,6 @@ tanh .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -235,7 +232,6 @@ tanh .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -262,7 +258,6 @@ tanh .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/tanpi.rst b/source/elements/oneMKL/source/domains/vm/tanpi.rst index b71df94760..9650fd96f0 100644 --- a/source/elements/oneMKL/source/domains/vm/tanpi.rst +++ b/source/elements/oneMKL/source/domains/vm/tanpi.rst @@ -15,7 +15,6 @@ tanpi .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ tanpi .. rubric:: Description - :name: description :class: sectiontitle @@ -120,7 +118,6 @@ tanpi .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -191,7 +188,6 @@ tanpi .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -218,7 +214,6 @@ tanpi .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/tgamma.rst b/source/elements/oneMKL/source/domains/vm/tgamma.rst index a1db4f65fb..01335bba15 100644 --- a/source/elements/oneMKL/source/domains/vm/tgamma.rst +++ b/source/elements/oneMKL/source/domains/vm/tgamma.rst @@ -15,7 +15,6 @@ tgamma .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -47,7 +46,6 @@ tgamma .. rubric:: Description - :name: description :class: sectiontitle @@ -101,7 +99,6 @@ tgamma .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -172,7 +169,6 @@ tgamma .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -199,7 +195,6 @@ tgamma .. rubric:: Example - :name: example :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/trunc.rst b/source/elements/oneMKL/source/domains/vm/trunc.rst index e0ded5e890..f3c0ad23d5 100644 --- a/source/elements/oneMKL/source/domains/vm/trunc.rst +++ b/source/elements/oneMKL/source/domains/vm/trunc.rst @@ -16,7 +16,6 @@ trunc .. rubric:: Syntax - :name: syntax :class: sectiontitle @@ -48,7 +47,6 @@ trunc .. rubric:: Description - :name: description :class: sectiontitle @@ -99,7 +97,6 @@ trunc .. rubric:: Input Parameters - :name: input-parameters :class: sectiontitle @@ -156,7 +153,6 @@ trunc .. rubric:: Output Parameters - :name: output-parameters :class: sectiontitle @@ -183,7 +179,6 @@ trunc .. rubric:: Example - :name: example :class: sectiontitle From 1d5201e2ef6ffd6867c4c1b3c1d6aabe83640a6d Mon Sep 17 00:00:00 2001 From: Robert Cohn Date: Fri, 27 Mar 2020 19:40:52 -0400 Subject: [PATCH 31/31] remove duplicate labels (#107) * remove duplicate return-values label * duplicate top labels --- scripts/cleanup-mkl.py | 8 +++++--- .../oneMKL/source/domains/blas/asum-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/asum.rst | 1 - .../oneMKL/source/domains/blas/axpy-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/axpy.rst | 1 - .../oneMKL/source/domains/blas/copy-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/copy.rst | 1 - .../oneMKL/source/domains/blas/dot-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/dot.rst | 1 - .../oneMKL/source/domains/blas/dotc-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/dotc.rst | 1 - .../oneMKL/source/domains/blas/dotu-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/dotu.rst | 1 - .../oneMKL/source/domains/blas/gbmv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/gbmv.rst | 1 - .../oneMKL/source/domains/blas/gemm-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/gemm.rst | 1 - source/elements/oneMKL/source/domains/blas/gemm_batch.rst | 1 - source/elements/oneMKL/source/domains/blas/gemm_ext.rst | 1 - .../oneMKL/source/domains/blas/gemmt-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/gemmt.rst | 1 - .../oneMKL/source/domains/blas/gemv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/gemv.rst | 1 - .../oneMKL/source/domains/blas/ger-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/ger.rst | 1 - .../oneMKL/source/domains/blas/gerc-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/gerc.rst | 1 - .../oneMKL/source/domains/blas/geru-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/geru.rst | 1 - .../oneMKL/source/domains/blas/hbmv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/hbmv.rst | 1 - .../oneMKL/source/domains/blas/hemm-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/hemm.rst | 1 - .../oneMKL/source/domains/blas/hemv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/hemv.rst | 1 - .../oneMKL/source/domains/blas/her-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/her.rst | 1 - .../oneMKL/source/domains/blas/her2-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/her2.rst | 1 - .../oneMKL/source/domains/blas/her2k-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/her2k.rst | 1 - .../oneMKL/source/domains/blas/herk-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/herk.rst | 1 - .../oneMKL/source/domains/blas/hpmv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/hpmv.rst | 1 - .../oneMKL/source/domains/blas/hpr-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/hpr.rst | 1 - .../oneMKL/source/domains/blas/hpr2-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/hpr2.rst | 1 - .../oneMKL/source/domains/blas/iamax-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/iamax.rst | 1 - .../oneMKL/source/domains/blas/iamin-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/iamin.rst | 1 - .../oneMKL/source/domains/blas/nrm2-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/nrm2.rst | 1 - .../oneMKL/source/domains/blas/rot-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/rot.rst | 1 - .../oneMKL/source/domains/blas/rotg-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/rotg.rst | 1 - .../oneMKL/source/domains/blas/rotm-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/rotm.rst | 1 - .../oneMKL/source/domains/blas/rotmg-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/rotmg.rst | 1 - .../oneMKL/source/domains/blas/sbmv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/sbmv.rst | 1 - .../oneMKL/source/domains/blas/scal-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/scal.rst | 1 - .../oneMKL/source/domains/blas/sdsdot-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/sdsdot.rst | 1 - .../oneMKL/source/domains/blas/spmv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/spmv.rst | 1 - .../oneMKL/source/domains/blas/spr-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/spr.rst | 1 - .../oneMKL/source/domains/blas/spr2-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/spr2.rst | 1 - .../oneMKL/source/domains/blas/swap-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/swap.rst | 1 - .../oneMKL/source/domains/blas/symm-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/symm.rst | 1 - .../oneMKL/source/domains/blas/symv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/symv.rst | 1 - .../oneMKL/source/domains/blas/syr-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/syr.rst | 1 - .../oneMKL/source/domains/blas/syr2-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/syr2.rst | 1 - .../oneMKL/source/domains/blas/syr2k-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/syr2k.rst | 1 - .../oneMKL/source/domains/blas/syrk-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/syrk.rst | 1 - .../oneMKL/source/domains/blas/tbmv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/tbmv.rst | 1 - .../oneMKL/source/domains/blas/tbsv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/tbsv.rst | 1 - .../oneMKL/source/domains/blas/tpmv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/tpmv.rst | 1 - .../oneMKL/source/domains/blas/tpsv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/tpsv.rst | 1 - .../oneMKL/source/domains/blas/trmm-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/trmm.rst | 1 - .../oneMKL/source/domains/blas/trmv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/trmv.rst | 1 - .../oneMKL/source/domains/blas/trsm-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/trsm.rst | 1 - source/elements/oneMKL/source/domains/blas/trsm_batch.rst | 1 - .../oneMKL/source/domains/blas/trsv-usm-version.rst | 1 - source/elements/oneMKL/source/domains/blas/trsv.rst | 1 - ...descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst | 1 - ...ion-mkl-dft-domain-computebackward-typename-iotype.rst | 1 - ...sion-mkl-dft-domain-computeforward-typename-iotype.rst | 1 - ...scriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst | 1 - ...t-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst | 1 - ...scriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst | 1 - source/elements/oneMKL/source/domains/lapack/gebrd.rst | 1 - .../oneMKL/source/domains/lapack/gebrd_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/geqrf.rst | 1 - .../elements/oneMKL/source/domains/lapack/geqrf_batch.rst | 1 - .../oneMKL/source/domains/lapack/geqrf_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/gesvd.rst | 1 - .../oneMKL/source/domains/lapack/gesvd_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/getrf.rst | 1 - .../elements/oneMKL/source/domains/lapack/getrf_batch.rst | 1 - source/elements/oneMKL/source/domains/lapack/getri.rst | 1 - .../elements/oneMKL/source/domains/lapack/getri_batch.rst | 1 - .../oneMKL/source/domains/lapack/getri_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/getrs.rst | 1 - .../elements/oneMKL/source/domains/lapack/getrs_batch.rst | 1 - source/elements/oneMKL/source/domains/lapack/heevd.rst | 1 - .../oneMKL/source/domains/lapack/heevd_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/hegvd.rst | 1 - .../oneMKL/source/domains/lapack/hegvd_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/hetrd.rst | 1 - .../oneMKL/source/domains/lapack/hetrd_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/orgbr.rst | 1 - .../oneMKL/source/domains/lapack/orgbr_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/orgqr.rst | 1 - .../elements/oneMKL/source/domains/lapack/orgqr_batch.rst | 1 - .../oneMKL/source/domains/lapack/orgqr_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/orgtr.rst | 1 - .../oneMKL/source/domains/lapack/orgtr_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/ormqr.rst | 1 - .../oneMKL/source/domains/lapack/ormqr_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/ormtr.rst | 1 - .../oneMKL/source/domains/lapack/ormtr_get_lwork.rst | 1 - .../oneMKL/source/domains/lapack/potrf-usm-version.rst | 1 - source/elements/oneMKL/source/domains/lapack/potrf.rst | 1 - .../elements/oneMKL/source/domains/lapack/potrf_batch.rst | 1 - source/elements/oneMKL/source/domains/lapack/potri.rst | 1 - source/elements/oneMKL/source/domains/lapack/potrs.rst | 1 - .../elements/oneMKL/source/domains/lapack/potrs_batch.rst | 1 - source/elements/oneMKL/source/domains/lapack/syevd.rst | 1 - .../oneMKL/source/domains/lapack/syevd_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/sygvd.rst | 1 - .../oneMKL/source/domains/lapack/sygvd_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/sytrd.rst | 1 - .../oneMKL/source/domains/lapack/sytrd_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/sytrf.rst | 1 - .../oneMKL/source/domains/lapack/sytrf_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/trtrs.rst | 1 - source/elements/oneMKL/source/domains/lapack/ungbr.rst | 1 - .../oneMKL/source/domains/lapack/ungbr_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/ungqr.rst | 1 - .../oneMKL/source/domains/lapack/ungqr_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/ungtr.rst | 1 - .../oneMKL/source/domains/lapack/ungtr_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/unmqr.rst | 1 - .../oneMKL/source/domains/lapack/unmqr_get_lwork.rst | 1 - source/elements/oneMKL/source/domains/lapack/unmtr.rst | 1 - .../oneMKL/source/domains/lapack/unmtr_get_lwork.rst | 1 - .../oneMKL/source/domains/spblas/mkl-sparse-gemv.rst | 1 - source/elements/oneMKL/source/domains/vm/abs.rst | 1 - source/elements/oneMKL/source/domains/vm/acos.rst | 1 - source/elements/oneMKL/source/domains/vm/acosh.rst | 1 - source/elements/oneMKL/source/domains/vm/acospi.rst | 1 - source/elements/oneMKL/source/domains/vm/add.rst | 1 - source/elements/oneMKL/source/domains/vm/arg.rst | 1 - source/elements/oneMKL/source/domains/vm/asin.rst | 1 - source/elements/oneMKL/source/domains/vm/asinh.rst | 1 - source/elements/oneMKL/source/domains/vm/asinpi.rst | 1 - source/elements/oneMKL/source/domains/vm/atan.rst | 1 - source/elements/oneMKL/source/domains/vm/atan2.rst | 1 - source/elements/oneMKL/source/domains/vm/atan2pi.rst | 1 - source/elements/oneMKL/source/domains/vm/atanh.rst | 1 - source/elements/oneMKL/source/domains/vm/atanpi.rst | 1 - source/elements/oneMKL/source/domains/vm/cbrt.rst | 1 - source/elements/oneMKL/source/domains/vm/cdfnorm.rst | 1 - source/elements/oneMKL/source/domains/vm/cdfnorminv.rst | 1 - source/elements/oneMKL/source/domains/vm/ceil.rst | 1 - source/elements/oneMKL/source/domains/vm/cis.rst | 1 - source/elements/oneMKL/source/domains/vm/clear_status.rst | 1 - source/elements/oneMKL/source/domains/vm/conj.rst | 1 - source/elements/oneMKL/source/domains/vm/copysign.rst | 1 - source/elements/oneMKL/source/domains/vm/cos.rst | 1 - source/elements/oneMKL/source/domains/vm/cosd.rst | 1 - source/elements/oneMKL/source/domains/vm/cosh.rst | 1 - source/elements/oneMKL/source/domains/vm/cospi.rst | 1 - .../oneMKL/source/domains/vm/create_error_handler.rst | 1 - source/elements/oneMKL/source/domains/vm/div.rst | 1 - source/elements/oneMKL/source/domains/vm/erf.rst | 1 - source/elements/oneMKL/source/domains/vm/erfc.rst | 1 - source/elements/oneMKL/source/domains/vm/erfcinv.rst | 1 - source/elements/oneMKL/source/domains/vm/erfinv.rst | 1 - source/elements/oneMKL/source/domains/vm/exp.rst | 1 - source/elements/oneMKL/source/domains/vm/exp10.rst | 1 - source/elements/oneMKL/source/domains/vm/exp2.rst | 1 - source/elements/oneMKL/source/domains/vm/expint1.rst | 1 - source/elements/oneMKL/source/domains/vm/expm1.rst | 1 - source/elements/oneMKL/source/domains/vm/fdim.rst | 1 - source/elements/oneMKL/source/domains/vm/floor.rst | 1 - source/elements/oneMKL/source/domains/vm/fmax.rst | 1 - source/elements/oneMKL/source/domains/vm/fmin.rst | 1 - source/elements/oneMKL/source/domains/vm/fmod.rst | 1 - source/elements/oneMKL/source/domains/vm/frac.rst | 1 - source/elements/oneMKL/source/domains/vm/get_mode.rst | 1 - source/elements/oneMKL/source/domains/vm/get_status.rst | 1 - source/elements/oneMKL/source/domains/vm/hypot.rst | 1 - source/elements/oneMKL/source/domains/vm/inv.rst | 1 - source/elements/oneMKL/source/domains/vm/invcbrt.rst | 1 - source/elements/oneMKL/source/domains/vm/invsqrt.rst | 1 - source/elements/oneMKL/source/domains/vm/lgamma.rst | 1 - source/elements/oneMKL/source/domains/vm/linearfrac.rst | 1 - source/elements/oneMKL/source/domains/vm/ln.rst | 1 - source/elements/oneMKL/source/domains/vm/log10.rst | 1 - source/elements/oneMKL/source/domains/vm/log1p.rst | 1 - source/elements/oneMKL/source/domains/vm/log2.rst | 1 - source/elements/oneMKL/source/domains/vm/logb.rst | 1 - source/elements/oneMKL/source/domains/vm/maxmag.rst | 1 - source/elements/oneMKL/source/domains/vm/minmag.rst | 1 - source/elements/oneMKL/source/domains/vm/modf.rst | 1 - source/elements/oneMKL/source/domains/vm/mul.rst | 1 - source/elements/oneMKL/source/domains/vm/mulbyconj.rst | 1 - source/elements/oneMKL/source/domains/vm/nearbyint.rst | 1 - source/elements/oneMKL/source/domains/vm/nextafter.rst | 1 - source/elements/oneMKL/source/domains/vm/pow.rst | 1 - source/elements/oneMKL/source/domains/vm/pow2o3.rst | 1 - source/elements/oneMKL/source/domains/vm/pow3o2.rst | 1 - source/elements/oneMKL/source/domains/vm/powr.rst | 1 - source/elements/oneMKL/source/domains/vm/powx.rst | 1 - source/elements/oneMKL/source/domains/vm/remainder.rst | 1 - source/elements/oneMKL/source/domains/vm/rint.rst | 1 - source/elements/oneMKL/source/domains/vm/round.rst | 1 - source/elements/oneMKL/source/domains/vm/set_status.rst | 1 - source/elements/oneMKL/source/domains/vm/setmode.rst | 1 - source/elements/oneMKL/source/domains/vm/sin.rst | 1 - source/elements/oneMKL/source/domains/vm/sincos.rst | 1 - source/elements/oneMKL/source/domains/vm/sind.rst | 1 - source/elements/oneMKL/source/domains/vm/sinh.rst | 1 - source/elements/oneMKL/source/domains/vm/sinpi.rst | 1 - source/elements/oneMKL/source/domains/vm/sqr.rst | 1 - source/elements/oneMKL/source/domains/vm/sqrt.rst | 1 - source/elements/oneMKL/source/domains/vm/sub.rst | 1 - source/elements/oneMKL/source/domains/vm/tan.rst | 1 - source/elements/oneMKL/source/domains/vm/tand.rst | 1 - source/elements/oneMKL/source/domains/vm/tanh.rst | 1 - source/elements/oneMKL/source/domains/vm/tanpi.rst | 1 - source/elements/oneMKL/source/domains/vm/tgamma.rst | 1 - source/elements/oneMKL/source/domains/vm/trunc.rst | 1 - 256 files changed, 5 insertions(+), 258 deletions(-) diff --git a/scripts/cleanup-mkl.py b/scripts/cleanup-mkl.py index 064195fead..82dabb514e 100644 --- a/scripts/cleanup-mkl.py +++ b/scripts/cleanup-mkl.py @@ -2,7 +2,7 @@ from os.path import join import re -r = re.compile(r'\W+:name: (include-files|note|note-1|note-2|note-3|syntax|description|input-parameters|output-parameters|example)') +r = re.compile(r'\W+:name: (return-values|include-files|note|note-1|note-2|note-3|syntax|description|input-parameters|output-parameters|example)') for root, dirs, files in walk("."): for file in files: @@ -11,10 +11,12 @@ p = join(root, file) print(p) in_lines = open(p).readlines() + l2 = in_lines[2] + dup_label = '.. _%s:\n' % l2.rstrip() + print('dup_label:', dup_label) with open(p, 'w') as fout: for line in in_lines: - if r.match(line): + if r.match(line) or line == dup_label: print('omitting:', line) else: fout.write(line) - diff --git a/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst b/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst index 8b18e8083a..0392630494 100644 --- a/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/asum-usm-version.rst @@ -114,7 +114,6 @@ asum (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/asum.rst b/source/elements/oneMKL/source/domains/blas/asum.rst index df4026db57..98fa8e564f 100644 --- a/source/elements/oneMKL/source/domains/blas/asum.rst +++ b/source/elements/oneMKL/source/domains/blas/asum.rst @@ -1,4 +1,3 @@ -.. _asum: asum ==== diff --git a/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst b/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst index b3486f140f..802e8939e7 100644 --- a/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/axpy-usm-version.rst @@ -131,7 +131,6 @@ axpy (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/axpy.rst b/source/elements/oneMKL/source/domains/blas/axpy.rst index b780041761..c0b8d58fb4 100644 --- a/source/elements/oneMKL/source/domains/blas/axpy.rst +++ b/source/elements/oneMKL/source/domains/blas/axpy.rst @@ -1,4 +1,3 @@ -.. _axpy: axpy ==== diff --git a/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst b/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst index b8e3b5b3e0..8eb249ee6a 100644 --- a/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/copy-usm-version.rst @@ -112,7 +112,6 @@ copy (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/copy.rst b/source/elements/oneMKL/source/domains/blas/copy.rst index d8ae88fac1..05ee180b94 100644 --- a/source/elements/oneMKL/source/domains/blas/copy.rst +++ b/source/elements/oneMKL/source/domains/blas/copy.rst @@ -1,4 +1,3 @@ -.. _copy: copy ==== diff --git a/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst index 55b07ed95f..7bbd4a6493 100644 --- a/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/dot-usm-version.rst @@ -128,7 +128,6 @@ dot (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/dot.rst b/source/elements/oneMKL/source/domains/blas/dot.rst index 934df2c56d..f7f27085d8 100644 --- a/source/elements/oneMKL/source/domains/blas/dot.rst +++ b/source/elements/oneMKL/source/domains/blas/dot.rst @@ -1,4 +1,3 @@ -.. _dot: dot === diff --git a/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst index 96fb4e5f74..a289e1109a 100644 --- a/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/dotc-usm-version.rst @@ -114,7 +114,6 @@ dotc (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/dotc.rst b/source/elements/oneMKL/source/domains/blas/dotc.rst index 86d2162942..4c7d0a29a4 100644 --- a/source/elements/oneMKL/source/domains/blas/dotc.rst +++ b/source/elements/oneMKL/source/domains/blas/dotc.rst @@ -1,4 +1,3 @@ -.. _dotc: dotc ==== diff --git a/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst b/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst index a80f2aa916..d5dcef1644 100644 --- a/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/dotu-usm-version.rst @@ -113,7 +113,6 @@ dotu (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/dotu.rst b/source/elements/oneMKL/source/domains/blas/dotu.rst index 98b699d3ba..42a7790652 100644 --- a/source/elements/oneMKL/source/domains/blas/dotu.rst +++ b/source/elements/oneMKL/source/domains/blas/dotu.rst @@ -1,4 +1,3 @@ -.. _dotu: dotu ==== diff --git a/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst index 366ca8e135..cc9ca82569 100644 --- a/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gbmv-usm-version.rst @@ -183,7 +183,6 @@ gbmv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gbmv.rst b/source/elements/oneMKL/source/domains/blas/gbmv.rst index c0333202a1..d39c0622ae 100644 --- a/source/elements/oneMKL/source/domains/blas/gbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/gbmv.rst @@ -1,4 +1,3 @@ -.. _gbmv: gbmv ==== diff --git a/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst index 03ae8d30fa..8bb757aa5a 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm-usm-version.rst @@ -209,7 +209,6 @@ gemm (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemm.rst b/source/elements/oneMKL/source/domains/blas/gemm.rst index 24f81ae6d6..1e6d7d0073 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm.rst @@ -1,4 +1,3 @@ -.. _gemm: gemm ==== diff --git a/source/elements/oneMKL/source/domains/blas/gemm_batch.rst b/source/elements/oneMKL/source/domains/blas/gemm_batch.rst index 22681128d4..e70a9cabfb 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm_batch.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm_batch.rst @@ -1,4 +1,3 @@ -.. _gemm_batch: gemm_batch ========== diff --git a/source/elements/oneMKL/source/domains/blas/gemm_ext.rst b/source/elements/oneMKL/source/domains/blas/gemm_ext.rst index 7fe950d313..1d47fbec38 100644 --- a/source/elements/oneMKL/source/domains/blas/gemm_ext.rst +++ b/source/elements/oneMKL/source/domains/blas/gemm_ext.rst @@ -1,4 +1,3 @@ -.. _gemm_ext: gemm_ext ======== diff --git a/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst index a80f5d376f..6b7411f325 100644 --- a/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gemmt-usm-version.rst @@ -220,7 +220,6 @@ gemmt (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemmt.rst b/source/elements/oneMKL/source/domains/blas/gemmt.rst index 580f177155..01106723af 100644 --- a/source/elements/oneMKL/source/domains/blas/gemmt.rst +++ b/source/elements/oneMKL/source/domains/blas/gemmt.rst @@ -1,4 +1,3 @@ -.. _gemmt: gemmt ===== diff --git a/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst index dedf1b6113..757077bde0 100644 --- a/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gemv-usm-version.rst @@ -170,7 +170,6 @@ gemv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gemv.rst b/source/elements/oneMKL/source/domains/blas/gemv.rst index 89b8296942..e60c3c1e1b 100644 --- a/source/elements/oneMKL/source/domains/blas/gemv.rst +++ b/source/elements/oneMKL/source/domains/blas/gemv.rst @@ -1,4 +1,3 @@ -.. _gemv: gemv ==== diff --git a/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst b/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst index 18fd01a79c..f5e2f81b13 100644 --- a/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/ger-usm-version.rst @@ -151,7 +151,6 @@ ger (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/ger.rst b/source/elements/oneMKL/source/domains/blas/ger.rst index 32abeabdb7..877a621217 100644 --- a/source/elements/oneMKL/source/domains/blas/ger.rst +++ b/source/elements/oneMKL/source/domains/blas/ger.rst @@ -1,4 +1,3 @@ -.. _ger: ger === diff --git a/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst b/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst index 2f5e6a436a..02ad737cd4 100644 --- a/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/gerc-usm-version.rst @@ -152,7 +152,6 @@ gerc (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/gerc.rst b/source/elements/oneMKL/source/domains/blas/gerc.rst index b782f783fb..063ef7b2b4 100644 --- a/source/elements/oneMKL/source/domains/blas/gerc.rst +++ b/source/elements/oneMKL/source/domains/blas/gerc.rst @@ -1,4 +1,3 @@ -.. _gerc: gerc ==== diff --git a/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst b/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst index 0b80e9193d..9e8de0976b 100644 --- a/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/geru-usm-version.rst @@ -153,7 +153,6 @@ geru (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/geru.rst b/source/elements/oneMKL/source/domains/blas/geru.rst index 2308e44024..e36ce832ec 100644 --- a/source/elements/oneMKL/source/domains/blas/geru.rst +++ b/source/elements/oneMKL/source/domains/blas/geru.rst @@ -1,4 +1,3 @@ -.. _geru: geru ==== diff --git a/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst index 7170ca2c5c..bbe959d489 100644 --- a/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hbmv-usm-version.rst @@ -162,7 +162,6 @@ hbmv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hbmv.rst b/source/elements/oneMKL/source/domains/blas/hbmv.rst index 9a919b580a..71aa37e546 100644 --- a/source/elements/oneMKL/source/domains/blas/hbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/hbmv.rst @@ -1,4 +1,3 @@ -.. _hbmv: hbmv ==== diff --git a/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst index e5af105f40..dc85775164 100644 --- a/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hemm-usm-version.rst @@ -208,7 +208,6 @@ hemm (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hemm.rst b/source/elements/oneMKL/source/domains/blas/hemm.rst index 5e93d181cb..afd593b1e0 100644 --- a/source/elements/oneMKL/source/domains/blas/hemm.rst +++ b/source/elements/oneMKL/source/domains/blas/hemm.rst @@ -1,4 +1,3 @@ -.. _hemm: hemm ==== diff --git a/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst index 7e1c526ee2..171641dd75 100644 --- a/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hemv-usm-version.rst @@ -156,7 +156,6 @@ hemv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hemv.rst b/source/elements/oneMKL/source/domains/blas/hemv.rst index ce120af0a0..682abcdf80 100644 --- a/source/elements/oneMKL/source/domains/blas/hemv.rst +++ b/source/elements/oneMKL/source/domains/blas/hemv.rst @@ -1,4 +1,3 @@ -.. _hemv: hemv ==== diff --git a/source/elements/oneMKL/source/domains/blas/her-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her-usm-version.rst index 7176b5f2d3..ecc1a52dd1 100644 --- a/source/elements/oneMKL/source/domains/blas/her-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her-usm-version.rst @@ -145,7 +145,6 @@ her (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/her.rst b/source/elements/oneMKL/source/domains/blas/her.rst index c046963a29..5b88b58636 100644 --- a/source/elements/oneMKL/source/domains/blas/her.rst +++ b/source/elements/oneMKL/source/domains/blas/her.rst @@ -1,4 +1,3 @@ -.. _her: her === diff --git a/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst index 637c20733d..f118e717c0 100644 --- a/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her2-usm-version.rst @@ -157,7 +157,6 @@ her2 (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/her2.rst b/source/elements/oneMKL/source/domains/blas/her2.rst index 4226512225..10af1aed07 100644 --- a/source/elements/oneMKL/source/domains/blas/her2.rst +++ b/source/elements/oneMKL/source/domains/blas/her2.rst @@ -1,4 +1,3 @@ -.. _her2: her2 ==== diff --git a/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst b/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst index 0cc8f090bb..a2c4d67c9e 100644 --- a/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/her2k-usm-version.rst @@ -198,7 +198,6 @@ her2k (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/her2k.rst b/source/elements/oneMKL/source/domains/blas/her2k.rst index b7b11dcc73..4455d21b85 100644 --- a/source/elements/oneMKL/source/domains/blas/her2k.rst +++ b/source/elements/oneMKL/source/domains/blas/her2k.rst @@ -1,4 +1,3 @@ -.. _her2k: her2k ===== diff --git a/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst b/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst index 23b467646e..6cf5fe4259 100644 --- a/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/herk-usm-version.rst @@ -174,7 +174,6 @@ herk (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/herk.rst b/source/elements/oneMKL/source/domains/blas/herk.rst index ab00bc6284..3f5eed8428 100644 --- a/source/elements/oneMKL/source/domains/blas/herk.rst +++ b/source/elements/oneMKL/source/domains/blas/herk.rst @@ -1,4 +1,3 @@ -.. _herk: herk ==== diff --git a/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst index d4dfc36970..e85c5f7aef 100644 --- a/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpmv-usm-version.rst @@ -156,7 +156,6 @@ hpmv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hpmv.rst b/source/elements/oneMKL/source/domains/blas/hpmv.rst index 42fafffb89..c8f582d71a 100644 --- a/source/elements/oneMKL/source/domains/blas/hpmv.rst +++ b/source/elements/oneMKL/source/domains/blas/hpmv.rst @@ -1,4 +1,3 @@ -.. _hpmv: hpmv ==== diff --git a/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst index 5fefd13c27..c1e0b507e6 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr-usm-version.rst @@ -146,7 +146,6 @@ hpr (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hpr.rst b/source/elements/oneMKL/source/domains/blas/hpr.rst index 00ece1c64a..c81f06bf12 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr.rst @@ -1,4 +1,3 @@ -.. _hpr: hpr === diff --git a/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst index 80dde95746..a36c20a006 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr2-usm-version.rst @@ -157,7 +157,6 @@ hpr2 (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/hpr2.rst b/source/elements/oneMKL/source/domains/blas/hpr2.rst index 9dfd156562..2d2e6e0401 100644 --- a/source/elements/oneMKL/source/domains/blas/hpr2.rst +++ b/source/elements/oneMKL/source/domains/blas/hpr2.rst @@ -1,4 +1,3 @@ -.. _hpr2: hpr2 ==== diff --git a/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst b/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst index c3cf941593..e48ba18488 100644 --- a/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/iamax-usm-version.rst @@ -127,7 +127,6 @@ iamax (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/iamax.rst b/source/elements/oneMKL/source/domains/blas/iamax.rst index 8de4839b79..3dac3cef9e 100644 --- a/source/elements/oneMKL/source/domains/blas/iamax.rst +++ b/source/elements/oneMKL/source/domains/blas/iamax.rst @@ -1,4 +1,3 @@ -.. _iamax: iamax ===== diff --git a/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst b/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst index 09986b63f7..907a300f5f 100644 --- a/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/iamin-usm-version.rst @@ -121,7 +121,6 @@ iamin (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/iamin.rst b/source/elements/oneMKL/source/domains/blas/iamin.rst index 5c6d3c2130..5884f8566b 100644 --- a/source/elements/oneMKL/source/domains/blas/iamin.rst +++ b/source/elements/oneMKL/source/domains/blas/iamin.rst @@ -1,4 +1,3 @@ -.. _iamin: iamin ===== diff --git a/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst index b905554ee2..2a7a2730a0 100644 --- a/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/nrm2-usm-version.rst @@ -117,7 +117,6 @@ nrm2 (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/nrm2.rst b/source/elements/oneMKL/source/domains/blas/nrm2.rst index fa8bf16182..1b06375d16 100644 --- a/source/elements/oneMKL/source/domains/blas/nrm2.rst +++ b/source/elements/oneMKL/source/domains/blas/nrm2.rst @@ -1,4 +1,3 @@ -.. _nrm2: nrm2 ==== diff --git a/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst index 9c0311fd3c..a68c5b0fa1 100644 --- a/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rot-usm-version.rst @@ -137,7 +137,6 @@ rot (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rot.rst b/source/elements/oneMKL/source/domains/blas/rot.rst index 06ff30e40a..6255f815f1 100644 --- a/source/elements/oneMKL/source/domains/blas/rot.rst +++ b/source/elements/oneMKL/source/domains/blas/rot.rst @@ -1,4 +1,3 @@ -.. _rot: rot === diff --git a/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst index 76b8eb77d3..5d823518e2 100644 --- a/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rotg-usm-version.rst @@ -120,7 +120,6 @@ rotg (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rotg.rst b/source/elements/oneMKL/source/domains/blas/rotg.rst index 4fd8d35a3c..4dbc494a03 100644 --- a/source/elements/oneMKL/source/domains/blas/rotg.rst +++ b/source/elements/oneMKL/source/domains/blas/rotg.rst @@ -1,4 +1,3 @@ -.. _rotg: rotg ==== diff --git a/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst index d185febb3e..b46fda8d69 100644 --- a/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rotm-usm-version.rst @@ -160,7 +160,6 @@ rotm (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rotm.rst b/source/elements/oneMKL/source/domains/blas/rotm.rst index 0ccbe5b9da..931a8408b6 100644 --- a/source/elements/oneMKL/source/domains/blas/rotm.rst +++ b/source/elements/oneMKL/source/domains/blas/rotm.rst @@ -1,4 +1,3 @@ -.. _rotm: rotm ==== diff --git a/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst b/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst index a998aefd0f..a8b777c092 100644 --- a/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/rotmg-usm-version.rst @@ -153,7 +153,6 @@ rotmg (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/rotmg.rst b/source/elements/oneMKL/source/domains/blas/rotmg.rst index b669cdaa1c..d3eeacb07f 100644 --- a/source/elements/oneMKL/source/domains/blas/rotmg.rst +++ b/source/elements/oneMKL/source/domains/blas/rotmg.rst @@ -1,4 +1,3 @@ -.. _rotmg: rotmg ===== diff --git a/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst index 2b3cb775ac..54aa44d659 100644 --- a/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/sbmv-usm-version.rst @@ -162,7 +162,6 @@ sbmv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/sbmv.rst b/source/elements/oneMKL/source/domains/blas/sbmv.rst index 00b4e5aaed..b002780d38 100644 --- a/source/elements/oneMKL/source/domains/blas/sbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/sbmv.rst @@ -1,4 +1,3 @@ -.. _sbmv: sbmv ==== diff --git a/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst b/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst index 9dba7c43a6..c4f38d4d87 100644 --- a/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/scal-usm-version.rst @@ -121,7 +121,6 @@ scal (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/scal.rst b/source/elements/oneMKL/source/domains/blas/scal.rst index 848faa94f7..767b7d65d9 100644 --- a/source/elements/oneMKL/source/domains/blas/scal.rst +++ b/source/elements/oneMKL/source/domains/blas/scal.rst @@ -1,4 +1,3 @@ -.. _scal: scal ==== diff --git a/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst b/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst index 28f61722a4..64bbf92762 100644 --- a/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/sdsdot-usm-version.rst @@ -89,7 +89,6 @@ sdsdot (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/sdsdot.rst b/source/elements/oneMKL/source/domains/blas/sdsdot.rst index 3c30ba2cd3..1dcd48b61d 100644 --- a/source/elements/oneMKL/source/domains/blas/sdsdot.rst +++ b/source/elements/oneMKL/source/domains/blas/sdsdot.rst @@ -1,4 +1,3 @@ -.. _sdsdot: sdsdot ====== diff --git a/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst index afaece88ad..519bae7f80 100644 --- a/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spmv-usm-version.rst @@ -152,7 +152,6 @@ spmv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/spmv.rst b/source/elements/oneMKL/source/domains/blas/spmv.rst index 77c5faba40..ec751d93ff 100644 --- a/source/elements/oneMKL/source/domains/blas/spmv.rst +++ b/source/elements/oneMKL/source/domains/blas/spmv.rst @@ -1,4 +1,3 @@ -.. _spmv: spmv ==== diff --git a/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst index 3dca086281..45597b84a3 100644 --- a/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spr-usm-version.rst @@ -139,7 +139,6 @@ spr (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/spr.rst b/source/elements/oneMKL/source/domains/blas/spr.rst index 47e18af31c..4e38be9a22 100644 --- a/source/elements/oneMKL/source/domains/blas/spr.rst +++ b/source/elements/oneMKL/source/domains/blas/spr.rst @@ -1,4 +1,3 @@ -.. _spr: spr === diff --git a/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst index 7510667bfd..5c4e06c9db 100644 --- a/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/spr2-usm-version.rst @@ -150,7 +150,6 @@ spr2 (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/spr2.rst b/source/elements/oneMKL/source/domains/blas/spr2.rst index 7ffce6416b..bc14de2580 100644 --- a/source/elements/oneMKL/source/domains/blas/spr2.rst +++ b/source/elements/oneMKL/source/domains/blas/spr2.rst @@ -1,4 +1,3 @@ -.. _spr2: spr2 ==== diff --git a/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst b/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst index 200c826010..0498dae1e1 100644 --- a/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/swap-usm-version.rst @@ -123,7 +123,6 @@ swap (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/swap.rst b/source/elements/oneMKL/source/domains/blas/swap.rst index b01097ec2c..c589c7ca1f 100644 --- a/source/elements/oneMKL/source/domains/blas/swap.rst +++ b/source/elements/oneMKL/source/domains/blas/swap.rst @@ -1,4 +1,3 @@ -.. _swap: swap ==== diff --git a/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst index 9431ad8a7a..7178b9c05c 100644 --- a/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/symm-usm-version.rst @@ -206,7 +206,6 @@ symm (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/symm.rst b/source/elements/oneMKL/source/domains/blas/symm.rst index 225a4c381f..bd7d263cdb 100644 --- a/source/elements/oneMKL/source/domains/blas/symm.rst +++ b/source/elements/oneMKL/source/domains/blas/symm.rst @@ -1,4 +1,3 @@ -.. _symm: symm ==== diff --git a/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst index f7faeafdde..3b8b4515da 100644 --- a/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/symv-usm-version.rst @@ -152,7 +152,6 @@ symv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/symv.rst b/source/elements/oneMKL/source/domains/blas/symv.rst index 4543b203ac..9171dffec2 100644 --- a/source/elements/oneMKL/source/domains/blas/symv.rst +++ b/source/elements/oneMKL/source/domains/blas/symv.rst @@ -1,4 +1,3 @@ -.. _symv: symv ==== diff --git a/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst index 3cbb71e41f..9a95bc5bbf 100644 --- a/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr-usm-version.rst @@ -143,7 +143,6 @@ syr (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syr.rst b/source/elements/oneMKL/source/domains/blas/syr.rst index 563cada587..276caffad3 100644 --- a/source/elements/oneMKL/source/domains/blas/syr.rst +++ b/source/elements/oneMKL/source/domains/blas/syr.rst @@ -1,4 +1,3 @@ -.. _syr: syr === diff --git a/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst index 082e9eb60e..c280c1e40a 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2-usm-version.rst @@ -155,7 +155,6 @@ syr2 (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syr2.rst b/source/elements/oneMKL/source/domains/blas/syr2.rst index 6eb6010890..d9b4fbb098 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2.rst @@ -1,4 +1,3 @@ -.. _syr2: syr2 ==== diff --git a/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst index c835815405..2998b5a8a9 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2k-usm-version.rst @@ -196,7 +196,6 @@ syr2k (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syr2k.rst b/source/elements/oneMKL/source/domains/blas/syr2k.rst index 16bbfe8bab..8ec9865337 100644 --- a/source/elements/oneMKL/source/domains/blas/syr2k.rst +++ b/source/elements/oneMKL/source/domains/blas/syr2k.rst @@ -1,4 +1,3 @@ -.. _syr2k: syr2k ===== diff --git a/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst b/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst index f1df40d332..3988a1ad28 100644 --- a/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/syrk-usm-version.rst @@ -165,7 +165,6 @@ syrk (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/syrk.rst b/source/elements/oneMKL/source/domains/blas/syrk.rst index 5d727432a9..9ff6823ded 100644 --- a/source/elements/oneMKL/source/domains/blas/syrk.rst +++ b/source/elements/oneMKL/source/domains/blas/syrk.rst @@ -1,4 +1,3 @@ -.. _syrk: syrk ==== diff --git a/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst index 4106c6fccd..d721f7c4e3 100644 --- a/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tbmv-usm-version.rst @@ -158,7 +158,6 @@ tbmv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tbmv.rst b/source/elements/oneMKL/source/domains/blas/tbmv.rst index ee8c84bfb0..e2b5e42a46 100644 --- a/source/elements/oneMKL/source/domains/blas/tbmv.rst +++ b/source/elements/oneMKL/source/domains/blas/tbmv.rst @@ -1,4 +1,3 @@ -.. _tbmv: tbmv ==== diff --git a/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst index aeee763f2c..7a92f3e707 100644 --- a/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tbsv-usm-version.rst @@ -160,7 +160,6 @@ tbsv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tbsv.rst b/source/elements/oneMKL/source/domains/blas/tbsv.rst index b3060a7789..f6ffd7a788 100644 --- a/source/elements/oneMKL/source/domains/blas/tbsv.rst +++ b/source/elements/oneMKL/source/domains/blas/tbsv.rst @@ -1,4 +1,3 @@ -.. _tbsv: tbsv ==== diff --git a/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst index fadfb72dac..707b4bdb74 100644 --- a/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tpmv-usm-version.rst @@ -148,7 +148,6 @@ tpmv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tpmv.rst b/source/elements/oneMKL/source/domains/blas/tpmv.rst index 6d25c439fd..8c4ebef676 100644 --- a/source/elements/oneMKL/source/domains/blas/tpmv.rst +++ b/source/elements/oneMKL/source/domains/blas/tpmv.rst @@ -1,4 +1,3 @@ -.. _tpmv: tpmv ==== diff --git a/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst index eb606f0549..ae84958730 100644 --- a/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/tpsv-usm-version.rst @@ -151,7 +151,6 @@ tpsv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/tpsv.rst b/source/elements/oneMKL/source/domains/blas/tpsv.rst index bc34bc6d6d..8c7690eb21 100644 --- a/source/elements/oneMKL/source/domains/blas/tpsv.rst +++ b/source/elements/oneMKL/source/domains/blas/tpsv.rst @@ -1,4 +1,3 @@ -.. _tpsv: tpsv ==== diff --git a/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst index 969f86aa7b..b7a7cea47f 100644 --- a/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trmm-usm-version.rst @@ -205,7 +205,6 @@ trmm (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trmm.rst b/source/elements/oneMKL/source/domains/blas/trmm.rst index d824d6da33..8f7afa2150 100644 --- a/source/elements/oneMKL/source/domains/blas/trmm.rst +++ b/source/elements/oneMKL/source/domains/blas/trmm.rst @@ -1,4 +1,3 @@ -.. _trmm: trmm ==== diff --git a/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst index 65d2dc05f2..f7d8a287c6 100644 --- a/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trmv-usm-version.rst @@ -153,7 +153,6 @@ trmv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trmv.rst b/source/elements/oneMKL/source/domains/blas/trmv.rst index 4cd7d2b008..98490e1339 100644 --- a/source/elements/oneMKL/source/domains/blas/trmv.rst +++ b/source/elements/oneMKL/source/domains/blas/trmv.rst @@ -1,4 +1,3 @@ -.. _trmv: trmv ==== diff --git a/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst index 5d37f242f2..a9cfec3c94 100644 --- a/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trsm-usm-version.rst @@ -201,7 +201,6 @@ trsm (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trsm.rst b/source/elements/oneMKL/source/domains/blas/trsm.rst index 43e2a9ce6f..6b6472d8cc 100644 --- a/source/elements/oneMKL/source/domains/blas/trsm.rst +++ b/source/elements/oneMKL/source/domains/blas/trsm.rst @@ -1,4 +1,3 @@ -.. _trsm: trsm ==== diff --git a/source/elements/oneMKL/source/domains/blas/trsm_batch.rst b/source/elements/oneMKL/source/domains/blas/trsm_batch.rst index c3592b437b..986dcf9693 100644 --- a/source/elements/oneMKL/source/domains/blas/trsm_batch.rst +++ b/source/elements/oneMKL/source/domains/blas/trsm_batch.rst @@ -1,4 +1,3 @@ -.. _trsm_batch: trsm_batch ========== diff --git a/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst b/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst index 57bb6cf8d5..d83225faea 100644 --- a/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst +++ b/source/elements/oneMKL/source/domains/blas/trsv-usm-version.rst @@ -155,7 +155,6 @@ trsv (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/blas/trsv.rst b/source/elements/oneMKL/source/domains/blas/trsv.rst index 225ac9f8bc..02d45bcea3 100644 --- a/source/elements/oneMKL/source/domains/blas/trsv.rst +++ b/source/elements/oneMKL/source/domains/blas/trsv.rst @@ -1,4 +1,3 @@ -.. _trsv: trsv ==== diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst index 575d732b8f..8587580d8d 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-commit.rst @@ -110,7 +110,6 @@ onemkl::dft::Descriptor::commit .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst index a6866feaef..e93a00613e 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computebackward-typename-iotype.rst @@ -137,7 +137,6 @@ onemkl::dft::Descriptor::computeBac .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst index 0cb2a80f8c..1fc517108f 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-computeforward-typename-iotype.rst @@ -136,7 +136,6 @@ onemkl::dft::Descriptor::computeFor .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst index 334312e87c..c9c931e014 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-getvalue.rst @@ -108,7 +108,6 @@ onemkl::dft::Descriptor::getValue .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst index 0787449f06..c97c07bc26 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-init.rst @@ -119,7 +119,6 @@ onemkl::dft::Descriptor::Init .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst index 588673b1e3..17f0f3d226 100644 --- a/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst +++ b/source/elements/oneMKL/source/domains/dft/mkl-dft-descriptor-mkl-dft-precision-mkl-dft-domain-setvalue.rst @@ -130,7 +130,6 @@ onemkl::dft::Descriptor::setValue .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/gebrd.rst b/source/elements/oneMKL/source/domains/lapack/gebrd.rst index d78b586ee3..76cb41f5da 100644 --- a/source/elements/oneMKL/source/domains/lapack/gebrd.rst +++ b/source/elements/oneMKL/source/domains/lapack/gebrd.rst @@ -1,4 +1,3 @@ -.. _gebrd: gebrd ===== diff --git a/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst index f9948536b7..cfdeb7539a 100644 --- a/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/gebrd_get_lwork.rst @@ -1,4 +1,3 @@ -.. _gebrd_get_lwork: gebrd_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf.rst b/source/elements/oneMKL/source/domains/lapack/geqrf.rst index e9a350b491..8735542994 100644 --- a/source/elements/oneMKL/source/domains/lapack/geqrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/geqrf.rst @@ -1,4 +1,3 @@ -.. _geqrf: geqrf ===== diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst index 9801ed1788..9327339900 100644 --- a/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/geqrf_batch.rst @@ -1,4 +1,3 @@ -.. _geqrf_batch: geqrf_batch =========== diff --git a/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst index 63c7387725..c47ae68c03 100644 --- a/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/geqrf_get_lwork.rst @@ -1,4 +1,3 @@ -.. _geqrf_get_lwork: geqrf_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/gesvd.rst b/source/elements/oneMKL/source/domains/lapack/gesvd.rst index d37eafc849..00890da288 100644 --- a/source/elements/oneMKL/source/domains/lapack/gesvd.rst +++ b/source/elements/oneMKL/source/domains/lapack/gesvd.rst @@ -1,4 +1,3 @@ -.. _gesvd: gesvd ===== diff --git a/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst index 36f19147e1..a5fd157f67 100644 --- a/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/gesvd_get_lwork.rst @@ -1,4 +1,3 @@ -.. _gesvd_get_lwork: gesvd_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/getrf.rst b/source/elements/oneMKL/source/domains/lapack/getrf.rst index 5e323b6b8e..2913f766d8 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrf.rst @@ -1,4 +1,3 @@ -.. _getrf: getrf ===== diff --git a/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst index c5d2abbcc8..c86f8a1e09 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrf_batch.rst @@ -1,4 +1,3 @@ -.. _getrf_batch: getrf_batch =========== diff --git a/source/elements/oneMKL/source/domains/lapack/getri.rst b/source/elements/oneMKL/source/domains/lapack/getri.rst index d1b188bde5..3250d8a43f 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri.rst @@ -1,4 +1,3 @@ -.. _getri: getri ===== diff --git a/source/elements/oneMKL/source/domains/lapack/getri_batch.rst b/source/elements/oneMKL/source/domains/lapack/getri_batch.rst index 3035cc0d94..a9fb1b0d75 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri_batch.rst @@ -1,4 +1,3 @@ -.. _getri_batch: getri_batch =========== diff --git a/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst index 439f47d3b5..b33d060b89 100644 --- a/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/getri_get_lwork.rst @@ -1,4 +1,3 @@ -.. _getri_get_lwork: getri_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/getrs.rst b/source/elements/oneMKL/source/domains/lapack/getrs.rst index a882ab2b92..d6ca644d5f 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrs.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrs.rst @@ -1,4 +1,3 @@ -.. _getrs: getrs ===== diff --git a/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst b/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst index 5af5194963..29efc2fa23 100644 --- a/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/getrs_batch.rst @@ -1,4 +1,3 @@ -.. _getrs_batch: getrs_batch =========== diff --git a/source/elements/oneMKL/source/domains/lapack/heevd.rst b/source/elements/oneMKL/source/domains/lapack/heevd.rst index 1e1071301e..7a0f7b896e 100644 --- a/source/elements/oneMKL/source/domains/lapack/heevd.rst +++ b/source/elements/oneMKL/source/domains/lapack/heevd.rst @@ -1,4 +1,3 @@ -.. _heevd: heevd ===== diff --git a/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst index 72dbc20d1b..dedbfc15fe 100644 --- a/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/heevd_get_lwork.rst @@ -1,4 +1,3 @@ -.. _heevd_get_lwork: heevd_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/hegvd.rst b/source/elements/oneMKL/source/domains/lapack/hegvd.rst index 69ade3fd8a..3a2460cabb 100644 --- a/source/elements/oneMKL/source/domains/lapack/hegvd.rst +++ b/source/elements/oneMKL/source/domains/lapack/hegvd.rst @@ -1,4 +1,3 @@ -.. _hegvd: hegvd ===== diff --git a/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst index b53b643937..5a17cb50b1 100644 --- a/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/hegvd_get_lwork.rst @@ -1,4 +1,3 @@ -.. _hegvd_get_lwork: hegvd_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/hetrd.rst b/source/elements/oneMKL/source/domains/lapack/hetrd.rst index 509770e648..68bd0e0526 100644 --- a/source/elements/oneMKL/source/domains/lapack/hetrd.rst +++ b/source/elements/oneMKL/source/domains/lapack/hetrd.rst @@ -1,4 +1,3 @@ -.. _hetrd: hetrd ===== diff --git a/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst index 96d254a97d..9f86a21482 100644 --- a/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/hetrd_get_lwork.rst @@ -1,4 +1,3 @@ -.. _hetrd_get_lwork: hetrd_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/orgbr.rst b/source/elements/oneMKL/source/domains/lapack/orgbr.rst index 8db646829e..37e9615c4b 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgbr.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgbr.rst @@ -1,4 +1,3 @@ -.. _orgbr: orgbr ===== diff --git a/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst index 81ee5b7738..112b691add 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgbr_get_lwork.rst @@ -1,4 +1,3 @@ -.. _orgbr_get_lwork: orgbr_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr.rst b/source/elements/oneMKL/source/domains/lapack/orgqr.rst index 386cfe52db..cc3f7cfb40 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgqr.rst @@ -1,4 +1,3 @@ -.. _orgqr: orgqr ===== diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst b/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst index 1baaa9d67f..66a459f0f1 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgqr_batch.rst @@ -1,4 +1,3 @@ -.. _orgqr_batch: orgqr_batch =========== diff --git a/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst index b764e9e0d9..2aabaaa7de 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgqr_get_lwork.rst @@ -1,4 +1,3 @@ -.. _orgqr_get_lwork: orgqr_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/orgtr.rst b/source/elements/oneMKL/source/domains/lapack/orgtr.rst index 48edd4261c..647e156ed4 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgtr.rst @@ -1,4 +1,3 @@ -.. _orgtr: orgtr ===== diff --git a/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst index a0b3c37c4d..35900b7eb5 100644 --- a/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/orgtr_get_lwork.rst @@ -1,4 +1,3 @@ -.. _orgtr_get_lwork: orgtr_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/ormqr.rst b/source/elements/oneMKL/source/domains/lapack/ormqr.rst index b19ca312b8..1caa12e05c 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormqr.rst @@ -1,4 +1,3 @@ -.. _ormqr: ormqr ===== diff --git a/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst index d08d3e82e0..758238985a 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormqr_get_lwork.rst @@ -1,4 +1,3 @@ -.. _ormqr_get_lwork: ormqr_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/ormtr.rst b/source/elements/oneMKL/source/domains/lapack/ormtr.rst index fe381dc0fb..9dcd3de654 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormtr.rst @@ -1,4 +1,3 @@ -.. _ormtr: ormtr ===== diff --git a/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst index f06b735cb3..60df984be1 100644 --- a/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ormtr_get_lwork.rst @@ -1,4 +1,3 @@ -.. _ormtr_get_lwork: ormtr_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst b/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst index 2cf425eb2e..214fad9c6c 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf-usm-version.rst @@ -150,7 +150,6 @@ potrf (USM Version) .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/lapack/potrf.rst b/source/elements/oneMKL/source/domains/lapack/potrf.rst index 068544cb76..42a640f376 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf.rst @@ -1,4 +1,3 @@ -.. _potrf: potrf ===== diff --git a/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst b/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst index 9435e034ac..7407ba9e71 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrf_batch.rst @@ -1,4 +1,3 @@ -.. _potrf_batch: potrf_batch =========== diff --git a/source/elements/oneMKL/source/domains/lapack/potri.rst b/source/elements/oneMKL/source/domains/lapack/potri.rst index a0fb21f512..c4ee10b7eb 100644 --- a/source/elements/oneMKL/source/domains/lapack/potri.rst +++ b/source/elements/oneMKL/source/domains/lapack/potri.rst @@ -1,4 +1,3 @@ -.. _potri: potri ===== diff --git a/source/elements/oneMKL/source/domains/lapack/potrs.rst b/source/elements/oneMKL/source/domains/lapack/potrs.rst index a7a7c93785..b10fe52616 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrs.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrs.rst @@ -1,4 +1,3 @@ -.. _potrs: potrs ===== diff --git a/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst b/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst index 4611a5404b..03861d7acb 100644 --- a/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst +++ b/source/elements/oneMKL/source/domains/lapack/potrs_batch.rst @@ -1,4 +1,3 @@ -.. _potrs_batch: potrs_batch =========== diff --git a/source/elements/oneMKL/source/domains/lapack/syevd.rst b/source/elements/oneMKL/source/domains/lapack/syevd.rst index 8caab8c532..95a1025894 100644 --- a/source/elements/oneMKL/source/domains/lapack/syevd.rst +++ b/source/elements/oneMKL/source/domains/lapack/syevd.rst @@ -1,4 +1,3 @@ -.. _syevd: syevd ===== diff --git a/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst index 7c0f2af363..9f444adb10 100644 --- a/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/syevd_get_lwork.rst @@ -1,4 +1,3 @@ -.. _syevd_get_lwork: syevd_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/sygvd.rst b/source/elements/oneMKL/source/domains/lapack/sygvd.rst index b3fe2f3bd2..e0666f6e15 100644 --- a/source/elements/oneMKL/source/domains/lapack/sygvd.rst +++ b/source/elements/oneMKL/source/domains/lapack/sygvd.rst @@ -1,4 +1,3 @@ -.. _sygvd: sygvd ===== diff --git a/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst index a322304a19..29be7d3b85 100644 --- a/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/sygvd_get_lwork.rst @@ -1,4 +1,3 @@ -.. _sygvd_get_lwork: sygvd_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/sytrd.rst b/source/elements/oneMKL/source/domains/lapack/sytrd.rst index efce81f54a..41929fb2e4 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrd.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrd.rst @@ -1,4 +1,3 @@ -.. _sytrd: sytrd ===== diff --git a/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst index 95823b4d13..7e4ad4a32e 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrd_get_lwork.rst @@ -1,4 +1,3 @@ -.. _sytrd_get_lwork: sytrd_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/sytrf.rst b/source/elements/oneMKL/source/domains/lapack/sytrf.rst index 06f4fe5874..fd5a104c54 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrf.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrf.rst @@ -1,4 +1,3 @@ -.. _sytrf: sytrf ===== diff --git a/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst index 5f9c2ad82a..ce203dbb08 100644 --- a/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/sytrf_get_lwork.rst @@ -1,4 +1,3 @@ -.. _sytrf_get_lwork: sytrf_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/trtrs.rst b/source/elements/oneMKL/source/domains/lapack/trtrs.rst index 741b763ee4..093bb36ed7 100644 --- a/source/elements/oneMKL/source/domains/lapack/trtrs.rst +++ b/source/elements/oneMKL/source/domains/lapack/trtrs.rst @@ -1,4 +1,3 @@ -.. _trtrs: trtrs ===== diff --git a/source/elements/oneMKL/source/domains/lapack/ungbr.rst b/source/elements/oneMKL/source/domains/lapack/ungbr.rst index 7ebff5e798..5f754055da 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungbr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungbr.rst @@ -1,4 +1,3 @@ -.. _ungbr: ungbr ===== diff --git a/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst index 5253e02ad7..5f72cce809 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungbr_get_lwork.rst @@ -1,4 +1,3 @@ -.. _ungbr_get_lwork: ungbr_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/ungqr.rst b/source/elements/oneMKL/source/domains/lapack/ungqr.rst index 8a507a5237..231b8ee22d 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungqr.rst @@ -1,4 +1,3 @@ -.. _ungqr: ungqr ===== diff --git a/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst index 129755d479..69b1fbba6a 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungqr_get_lwork.rst @@ -1,4 +1,3 @@ -.. _ungqr_get_lwork: ungqr_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/ungtr.rst b/source/elements/oneMKL/source/domains/lapack/ungtr.rst index 77c91c9a0b..643725d574 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungtr.rst @@ -1,4 +1,3 @@ -.. _ungtr: ungtr ===== diff --git a/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst index f5f49bd275..efbdfbb0ba 100644 --- a/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/ungtr_get_lwork.rst @@ -1,4 +1,3 @@ -.. _ungtr_get_lwork: ungtr_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/unmqr.rst b/source/elements/oneMKL/source/domains/lapack/unmqr.rst index e2eb28fe93..796867e70c 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmqr.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmqr.rst @@ -1,4 +1,3 @@ -.. _unmqr: unmqr ===== diff --git a/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst index 604e0c4cf8..35e50613fd 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmqr_get_lwork.rst @@ -1,4 +1,3 @@ -.. _unmqr_get_lwork: unmqr_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/lapack/unmtr.rst b/source/elements/oneMKL/source/domains/lapack/unmtr.rst index 5797426cb0..9770238b75 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmtr.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmtr.rst @@ -1,4 +1,3 @@ -.. _unmtr: unmtr ===== diff --git a/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst b/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst index 7c5ee64b3c..7e5029aeb3 100644 --- a/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst +++ b/source/elements/oneMKL/source/domains/lapack/unmtr_get_lwork.rst @@ -1,4 +1,3 @@ -.. _unmtr_get_lwork: unmtr_get_lwork =============== diff --git a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst index 9e79906923..df49116a6c 100644 --- a/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst +++ b/source/elements/oneMKL/source/domains/spblas/mkl-sparse-gemv.rst @@ -176,7 +176,6 @@ onemkl::sparse::gemv .. rubric:: Return Values - :name: return-values :class: sectiontitle diff --git a/source/elements/oneMKL/source/domains/vm/abs.rst b/source/elements/oneMKL/source/domains/vm/abs.rst index 088203472a..4d5a910373 100644 --- a/source/elements/oneMKL/source/domains/vm/abs.rst +++ b/source/elements/oneMKL/source/domains/vm/abs.rst @@ -1,4 +1,3 @@ -.. _abs: abs === diff --git a/source/elements/oneMKL/source/domains/vm/acos.rst b/source/elements/oneMKL/source/domains/vm/acos.rst index 7cc5964ded..211e344256 100644 --- a/source/elements/oneMKL/source/domains/vm/acos.rst +++ b/source/elements/oneMKL/source/domains/vm/acos.rst @@ -1,4 +1,3 @@ -.. _acos: acos ==== diff --git a/source/elements/oneMKL/source/domains/vm/acosh.rst b/source/elements/oneMKL/source/domains/vm/acosh.rst index ad93e8c942..a147c9c9c6 100644 --- a/source/elements/oneMKL/source/domains/vm/acosh.rst +++ b/source/elements/oneMKL/source/domains/vm/acosh.rst @@ -1,4 +1,3 @@ -.. _acosh: acosh ===== diff --git a/source/elements/oneMKL/source/domains/vm/acospi.rst b/source/elements/oneMKL/source/domains/vm/acospi.rst index 6c6e15f47b..d51610a532 100644 --- a/source/elements/oneMKL/source/domains/vm/acospi.rst +++ b/source/elements/oneMKL/source/domains/vm/acospi.rst @@ -1,4 +1,3 @@ -.. _acospi: acospi ====== diff --git a/source/elements/oneMKL/source/domains/vm/add.rst b/source/elements/oneMKL/source/domains/vm/add.rst index 8c8c5b4b31..5c8fe1ba60 100644 --- a/source/elements/oneMKL/source/domains/vm/add.rst +++ b/source/elements/oneMKL/source/domains/vm/add.rst @@ -1,4 +1,3 @@ -.. _add: add === diff --git a/source/elements/oneMKL/source/domains/vm/arg.rst b/source/elements/oneMKL/source/domains/vm/arg.rst index fda34f1b57..6669bc0425 100644 --- a/source/elements/oneMKL/source/domains/vm/arg.rst +++ b/source/elements/oneMKL/source/domains/vm/arg.rst @@ -1,4 +1,3 @@ -.. _arg: arg === diff --git a/source/elements/oneMKL/source/domains/vm/asin.rst b/source/elements/oneMKL/source/domains/vm/asin.rst index 76057d817e..0d3eb84025 100644 --- a/source/elements/oneMKL/source/domains/vm/asin.rst +++ b/source/elements/oneMKL/source/domains/vm/asin.rst @@ -1,4 +1,3 @@ -.. _asin: asin ==== diff --git a/source/elements/oneMKL/source/domains/vm/asinh.rst b/source/elements/oneMKL/source/domains/vm/asinh.rst index 994d9de0b7..d7065d66db 100644 --- a/source/elements/oneMKL/source/domains/vm/asinh.rst +++ b/source/elements/oneMKL/source/domains/vm/asinh.rst @@ -1,4 +1,3 @@ -.. _asinh: asinh ===== diff --git a/source/elements/oneMKL/source/domains/vm/asinpi.rst b/source/elements/oneMKL/source/domains/vm/asinpi.rst index 30034dd1e9..e6ad68c0d0 100644 --- a/source/elements/oneMKL/source/domains/vm/asinpi.rst +++ b/source/elements/oneMKL/source/domains/vm/asinpi.rst @@ -1,4 +1,3 @@ -.. _asinpi: asinpi ====== diff --git a/source/elements/oneMKL/source/domains/vm/atan.rst b/source/elements/oneMKL/source/domains/vm/atan.rst index d288bffa86..c14e6610e2 100644 --- a/source/elements/oneMKL/source/domains/vm/atan.rst +++ b/source/elements/oneMKL/source/domains/vm/atan.rst @@ -1,4 +1,3 @@ -.. _atan: atan ==== diff --git a/source/elements/oneMKL/source/domains/vm/atan2.rst b/source/elements/oneMKL/source/domains/vm/atan2.rst index 8e7080b647..a10bf3edcf 100644 --- a/source/elements/oneMKL/source/domains/vm/atan2.rst +++ b/source/elements/oneMKL/source/domains/vm/atan2.rst @@ -1,4 +1,3 @@ -.. _atan2: atan2 ===== diff --git a/source/elements/oneMKL/source/domains/vm/atan2pi.rst b/source/elements/oneMKL/source/domains/vm/atan2pi.rst index a6ab420df2..9ef3b7d10d 100644 --- a/source/elements/oneMKL/source/domains/vm/atan2pi.rst +++ b/source/elements/oneMKL/source/domains/vm/atan2pi.rst @@ -1,4 +1,3 @@ -.. _atan2pi: atan2pi ======= diff --git a/source/elements/oneMKL/source/domains/vm/atanh.rst b/source/elements/oneMKL/source/domains/vm/atanh.rst index 32bb1df94b..c22c7f3b21 100644 --- a/source/elements/oneMKL/source/domains/vm/atanh.rst +++ b/source/elements/oneMKL/source/domains/vm/atanh.rst @@ -1,4 +1,3 @@ -.. _atanh: atanh ===== diff --git a/source/elements/oneMKL/source/domains/vm/atanpi.rst b/source/elements/oneMKL/source/domains/vm/atanpi.rst index b92a25a4f6..512da784ef 100644 --- a/source/elements/oneMKL/source/domains/vm/atanpi.rst +++ b/source/elements/oneMKL/source/domains/vm/atanpi.rst @@ -1,4 +1,3 @@ -.. _atanpi: atanpi ====== diff --git a/source/elements/oneMKL/source/domains/vm/cbrt.rst b/source/elements/oneMKL/source/domains/vm/cbrt.rst index 658178e00f..170ac7fadb 100644 --- a/source/elements/oneMKL/source/domains/vm/cbrt.rst +++ b/source/elements/oneMKL/source/domains/vm/cbrt.rst @@ -1,4 +1,3 @@ -.. _cbrt: cbrt ==== diff --git a/source/elements/oneMKL/source/domains/vm/cdfnorm.rst b/source/elements/oneMKL/source/domains/vm/cdfnorm.rst index c436939ce7..19e62cb7c7 100644 --- a/source/elements/oneMKL/source/domains/vm/cdfnorm.rst +++ b/source/elements/oneMKL/source/domains/vm/cdfnorm.rst @@ -1,4 +1,3 @@ -.. _cdfnorm: cdfnorm ======= diff --git a/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst b/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst index 9e7f181119..6cca081089 100644 --- a/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst +++ b/source/elements/oneMKL/source/domains/vm/cdfnorminv.rst @@ -1,4 +1,3 @@ -.. _cdfnorminv: cdfnorminv ========== diff --git a/source/elements/oneMKL/source/domains/vm/ceil.rst b/source/elements/oneMKL/source/domains/vm/ceil.rst index b73397de6c..7c5240da2e 100644 --- a/source/elements/oneMKL/source/domains/vm/ceil.rst +++ b/source/elements/oneMKL/source/domains/vm/ceil.rst @@ -1,4 +1,3 @@ -.. _ceil: ceil ==== diff --git a/source/elements/oneMKL/source/domains/vm/cis.rst b/source/elements/oneMKL/source/domains/vm/cis.rst index 51a04bf9c7..36cece1f2b 100644 --- a/source/elements/oneMKL/source/domains/vm/cis.rst +++ b/source/elements/oneMKL/source/domains/vm/cis.rst @@ -1,4 +1,3 @@ -.. _cis: cis === diff --git a/source/elements/oneMKL/source/domains/vm/clear_status.rst b/source/elements/oneMKL/source/domains/vm/clear_status.rst index 810c2c20e9..d720cfd040 100644 --- a/source/elements/oneMKL/source/domains/vm/clear_status.rst +++ b/source/elements/oneMKL/source/domains/vm/clear_status.rst @@ -1,4 +1,3 @@ -.. _clear_status: clear_status ============ diff --git a/source/elements/oneMKL/source/domains/vm/conj.rst b/source/elements/oneMKL/source/domains/vm/conj.rst index b9b89cada4..eb766da127 100644 --- a/source/elements/oneMKL/source/domains/vm/conj.rst +++ b/source/elements/oneMKL/source/domains/vm/conj.rst @@ -1,4 +1,3 @@ -.. _conj: conj ==== diff --git a/source/elements/oneMKL/source/domains/vm/copysign.rst b/source/elements/oneMKL/source/domains/vm/copysign.rst index 5a2071a958..29d1888d98 100644 --- a/source/elements/oneMKL/source/domains/vm/copysign.rst +++ b/source/elements/oneMKL/source/domains/vm/copysign.rst @@ -1,4 +1,3 @@ -.. _copysign: copysign ======== diff --git a/source/elements/oneMKL/source/domains/vm/cos.rst b/source/elements/oneMKL/source/domains/vm/cos.rst index d2b133a0e5..a7bc68acec 100644 --- a/source/elements/oneMKL/source/domains/vm/cos.rst +++ b/source/elements/oneMKL/source/domains/vm/cos.rst @@ -1,4 +1,3 @@ -.. _cos: cos === diff --git a/source/elements/oneMKL/source/domains/vm/cosd.rst b/source/elements/oneMKL/source/domains/vm/cosd.rst index 338105754d..66751513a2 100644 --- a/source/elements/oneMKL/source/domains/vm/cosd.rst +++ b/source/elements/oneMKL/source/domains/vm/cosd.rst @@ -1,4 +1,3 @@ -.. _cosd: cosd ==== diff --git a/source/elements/oneMKL/source/domains/vm/cosh.rst b/source/elements/oneMKL/source/domains/vm/cosh.rst index eda5621441..fc1a684ea6 100644 --- a/source/elements/oneMKL/source/domains/vm/cosh.rst +++ b/source/elements/oneMKL/source/domains/vm/cosh.rst @@ -1,4 +1,3 @@ -.. _cosh: cosh ==== diff --git a/source/elements/oneMKL/source/domains/vm/cospi.rst b/source/elements/oneMKL/source/domains/vm/cospi.rst index 25c0cf9746..724e5de2c3 100644 --- a/source/elements/oneMKL/source/domains/vm/cospi.rst +++ b/source/elements/oneMKL/source/domains/vm/cospi.rst @@ -1,4 +1,3 @@ -.. _cospi: cospi ===== diff --git a/source/elements/oneMKL/source/domains/vm/create_error_handler.rst b/source/elements/oneMKL/source/domains/vm/create_error_handler.rst index 4bb5fb8d69..7a797b844d 100644 --- a/source/elements/oneMKL/source/domains/vm/create_error_handler.rst +++ b/source/elements/oneMKL/source/domains/vm/create_error_handler.rst @@ -1,4 +1,3 @@ -.. _create_error_handler: create_error_handler ==================== diff --git a/source/elements/oneMKL/source/domains/vm/div.rst b/source/elements/oneMKL/source/domains/vm/div.rst index daba6752f9..07cb3759e5 100644 --- a/source/elements/oneMKL/source/domains/vm/div.rst +++ b/source/elements/oneMKL/source/domains/vm/div.rst @@ -1,4 +1,3 @@ -.. _div: div === diff --git a/source/elements/oneMKL/source/domains/vm/erf.rst b/source/elements/oneMKL/source/domains/vm/erf.rst index 0a91024a57..16d9c37b9e 100644 --- a/source/elements/oneMKL/source/domains/vm/erf.rst +++ b/source/elements/oneMKL/source/domains/vm/erf.rst @@ -1,4 +1,3 @@ -.. _erf: erf === diff --git a/source/elements/oneMKL/source/domains/vm/erfc.rst b/source/elements/oneMKL/source/domains/vm/erfc.rst index 6e999e3a7d..a89edbe753 100644 --- a/source/elements/oneMKL/source/domains/vm/erfc.rst +++ b/source/elements/oneMKL/source/domains/vm/erfc.rst @@ -1,4 +1,3 @@ -.. _erfc: erfc ==== diff --git a/source/elements/oneMKL/source/domains/vm/erfcinv.rst b/source/elements/oneMKL/source/domains/vm/erfcinv.rst index 64017dc110..b0186d1a38 100644 --- a/source/elements/oneMKL/source/domains/vm/erfcinv.rst +++ b/source/elements/oneMKL/source/domains/vm/erfcinv.rst @@ -1,4 +1,3 @@ -.. _erfcinv: erfcinv ======= diff --git a/source/elements/oneMKL/source/domains/vm/erfinv.rst b/source/elements/oneMKL/source/domains/vm/erfinv.rst index 2d5e415b4b..48e817926d 100644 --- a/source/elements/oneMKL/source/domains/vm/erfinv.rst +++ b/source/elements/oneMKL/source/domains/vm/erfinv.rst @@ -1,4 +1,3 @@ -.. _erfinv: erfinv ====== diff --git a/source/elements/oneMKL/source/domains/vm/exp.rst b/source/elements/oneMKL/source/domains/vm/exp.rst index 4f94e3dc2b..fd93757de6 100644 --- a/source/elements/oneMKL/source/domains/vm/exp.rst +++ b/source/elements/oneMKL/source/domains/vm/exp.rst @@ -1,4 +1,3 @@ -.. _exp: exp === diff --git a/source/elements/oneMKL/source/domains/vm/exp10.rst b/source/elements/oneMKL/source/domains/vm/exp10.rst index 2e2d55ce0a..9c428b596f 100644 --- a/source/elements/oneMKL/source/domains/vm/exp10.rst +++ b/source/elements/oneMKL/source/domains/vm/exp10.rst @@ -1,4 +1,3 @@ -.. _exp10: exp10 ===== diff --git a/source/elements/oneMKL/source/domains/vm/exp2.rst b/source/elements/oneMKL/source/domains/vm/exp2.rst index 6dfa6e4eab..0c3f8abb34 100644 --- a/source/elements/oneMKL/source/domains/vm/exp2.rst +++ b/source/elements/oneMKL/source/domains/vm/exp2.rst @@ -1,4 +1,3 @@ -.. _exp2: exp2 ==== diff --git a/source/elements/oneMKL/source/domains/vm/expint1.rst b/source/elements/oneMKL/source/domains/vm/expint1.rst index 9a570ded2e..0e724b16f8 100644 --- a/source/elements/oneMKL/source/domains/vm/expint1.rst +++ b/source/elements/oneMKL/source/domains/vm/expint1.rst @@ -1,4 +1,3 @@ -.. _expint1: expint1 ======= diff --git a/source/elements/oneMKL/source/domains/vm/expm1.rst b/source/elements/oneMKL/source/domains/vm/expm1.rst index 964786f03c..b49db37a19 100644 --- a/source/elements/oneMKL/source/domains/vm/expm1.rst +++ b/source/elements/oneMKL/source/domains/vm/expm1.rst @@ -1,4 +1,3 @@ -.. _expm1: expm1 ===== diff --git a/source/elements/oneMKL/source/domains/vm/fdim.rst b/source/elements/oneMKL/source/domains/vm/fdim.rst index e6fdaedf93..6c0da78d5f 100644 --- a/source/elements/oneMKL/source/domains/vm/fdim.rst +++ b/source/elements/oneMKL/source/domains/vm/fdim.rst @@ -1,4 +1,3 @@ -.. _fdim: fdim ==== diff --git a/source/elements/oneMKL/source/domains/vm/floor.rst b/source/elements/oneMKL/source/domains/vm/floor.rst index af3bf607cc..773303555b 100644 --- a/source/elements/oneMKL/source/domains/vm/floor.rst +++ b/source/elements/oneMKL/source/domains/vm/floor.rst @@ -1,4 +1,3 @@ -.. _floor: floor ===== diff --git a/source/elements/oneMKL/source/domains/vm/fmax.rst b/source/elements/oneMKL/source/domains/vm/fmax.rst index 1f361bcbc1..b7f9a4373b 100644 --- a/source/elements/oneMKL/source/domains/vm/fmax.rst +++ b/source/elements/oneMKL/source/domains/vm/fmax.rst @@ -1,4 +1,3 @@ -.. _fmax: fmax ==== diff --git a/source/elements/oneMKL/source/domains/vm/fmin.rst b/source/elements/oneMKL/source/domains/vm/fmin.rst index 716f5fcbfa..5624b0cd09 100644 --- a/source/elements/oneMKL/source/domains/vm/fmin.rst +++ b/source/elements/oneMKL/source/domains/vm/fmin.rst @@ -1,4 +1,3 @@ -.. _fmin: fmin ==== diff --git a/source/elements/oneMKL/source/domains/vm/fmod.rst b/source/elements/oneMKL/source/domains/vm/fmod.rst index 0f7e0fd5a6..f2335963fb 100644 --- a/source/elements/oneMKL/source/domains/vm/fmod.rst +++ b/source/elements/oneMKL/source/domains/vm/fmod.rst @@ -1,4 +1,3 @@ -.. _fmod: fmod ==== diff --git a/source/elements/oneMKL/source/domains/vm/frac.rst b/source/elements/oneMKL/source/domains/vm/frac.rst index eaacde4f06..9d49bb67a9 100644 --- a/source/elements/oneMKL/source/domains/vm/frac.rst +++ b/source/elements/oneMKL/source/domains/vm/frac.rst @@ -1,4 +1,3 @@ -.. _frac: frac ==== diff --git a/source/elements/oneMKL/source/domains/vm/get_mode.rst b/source/elements/oneMKL/source/domains/vm/get_mode.rst index 0510c0e192..fff62e7a8b 100644 --- a/source/elements/oneMKL/source/domains/vm/get_mode.rst +++ b/source/elements/oneMKL/source/domains/vm/get_mode.rst @@ -1,4 +1,3 @@ -.. _get_mode: get_mode ======== diff --git a/source/elements/oneMKL/source/domains/vm/get_status.rst b/source/elements/oneMKL/source/domains/vm/get_status.rst index 031cb194e4..4dedd06a29 100644 --- a/source/elements/oneMKL/source/domains/vm/get_status.rst +++ b/source/elements/oneMKL/source/domains/vm/get_status.rst @@ -1,4 +1,3 @@ -.. _get_status: get_status ========== diff --git a/source/elements/oneMKL/source/domains/vm/hypot.rst b/source/elements/oneMKL/source/domains/vm/hypot.rst index afa3e5b384..753f9a616b 100644 --- a/source/elements/oneMKL/source/domains/vm/hypot.rst +++ b/source/elements/oneMKL/source/domains/vm/hypot.rst @@ -1,4 +1,3 @@ -.. _hypot: hypot ===== diff --git a/source/elements/oneMKL/source/domains/vm/inv.rst b/source/elements/oneMKL/source/domains/vm/inv.rst index 4b22d2bbaa..d587fc4d90 100644 --- a/source/elements/oneMKL/source/domains/vm/inv.rst +++ b/source/elements/oneMKL/source/domains/vm/inv.rst @@ -1,4 +1,3 @@ -.. _inv: inv === diff --git a/source/elements/oneMKL/source/domains/vm/invcbrt.rst b/source/elements/oneMKL/source/domains/vm/invcbrt.rst index 5708a94470..aac3767f42 100644 --- a/source/elements/oneMKL/source/domains/vm/invcbrt.rst +++ b/source/elements/oneMKL/source/domains/vm/invcbrt.rst @@ -1,4 +1,3 @@ -.. _invcbrt: invcbrt ======= diff --git a/source/elements/oneMKL/source/domains/vm/invsqrt.rst b/source/elements/oneMKL/source/domains/vm/invsqrt.rst index 4a04ab12a9..7a42e8281e 100644 --- a/source/elements/oneMKL/source/domains/vm/invsqrt.rst +++ b/source/elements/oneMKL/source/domains/vm/invsqrt.rst @@ -1,4 +1,3 @@ -.. _invsqrt: invsqrt ======= diff --git a/source/elements/oneMKL/source/domains/vm/lgamma.rst b/source/elements/oneMKL/source/domains/vm/lgamma.rst index e89017d9e2..533a0671fd 100644 --- a/source/elements/oneMKL/source/domains/vm/lgamma.rst +++ b/source/elements/oneMKL/source/domains/vm/lgamma.rst @@ -1,4 +1,3 @@ -.. _lgamma: lgamma ====== diff --git a/source/elements/oneMKL/source/domains/vm/linearfrac.rst b/source/elements/oneMKL/source/domains/vm/linearfrac.rst index 04e9495324..94a4bed512 100644 --- a/source/elements/oneMKL/source/domains/vm/linearfrac.rst +++ b/source/elements/oneMKL/source/domains/vm/linearfrac.rst @@ -1,4 +1,3 @@ -.. _linearfrac: linearfrac ========== diff --git a/source/elements/oneMKL/source/domains/vm/ln.rst b/source/elements/oneMKL/source/domains/vm/ln.rst index ca805df639..e38df779d7 100644 --- a/source/elements/oneMKL/source/domains/vm/ln.rst +++ b/source/elements/oneMKL/source/domains/vm/ln.rst @@ -1,4 +1,3 @@ -.. _ln: ln == diff --git a/source/elements/oneMKL/source/domains/vm/log10.rst b/source/elements/oneMKL/source/domains/vm/log10.rst index 4e859dc8ea..30124fba72 100644 --- a/source/elements/oneMKL/source/domains/vm/log10.rst +++ b/source/elements/oneMKL/source/domains/vm/log10.rst @@ -1,4 +1,3 @@ -.. _log10: log10 ===== diff --git a/source/elements/oneMKL/source/domains/vm/log1p.rst b/source/elements/oneMKL/source/domains/vm/log1p.rst index 234cfe2a0b..8a736c4d54 100644 --- a/source/elements/oneMKL/source/domains/vm/log1p.rst +++ b/source/elements/oneMKL/source/domains/vm/log1p.rst @@ -1,4 +1,3 @@ -.. _log1p: log1p ===== diff --git a/source/elements/oneMKL/source/domains/vm/log2.rst b/source/elements/oneMKL/source/domains/vm/log2.rst index ca4a96a6f4..b7be5cdf81 100644 --- a/source/elements/oneMKL/source/domains/vm/log2.rst +++ b/source/elements/oneMKL/source/domains/vm/log2.rst @@ -1,4 +1,3 @@ -.. _log2: log2 ==== diff --git a/source/elements/oneMKL/source/domains/vm/logb.rst b/source/elements/oneMKL/source/domains/vm/logb.rst index bcc3c10d9e..b57d3a404f 100644 --- a/source/elements/oneMKL/source/domains/vm/logb.rst +++ b/source/elements/oneMKL/source/domains/vm/logb.rst @@ -1,4 +1,3 @@ -.. _logb: logb ==== diff --git a/source/elements/oneMKL/source/domains/vm/maxmag.rst b/source/elements/oneMKL/source/domains/vm/maxmag.rst index 240dbb7a1e..bb1ac4db8b 100644 --- a/source/elements/oneMKL/source/domains/vm/maxmag.rst +++ b/source/elements/oneMKL/source/domains/vm/maxmag.rst @@ -1,4 +1,3 @@ -.. _maxmag: maxmag ====== diff --git a/source/elements/oneMKL/source/domains/vm/minmag.rst b/source/elements/oneMKL/source/domains/vm/minmag.rst index 1b21d8c386..2470449ed9 100644 --- a/source/elements/oneMKL/source/domains/vm/minmag.rst +++ b/source/elements/oneMKL/source/domains/vm/minmag.rst @@ -1,4 +1,3 @@ -.. _minmag: minmag ====== diff --git a/source/elements/oneMKL/source/domains/vm/modf.rst b/source/elements/oneMKL/source/domains/vm/modf.rst index 4524516526..c5207d1eec 100644 --- a/source/elements/oneMKL/source/domains/vm/modf.rst +++ b/source/elements/oneMKL/source/domains/vm/modf.rst @@ -1,4 +1,3 @@ -.. _modf: modf ==== diff --git a/source/elements/oneMKL/source/domains/vm/mul.rst b/source/elements/oneMKL/source/domains/vm/mul.rst index bd2f2df18b..21336bdc66 100644 --- a/source/elements/oneMKL/source/domains/vm/mul.rst +++ b/source/elements/oneMKL/source/domains/vm/mul.rst @@ -1,4 +1,3 @@ -.. _mul: mul === diff --git a/source/elements/oneMKL/source/domains/vm/mulbyconj.rst b/source/elements/oneMKL/source/domains/vm/mulbyconj.rst index f40c584273..1274b10b8d 100644 --- a/source/elements/oneMKL/source/domains/vm/mulbyconj.rst +++ b/source/elements/oneMKL/source/domains/vm/mulbyconj.rst @@ -1,4 +1,3 @@ -.. _mulbyconj: mulbyconj ========= diff --git a/source/elements/oneMKL/source/domains/vm/nearbyint.rst b/source/elements/oneMKL/source/domains/vm/nearbyint.rst index a3dc40235c..2eb887081a 100644 --- a/source/elements/oneMKL/source/domains/vm/nearbyint.rst +++ b/source/elements/oneMKL/source/domains/vm/nearbyint.rst @@ -1,4 +1,3 @@ -.. _nearbyint: nearbyint ========= diff --git a/source/elements/oneMKL/source/domains/vm/nextafter.rst b/source/elements/oneMKL/source/domains/vm/nextafter.rst index 5b02945fb0..526547a234 100644 --- a/source/elements/oneMKL/source/domains/vm/nextafter.rst +++ b/source/elements/oneMKL/source/domains/vm/nextafter.rst @@ -1,4 +1,3 @@ -.. _nextafter: nextafter ========= diff --git a/source/elements/oneMKL/source/domains/vm/pow.rst b/source/elements/oneMKL/source/domains/vm/pow.rst index 00458fd1e6..1c3ff1fb87 100644 --- a/source/elements/oneMKL/source/domains/vm/pow.rst +++ b/source/elements/oneMKL/source/domains/vm/pow.rst @@ -1,4 +1,3 @@ -.. _pow: pow === diff --git a/source/elements/oneMKL/source/domains/vm/pow2o3.rst b/source/elements/oneMKL/source/domains/vm/pow2o3.rst index 474dd87b73..fc90224d1b 100644 --- a/source/elements/oneMKL/source/domains/vm/pow2o3.rst +++ b/source/elements/oneMKL/source/domains/vm/pow2o3.rst @@ -1,4 +1,3 @@ -.. _pow2o3: pow2o3 ====== diff --git a/source/elements/oneMKL/source/domains/vm/pow3o2.rst b/source/elements/oneMKL/source/domains/vm/pow3o2.rst index 86ba356434..ceba741844 100644 --- a/source/elements/oneMKL/source/domains/vm/pow3o2.rst +++ b/source/elements/oneMKL/source/domains/vm/pow3o2.rst @@ -1,4 +1,3 @@ -.. _pow3o2: pow3o2 ====== diff --git a/source/elements/oneMKL/source/domains/vm/powr.rst b/source/elements/oneMKL/source/domains/vm/powr.rst index b25d1c03f3..01268fcd26 100644 --- a/source/elements/oneMKL/source/domains/vm/powr.rst +++ b/source/elements/oneMKL/source/domains/vm/powr.rst @@ -1,4 +1,3 @@ -.. _powr: powr ==== diff --git a/source/elements/oneMKL/source/domains/vm/powx.rst b/source/elements/oneMKL/source/domains/vm/powx.rst index 68ac99b108..1f71845d91 100644 --- a/source/elements/oneMKL/source/domains/vm/powx.rst +++ b/source/elements/oneMKL/source/domains/vm/powx.rst @@ -1,4 +1,3 @@ -.. _powx: powx ==== diff --git a/source/elements/oneMKL/source/domains/vm/remainder.rst b/source/elements/oneMKL/source/domains/vm/remainder.rst index 44088066e4..3e88ef67de 100644 --- a/source/elements/oneMKL/source/domains/vm/remainder.rst +++ b/source/elements/oneMKL/source/domains/vm/remainder.rst @@ -1,4 +1,3 @@ -.. _remainder: remainder ========= diff --git a/source/elements/oneMKL/source/domains/vm/rint.rst b/source/elements/oneMKL/source/domains/vm/rint.rst index 337e970a9e..ee57172265 100644 --- a/source/elements/oneMKL/source/domains/vm/rint.rst +++ b/source/elements/oneMKL/source/domains/vm/rint.rst @@ -1,4 +1,3 @@ -.. _rint: rint ==== diff --git a/source/elements/oneMKL/source/domains/vm/round.rst b/source/elements/oneMKL/source/domains/vm/round.rst index cdb8163a93..75d1f361b2 100644 --- a/source/elements/oneMKL/source/domains/vm/round.rst +++ b/source/elements/oneMKL/source/domains/vm/round.rst @@ -1,4 +1,3 @@ -.. _round: round ===== diff --git a/source/elements/oneMKL/source/domains/vm/set_status.rst b/source/elements/oneMKL/source/domains/vm/set_status.rst index a41e41f549..fed2687f08 100644 --- a/source/elements/oneMKL/source/domains/vm/set_status.rst +++ b/source/elements/oneMKL/source/domains/vm/set_status.rst @@ -1,4 +1,3 @@ -.. _set_status: set_status ========== diff --git a/source/elements/oneMKL/source/domains/vm/setmode.rst b/source/elements/oneMKL/source/domains/vm/setmode.rst index 2814977c3f..1bc2931a86 100644 --- a/source/elements/oneMKL/source/domains/vm/setmode.rst +++ b/source/elements/oneMKL/source/domains/vm/setmode.rst @@ -1,4 +1,3 @@ -.. _setmode: setmode ======= diff --git a/source/elements/oneMKL/source/domains/vm/sin.rst b/source/elements/oneMKL/source/domains/vm/sin.rst index c253d1dcd8..21751b740c 100644 --- a/source/elements/oneMKL/source/domains/vm/sin.rst +++ b/source/elements/oneMKL/source/domains/vm/sin.rst @@ -1,4 +1,3 @@ -.. _sin: sin === diff --git a/source/elements/oneMKL/source/domains/vm/sincos.rst b/source/elements/oneMKL/source/domains/vm/sincos.rst index cc2b736615..1f71ed5685 100644 --- a/source/elements/oneMKL/source/domains/vm/sincos.rst +++ b/source/elements/oneMKL/source/domains/vm/sincos.rst @@ -1,4 +1,3 @@ -.. _sincos: sincos ====== diff --git a/source/elements/oneMKL/source/domains/vm/sind.rst b/source/elements/oneMKL/source/domains/vm/sind.rst index b15fed9079..4881c71c13 100644 --- a/source/elements/oneMKL/source/domains/vm/sind.rst +++ b/source/elements/oneMKL/source/domains/vm/sind.rst @@ -1,4 +1,3 @@ -.. _sind: sind ==== diff --git a/source/elements/oneMKL/source/domains/vm/sinh.rst b/source/elements/oneMKL/source/domains/vm/sinh.rst index b1abc4c19d..213a168d30 100644 --- a/source/elements/oneMKL/source/domains/vm/sinh.rst +++ b/source/elements/oneMKL/source/domains/vm/sinh.rst @@ -1,4 +1,3 @@ -.. _sinh: sinh ==== diff --git a/source/elements/oneMKL/source/domains/vm/sinpi.rst b/source/elements/oneMKL/source/domains/vm/sinpi.rst index 6b34658bf0..6dbb179f44 100644 --- a/source/elements/oneMKL/source/domains/vm/sinpi.rst +++ b/source/elements/oneMKL/source/domains/vm/sinpi.rst @@ -1,4 +1,3 @@ -.. _sinpi: sinpi ===== diff --git a/source/elements/oneMKL/source/domains/vm/sqr.rst b/source/elements/oneMKL/source/domains/vm/sqr.rst index cb6314d90e..ebe541d480 100644 --- a/source/elements/oneMKL/source/domains/vm/sqr.rst +++ b/source/elements/oneMKL/source/domains/vm/sqr.rst @@ -1,4 +1,3 @@ -.. _sqr: sqr === diff --git a/source/elements/oneMKL/source/domains/vm/sqrt.rst b/source/elements/oneMKL/source/domains/vm/sqrt.rst index 4426f037fb..5a8f6ed6ca 100644 --- a/source/elements/oneMKL/source/domains/vm/sqrt.rst +++ b/source/elements/oneMKL/source/domains/vm/sqrt.rst @@ -1,4 +1,3 @@ -.. _sqrt: sqrt ==== diff --git a/source/elements/oneMKL/source/domains/vm/sub.rst b/source/elements/oneMKL/source/domains/vm/sub.rst index 88ac20d5ce..73a0edef57 100644 --- a/source/elements/oneMKL/source/domains/vm/sub.rst +++ b/source/elements/oneMKL/source/domains/vm/sub.rst @@ -1,4 +1,3 @@ -.. _sub: sub === diff --git a/source/elements/oneMKL/source/domains/vm/tan.rst b/source/elements/oneMKL/source/domains/vm/tan.rst index 46aa6e81fa..52d41c18de 100644 --- a/source/elements/oneMKL/source/domains/vm/tan.rst +++ b/source/elements/oneMKL/source/domains/vm/tan.rst @@ -1,4 +1,3 @@ -.. _tan: tan === diff --git a/source/elements/oneMKL/source/domains/vm/tand.rst b/source/elements/oneMKL/source/domains/vm/tand.rst index 4704de8e89..6fa536dd6e 100644 --- a/source/elements/oneMKL/source/domains/vm/tand.rst +++ b/source/elements/oneMKL/source/domains/vm/tand.rst @@ -1,4 +1,3 @@ -.. _tand: tand ==== diff --git a/source/elements/oneMKL/source/domains/vm/tanh.rst b/source/elements/oneMKL/source/domains/vm/tanh.rst index c11282b0e9..58c1c416f9 100644 --- a/source/elements/oneMKL/source/domains/vm/tanh.rst +++ b/source/elements/oneMKL/source/domains/vm/tanh.rst @@ -1,4 +1,3 @@ -.. _tanh: tanh ==== diff --git a/source/elements/oneMKL/source/domains/vm/tanpi.rst b/source/elements/oneMKL/source/domains/vm/tanpi.rst index 9650fd96f0..57f1963743 100644 --- a/source/elements/oneMKL/source/domains/vm/tanpi.rst +++ b/source/elements/oneMKL/source/domains/vm/tanpi.rst @@ -1,4 +1,3 @@ -.. _tanpi: tanpi ===== diff --git a/source/elements/oneMKL/source/domains/vm/tgamma.rst b/source/elements/oneMKL/source/domains/vm/tgamma.rst index 01335bba15..c1dd40f029 100644 --- a/source/elements/oneMKL/source/domains/vm/tgamma.rst +++ b/source/elements/oneMKL/source/domains/vm/tgamma.rst @@ -1,4 +1,3 @@ -.. _tgamma: tgamma ====== diff --git a/source/elements/oneMKL/source/domains/vm/trunc.rst b/source/elements/oneMKL/source/domains/vm/trunc.rst index f3c0ad23d5..8a5faef4b9 100644 --- a/source/elements/oneMKL/source/domains/vm/trunc.rst +++ b/source/elements/oneMKL/source/domains/vm/trunc.rst @@ -1,4 +1,3 @@ -.. _trunc: trunc =====