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.

Files changed (82) hide show
  1. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/bfloat16.hpp +26 -0
  2. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/buffer.hpp +42 -0
  3. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/buffer_decls.hpp +880 -0
  4. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/types.hpp +60 -0
  5. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/usm.hpp +42 -0
  6. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/usm_decls.hpp +1240 -0
  7. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas.hpp +33 -0
  8. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/dft.hpp +253 -0
  9. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/dfti.hpp +22 -0
  10. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/exceptions.hpp +110 -0
  11. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting/interpolate.hpp +67 -0
  12. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting/spline_and_data_params.hpp +68 -0
  13. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting/splines.hpp +177 -0
  14. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting.hpp +22 -0
  15. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/export.hpp +25 -0
  16. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/concepts.hpp +55 -0
  17. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/exceptions.hpp +75 -0
  18. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/lapack.hpp +1095 -0
  19. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/scratchpad.hpp +106 -0
  20. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack.hpp +23 -0
  21. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/detail/engine_base.hpp +48 -0
  22. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/bernoulli_impl.hpp +89 -0
  23. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/beta_impl.hpp +464 -0
  24. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/bits_impl.hpp +71 -0
  25. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/distribution_base.hpp +81 -0
  26. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/engine_base.hpp +43 -0
  27. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/engine_helpers_base.hpp +54 -0
  28. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/exponential_impl.hpp +116 -0
  29. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/gamma_impl.hpp +285 -0
  30. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/gaussian_impl.hpp +270 -0
  31. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/lognormal_impl.hpp +105 -0
  32. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg31m1_helpers_impl.hpp +117 -0
  33. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg31m1_impl.hpp +223 -0
  34. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg59_helpers_impl.hpp +118 -0
  35. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg59_impl.hpp +266 -0
  36. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mrg32k3a_helpers_impl.hpp +125 -0
  37. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mrg32k3a_impl.hpp +385 -0
  38. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mrg32k3a_skip_ahead_matrix.hpp +3668 -0
  39. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/philox4x32x10_helpers_impl.hpp +141 -0
  40. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/philox4x32x10_impl.hpp +552 -0
  41. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/poisson_impl.hpp +355 -0
  42. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/types.hpp +58 -0
  43. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/uniform_bits_impl.hpp +51 -0
  44. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/uniform_impl.hpp +289 -0
  45. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/vm_wrappers.hpp +183 -0
  46. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/distributions.hpp +637 -0
  47. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/engine_helpers.hpp +116 -0
  48. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/engines.hpp +187 -0
  49. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/functions.hpp +59 -0
  50. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/types.hpp +74 -0
  51. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device.hpp +29 -0
  52. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/distributions.hpp +1913 -0
  53. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/engines.hpp +788 -0
  54. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/functions.hpp +163 -0
  55. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng.hpp +22 -0
  56. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas/sparse_auxiliary.hpp +111 -0
  57. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas/sparse_operations.hpp +446 -0
  58. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas/sparse_structures.hpp +193 -0
  59. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas.hpp +32 -0
  60. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/stats.hpp +356 -0
  61. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/types.hpp +321 -0
  62. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/buffer.hpp +3529 -0
  63. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/decls.hpp +280 -0
  64. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/decls.hpp +81 -0
  65. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/dispatch.hpp +1059 -0
  66. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/ep.hpp +861 -0
  67. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/ha.hpp +860 -0
  68. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/la.hpp +860 -0
  69. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/rts.hpp +4608 -0
  70. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/scalar.hpp +8963 -0
  71. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/vm.hpp +460 -0
  72. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/span.hpp +3813 -0
  73. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/usm.hpp +3581 -0
  74. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm.hpp +30 -0
  75. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl.hpp +34 -0
  76. mkl_devel_dpcpp-2025.0.0.data/data/lib/libmkl_sycl.a +0 -0
  77. mkl_devel_dpcpp-2025.0.0.data/data/lib/libmkl_sycl.so +1 -0
  78. mkl_devel_dpcpp-2025.0.0.dist-info/LICENSE.txt +25 -0
  79. mkl_devel_dpcpp-2025.0.0.dist-info/METADATA +24 -0
  80. mkl_devel_dpcpp-2025.0.0.dist-info/RECORD +82 -0
  81. mkl_devel_dpcpp-2025.0.0.dist-info/WHEEL +6 -0
  82. mkl_devel_dpcpp-2025.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,33 @@
1
+ /*******************************************************************************
2
+ * Copyright 2018-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 _BLAS_HPP__
16
+ #define _BLAS_HPP__
17
+
18
+ #ifndef MKL_BLAS_COMPUTE_MODE
19
+ #define MKL_BLAS_COMPUTE_MODE compute_mode::unset
20
+ #endif
21
+
22
+ #include <sycl/sycl.hpp>
23
+ #include <cstdint>
24
+ #include <complex>
25
+
26
+ #include "oneapi/mkl/types.hpp"
27
+ #include "oneapi/mkl/exceptions.hpp"
28
+
29
+ #include "oneapi/mkl/blas/types.hpp"
30
+ #include "oneapi/mkl/blas/buffer.hpp"
31
+ #include "oneapi/mkl/blas/usm.hpp"
32
+
33
+ #endif /* _BLAS_HPP__ */
@@ -0,0 +1,253 @@
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 _DFT_HPP_
16
+ #define _DFT_HPP_
17
+
18
+ #include <cinttypes> // std::int64_t
19
+ #include <vector> // std::vector
20
+ #include <sycl/sycl.hpp> // sycl::
21
+ #include "mkl_dfti.h" // DFTI_DESCRIPTOR_HANDLE
22
+
23
+ typedef struct SYCL_DFTI_DESCRIPTOR* SYCL_DFTI_DESCRIPTOR_HANDLE;
24
+
25
+ namespace oneapi {
26
+ namespace mkl {
27
+ namespace dft {
28
+
29
+ enum class precision {
30
+ SINGLE = DFTI_SINGLE,
31
+ DOUBLE = DFTI_DOUBLE
32
+ };
33
+
34
+ enum class domain {
35
+ REAL = DFTI_REAL,
36
+ COMPLEX = DFTI_COMPLEX
37
+ };
38
+
39
+ enum class config_param {
40
+ FORWARD_DOMAIN = DFTI_FORWARD_DOMAIN,
41
+ DIMENSION = DFTI_DIMENSION,
42
+ LENGTHS = DFTI_LENGTHS,
43
+ PRECISION = DFTI_PRECISION,
44
+ FORWARD_SCALE = DFTI_FORWARD_SCALE,
45
+ BACKWARD_SCALE = DFTI_BACKWARD_SCALE,
46
+ NUMBER_OF_TRANSFORMS = DFTI_NUMBER_OF_TRANSFORMS,
47
+ COMPLEX_STORAGE = DFTI_COMPLEX_STORAGE,
48
+ CONJUGATE_EVEN_STORAGE [[deprecated]] = DFTI_CONJUGATE_EVEN_STORAGE,
49
+ PLACEMENT = DFTI_PLACEMENT,
50
+ INPUT_STRIDES [[deprecated("Use FWD/BWD strides instead.")]]
51
+ = DFTI_INPUT_STRIDES,
52
+ OUTPUT_STRIDES [[deprecated("Use FWD/BWD strides instead.")]]
53
+ = DFTI_OUTPUT_STRIDES,
54
+ FWD_DISTANCE = DFTI_FWD_DISTANCE,
55
+ BWD_DISTANCE = DFTI_BWD_DISTANCE,
56
+ WORKSPACE = DFTI_WORKSPACE,
57
+ PACKED_FORMAT [[deprecated]] = DFTI_PACKED_FORMAT,
58
+ COMMIT_STATUS = DFTI_COMMIT_STATUS,
59
+ VERSION [[deprecated]] = DFTI_VERSION,
60
+ THREAD_LIMIT = DFTI_THREAD_LIMIT,
61
+ DESTROY_INPUT = DFTI_DESTROY_INPUT,
62
+ WORKSPACE_ESTIMATE_BYTES,
63
+ WORKSPACE_BYTES,
64
+ FWD_STRIDES,
65
+ BWD_STRIDES,
66
+ WORKSPACE_PLACEMENT, // alias for WORKSPACE
67
+ WORKSPACE_EXTERNAL_BYTES // alias for WORKSPACE_BYTES
68
+ };
69
+
70
+ enum class config_value {
71
+ COMMITTED = DFTI_COMMITTED,
72
+ UNCOMMITTED = DFTI_UNCOMMITTED,
73
+ COMPLEX_COMPLEX = DFTI_COMPLEX_COMPLEX,
74
+ REAL_REAL = DFTI_REAL_REAL,
75
+ INPLACE = DFTI_INPLACE,
76
+ NOT_INPLACE = DFTI_NOT_INPLACE,
77
+ WORKSPACE_AUTOMATIC, // alias for WORKSPACE_INTERNAL
78
+ COMPLEX_REAL [[deprecated]] = DFTI_COMPLEX_REAL,
79
+ ALLOW = DFTI_ALLOW,
80
+ AVOID = DFTI_AVOID,
81
+ CCE_FORMAT [[deprecated]] = DFTI_CCE_FORMAT,
82
+ PERM_FORMAT [[deprecated]] = DFTI_PERM_FORMAT,
83
+ PACK_FORMAT [[deprecated]] = DFTI_PACK_FORMAT,
84
+ CCS_FORMAT [[deprecated]] = DFTI_CCS_FORMAT,
85
+ WORKSPACE_INTERNAL,
86
+ WORKSPACE_EXTERNAL
87
+ };
88
+
89
+ // Compute functions which will be friends with the descriptor class
90
+ template<typename descriptor_type, typename data_type>
91
+ void compute_forward(
92
+ descriptor_type &desc,
93
+ sycl::buffer<data_type, 1> &inout);
94
+
95
+ template<typename descriptor_type, typename input_type, typename output_type>
96
+ void compute_forward(
97
+ descriptor_type &desc,
98
+ sycl::buffer<input_type, 1> &in,
99
+ sycl::buffer<output_type, 1> &out);
100
+
101
+ template<typename descriptor_type, typename data_type>
102
+ void compute_backward(
103
+ descriptor_type &desc,
104
+ sycl::buffer<data_type, 1> &inout);
105
+
106
+ template<typename descriptor_type, typename input_type, typename output_type>
107
+ void compute_backward(
108
+ descriptor_type &desc,
109
+ sycl::buffer<input_type, 1> &in,
110
+ sycl::buffer<output_type, 1> &out);
111
+
112
+ template <typename descriptor_type, typename data_type>
113
+ sycl::event compute_forward(
114
+ descriptor_type &desc,
115
+ data_type *inout,
116
+ const std::vector<sycl::event> &dependencies = {});
117
+
118
+ template<typename descriptor_type, typename input_type, typename output_type>
119
+ sycl::event compute_forward(
120
+ descriptor_type &desc,
121
+ input_type *in,
122
+ output_type *out,
123
+ const std::vector<sycl::event> &dependencies = {});
124
+
125
+ template <typename descriptor_type, typename data_type>
126
+ sycl::event compute_backward(
127
+ descriptor_type &desc,
128
+ data_type *inout,
129
+ const std::vector<sycl::event> &dependencies = {});
130
+
131
+ template<typename descriptor_type, typename input_type, typename output_type>
132
+ sycl::event compute_backward(
133
+ descriptor_type &desc,
134
+ input_type *in,
135
+ output_type *out,
136
+ const std::vector<sycl::event> &dependencies = {});
137
+
138
+ template <precision prec, domain dom>
139
+ class descriptor {
140
+ using real_scalar_t = std::conditional_t<prec == precision::DOUBLE, double, float>;
141
+ public:
142
+ // initializes the FFT description for a multi-dimensional FFT
143
+ descriptor(std::vector<std::int64_t> dimensions);
144
+ // initializes the FFT description for a one-dimensional FFT
145
+ descriptor(std::int64_t length);
146
+ ~descriptor();
147
+ descriptor(const descriptor&) = delete;
148
+ descriptor& operator=(const descriptor&) = delete;
149
+
150
+ void commit(sycl::queue &in);
151
+
152
+ // in place forward computation; buffer API
153
+ template <typename descriptor_type, typename data_type>
154
+ friend void compute_forward(
155
+ descriptor_type &desc,
156
+ sycl::buffer<data_type, 1> &inout);
157
+ // out of place forward computation; buffer API
158
+ template<typename descriptor_type, typename input_type, typename output_type>
159
+ friend void compute_forward(
160
+ descriptor_type &desc,
161
+ sycl::buffer<input_type, 1> &in,
162
+ sycl::buffer<output_type, 1> &out);
163
+ // in place backward computation; buffer API
164
+ template <typename descriptor_type, typename data_type>
165
+ friend void compute_backward(
166
+ descriptor_type &desc,
167
+ sycl::buffer<data_type, 1> &inout);
168
+ // out of place backward computation; buffer API
169
+ template<typename descriptor_type, typename input_type, typename output_type>
170
+ friend void compute_backward(
171
+ descriptor_type &desc,
172
+ sycl::buffer<input_type, 1> &in,
173
+ sycl::buffer<output_type, 1> &out);
174
+ // in place forward computation; USM API
175
+ template <typename descriptor_type, typename data_type>
176
+ friend sycl::event compute_forward(
177
+ descriptor_type &desc,
178
+ data_type *inout,
179
+ const std::vector<sycl::event> &dependencies);
180
+ // out of place forward computation; USM API
181
+ template<typename descriptor_type, typename input_type, typename output_type>
182
+ friend sycl::event compute_forward(
183
+ descriptor_type &desc,
184
+ input_type *in,
185
+ output_type *out,
186
+ const std::vector<sycl::event> &dependencies);
187
+ // in place backward computation; USM API
188
+ template <typename descriptor_type, typename data_type>
189
+ friend sycl::event compute_backward(
190
+ descriptor_type &desc,
191
+ data_type *inout,
192
+ const std::vector<sycl::event> &dependencies);
193
+ // out of place backward computation; USM API
194
+ template<typename descriptor_type, typename input_type, typename output_type>
195
+ friend sycl::event compute_backward(
196
+ descriptor_type &desc,
197
+ input_type *in,
198
+ output_type *out,
199
+ const std::vector<sycl::event> &dependencies);
200
+
201
+ // configuration-setting member functions:
202
+ [[deprecated("Use set_value(config_param, config_value) instead.")]]
203
+ void set_value(config_param, DFTI_CONFIG_VALUE);
204
+ void set_value(config_param, config_value);
205
+ void set_value(config_param, std::int64_t);
206
+ void set_value(config_param, real_scalar_t);
207
+ [[deprecated("Use set_value(config_param, const std::vector<std::int64_t>&) instead.")]]
208
+ void set_value(config_param, const std::int64_t*);
209
+ void set_value(config_param, const std::vector<std::int64_t>&);
210
+ template <typename T, std::enable_if_t<std::is_integral_v<T>, bool> = true>
211
+ void set_value(config_param param, T value) {
212
+ set_value(param, static_cast<std::int64_t>(value));
213
+ }
214
+ template <typename T, std::enable_if_t<std::is_floating_point_v<T>, bool> = true>
215
+ void set_value(config_param param, T value) {
216
+ set_value(param, static_cast<real_scalar_t>(value));
217
+ }
218
+ [[deprecated("This set_value member function is deprecated.")]]
219
+ void set_value(config_param, ...);
220
+ // configuration-querying member functions:
221
+ [[deprecated("Use MKL_Get_Version_String(char*, int) instead.")]]
222
+ void get_value(config_param, char*) const;
223
+ [[deprecated("Use get_value(config_param, config_value*), "
224
+ "get_value(config_param, domain*) or "
225
+ "get_value(config_param, precision*) instead.")]]
226
+ void get_value(config_param, DFTI_CONFIG_VALUE*) const;
227
+ void get_value(config_param, config_value*) const;
228
+ void get_value(config_param, domain*) const;
229
+ void get_value(config_param, precision*) const;
230
+ [[deprecated("Use get_value(config_param, std::int64_t*) instead.")]]
231
+ void get_value(config_param, size_t*) const;
232
+ void get_value(config_param, std::int64_t*) const;
233
+ void get_value(config_param, real_scalar_t*) const;
234
+ void get_value(config_param, std::vector<std::int64_t>*) const;
235
+ [[deprecated("This get_value member function is deprecated.")]]
236
+ void get_value(config_param, ...) const;
237
+
238
+ template<typename data_type>
239
+ void set_workspace(sycl::buffer<data_type, 1> &workspace);
240
+ template<typename data_type>
241
+ void set_workspace(data_type *workspace);
242
+
243
+ private:
244
+ DFTI_DESCRIPTOR_HANDLE handle;
245
+ SYCL_DFTI_DESCRIPTOR_HANDLE device_handle;
246
+ sycl::buffer<SYCL_DFTI_DESCRIPTOR_HANDLE, 1> handle_buffer;
247
+ };
248
+
249
+ } // namespace dft
250
+ } // namespace mkl
251
+ } // namespace oneapi
252
+
253
+ #endif /* _DFT_HPP_ */
@@ -0,0 +1,22 @@
1
+ /*******************************************************************************
2
+ * Copyright 2019-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 _DFTI_HPP_
16
+ #define _DFTI_HPP_
17
+
18
+ #warning "Header 'oneapi/mkl/dfti.hpp' is deprecated. Please use oneapi/mkl/dft.hpp instead"
19
+
20
+ #include "oneapi/mkl/dft.hpp"
21
+
22
+ #endif /* _DFTI_HPP_ */
@@ -0,0 +1,110 @@
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 _MKL_EXCEPTIONS_HPP__
16
+ #define _MKL_EXCEPTIONS_HPP__
17
+
18
+ #include <exception>
19
+ #include <string>
20
+ #include <sycl/sycl.hpp>
21
+
22
+ #pragma clang diagnostic push
23
+ #pragma clang diagnostic ignored "-Wweak-vtables"
24
+
25
+ namespace oneapi {
26
+ namespace mkl {
27
+ class exception : public std::exception {
28
+ std::string msg_;
29
+ public:
30
+ exception(const std::string &domain = "", const std::string &function = "", const std::string &info = "") : std::exception() {
31
+ msg_ = "oneapi::mkl";
32
+
33
+ if (0 != domain.length() && 0 != function.length()) {
34
+ msg_ += "::" + domain + "::" + function;
35
+ } else if (0 != domain.length() && 0 == function.length()) {
36
+ msg_ += "::" + domain;
37
+ } else if (0 == domain.length() && 0 != function.length()) {
38
+ msg_ += "::" + function;
39
+ }
40
+ if (0 != info.length()) { msg_ += ": " + info; }
41
+ }
42
+
43
+ const char* what() const noexcept override {
44
+ return msg_.c_str();
45
+ }
46
+ };
47
+
48
+ class unsupported_device : public oneapi::mkl::exception {
49
+ public:
50
+ unsupported_device(const std::string &domain, const std::string &function, const sycl::device &device)
51
+ : oneapi::mkl::exception(domain, function, "unsupported device: "+device.get_info<sycl::info::device::name>()) {
52
+ }
53
+ };
54
+
55
+ class host_bad_alloc : public oneapi::mkl::exception {
56
+ public:
57
+ host_bad_alloc(const std::string &domain, const std::string &function)
58
+ : oneapi::mkl::exception(domain, function, "cannot allocate memory on host") {
59
+ }
60
+ };
61
+
62
+ class device_bad_alloc : public oneapi::mkl::exception {
63
+ public:
64
+ device_bad_alloc(const std::string &domain, const std::string &function, const sycl::device &device)
65
+ : oneapi::mkl::exception(domain, function, "cannot allocate memory on "+device.get_info<sycl::info::device::name>()) {
66
+ }
67
+ };
68
+
69
+ class unimplemented : public oneapi::mkl::exception {
70
+ public:
71
+ unimplemented(const std::string &domain, const std::string &function, const std::string &info = "")
72
+ : oneapi::mkl::exception(domain, function, "unimplemented functionality"+((info.length() !=0) ? (": "+info) : "")) {
73
+ }
74
+ };
75
+
76
+ class invalid_argument : public oneapi::mkl::exception {
77
+ public:
78
+ invalid_argument(const std::string &domain, const std::string &function, const std::string &info = "")
79
+ : oneapi::mkl::exception(domain, function, "invalid argument"+((info.length() !=0) ? (": "+info) : "")) {
80
+ }
81
+ };
82
+
83
+ class uninitialized : public oneapi::mkl::exception {
84
+ public:
85
+ uninitialized(const std::string &domain, const std::string &function, const std::string &info = "")
86
+ : oneapi::mkl::exception(domain, function, "uninitialized object"+((info.length() !=0) ? (": "+info) : "")) {
87
+ }
88
+ };
89
+
90
+ class computation_error : public oneapi::mkl::exception {
91
+ public:
92
+ computation_error(const std::string &domain, const std::string &function, const std::string &info = "")
93
+ : oneapi::mkl::exception(domain, function, "computation error"+((info.length() != 0) ? (": "+info) : "")) {
94
+ }
95
+ };
96
+
97
+ class batch_error : public oneapi::mkl::exception {
98
+ public:
99
+ batch_error(const std::string &domain, const std::string &function, const std::string &info = "")
100
+ : oneapi::mkl::exception(domain, function, "batch error"+((info.length() != 0) ? (": "+info) : "")) {
101
+ }
102
+ };
103
+
104
+ } // namespace mkl
105
+ } // namespace oneapi
106
+
107
+ #pragma clang diagnostic pop
108
+
109
+ #endif // _MKL_EXCEPTIONS_HPP__
110
+
@@ -0,0 +1,67 @@
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_INTERPOLATE_HPP__
16
+ #define __DATA_FITTING_INTERPOLATE_HPP__
17
+
18
+ #include <cstdint>
19
+ #include <vector>
20
+ #include <bitset>
21
+
22
+ #include <sycl/sycl.hpp>
23
+
24
+ #include "oneapi/mkl/exceptions.hpp"
25
+ #include "oneapi/mkl/experimental/data_fitting/spline_and_data_params.hpp"
26
+
27
+ namespace oneapi::mkl::experimental::data_fitting {
28
+
29
+ // Each bit in der_indicator indicates if we need to compute corresponding derivative or not.
30
+ // E.g., der_indicator=0x1 - means that we need only function values,
31
+ // der_indicator=0x2 - only 1-st derivative, der_indicator=5 - function value and 2nd derivative.
32
+
33
+ // Interpolant is taken by non-const reference because non-const Interpolant's function members are called
34
+ template <typename Interpolant>
35
+ sycl::event interpolate(Interpolant& interpolant, typename Interpolant::fp_type* sites,
36
+ std::int64_t n_sites, typename Interpolant::fp_type* results,
37
+ std::bitset<32> der_indicator, const std::vector<sycl::event>& dependencies = {},
38
+ interpolate_hint result_hint = interpolate_hint::funcs_sites_ders,
39
+ site_hint SiteHint = site_hint::non_uniform);
40
+
41
+ // Interpolant is taken by non-const reference because non-const Interpolant's function members are called
42
+ template <typename Interpolant>
43
+ sycl::event interpolate(Interpolant& interpolant, typename Interpolant::fp_type* sites,
44
+ std::int64_t n_sites, typename Interpolant::fp_type* results,
45
+ const std::vector<sycl::event>& dependencies = {},
46
+ interpolate_hint result_hint = interpolate_hint::funcs_sites_ders,
47
+ site_hint SiteHint = site_hint::non_uniform);
48
+
49
+ template <typename Interpolant>
50
+ sycl::event interpolate(sycl::queue& q, const Interpolant& interpolant,
51
+ typename Interpolant::fp_type* sites, std::int64_t n_sites,
52
+ typename Interpolant::fp_type* results,
53
+ std::bitset<32> der_indicator, const std::vector<sycl::event>& dependencies = {},
54
+ interpolate_hint result_hint = interpolate_hint::funcs_sites_ders,
55
+ site_hint SiteHint = site_hint::non_uniform);
56
+
57
+ template <typename Interpolant>
58
+ sycl::event interpolate(sycl::queue& q, const Interpolant& interpolant,
59
+ typename Interpolant::fp_type* sites, std::int64_t n_sites,
60
+ typename Interpolant::fp_type* results,
61
+ const std::vector<sycl::event>& dependencies = {},
62
+ interpolate_hint result_hint = interpolate_hint::funcs_sites_ders,
63
+ site_hint SiteHint = site_hint::non_uniform);
64
+
65
+ } // namespace oneapi::mkl::experimental::data_fitting
66
+
67
+ #endif // __DATA_FITTING_INTERPOLATE_HPP__
@@ -0,0 +1,68 @@
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 __SPLINE_AND_DATA_PARAMS__
16
+ #define __SPLINE_AND_DATA_PARAMS__
17
+
18
+ #include <cstdint>
19
+
20
+ namespace oneapi::mkl::experimental::data_fitting {
21
+
22
+ enum class partition_hint : std::int64_t { non_uniform = 0x1, quasi_uniform = 0x2, uniform = 0x4 };
23
+
24
+ enum class function_hint : std::int64_t {
25
+ row_major = INT64_C(0x10),
26
+ col_major = INT64_C(0x20)
27
+ };
28
+
29
+ enum class coefficient_hint : std::int64_t {
30
+ row_major = INT64_C(0x10),
31
+ col_major = INT64_C(0x20)
32
+ };
33
+
34
+ enum class interpolate_hint : std::int64_t {
35
+ funcs_sites_ders = INT64_C(0x10),
36
+ funcs_ders_sites = INT64_C(0x20),
37
+ sites_funcs_ders = INT64_C(0x100),
38
+ sites_ders_funcs = INT64_C(0x200)
39
+ };
40
+
41
+ enum class bc_type : std::int64_t {
42
+ free_end = INT64_C(0x2),
43
+ first_left_der = INT64_C(0x4),
44
+ first_right_der = INT64_C(0x8),
45
+ second_left_der = INT64_C(0x10),
46
+ second_right_der = INT64_C(0x20),
47
+ periodic = INT64_C(0x40)
48
+ };
49
+
50
+ enum class site_hint : std::int64_t { non_uniform = INT64_C(0x1), uniform = INT64_C(0x4), sorted = INT64_C(0x40) };
51
+
52
+ namespace linear_spline {
53
+ struct default_type {};
54
+ } // namespace linear_spline
55
+
56
+ namespace cubic_spline {
57
+ struct hermite {};
58
+ } // namespace cubic_spline
59
+
60
+ enum class derivatives : std::int32_t { zero = INT32_C(0x1), first = INT32_C(0x2), second = INT32_C(0x4), third = INT32_C(0x8) };
61
+
62
+ inline std::int32_t operator|(derivatives lhs, derivatives rhs) {
63
+ return (static_cast<std::int32_t>(lhs) | static_cast<std::int32_t>(rhs));
64
+ }
65
+
66
+ } // namespace oneapi::mkl::experimental::data_fitting
67
+
68
+ #endif // __SPLINE_AND_DATA_PARAMS__