mkl-devel-dpcpp 2024.0.0__py2.py3-none-win_amd64.whl → 2024.2.0__py2.py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mkl-devel-dpcpp might be problematic. Click here for more details.
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/blas/buffer_decls.hpp +53 -15
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/blas/usm_decls.hpp +186 -146
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/dfti.hpp +3 -1
- mkl_devel_dpcpp-2024.2.0.data/data/Library/include/oneapi/mkl/lapack/concepts.hpp +55 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/include/oneapi/mkl/lapack/exceptions.hpp +75 -0
- {mkl_devel_dpcpp-2024.0.0.data/data/Library/include/oneapi/mkl → mkl_devel_dpcpp-2024.2.0.data/data/Library/include/oneapi/mkl/lapack}/lapack.hpp +79 -315
- mkl_devel_dpcpp-2024.2.0.data/data/Library/include/oneapi/mkl/lapack/scratchpad.hpp +106 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/include/oneapi/mkl/lapack.hpp +23 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/engines.hpp +20 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/functions.hpp +2 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/include/oneapi/mkl/spblas/sparse_auxiliary.hpp +68 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/include/oneapi/mkl/spblas/sparse_operations.hpp +383 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/include/oneapi/mkl/spblas/sparse_structures.hpp +194 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/include/oneapi/mkl/spblas.hpp +32 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/stats.hpp +2 -2
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/buffer.hpp +63 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/decls.hpp +2 -2
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/device/detail/decls.hpp +1 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/device/detail/dispatch.hpp +1 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/device/detail/ep.hpp +1 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/device/detail/ha.hpp +1 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/device/detail/la.hpp +1 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/device/detail/rts.hpp +1 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/device/detail/scalar.hpp +1 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/device/vm.hpp +1 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/span.hpp +69 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm/usm.hpp +67 -1
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/lib/mkl_sycl.lib +0 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/lib/mkl_sycl_blas_dll.lib +0 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/lib/mkl_sycl_data_fitting_dll.lib +0 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/lib/mkl_sycl_dft_dll.lib +0 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/lib/mkl_sycl_dll.lib +0 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/lib/mkl_sycl_lapack_dll.lib +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/lib/mkl_sycl_rng_dll.lib +0 -0
- mkl_devel_dpcpp-2024.2.0.data/data/Library/lib/mkl_sycl_sparse_dll.lib +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/lib/mkl_sycl_stats_dll.lib +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/lib/mkl_sycl_vm_dll.lib +0 -0
- {mkl_devel_dpcpp-2024.0.0.dist-info → mkl_devel_dpcpp-2024.2.0.dist-info}/METADATA +23 -25
- mkl_devel_dpcpp-2024.2.0.dist-info/RECORD +87 -0
- {mkl_devel_dpcpp-2024.0.0.dist-info → mkl_devel_dpcpp-2024.2.0.dist-info}/WHEEL +1 -1
- mkl_devel_dpcpp-2024.0.0.data/data/Library/include/oneapi/mkl/spblas.hpp +0 -963
- mkl_devel_dpcpp-2024.0.0.data/data/Library/lib/mkl_sycl_blas_dll.lib +0 -0
- mkl_devel_dpcpp-2024.0.0.data/data/Library/lib/mkl_sycl_data_fitting_dll.lib +0 -0
- mkl_devel_dpcpp-2024.0.0.data/data/Library/lib/mkl_sycl_dft_dll.lib +0 -0
- mkl_devel_dpcpp-2024.0.0.data/data/Library/lib/mkl_sycl_dll.lib +0 -0
- mkl_devel_dpcpp-2024.0.0.data/data/Library/lib/mkl_sycl_lapack_dll.lib +0 -0
- mkl_devel_dpcpp-2024.0.0.data/data/Library/lib/mkl_sycl_sparse_dll.lib +0 -0
- mkl_devel_dpcpp-2024.0.0.dist-info/RECORD +0 -80
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/bfloat16.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/blas/buffer.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/blas/types.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/blas/usm.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/blas.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/exceptions.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/experimental/data_fitting/interpolate.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/experimental/data_fitting/spline_and_data_params.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/experimental/data_fitting/splines.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/experimental/data_fitting.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/export.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/detail/engine_base.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/bernoulli_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/bits_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/distribution_base.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/engine_base.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/engine_helpers_base.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/exponential_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/gaussian_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/lognormal_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/mcg31m1_helpers_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/mcg31m1_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/mcg59_helpers_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/mcg59_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_helpers_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_skip_ahead_matrix.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/philox4x32x10_helpers_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/philox4x32x10_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/poisson_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/types.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/uniform_bits_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/uniform_impl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/detail/vm_wrappers.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/distributions.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/engine_helpers.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/engines.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/functions.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device/types.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/device.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng/distributions.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/rng.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/types.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl/vm.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.data → mkl_devel_dpcpp-2024.2.0.data}/data/Library/include/oneapi/mkl.hpp +0 -0
- {mkl_devel_dpcpp-2024.0.0.dist-info → mkl_devel_dpcpp-2024.2.0.dist-info}/LICENSE.txt +0 -0
- {mkl_devel_dpcpp-2024.0.0.dist-info → mkl_devel_dpcpp-2024.2.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/*******************************************************************************
|
|
2
|
+
* Copyright 2024 Intel Corporation.
|
|
3
|
+
*
|
|
4
|
+
* This software and the related documents are Intel copyrighted materials, and
|
|
5
|
+
* your use of them is governed by the express license under which they were
|
|
6
|
+
* provided to you (License). Unless the License provides otherwise, you may not
|
|
7
|
+
* use, modify, copy, publish, distribute, disclose or transmit this software or
|
|
8
|
+
* the related documents without Intel's prior written permission.
|
|
9
|
+
*
|
|
10
|
+
* This software and the related documents are provided as is, with no express
|
|
11
|
+
* or implied warranties, other than those that are expressly stated in the
|
|
12
|
+
* License.
|
|
13
|
+
*******************************************************************************/
|
|
14
|
+
#ifndef _ONEAPI_MKL_LAPACK_SCRATCHPAD_HPP__
|
|
15
|
+
#define _ONEAPI_MKL_LAPACK_SCRATCHPAD_HPP__
|
|
16
|
+
|
|
17
|
+
#include <complex>
|
|
18
|
+
#include <cstdint>
|
|
19
|
+
#include <sycl/sycl.hpp>
|
|
20
|
+
|
|
21
|
+
#include "oneapi/mkl/types.hpp"
|
|
22
|
+
#include "oneapi/mkl/lapack/concepts.hpp"
|
|
23
|
+
|
|
24
|
+
namespace oneapi {
|
|
25
|
+
namespace mkl {
|
|
26
|
+
namespace lapack {
|
|
27
|
+
|
|
28
|
+
// nonbatch queries
|
|
29
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t gebrd_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t lda);
|
|
30
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t gels_scratchpad_size(sycl::queue& queue, oneapi::mkl::transpose trans, int64_t m, int64_t n, int64_t nrhs, int64_t lda, int64_t ldb);
|
|
31
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t geqrf_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t lda);
|
|
32
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t gerqf_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t lda);
|
|
33
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t gesv_scratchpad_size(sycl::queue& queue, int64_t n, int64_t nrhs, int64_t lda, int64_t ldb);
|
|
34
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t gesvd_scratchpad_size(sycl::queue& queue, oneapi::mkl::jobsvd jobu, oneapi::mkl::jobsvd jobvt, int64_t m, int64_t n, int64_t lda, int64_t ldu, int64_t ldvt);
|
|
35
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t gesvd_scratchpad_size(sycl::queue& queue, oneapi::mkl::jobsvd jobu, oneapi::mkl::jobsvd jobvt, int64_t m, int64_t n, int64_t lda, int64_t ldu, int64_t ldvt);
|
|
36
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getrf_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t lda);
|
|
37
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getrfnp_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t lda);
|
|
38
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getri_scratchpad_size(sycl::queue& queue, int64_t n, int64_t lda);
|
|
39
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getrs_scratchpad_size(sycl::queue& queue, oneapi::mkl::transpose trans, int64_t n, int64_t nrhs, int64_t lda, int64_t ldb);
|
|
40
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t heev_scratchpad_size(sycl::queue& queue, oneapi::mkl::compz jobz, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
41
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t heevd_scratchpad_size(sycl::queue& queue, oneapi::mkl::job jobz, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
42
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t heevx_scratchpad_size(sycl::queue& queue, oneapi::mkl::compz jobz, oneapi::mkl::rangev range, oneapi::mkl::uplo uplo, int64_t n, int64_t lda, typename fp::value_type vl, typename fp::value_type vu, int64_t il, int64_t iu, typename fp::value_type abstol, int64_t ldz);
|
|
43
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t hegvd_scratchpad_size(sycl::queue& queue, int64_t itype, oneapi::mkl::job jobz, oneapi::mkl::uplo uplo, int64_t n, int64_t lda, int64_t ldb);
|
|
44
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t hegvx_scratchpad_size(sycl::queue& queue, int64_t itype, oneapi::mkl::compz jobz, oneapi::mkl::rangev range, oneapi::mkl::uplo uplo, int64_t n, int64_t lda, int64_t ldb, typename fp::value_type vl, typename fp::value_type vu, int64_t il, int64_t iu, typename fp::value_type abstol, int64_t ldz);
|
|
45
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t hetrd_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
46
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t hetrf_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
47
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t orgbr_scratchpad_size(sycl::queue& queue, oneapi::mkl::generate vect, int64_t m, int64_t n, int64_t k, int64_t lda);
|
|
48
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t orgqr_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t k, int64_t lda);
|
|
49
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t orgtr_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
50
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t ormqr_scratchpad_size(sycl::queue& queue, oneapi::mkl::side side, oneapi::mkl::transpose trans, int64_t m, int64_t n, int64_t k, int64_t lda, int64_t ldc);
|
|
51
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t ormrq_scratchpad_size(sycl::queue& queue, oneapi::mkl::side side, oneapi::mkl::transpose trans, int64_t m, int64_t n, int64_t k, int64_t lda, int64_t ldc);
|
|
52
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t ormtr_scratchpad_size(sycl::queue& queue, oneapi::mkl::side side, oneapi::mkl::uplo uplo, oneapi::mkl::transpose trans, int64_t m, int64_t n, int64_t lda, int64_t ldc);
|
|
53
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t potrf_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
54
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t potri_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
55
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t potrs_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t nrhs, int64_t lda, int64_t ldb);
|
|
56
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t steqr_scratchpad_size(sycl::queue& queue, oneapi::mkl::compz compz, int64_t n, int64_t ldz);
|
|
57
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t syev_scratchpad_size(sycl::queue& queue, oneapi::mkl::compz jobz, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
58
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t syevd_scratchpad_size(sycl::queue& queue, oneapi::mkl::job jobz, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
59
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t syevx_scratchpad_size(sycl::queue& queue, oneapi::mkl::compz jobz, oneapi::mkl::rangev range, oneapi::mkl::uplo uplo, int64_t n, int64_t lda, fp vl, fp vu, int64_t il, int64_t iu, fp abstol, int64_t ldz);
|
|
60
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t sygvd_scratchpad_size(sycl::queue& queue, int64_t itype, oneapi::mkl::job jobz, oneapi::mkl::uplo uplo, int64_t n, int64_t lda, int64_t ldb);
|
|
61
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t sygvx_scratchpad_size(sycl::queue& queue, int64_t itype, oneapi::mkl::compz jobz, oneapi::mkl::rangev range, oneapi::mkl::uplo uplo, int64_t n, int64_t lda, int64_t ldb, fp vl, fp vu, int64_t il, int64_t iu, fp abstol, int64_t ldz);
|
|
62
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t sytrd_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
63
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t sytrf_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
64
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t trtri_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, oneapi::mkl::diag diag, int64_t n, int64_t lda);
|
|
65
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t trtrs_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, oneapi::mkl::transpose trans, oneapi::mkl::diag diag, int64_t n, int64_t nrhs, int64_t lda, int64_t ldb);
|
|
66
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t ungbr_scratchpad_size(sycl::queue& queue, oneapi::mkl::generate vect, int64_t m, int64_t n, int64_t k, int64_t lda);
|
|
67
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t ungqr_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t k, int64_t lda);
|
|
68
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t ungtr_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t lda);
|
|
69
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t unmqr_scratchpad_size(sycl::queue& queue, oneapi::mkl::side side, oneapi::mkl::transpose trans, int64_t m, int64_t n, int64_t k, int64_t lda, int64_t ldc);
|
|
70
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t unmrq_scratchpad_size(sycl::queue& queue, oneapi::mkl::side side, oneapi::mkl::transpose trans, int64_t m, int64_t n, int64_t k, int64_t lda, int64_t ldc);
|
|
71
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t unmtr_scratchpad_size(sycl::queue& queue, oneapi::mkl::side side, oneapi::mkl::uplo uplo, oneapi::mkl::transpose trans, int64_t m, int64_t n, int64_t lda, int64_t ldc);
|
|
72
|
+
|
|
73
|
+
// batch queries
|
|
74
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t geinv_batch_scratchpad_size(sycl::queue& queue, int64_t* n, int64_t* lda, int64_t group_count, int64_t* group_sizes);
|
|
75
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t gels_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::transpose* trans, int64_t* m, int64_t* n, int64_t* nrhs, int64_t* lda, int64_t* ldb, int64_t group_count, int64_t* group_sizes);
|
|
76
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t gels_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::transpose trans, int64_t m, int64_t n, int64_t nrhs, int64_t lda, int64_t stride_a, int64_t ldb, int64_t stride_b, int64_t batch_size);
|
|
77
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t geqrf_batch_scratchpad_size(sycl::queue& queue, int64_t* m, int64_t* n, int64_t* lda, int64_t group_count, int64_t* group_sizes);
|
|
78
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t geqrf_batch_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t lda, int64_t stride_a, int64_t stride_tau, int64_t batch_size);
|
|
79
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t gesvda_batch_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t lda, int64_t stride_a, int64_t stride_s, int64_t ldu, int64_t stride_u, int64_t ldvt, int64_t stride_vt, int64_t batch_size);
|
|
80
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getrf_batch_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t lda, int64_t stride_a, int64_t stride_ipiv, int64_t batch_size);
|
|
81
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getrf_batch_scratchpad_size(sycl::queue& queue, int64_t* m, int64_t* n, int64_t* lda, int64_t group_count, int64_t* group_sizes);
|
|
82
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getrfnp_batch_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t lda, int64_t stride_a, int64_t batch_size);
|
|
83
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getrfnp_batch_scratchpad_size(sycl::queue& queue, int64_t* m, int64_t* n, int64_t* lda, int64_t group_count, int64_t* group_sizes);
|
|
84
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getri_batch_scratchpad_size(sycl::queue& queue, int64_t* n, int64_t* lda, int64_t group_count, int64_t* group_sizes);
|
|
85
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getri_batch_scratchpad_size(sycl::queue& queue, int64_t n, int64_t lda, int64_t stride_a, int64_t stride_ipiv, int64_t batch_size);
|
|
86
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getri_batch_scratchpad_size(sycl::queue& queue, int64_t n, int64_t lda, int64_t stride_a, int64_t stride_ipiv, int64_t ldainv, int64_t stride_ainv, int64_t batch_size);
|
|
87
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getrs_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::transpose* trans, int64_t* n, int64_t* nrhs, int64_t* lda, int64_t* ldb, int64_t group_count, int64_t* group_sizes);
|
|
88
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getrs_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::transpose trans, int64_t n, int64_t nrhs, int64_t lda, int64_t stride_a, int64_t stride_ipiv, int64_t ldb, int64_t stride_b, int64_t batch_size);
|
|
89
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t getrsnp_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::transpose trans, int64_t n, int64_t nrhs, int64_t lda, int64_t stride_a, int64_t ldb, int64_t stride_b, int64_t batch_size);
|
|
90
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t orgqr_batch_scratchpad_size(sycl::queue& queue, int64_t* m, int64_t* n, int64_t* k, int64_t* lda, int64_t group_count, int64_t* group_sizes);
|
|
91
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t orgqr_batch_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t k, int64_t lda, int64_t stride_a, int64_t stride_tau, int64_t batch_size);
|
|
92
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_real_floating_point<fp> = nullptr> int64_t ormqr_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::side* side, oneapi::mkl::transpose* trans, int64_t* m, int64_t* n, int64_t* k, int64_t* lda, int64_t* ldc, int64_t group_count, int64_t* group_sizes);
|
|
93
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t potrf_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo* uplo, int64_t* n, int64_t* lda, int64_t group_count, int64_t* group_sizes);
|
|
94
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t potrf_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t lda, int64_t stride_a, int64_t batch_size);
|
|
95
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t potrs_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo* uplo, int64_t* n, int64_t* nrhs, int64_t* lda, int64_t* ldb, int64_t group_count, int64_t* group_sizes);
|
|
96
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t potrs_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo uplo, int64_t n, int64_t nrhs, int64_t lda, int64_t stride_a, int64_t ldb, int64_t stride_b, int64_t batch_size);
|
|
97
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_floating_point<fp> = nullptr> int64_t trtrs_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::uplo* uplo, oneapi::mkl::transpose* trans, oneapi::mkl::diag* diag, int64_t* n, int64_t* nrhs, int64_t* lda, int64_t* ldb, int64_t group_count, int64_t* group_sizes);
|
|
98
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t ungqr_batch_scratchpad_size(sycl::queue& queue, int64_t* m, int64_t* n, int64_t* k, int64_t* lda, int64_t group_count, int64_t* group_sizes);
|
|
99
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t ungqr_batch_scratchpad_size(sycl::queue& queue, int64_t m, int64_t n, int64_t k, int64_t lda, int64_t stride_a, int64_t stride_tau, int64_t batch_size);
|
|
100
|
+
template <typename fp, oneapi::mkl::lapack::internal::is_complex_floating_point<fp> = nullptr> int64_t unmqr_batch_scratchpad_size(sycl::queue& queue, oneapi::mkl::side* side, oneapi::mkl::transpose* trans, int64_t* m, int64_t* n, int64_t* k, int64_t* lda, int64_t* ldc, int64_t group_count, int64_t* group_sizes);
|
|
101
|
+
|
|
102
|
+
} // namespace lapack
|
|
103
|
+
} // namespace mkl
|
|
104
|
+
} // namespace oneapi
|
|
105
|
+
|
|
106
|
+
#endif // _ONEAPI_MKL_LAPACK_SCRATCHPAD_HPP__
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*******************************************************************************
|
|
2
|
+
* Copyright 2024 Intel Corporation.
|
|
3
|
+
*
|
|
4
|
+
* This software and the related documents are Intel copyrighted materials, and
|
|
5
|
+
* your use of them is governed by the express license under which they were
|
|
6
|
+
* provided to you (License). Unless the License provides otherwise, you may not
|
|
7
|
+
* use, modify, copy, publish, distribute, disclose or transmit this software or
|
|
8
|
+
* the related documents without Intel's prior written permission.
|
|
9
|
+
*
|
|
10
|
+
* This software and the related documents are provided as is, with no express
|
|
11
|
+
* or implied warranties, other than those that are expressly stated in the
|
|
12
|
+
* License.
|
|
13
|
+
*******************************************************************************/
|
|
14
|
+
|
|
15
|
+
#ifndef _ONEAPI_MKL_LAPACK_HPP__
|
|
16
|
+
#define _ONEAPI_MKL_LAPACK_HPP__
|
|
17
|
+
|
|
18
|
+
#include "oneapi/mkl/lapack/concepts.hpp"
|
|
19
|
+
#include "oneapi/mkl/lapack/exceptions.hpp"
|
|
20
|
+
#include "oneapi/mkl/lapack/lapack.hpp"
|
|
21
|
+
#include "oneapi/mkl/lapack/scratchpad.hpp"
|
|
22
|
+
|
|
23
|
+
#endif // _ONEAPI_MKL_LAPACK_HPP__
|
|
@@ -92,14 +92,34 @@ private:
|
|
|
92
92
|
//
|
|
93
93
|
// Supported parallelization methods:
|
|
94
94
|
// skip_ahead
|
|
95
|
+
//
|
|
96
|
+
namespace mrg32k3a_mode {
|
|
97
|
+
struct optimal {};
|
|
98
|
+
struct custom {
|
|
99
|
+
custom() = delete;
|
|
100
|
+
std::uint32_t num_streams;
|
|
101
|
+
};
|
|
102
|
+
constexpr optimal optimal_v{};
|
|
103
|
+
} // namespace mrg32k3a_mode
|
|
104
|
+
|
|
95
105
|
class DLL_EXPORT mrg32k3a : detail::engine_base<mrg32k3a> {
|
|
96
106
|
public:
|
|
97
107
|
static constexpr std::uint32_t default_seed = 1;
|
|
98
108
|
|
|
99
109
|
mrg32k3a(sycl::queue queue, std::uint32_t seed = default_seed);
|
|
110
|
+
|
|
111
|
+
mrg32k3a(sycl::queue queue, std::uint32_t seed, mrg32k3a_mode::optimal mode);
|
|
112
|
+
|
|
113
|
+
mrg32k3a(sycl::queue queue, std::uint32_t seed, mrg32k3a_mode::custom mode);
|
|
100
114
|
|
|
101
115
|
mrg32k3a(sycl::queue queue, std::initializer_list<std::uint32_t> seed);
|
|
102
116
|
|
|
117
|
+
mrg32k3a(sycl::queue queue, std::initializer_list<std::uint32_t> seed,
|
|
118
|
+
mrg32k3a_mode::optimal mode);
|
|
119
|
+
|
|
120
|
+
mrg32k3a(sycl::queue queue, std::initializer_list<std::uint32_t> seed,
|
|
121
|
+
mrg32k3a_mode::custom mode);
|
|
122
|
+
|
|
103
123
|
mrg32k3a(const mrg32k3a& other);
|
|
104
124
|
|
|
105
125
|
mrg32k3a(mrg32k3a&& other);
|
|
@@ -128,6 +128,7 @@ void save_state(Engine& engine, std::uint8_t* mem);
|
|
|
128
128
|
// Engine& engine - engine object
|
|
129
129
|
// const std::string& filename - name of the file to save the state of random number engine
|
|
130
130
|
template <typename Engine>
|
|
131
|
+
[[deprecated("Use save_state with const std::uint8_t* as a second parameter instead")]]
|
|
131
132
|
void save_state(Engine& engine, const std::string& filename);
|
|
132
133
|
|
|
133
134
|
// Function oneapi::mkl::rng::load_state()
|
|
@@ -152,6 +153,7 @@ Engine load_state(const sycl::queue& queue, const std::uint8_t* mem);
|
|
|
152
153
|
// Output:
|
|
153
154
|
// Engine engine - engine object created based on provided queue and state from the file
|
|
154
155
|
template <typename Engine>
|
|
156
|
+
[[deprecated("Use load_state with const std::uint8_t* as a second parameter instead")]]
|
|
155
157
|
Engine load_state(const sycl::queue& queue, const std::string& filename);
|
|
156
158
|
|
|
157
159
|
} // namespace rng
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*******************************************************************************
|
|
2
|
+
* Copyright 2019-2023 Intel Corporation.
|
|
3
|
+
*
|
|
4
|
+
* This software and the related documents are Intel copyrighted materials, and
|
|
5
|
+
* your use of them is governed by the express license under which they were
|
|
6
|
+
* provided to you (License). Unless the License provides otherwise, you may not
|
|
7
|
+
* use, modify, copy, publish, distribute, disclose or transmit this software or
|
|
8
|
+
* the related documents without Intel's prior written permission.
|
|
9
|
+
*
|
|
10
|
+
* This software and the related documents are provided as is, with no express
|
|
11
|
+
* or implied warranties, other than those that are expressly stated in the
|
|
12
|
+
* License.
|
|
13
|
+
*******************************************************************************/
|
|
14
|
+
|
|
15
|
+
#ifndef _ONEMKL_SPARSE_AUXILIARY_HPP_
|
|
16
|
+
#define _ONEMKL_SPARSE_AUXILIARY_HPP_
|
|
17
|
+
|
|
18
|
+
#include <sycl/sycl.hpp>
|
|
19
|
+
#include <complex>
|
|
20
|
+
#include <cstddef>
|
|
21
|
+
#include <cstdint>
|
|
22
|
+
#include <stdexcept>
|
|
23
|
+
|
|
24
|
+
#include "oneapi/mkl/export.hpp"
|
|
25
|
+
#include "oneapi/mkl/types.hpp"
|
|
26
|
+
#include "oneapi/mkl/exceptions.hpp"
|
|
27
|
+
|
|
28
|
+
#include "oneapi/mkl/spblas/sparse_structures.hpp"
|
|
29
|
+
|
|
30
|
+
namespace oneapi {
|
|
31
|
+
namespace mkl {
|
|
32
|
+
namespace sparse {
|
|
33
|
+
|
|
34
|
+
/******************************************************************************/
|
|
35
|
+
DLL_EXPORT sycl::event omatcopy(sycl::queue &queue,
|
|
36
|
+
transpose transpose_val,
|
|
37
|
+
matrix_handle_t spMat_in,
|
|
38
|
+
matrix_handle_t spMat_out,
|
|
39
|
+
const std::vector<sycl::event> &dependencies = {});
|
|
40
|
+
|
|
41
|
+
/******************************************************************************/
|
|
42
|
+
DLL_EXPORT sycl::event sort_matrix(sycl::queue &queue,
|
|
43
|
+
matrix_handle_t spMat,
|
|
44
|
+
const std::vector<sycl::event> &dependencies = {});
|
|
45
|
+
|
|
46
|
+
/******************************************************************************/
|
|
47
|
+
#define ONEMKL_DECLARE_SPARSE_UPDATE_DIAGONAL_VALUES(FpType) \
|
|
48
|
+
DLL_EXPORT void update_diagonal_values(sycl::queue &queue, \
|
|
49
|
+
matrix_handle_t spMat, \
|
|
50
|
+
sycl::buffer<FpType, 1> &new_diag_values); \
|
|
51
|
+
DLL_EXPORT sycl::event update_diagonal_values(sycl::queue &queue, \
|
|
52
|
+
matrix_handle_t spMat, \
|
|
53
|
+
std::int64_t length, \
|
|
54
|
+
const FpType *new_diag_values, \
|
|
55
|
+
const std::vector<sycl::event> &dependencies = {})
|
|
56
|
+
|
|
57
|
+
ONEMKL_DECLARE_SPARSE_UPDATE_DIAGONAL_VALUES(float);
|
|
58
|
+
ONEMKL_DECLARE_SPARSE_UPDATE_DIAGONAL_VALUES(double);
|
|
59
|
+
ONEMKL_DECLARE_SPARSE_UPDATE_DIAGONAL_VALUES(std::complex<float>);
|
|
60
|
+
ONEMKL_DECLARE_SPARSE_UPDATE_DIAGONAL_VALUES(std::complex<double>);
|
|
61
|
+
|
|
62
|
+
#undef ONEMKL_DECLARE_SPARSE_UPDATE_DIAGONAL_VALUES
|
|
63
|
+
|
|
64
|
+
} /* namespace oneapi::mkl::sparse */
|
|
65
|
+
} /* namespace mkl */
|
|
66
|
+
} // namespace oneapi
|
|
67
|
+
|
|
68
|
+
#endif // #ifndef _ONEMKL_SPARSE_AUXILIARY_HPP_
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
/*******************************************************************************
|
|
2
|
+
* Copyright 2019-2023 Intel Corporation.
|
|
3
|
+
*
|
|
4
|
+
* This software and the related documents are Intel copyrighted materials, and
|
|
5
|
+
* your use of them is governed by the express license under which they were
|
|
6
|
+
* provided to you (License). Unless the License provides otherwise, you may not
|
|
7
|
+
* use, modify, copy, publish, distribute, disclose or transmit this software or
|
|
8
|
+
* the related documents without Intel's prior written permission.
|
|
9
|
+
*
|
|
10
|
+
* This software and the related documents are provided as is, with no express
|
|
11
|
+
* or implied warranties, other than those that are expressly stated in the
|
|
12
|
+
* License.
|
|
13
|
+
*******************************************************************************/
|
|
14
|
+
|
|
15
|
+
#ifndef _ONEMKL_SPARSE_OPERATIONS_HPP_
|
|
16
|
+
#define _ONEMKL_SPARSE_OPERATIONS_HPP_
|
|
17
|
+
|
|
18
|
+
#include <sycl/sycl.hpp>
|
|
19
|
+
#include <complex>
|
|
20
|
+
#include <cstddef>
|
|
21
|
+
#include <cstdint>
|
|
22
|
+
#include <stdexcept>
|
|
23
|
+
|
|
24
|
+
#include "oneapi/mkl/export.hpp"
|
|
25
|
+
#include "oneapi/mkl/types.hpp"
|
|
26
|
+
#include "oneapi/mkl/exceptions.hpp"
|
|
27
|
+
|
|
28
|
+
#include "oneapi/mkl/spblas/sparse_structures.hpp"
|
|
29
|
+
|
|
30
|
+
namespace oneapi {
|
|
31
|
+
namespace mkl {
|
|
32
|
+
namespace sparse {
|
|
33
|
+
|
|
34
|
+
/******************************************************************************/
|
|
35
|
+
DLL_EXPORT sycl::event
|
|
36
|
+
optimize_gemv(sycl::queue &queue,
|
|
37
|
+
transpose opA,
|
|
38
|
+
matrix_handle_t A,
|
|
39
|
+
const std::vector<sycl::event> &dependencies = {});
|
|
40
|
+
|
|
41
|
+
/******************************************************************************/
|
|
42
|
+
DLL_EXPORT sycl::event
|
|
43
|
+
optimize_trmv(sycl::queue &queue,
|
|
44
|
+
uplo uplo_val,
|
|
45
|
+
transpose opA,
|
|
46
|
+
diag diag_val,
|
|
47
|
+
matrix_handle_t A,
|
|
48
|
+
const std::vector<sycl::event> &dependencies = {});
|
|
49
|
+
|
|
50
|
+
/******************************************************************************/
|
|
51
|
+
DLL_EXPORT sycl::event
|
|
52
|
+
optimize_trsv(sycl::queue &queue,
|
|
53
|
+
uplo uplo_val,
|
|
54
|
+
transpose opA,
|
|
55
|
+
diag diag_val,
|
|
56
|
+
matrix_handle_t A,
|
|
57
|
+
const std::vector<sycl::event> &dependencies = {});
|
|
58
|
+
|
|
59
|
+
/******************************************************************************/
|
|
60
|
+
DLL_EXPORT sycl::event
|
|
61
|
+
optimize_trsm(sycl::queue &queue,
|
|
62
|
+
uplo uplo_val,
|
|
63
|
+
transpose opA,
|
|
64
|
+
diag diag_val,
|
|
65
|
+
matrix_handle_t A,
|
|
66
|
+
const std::vector<sycl::event> &dependencies = {});
|
|
67
|
+
|
|
68
|
+
/******************************************************************************/
|
|
69
|
+
DLL_EXPORT sycl::event
|
|
70
|
+
optimize_trsm(sycl::queue &queue,
|
|
71
|
+
layout layout_val,
|
|
72
|
+
uplo uplo_val,
|
|
73
|
+
transpose opA,
|
|
74
|
+
diag diag_val,
|
|
75
|
+
matrix_handle_t A,
|
|
76
|
+
const std::int64_t columns,
|
|
77
|
+
const std::vector<sycl::event> &dependencies = {});
|
|
78
|
+
|
|
79
|
+
/******************************************************************************/
|
|
80
|
+
#define ONEMKL_DECLARE_SPARSE_GEMV(FpType) \
|
|
81
|
+
DLL_EXPORT void gemv(sycl::queue &queue, \
|
|
82
|
+
transpose opA, \
|
|
83
|
+
const FpType alpha, \
|
|
84
|
+
matrix_handle_t A, \
|
|
85
|
+
sycl::buffer<FpType, 1> &x, \
|
|
86
|
+
const FpType beta, \
|
|
87
|
+
sycl::buffer<FpType, 1> &y); \
|
|
88
|
+
DLL_EXPORT sycl::event gemv(sycl::queue &queue, \
|
|
89
|
+
transpose opA, \
|
|
90
|
+
const FpType alpha, \
|
|
91
|
+
matrix_handle_t A, \
|
|
92
|
+
const FpType *x, \
|
|
93
|
+
const FpType beta, \
|
|
94
|
+
FpType *y, \
|
|
95
|
+
const std::vector<sycl::event> &dependencies = {})
|
|
96
|
+
|
|
97
|
+
ONEMKL_DECLARE_SPARSE_GEMV(float);
|
|
98
|
+
ONEMKL_DECLARE_SPARSE_GEMV(double);
|
|
99
|
+
ONEMKL_DECLARE_SPARSE_GEMV(std::complex<float>);
|
|
100
|
+
ONEMKL_DECLARE_SPARSE_GEMV(std::complex<double>);
|
|
101
|
+
|
|
102
|
+
#undef ONEMKL_DECLARE_SPARSE_GEMV
|
|
103
|
+
|
|
104
|
+
/******************************************************************************/
|
|
105
|
+
#define ONEMKL_DECLARE_SPARSE_GEMVDOT(FpType) \
|
|
106
|
+
DLL_EXPORT void gemvdot(sycl::queue &queue, \
|
|
107
|
+
transpose opA, \
|
|
108
|
+
const FpType alpha, \
|
|
109
|
+
matrix_handle_t A, \
|
|
110
|
+
sycl::buffer<FpType, 1> &x, \
|
|
111
|
+
const FpType beta, \
|
|
112
|
+
sycl::buffer<FpType, 1> &y, \
|
|
113
|
+
sycl::buffer<FpType, 1> &d); \
|
|
114
|
+
DLL_EXPORT sycl::event gemvdot(sycl::queue &queue, \
|
|
115
|
+
transpose opA, \
|
|
116
|
+
const FpType alpha, \
|
|
117
|
+
matrix_handle_t A, \
|
|
118
|
+
FpType *x, \
|
|
119
|
+
const FpType beta, \
|
|
120
|
+
FpType *y, \
|
|
121
|
+
FpType *d, \
|
|
122
|
+
const std::vector<sycl::event> &dependencies = {})
|
|
123
|
+
|
|
124
|
+
ONEMKL_DECLARE_SPARSE_GEMVDOT(float);
|
|
125
|
+
ONEMKL_DECLARE_SPARSE_GEMVDOT(double);
|
|
126
|
+
ONEMKL_DECLARE_SPARSE_GEMVDOT(std::complex<float>);
|
|
127
|
+
ONEMKL_DECLARE_SPARSE_GEMVDOT(std::complex<double>);
|
|
128
|
+
|
|
129
|
+
#undef ONEMKL_DECLARE_SPARSE_GEMVDOT
|
|
130
|
+
|
|
131
|
+
/******************************************************************************/
|
|
132
|
+
#define ONEMKL_DECLARE_SPARSE_SYMV(FpType) \
|
|
133
|
+
DLL_EXPORT void symv(sycl::queue &queue, \
|
|
134
|
+
uplo uplo_val, \
|
|
135
|
+
const FpType alpha, \
|
|
136
|
+
matrix_handle_t A, \
|
|
137
|
+
sycl::buffer<FpType, 1> &x, \
|
|
138
|
+
const FpType beta, \
|
|
139
|
+
sycl::buffer<FpType, 1> &y); \
|
|
140
|
+
DLL_EXPORT sycl::event symv(sycl::queue &queue, \
|
|
141
|
+
uplo uplo_val, \
|
|
142
|
+
const FpType alpha, \
|
|
143
|
+
matrix_handle_t A, \
|
|
144
|
+
FpType *x, \
|
|
145
|
+
const FpType beta, \
|
|
146
|
+
FpType *y, \
|
|
147
|
+
const std::vector<sycl::event> &dependencies = {})
|
|
148
|
+
|
|
149
|
+
ONEMKL_DECLARE_SPARSE_SYMV(float);
|
|
150
|
+
ONEMKL_DECLARE_SPARSE_SYMV(double);
|
|
151
|
+
ONEMKL_DECLARE_SPARSE_SYMV(std::complex<float>);
|
|
152
|
+
ONEMKL_DECLARE_SPARSE_SYMV(std::complex<double>);
|
|
153
|
+
|
|
154
|
+
#undef ONEMKL_DECLARE_SPARSE_SYMV
|
|
155
|
+
|
|
156
|
+
/******************************************************************************/
|
|
157
|
+
#define ONEMKL_DECLARE_SPARSE_TRMV(FpType) \
|
|
158
|
+
DLL_EXPORT void trmv(sycl::queue &queue, \
|
|
159
|
+
uplo uplo_val, \
|
|
160
|
+
transpose opA, \
|
|
161
|
+
diag diag_val, \
|
|
162
|
+
const FpType alpha, \
|
|
163
|
+
matrix_handle_t A, \
|
|
164
|
+
sycl::buffer<FpType, 1> &x, \
|
|
165
|
+
const FpType beta, \
|
|
166
|
+
sycl::buffer<FpType, 1> &y); \
|
|
167
|
+
DLL_EXPORT sycl::event trmv(sycl::queue &queue, \
|
|
168
|
+
uplo uplo_val, \
|
|
169
|
+
transpose opA, \
|
|
170
|
+
diag diag_val, \
|
|
171
|
+
const FpType alpha, \
|
|
172
|
+
matrix_handle_t A, \
|
|
173
|
+
FpType *x, \
|
|
174
|
+
const FpType beta, \
|
|
175
|
+
FpType *y, \
|
|
176
|
+
const std::vector<sycl::event> &dependencies = {})
|
|
177
|
+
|
|
178
|
+
ONEMKL_DECLARE_SPARSE_TRMV(float);
|
|
179
|
+
ONEMKL_DECLARE_SPARSE_TRMV(double);
|
|
180
|
+
ONEMKL_DECLARE_SPARSE_TRMV(std::complex<float>);
|
|
181
|
+
ONEMKL_DECLARE_SPARSE_TRMV(std::complex<double>);
|
|
182
|
+
|
|
183
|
+
#undef ONEMKL_DECLARE_SPARSE_TRMV
|
|
184
|
+
|
|
185
|
+
/******************************************************************************/
|
|
186
|
+
#define ONEMKL_DECLARE_SPARSE_TRSV(FpType) \
|
|
187
|
+
DLL_EXPORT void trsv(sycl::queue &queue, \
|
|
188
|
+
uplo uplo_val, \
|
|
189
|
+
transpose opA, \
|
|
190
|
+
diag diag_val, \
|
|
191
|
+
const FpType alpha, \
|
|
192
|
+
matrix_handle_t A, \
|
|
193
|
+
sycl::buffer<FpType, 1> &x, \
|
|
194
|
+
sycl::buffer<FpType, 1> &y); \
|
|
195
|
+
DLL_EXPORT sycl::event trsv(sycl::queue &queue, \
|
|
196
|
+
uplo uplo_val, \
|
|
197
|
+
transpose opA, \
|
|
198
|
+
diag diag_val, \
|
|
199
|
+
const FpType alpha, \
|
|
200
|
+
matrix_handle_t A, \
|
|
201
|
+
FpType *x, \
|
|
202
|
+
FpType *y, \
|
|
203
|
+
const std::vector<sycl::event> &dependencies = {})
|
|
204
|
+
|
|
205
|
+
ONEMKL_DECLARE_SPARSE_TRSV(float);
|
|
206
|
+
ONEMKL_DECLARE_SPARSE_TRSV(double);
|
|
207
|
+
ONEMKL_DECLARE_SPARSE_TRSV(std::complex<float>);
|
|
208
|
+
ONEMKL_DECLARE_SPARSE_TRSV(std::complex<double>);
|
|
209
|
+
|
|
210
|
+
#undef ONEMKL_DECLARE_SPARSE_TRSV
|
|
211
|
+
|
|
212
|
+
#define ONEMKL_DECLARE_DEPRECATED_SPARSE_TRSV(FpType) \
|
|
213
|
+
[[deprecated("Use oneapi::mkl::sparse::trsv(queue, ... , diag_val, /* alpha */ 1.0, ...) instead.")]] \
|
|
214
|
+
DLL_EXPORT void trsv(sycl::queue &queue, \
|
|
215
|
+
uplo uplo_val, \
|
|
216
|
+
transpose opA, \
|
|
217
|
+
diag diag_val, \
|
|
218
|
+
matrix_handle_t A, \
|
|
219
|
+
sycl::buffer<FpType, 1> &x, \
|
|
220
|
+
sycl::buffer<FpType, 1> &y); \
|
|
221
|
+
[[deprecated("Use oneapi::mkl::sparse::trsv(queue, ... , diag_val, /* alpha */ 1.0, ...) instead.")]] \
|
|
222
|
+
DLL_EXPORT sycl::event trsv(sycl::queue &queue, \
|
|
223
|
+
uplo uplo_val, \
|
|
224
|
+
transpose opA, \
|
|
225
|
+
diag diag_val, \
|
|
226
|
+
matrix_handle_t A, \
|
|
227
|
+
FpType *x, \
|
|
228
|
+
FpType *y, \
|
|
229
|
+
const std::vector<sycl::event> &dependencies = {})
|
|
230
|
+
|
|
231
|
+
ONEMKL_DECLARE_DEPRECATED_SPARSE_TRSV(float);
|
|
232
|
+
ONEMKL_DECLARE_DEPRECATED_SPARSE_TRSV(double);
|
|
233
|
+
ONEMKL_DECLARE_DEPRECATED_SPARSE_TRSV(std::complex<float>);
|
|
234
|
+
ONEMKL_DECLARE_DEPRECATED_SPARSE_TRSV(std::complex<double>);
|
|
235
|
+
|
|
236
|
+
#undef ONEMKL_DECLARE_DEPRECATED_SPARSE_TRSV
|
|
237
|
+
|
|
238
|
+
/******************************************************************************/
|
|
239
|
+
#define ONEMKL_DECLARE_SPARSE_GEMM(FpType) \
|
|
240
|
+
DLL_EXPORT void gemm(sycl::queue &queue, \
|
|
241
|
+
layout layout_val, \
|
|
242
|
+
transpose opA, \
|
|
243
|
+
transpose opX, \
|
|
244
|
+
const FpType alpha, \
|
|
245
|
+
matrix_handle_t A, \
|
|
246
|
+
sycl::buffer<FpType, 1> &X, \
|
|
247
|
+
const std::int64_t columns, \
|
|
248
|
+
const std::int64_t ldx, \
|
|
249
|
+
const FpType beta, \
|
|
250
|
+
sycl::buffer<FpType, 1> &Y, \
|
|
251
|
+
const std::int64_t ldy); \
|
|
252
|
+
DLL_EXPORT sycl::event gemm(sycl::queue &queue, \
|
|
253
|
+
layout layout_val, \
|
|
254
|
+
transpose opA, \
|
|
255
|
+
transpose opX, \
|
|
256
|
+
const FpType alpha, \
|
|
257
|
+
matrix_handle_t A, \
|
|
258
|
+
FpType *X, \
|
|
259
|
+
const std::int64_t columns, \
|
|
260
|
+
const std::int64_t ldx, \
|
|
261
|
+
const FpType beta, \
|
|
262
|
+
FpType *Y, \
|
|
263
|
+
const std::int64_t ldy, \
|
|
264
|
+
const std::vector<sycl::event> &dependencies = {})
|
|
265
|
+
|
|
266
|
+
ONEMKL_DECLARE_SPARSE_GEMM(float);
|
|
267
|
+
ONEMKL_DECLARE_SPARSE_GEMM(double);
|
|
268
|
+
ONEMKL_DECLARE_SPARSE_GEMM(std::complex<float>);
|
|
269
|
+
ONEMKL_DECLARE_SPARSE_GEMM(std::complex<double>);
|
|
270
|
+
|
|
271
|
+
#undef ONEMKL_DECLARE_SPARSE_GEMM
|
|
272
|
+
|
|
273
|
+
/******************************************************************************/
|
|
274
|
+
#define ONEMKL_DECLARE_SPARSE_TRSM(FpType) \
|
|
275
|
+
DLL_EXPORT void trsm(sycl::queue &queue, \
|
|
276
|
+
layout layout_val, \
|
|
277
|
+
transpose opA, \
|
|
278
|
+
transpose opX, \
|
|
279
|
+
uplo uplo_val, \
|
|
280
|
+
diag diag_val, \
|
|
281
|
+
const FpType alpha, \
|
|
282
|
+
matrix_handle_t A, \
|
|
283
|
+
sycl::buffer<FpType, 1> &X, \
|
|
284
|
+
const std::int64_t columns, \
|
|
285
|
+
const std::int64_t ldx, \
|
|
286
|
+
sycl::buffer<FpType, 1> &Y, \
|
|
287
|
+
const std::int64_t ldy); \
|
|
288
|
+
DLL_EXPORT sycl::event trsm(sycl::queue &queue, \
|
|
289
|
+
layout layout_val, \
|
|
290
|
+
transpose opA, \
|
|
291
|
+
transpose opX, \
|
|
292
|
+
uplo uplo_val, \
|
|
293
|
+
diag diag_val, \
|
|
294
|
+
const FpType alpha, \
|
|
295
|
+
matrix_handle_t A, \
|
|
296
|
+
const FpType *X, \
|
|
297
|
+
const std::int64_t columns, \
|
|
298
|
+
const std::int64_t ldx, \
|
|
299
|
+
FpType *Y, \
|
|
300
|
+
const std::int64_t ldy, \
|
|
301
|
+
const std::vector<sycl::event> &dependencies = {})
|
|
302
|
+
|
|
303
|
+
ONEMKL_DECLARE_SPARSE_TRSM(float);
|
|
304
|
+
ONEMKL_DECLARE_SPARSE_TRSM(double);
|
|
305
|
+
ONEMKL_DECLARE_SPARSE_TRSM(std::complex<float>);
|
|
306
|
+
ONEMKL_DECLARE_SPARSE_TRSM(std::complex<double>);
|
|
307
|
+
|
|
308
|
+
#undef ONEMKL_DECLARE_SPARSE_TRSM
|
|
309
|
+
|
|
310
|
+
/******************************************************************************/
|
|
311
|
+
DLL_EXPORT void set_matmat_data(matmat_descr_t descr,
|
|
312
|
+
matrix_view_descr viewA,
|
|
313
|
+
transpose opA,
|
|
314
|
+
matrix_view_descr viewB,
|
|
315
|
+
transpose opB,
|
|
316
|
+
matrix_view_descr viewC);
|
|
317
|
+
|
|
318
|
+
DLL_EXPORT void get_matmat_data(matmat_descr_t descr,
|
|
319
|
+
matrix_view_descr &viewA,
|
|
320
|
+
transpose &opA,
|
|
321
|
+
matrix_view_descr &viewB,
|
|
322
|
+
transpose &opB,
|
|
323
|
+
matrix_view_descr &viewC);
|
|
324
|
+
|
|
325
|
+
DLL_EXPORT sycl::event matmat(sycl::queue &queue,
|
|
326
|
+
matrix_handle_t A,
|
|
327
|
+
matrix_handle_t B,
|
|
328
|
+
matrix_handle_t C,
|
|
329
|
+
sparse::matmat_request req,
|
|
330
|
+
sparse::matmat_descr_t descr,
|
|
331
|
+
std::int64_t *sizeTempBuffer,
|
|
332
|
+
void *tempBuffer,
|
|
333
|
+
const std::vector<sycl::event> &dependencies);
|
|
334
|
+
|
|
335
|
+
DLL_EXPORT void matmat(sycl::queue &queue,
|
|
336
|
+
matrix_handle_t A,
|
|
337
|
+
matrix_handle_t B,
|
|
338
|
+
matrix_handle_t C,
|
|
339
|
+
sparse::matmat_request req,
|
|
340
|
+
sparse::matmat_descr_t descr,
|
|
341
|
+
sycl::buffer<std::int64_t, 1> *sizeTempBuffer,
|
|
342
|
+
sycl::buffer<std::uint8_t, 1> *tempBuffer);
|
|
343
|
+
|
|
344
|
+
/******************************************************************************/
|
|
345
|
+
#define ONEMKL_DECLARE_SPARSE_MATMATD(FpType) \
|
|
346
|
+
DLL_EXPORT void matmatd(sycl::queue &queue, \
|
|
347
|
+
layout c_layout, \
|
|
348
|
+
transpose opA, \
|
|
349
|
+
transpose opB, \
|
|
350
|
+
const FpType alpha, \
|
|
351
|
+
matrix_handle_t A, \
|
|
352
|
+
matrix_handle_t B, \
|
|
353
|
+
const FpType beta, \
|
|
354
|
+
sycl::buffer<FpType, 1> &C, \
|
|
355
|
+
const std::int64_t c_nrows, \
|
|
356
|
+
const std::int64_t c_ncols, \
|
|
357
|
+
const std::int64_t ldc); \
|
|
358
|
+
DLL_EXPORT sycl::event matmatd(sycl::queue &queue, \
|
|
359
|
+
layout c_layout, \
|
|
360
|
+
transpose opA, \
|
|
361
|
+
transpose opB, \
|
|
362
|
+
const FpType alpha, \
|
|
363
|
+
matrix_handle_t A, \
|
|
364
|
+
matrix_handle_t B, \
|
|
365
|
+
const FpType beta, \
|
|
366
|
+
FpType *C, \
|
|
367
|
+
const std::int64_t c_nrows, \
|
|
368
|
+
const std::int64_t c_ncols, \
|
|
369
|
+
const std::int64_t ldc, \
|
|
370
|
+
const std::vector<sycl::event> &dependencies = {})
|
|
371
|
+
|
|
372
|
+
ONEMKL_DECLARE_SPARSE_MATMATD(float);
|
|
373
|
+
ONEMKL_DECLARE_SPARSE_MATMATD(double);
|
|
374
|
+
ONEMKL_DECLARE_SPARSE_MATMATD(std::complex<float>);
|
|
375
|
+
ONEMKL_DECLARE_SPARSE_MATMATD(std::complex<double>);
|
|
376
|
+
|
|
377
|
+
#undef ONEMKL_DECLARE_SPARSE_MATMATD
|
|
378
|
+
|
|
379
|
+
} /* namespace oneapi::mkl::sparse */
|
|
380
|
+
} /* namespace mkl */
|
|
381
|
+
} // namespace oneapi
|
|
382
|
+
|
|
383
|
+
#endif // #ifndef _ONEMKL_SPARSE_OPERATIONS_HPP_
|