mkl-devel-dpcpp 2025.0.0__py2.py3-none-manylinux_2_28_x86_64.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-2025.0.0.data/data/include/oneapi/mkl/bfloat16.hpp +26 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/buffer.hpp +42 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/buffer_decls.hpp +880 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/types.hpp +60 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/usm.hpp +42 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/usm_decls.hpp +1240 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas.hpp +33 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/dft.hpp +253 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/dfti.hpp +22 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/exceptions.hpp +110 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting/interpolate.hpp +67 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting/spline_and_data_params.hpp +68 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting/splines.hpp +177 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting.hpp +22 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/export.hpp +25 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/concepts.hpp +55 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/exceptions.hpp +75 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/lapack.hpp +1095 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/scratchpad.hpp +106 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack.hpp +23 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/detail/engine_base.hpp +48 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/bernoulli_impl.hpp +89 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/beta_impl.hpp +464 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/bits_impl.hpp +71 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/distribution_base.hpp +81 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/engine_base.hpp +43 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/engine_helpers_base.hpp +54 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/exponential_impl.hpp +116 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/gamma_impl.hpp +285 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/gaussian_impl.hpp +270 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/lognormal_impl.hpp +105 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg31m1_helpers_impl.hpp +117 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg31m1_impl.hpp +223 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg59_helpers_impl.hpp +118 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg59_impl.hpp +266 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mrg32k3a_helpers_impl.hpp +125 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mrg32k3a_impl.hpp +385 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mrg32k3a_skip_ahead_matrix.hpp +3668 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/philox4x32x10_helpers_impl.hpp +141 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/philox4x32x10_impl.hpp +552 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/poisson_impl.hpp +355 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/types.hpp +58 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/uniform_bits_impl.hpp +51 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/uniform_impl.hpp +289 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/vm_wrappers.hpp +183 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/distributions.hpp +637 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/engine_helpers.hpp +116 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/engines.hpp +187 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/functions.hpp +59 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/types.hpp +74 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device.hpp +29 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/distributions.hpp +1913 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/engines.hpp +788 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/functions.hpp +163 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng.hpp +22 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas/sparse_auxiliary.hpp +111 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas/sparse_operations.hpp +446 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas/sparse_structures.hpp +193 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas.hpp +32 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/stats.hpp +356 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/types.hpp +321 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/buffer.hpp +3529 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/decls.hpp +280 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/decls.hpp +81 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/dispatch.hpp +1059 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/ep.hpp +861 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/ha.hpp +860 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/la.hpp +860 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/rts.hpp +4608 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/scalar.hpp +8963 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/vm.hpp +460 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/span.hpp +3813 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/usm.hpp +3581 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm.hpp +30 -0
- mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl.hpp +34 -0
- mkl_devel_dpcpp-2025.0.0.data/data/lib/libmkl_sycl.a +0 -0
- mkl_devel_dpcpp-2025.0.0.data/data/lib/libmkl_sycl.so +1 -0
- mkl_devel_dpcpp-2025.0.0.dist-info/LICENSE.txt +25 -0
- mkl_devel_dpcpp-2025.0.0.dist-info/METADATA +24 -0
- mkl_devel_dpcpp-2025.0.0.dist-info/RECORD +82 -0
- mkl_devel_dpcpp-2025.0.0.dist-info/WHEEL +6 -0
- mkl_devel_dpcpp-2025.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/*******************************************************************************
|
|
2
|
+
* Copyright 2022 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 __DATA_FITTING_SPLINES_HPP__
|
|
16
|
+
#define __DATA_FITTING_SPLINES_HPP__
|
|
17
|
+
|
|
18
|
+
#include <cstdint>
|
|
19
|
+
#include <memory>
|
|
20
|
+
#include <vector>
|
|
21
|
+
#include <type_traits>
|
|
22
|
+
#include <bitset>
|
|
23
|
+
|
|
24
|
+
#include <sycl/sycl.hpp>
|
|
25
|
+
|
|
26
|
+
#include "oneapi/mkl/export.hpp"
|
|
27
|
+
#include "oneapi/mkl/exceptions.hpp"
|
|
28
|
+
#include "oneapi/mkl/experimental/data_fitting/spline_and_data_params.hpp"
|
|
29
|
+
|
|
30
|
+
namespace oneapi::mkl::experimental::data_fitting {
|
|
31
|
+
|
|
32
|
+
namespace detail {
|
|
33
|
+
|
|
34
|
+
template <typename FpType, typename SplineType, int Dimensions>
|
|
35
|
+
class spline_base;
|
|
36
|
+
|
|
37
|
+
} // namespace detail
|
|
38
|
+
|
|
39
|
+
template <typename FpType, typename SplineType, int Dimensions = 1>
|
|
40
|
+
class spline;
|
|
41
|
+
|
|
42
|
+
template <typename FpType, int Dimensions>
|
|
43
|
+
class spline<FpType, linear_spline::default_type, Dimensions> {
|
|
44
|
+
public:
|
|
45
|
+
static_assert(1 == Dimensions, "Only 1D splines are supported");
|
|
46
|
+
static_assert(std::is_same_v<float, FpType> || std::is_same_v<double, FpType>,
|
|
47
|
+
"Only float/double types are supported for FpType template parameter of spline");
|
|
48
|
+
using spline_type = linear_spline::default_type;
|
|
49
|
+
using fp_type = FpType;
|
|
50
|
+
|
|
51
|
+
// copy ctor and assignment operator were deleted since we don't want
|
|
52
|
+
// to perform deep copy of data and responsibility of memory management is on user's side
|
|
53
|
+
spline(const sycl::queue& q, std::int64_t ny = 1, bool were_coeffs_computed = false);
|
|
54
|
+
spline(const sycl::device& dev, const sycl::context& ctx, std::int64_t ny = 1,
|
|
55
|
+
bool were_coeffs_computed = false);
|
|
56
|
+
|
|
57
|
+
spline(spline<FpType, linear_spline::default_type, Dimensions>&& other) = delete;
|
|
58
|
+
|
|
59
|
+
spline(const spline<FpType, linear_spline::default_type, Dimensions>& other) = delete;
|
|
60
|
+
|
|
61
|
+
spline<FpType, linear_spline::default_type, Dimensions>& operator=(
|
|
62
|
+
const spline<FpType, linear_spline::default_type, Dimensions>& other) = delete;
|
|
63
|
+
|
|
64
|
+
spline<FpType, linear_spline::default_type, Dimensions>& operator=(
|
|
65
|
+
spline<FpType, linear_spline::default_type, Dimensions>&& other) = delete;
|
|
66
|
+
~spline();
|
|
67
|
+
|
|
68
|
+
spline<FpType, linear_spline::default_type, Dimensions>& set_partitions(
|
|
69
|
+
FpType* data, std::int64_t nx, partition_hint PartitionHint = partition_hint::non_uniform);
|
|
70
|
+
|
|
71
|
+
spline<FpType, linear_spline::default_type, Dimensions>& set_coefficients(
|
|
72
|
+
FpType* data, coefficient_hint CoeffHint = coefficient_hint::row_major);
|
|
73
|
+
// in case of first coordinate will be called inside loop
|
|
74
|
+
spline<FpType, linear_spline::default_type, Dimensions>& set_function_values(
|
|
75
|
+
FpType* data, function_hint FunctionHint = function_hint::row_major);
|
|
76
|
+
|
|
77
|
+
bool is_initialized() const;
|
|
78
|
+
|
|
79
|
+
std::int64_t get_required_coeffs_size() const;
|
|
80
|
+
|
|
81
|
+
sycl::event construct(
|
|
82
|
+
const std::vector<sycl::event>&
|
|
83
|
+
dependencies = {});
|
|
84
|
+
|
|
85
|
+
private:
|
|
86
|
+
std::unique_ptr<detail::spline_base<FpType, linear_spline::default_type, Dimensions>> impl_;
|
|
87
|
+
|
|
88
|
+
template <typename Interpolant>
|
|
89
|
+
friend sycl::event interpolate(Interpolant&, typename Interpolant::fp_type*, std::int64_t,
|
|
90
|
+
typename Interpolant::fp_type*, std::bitset<32>,
|
|
91
|
+
const std::vector<sycl::event>&, interpolate_hint, site_hint);
|
|
92
|
+
template <typename Interpolant>
|
|
93
|
+
friend sycl::event interpolate(Interpolant&, typename Interpolant::fp_type*, std::int64_t,
|
|
94
|
+
typename Interpolant::fp_type*, const std::vector<sycl::event>&,
|
|
95
|
+
interpolate_hint, site_hint);
|
|
96
|
+
template <typename Interpolant>
|
|
97
|
+
friend sycl::event interpolate(sycl::queue&, const Interpolant&, typename Interpolant::fp_type*,
|
|
98
|
+
std::int64_t, typename Interpolant::fp_type*, std::bitset<32>,
|
|
99
|
+
const std::vector<sycl::event>&, interpolate_hint,
|
|
100
|
+
site_hint);
|
|
101
|
+
template <typename Interpolant>
|
|
102
|
+
friend sycl::event interpolate(sycl::queue&, const Interpolant&, typename Interpolant::fp_type*,
|
|
103
|
+
std::int64_t, typename Interpolant::fp_type*,
|
|
104
|
+
const std::vector<sycl::event>&, interpolate_hint, site_hint);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
template <typename FpType, int Dimensions>
|
|
108
|
+
class spline<FpType, cubic_spline::hermite, Dimensions> {
|
|
109
|
+
public:
|
|
110
|
+
static_assert(1 == Dimensions, "Only 1D splines are supported");
|
|
111
|
+
static_assert(std::is_same_v<float, FpType> || std::is_same_v<double, FpType>,
|
|
112
|
+
"Only float/double types are supported for FpType template parameter of spline");
|
|
113
|
+
using spline_type = cubic_spline::hermite;
|
|
114
|
+
using fp_type = FpType;
|
|
115
|
+
|
|
116
|
+
// copy ctor and assignment operator were deleted since we don't want
|
|
117
|
+
// to perform deep copy of data and responsibility of memory management is on user's side
|
|
118
|
+
spline(const sycl::queue& q, std::int64_t ny = 1, bool were_coeffs_computed = false);
|
|
119
|
+
spline(const sycl::device& dev, const sycl::context& ctx, std::int64_t ny = 1,
|
|
120
|
+
bool were_coeffs_computed = false);
|
|
121
|
+
|
|
122
|
+
spline(spline<FpType, cubic_spline::hermite, Dimensions>&& other) = delete;
|
|
123
|
+
|
|
124
|
+
spline(const spline<FpType, cubic_spline::hermite, Dimensions>& other) = delete;
|
|
125
|
+
|
|
126
|
+
spline<FpType, cubic_spline::hermite, Dimensions>& operator=(
|
|
127
|
+
const spline<FpType, cubic_spline::hermite, Dimensions>& other) = delete;
|
|
128
|
+
|
|
129
|
+
spline<FpType, cubic_spline::hermite, Dimensions>& operator=(
|
|
130
|
+
spline<FpType, cubic_spline::hermite, Dimensions>&& other) = delete;
|
|
131
|
+
~spline();
|
|
132
|
+
|
|
133
|
+
spline<FpType, cubic_spline::hermite, Dimensions>& set_partitions(
|
|
134
|
+
FpType* data, std::int64_t nx, partition_hint PartitionHint = partition_hint::non_uniform);
|
|
135
|
+
|
|
136
|
+
spline<FpType, cubic_spline::hermite, Dimensions>& set_coefficients(
|
|
137
|
+
FpType* data, coefficient_hint CoeffHint = coefficient_hint::row_major);
|
|
138
|
+
// in case of first coordinate will be called inside loop
|
|
139
|
+
spline<FpType, cubic_spline::hermite, Dimensions>& set_function_values(
|
|
140
|
+
FpType* data, function_hint FunctionHint = function_hint::row_major);
|
|
141
|
+
spline<FpType, cubic_spline::hermite, Dimensions>& set_internal_conditions(FpType* data);
|
|
142
|
+
spline<FpType, cubic_spline::hermite, Dimensions>& set_boundary_conditions(
|
|
143
|
+
bc_type BCType = bc_type::free_end, FpType value = 0.0);
|
|
144
|
+
|
|
145
|
+
bool is_initialized() const;
|
|
146
|
+
|
|
147
|
+
std::int64_t get_required_coeffs_size() const;
|
|
148
|
+
|
|
149
|
+
sycl::event construct(
|
|
150
|
+
const std::vector<sycl::event>&
|
|
151
|
+
dependencies = {});
|
|
152
|
+
|
|
153
|
+
private:
|
|
154
|
+
std::unique_ptr<detail::spline_base<FpType, cubic_spline::hermite, Dimensions>> impl_;
|
|
155
|
+
|
|
156
|
+
template <typename Interpolant>
|
|
157
|
+
friend sycl::event interpolate(Interpolant&, typename Interpolant::fp_type*, std::int64_t,
|
|
158
|
+
typename Interpolant::fp_type*, std::bitset<32>,
|
|
159
|
+
const std::vector<sycl::event>&, interpolate_hint, site_hint);
|
|
160
|
+
template <typename Interpolant>
|
|
161
|
+
friend sycl::event interpolate(Interpolant&, typename Interpolant::fp_type*, std::int64_t,
|
|
162
|
+
typename Interpolant::fp_type*, const std::vector<sycl::event>&,
|
|
163
|
+
interpolate_hint, site_hint);
|
|
164
|
+
template <typename Interpolant>
|
|
165
|
+
friend sycl::event interpolate(sycl::queue&, const Interpolant&, typename Interpolant::fp_type*,
|
|
166
|
+
std::int64_t, typename Interpolant::fp_type*, std::bitset<32>,
|
|
167
|
+
const std::vector<sycl::event>&, interpolate_hint,
|
|
168
|
+
site_hint);
|
|
169
|
+
template <typename Interpolant>
|
|
170
|
+
friend sycl::event interpolate(sycl::queue&, const Interpolant&, typename Interpolant::fp_type*,
|
|
171
|
+
std::int64_t, typename Interpolant::fp_type*,
|
|
172
|
+
const std::vector<sycl::event>&, interpolate_hint, site_hint);
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
} // namespace oneapi::mkl::experimental::data_fitting
|
|
176
|
+
|
|
177
|
+
#endif // __DATA_FITTING_SPLINES_HPP__
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*******************************************************************************
|
|
2
|
+
* Copyright 2022 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 __DATA_FITTING_HPP__
|
|
16
|
+
#define __DATA_FITTING_HPP__
|
|
17
|
+
|
|
18
|
+
#include "oneapi/mkl/experimental/data_fitting/splines.hpp"
|
|
19
|
+
#include "oneapi/mkl/experimental/data_fitting/interpolate.hpp"
|
|
20
|
+
#include "oneapi/mkl/experimental/data_fitting/spline_and_data_params.hpp"
|
|
21
|
+
|
|
22
|
+
#endif // __DATA_FITTING_HPP__
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*******************************************************************************
|
|
2
|
+
* Copyright 2020-2022 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 _EXPORT_HPP__
|
|
16
|
+
#define _EXPORT_HPP__
|
|
17
|
+
|
|
18
|
+
#ifdef MKL_BUILD_DLL
|
|
19
|
+
/* Build attribute on Windows */
|
|
20
|
+
#define DLL_EXPORT __declspec(dllexport)
|
|
21
|
+
#else
|
|
22
|
+
#define DLL_EXPORT
|
|
23
|
+
#endif
|
|
24
|
+
|
|
25
|
+
#endif
|
|
@@ -0,0 +1,55 @@
|
|
|
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_CONCEPTS_HPP__
|
|
16
|
+
#define _ONEAPI_MKL_LAPACK_CONCEPTS_HPP__
|
|
17
|
+
|
|
18
|
+
#include <complex>
|
|
19
|
+
|
|
20
|
+
namespace oneapi {
|
|
21
|
+
namespace mkl {
|
|
22
|
+
namespace lapack {
|
|
23
|
+
|
|
24
|
+
namespace internal
|
|
25
|
+
|
|
26
|
+
{
|
|
27
|
+
template <bool, typename T=void> struct enable_if;
|
|
28
|
+
template <typename T> struct is_fp;
|
|
29
|
+
template <typename T> struct is_rfp;
|
|
30
|
+
template <typename T> struct is_cfp;
|
|
31
|
+
template <typename fp> using is_floating_point = typename enable_if<is_fp<fp>::value>::type*;
|
|
32
|
+
template <typename fp> using is_real_floating_point = typename enable_if<is_rfp<fp>::value>::type*;
|
|
33
|
+
template <typename fp> using is_complex_floating_point = typename enable_if<is_cfp<fp>::value>::type*;
|
|
34
|
+
|
|
35
|
+
// auxiliary typechecking templates
|
|
36
|
+
template<typename T>
|
|
37
|
+
struct enable_if<true,T> { using type = T; };
|
|
38
|
+
|
|
39
|
+
template<> struct is_fp<float> { static constexpr bool value{true}; };
|
|
40
|
+
template<> struct is_fp<double> { static constexpr bool value{true}; };
|
|
41
|
+
template<> struct is_fp<std::complex<float>> { static constexpr bool value{true}; };
|
|
42
|
+
template<> struct is_fp<std::complex<double>> { static constexpr bool value{true}; };
|
|
43
|
+
|
|
44
|
+
template<> struct is_rfp<float> { static constexpr bool value{true}; };
|
|
45
|
+
template<> struct is_rfp<double> { static constexpr bool value{true}; };
|
|
46
|
+
|
|
47
|
+
template<> struct is_cfp<std::complex<float>> { static constexpr bool value{true}; };
|
|
48
|
+
template<> struct is_cfp<std::complex<double>> { static constexpr bool value{true}; };
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
} //namespace lapack
|
|
52
|
+
} //namespace mkl
|
|
53
|
+
} // namespace oneapi
|
|
54
|
+
|
|
55
|
+
#endif // _ONEAPI_MKL_LAPACK_CONCEPTS_HPP__
|
|
@@ -0,0 +1,75 @@
|
|
|
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_EXCEPTIONS_HPP__
|
|
16
|
+
#define _ONEAPI_MKL_LAPACK_EXCEPTIONS_HPP__
|
|
17
|
+
|
|
18
|
+
#include <exception>
|
|
19
|
+
#include "oneapi/mkl/export.hpp"
|
|
20
|
+
#include "oneapi/mkl/exceptions.hpp"
|
|
21
|
+
|
|
22
|
+
namespace oneapi {
|
|
23
|
+
namespace mkl {
|
|
24
|
+
namespace lapack {
|
|
25
|
+
|
|
26
|
+
class DLL_EXPORT exception
|
|
27
|
+
{
|
|
28
|
+
public:
|
|
29
|
+
exception(mkl::exception *_ex, std::int64_t info, std::int64_t detail = 0) : _info(info), _detail(detail), _ex(_ex) {}
|
|
30
|
+
std::int64_t info() const { return _info; }
|
|
31
|
+
std::int64_t detail() const { return _detail; }
|
|
32
|
+
const char* what() const { return _ex->what(); }
|
|
33
|
+
private:
|
|
34
|
+
std::int64_t _info;
|
|
35
|
+
std::int64_t _detail;
|
|
36
|
+
mkl::exception *_ex;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
class DLL_EXPORT computation_error : public oneapi::mkl::computation_error, public oneapi::mkl::lapack::exception
|
|
40
|
+
{
|
|
41
|
+
public:
|
|
42
|
+
computation_error(const std::string &function, const std::string &info, std::int64_t code)
|
|
43
|
+
: oneapi::mkl::computation_error("lapack", function, info), oneapi::mkl::lapack::exception(this, code) {}
|
|
44
|
+
virtual ~computation_error();
|
|
45
|
+
using oneapi::mkl::computation_error::what;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
class DLL_EXPORT batch_error : public oneapi::mkl::batch_error, public oneapi::mkl::lapack::exception
|
|
49
|
+
{
|
|
50
|
+
public:
|
|
51
|
+
batch_error(const std::string &function, const std::string &info, std::int64_t num_errors, std::vector<std::int64_t> ids = {}, std::vector<std::exception_ptr> exceptions = {})
|
|
52
|
+
: oneapi::mkl::batch_error("lapack", function, info), oneapi::mkl::lapack::exception(this, num_errors), _ids(ids), _exceptions(exceptions) {}
|
|
53
|
+
virtual ~batch_error();
|
|
54
|
+
using oneapi::mkl::batch_error::what;
|
|
55
|
+
const std::vector<std::int64_t>& ids() const { return _ids; }
|
|
56
|
+
const std::vector<std::exception_ptr>& exceptions() const { return _exceptions; }
|
|
57
|
+
private:
|
|
58
|
+
std::vector<std::int64_t> _ids;
|
|
59
|
+
std::vector<std::exception_ptr> _exceptions;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
class DLL_EXPORT invalid_argument : public oneapi::mkl::invalid_argument, public oneapi::mkl::lapack::exception
|
|
63
|
+
{
|
|
64
|
+
public:
|
|
65
|
+
invalid_argument(const std::string &function, const std::string &info, std::int64_t arg_position = 0, std::int64_t detail = 0)
|
|
66
|
+
: oneapi::mkl::invalid_argument("lapack", function, info), oneapi::mkl::lapack::exception(this, arg_position, detail) {}
|
|
67
|
+
virtual ~invalid_argument();
|
|
68
|
+
using oneapi::mkl::invalid_argument::what;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
} // namespace lapack
|
|
72
|
+
} // namespace mkl
|
|
73
|
+
} // namespace oneapi
|
|
74
|
+
|
|
75
|
+
#endif // _ONEAPI_MKL_LAPACK_EXCEPTIONS_HPP__
|