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,446 @@
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
+ const 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
+ const 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
+ const 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
+ const 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
+ const 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
+ const 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
+ /******************************************************************************/
380
+ DLL_EXPORT void omatadd_buffer_size(sycl::queue &queue,
381
+ transpose opA,
382
+ transpose opB,
383
+ matrix_handle_t A,
384
+ matrix_handle_t B,
385
+ matrix_handle_t C,
386
+ omatadd_alg alg,
387
+ omatadd_descr_t omatadd_desc,
388
+ std::int64_t &sizeTempWorkspace);
389
+
390
+ DLL_EXPORT void omatadd_analyze(sycl::queue &queue,
391
+ transpose opA,
392
+ transpose opB,
393
+ matrix_handle_t A,
394
+ matrix_handle_t B,
395
+ matrix_handle_t C,
396
+ omatadd_alg alg,
397
+ omatadd_descr_t omatadd_desc,
398
+ sycl::buffer<std::uint8_t, 1> *tempWorkspace);
399
+
400
+ DLL_EXPORT sycl::event omatadd_analyze(sycl::queue &queue,
401
+ transpose opA,
402
+ transpose opB,
403
+ matrix_handle_t A,
404
+ matrix_handle_t B,
405
+ matrix_handle_t C,
406
+ omatadd_alg alg,
407
+ omatadd_descr_t omatadd_desc,
408
+ void *tempWorkspace,
409
+ const std::vector<sycl::event> &dependencies = {});
410
+
411
+ DLL_EXPORT void omatadd_get_nnz(sycl::queue &queue,
412
+ transpose opA,
413
+ transpose opB,
414
+ matrix_handle_t A,
415
+ matrix_handle_t B,
416
+ matrix_handle_t C,
417
+ omatadd_alg alg,
418
+ omatadd_descr_t omatadd_desc,
419
+ std::int64_t &nnzC,
420
+ const std::vector<sycl::event> &dependencies = {});
421
+
422
+ #define ONEMKL_DECLARE_SPARSE_OMATADD(FpType) \
423
+ DLL_EXPORT sycl::event omatadd(sycl::queue &queue, \
424
+ transpose opA, \
425
+ transpose opB, \
426
+ const FpType alpha, \
427
+ matrix_handle_t A, \
428
+ const FpType beta, \
429
+ matrix_handle_t B, \
430
+ matrix_handle_t C, \
431
+ omatadd_alg alg, \
432
+ omatadd_descr_t omatadd_desc, \
433
+ const std::vector<sycl::event> &dependencies = {})
434
+
435
+ ONEMKL_DECLARE_SPARSE_OMATADD(float);
436
+ ONEMKL_DECLARE_SPARSE_OMATADD(double);
437
+ ONEMKL_DECLARE_SPARSE_OMATADD(std::complex<float>);
438
+ ONEMKL_DECLARE_SPARSE_OMATADD(std::complex<double>);
439
+
440
+ #undef ONEMKL_DECLARE_SPARSE_OMATADD
441
+
442
+ } /* namespace oneapi::mkl::sparse */
443
+ } /* namespace mkl */
444
+ } // namespace oneapi
445
+
446
+ #endif // #ifndef _ONEMKL_SPARSE_OPERATIONS_HPP_
@@ -0,0 +1,193 @@
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_STRUCTURES_HPP_
16
+ #define _ONEMKL_SPARSE_STRUCTURES_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
+ namespace oneapi {
29
+ namespace mkl {
30
+ namespace sparse {
31
+
32
+ /******************************************************************************/
33
+ struct matrix_handle;
34
+ typedef struct matrix_handle *matrix_handle_t;
35
+
36
+ DLL_EXPORT void init_matrix_handle(matrix_handle_t *p_spMat);
37
+
38
+ // non-blocking version of release_matrix_handle, will schedule clean up of handle
39
+ // asychronously pending dependencies and return an event to track it
40
+ DLL_EXPORT sycl::event
41
+ release_matrix_handle(sycl::queue &queue,
42
+ matrix_handle_t *p_spMat,
43
+ const std::vector<sycl::event> &dependencies = {});
44
+
45
+ /******************************************************************************/
46
+ //
47
+ // PROPERTY of matrix arrays/data. The property must be consistent with the
48
+ // data; this consistency is not verified and assumed to be true when provided
49
+ // by the user for performance reasons. If user-supplied data properties are
50
+ // inconsistent from actual matrix arrays/data, then applications may
51
+ // crash/hang/produce incorrect results.
52
+ enum class property : char {
53
+ symmetric = 0,
54
+ sorted = 1,
55
+ };
56
+
57
+ DLL_EXPORT void set_matrix_property(matrix_handle_t spMat, property property_value);
58
+
59
+ /******************************************************************************/
60
+ #define ONEMKL_DECLARE_SPARSE_SET_CSR_DATA(IntType, FpType) \
61
+ DLL_EXPORT void set_csr_data(sycl::queue &queue, \
62
+ matrix_handle_t spMat, \
63
+ const IntType nrows, \
64
+ const IntType ncols, \
65
+ index_base index, \
66
+ sycl::buffer<IntType, 1> &row_ptr, \
67
+ sycl::buffer<IntType, 1> &col_ind, \
68
+ sycl::buffer<FpType, 1> &values); \
69
+ DLL_EXPORT sycl::event set_csr_data(sycl::queue &queue, \
70
+ matrix_handle_t spMat, \
71
+ const IntType nrows, \
72
+ const IntType ncols, \
73
+ index_base index, \
74
+ IntType *row_ptr, \
75
+ IntType *col_ind, \
76
+ FpType *values, \
77
+ const std::vector<sycl::event> &dependencies = {})
78
+
79
+ ONEMKL_DECLARE_SPARSE_SET_CSR_DATA(std::int32_t, float);
80
+ ONEMKL_DECLARE_SPARSE_SET_CSR_DATA(std::int32_t, double);
81
+ ONEMKL_DECLARE_SPARSE_SET_CSR_DATA(std::int32_t, std::complex<float>);
82
+ ONEMKL_DECLARE_SPARSE_SET_CSR_DATA(std::int32_t, std::complex<double>);
83
+ ONEMKL_DECLARE_SPARSE_SET_CSR_DATA(std::int64_t, float);
84
+ ONEMKL_DECLARE_SPARSE_SET_CSR_DATA(std::int64_t, double);
85
+ ONEMKL_DECLARE_SPARSE_SET_CSR_DATA(std::int64_t, std::complex<float>);
86
+ ONEMKL_DECLARE_SPARSE_SET_CSR_DATA(std::int64_t, std::complex<double>);
87
+
88
+ #undef ONEMKL_DECLARE_SPARSE_SET_CSR_DATA
89
+
90
+ /******************************************************************************/
91
+ #define ONEMKL_DECLARE_SPARSE_SET_COO_DATA(IntType, FpType) \
92
+ DLL_EXPORT void set_coo_data(sycl::queue &queue, \
93
+ matrix_handle_t spMat, \
94
+ const IntType nrows, \
95
+ const IntType ncols, \
96
+ const IntType nnz, \
97
+ index_base index, \
98
+ sycl::buffer<IntType, 1> &row_ind, \
99
+ sycl::buffer<IntType, 1> &col_ind, \
100
+ sycl::buffer<FpType, 1> &values); \
101
+ DLL_EXPORT sycl::event set_coo_data(sycl::queue &queue, \
102
+ matrix_handle_t spMat, \
103
+ const IntType nrows, \
104
+ const IntType ncols, \
105
+ const IntType nnz, \
106
+ index_base index, \
107
+ IntType *row_ind, \
108
+ IntType *col_ind, \
109
+ FpType *values, \
110
+ const std::vector<sycl::event> &dependencies = {})
111
+
112
+ ONEMKL_DECLARE_SPARSE_SET_COO_DATA(std::int32_t, float);
113
+ ONEMKL_DECLARE_SPARSE_SET_COO_DATA(std::int32_t, double);
114
+ ONEMKL_DECLARE_SPARSE_SET_COO_DATA(std::int32_t, std::complex<float>);
115
+ ONEMKL_DECLARE_SPARSE_SET_COO_DATA(std::int32_t, std::complex<double>);
116
+ ONEMKL_DECLARE_SPARSE_SET_COO_DATA(std::int64_t, float);
117
+ ONEMKL_DECLARE_SPARSE_SET_COO_DATA(std::int64_t, double);
118
+ ONEMKL_DECLARE_SPARSE_SET_COO_DATA(std::int64_t, std::complex<float>);
119
+ ONEMKL_DECLARE_SPARSE_SET_COO_DATA(std::int64_t, std::complex<double>);
120
+
121
+ #undef ONEMKL_DECLARE_SPARSE_SET_COO_DATA
122
+
123
+ /******************************************************************************/
124
+ //
125
+ // Types, Objects and APIs for Sparse Matrix * Sparse Matrix (matmat) multiplication
126
+ //
127
+
128
+ //
129
+ // Different VIEWS of matrix data (which may be different from the data itself)
130
+ // Views are different from the `enum class property` which describes the fixed
131
+ // property of data supplied to the matrix handle.
132
+ //
133
+ enum class matrix_view_descr : std::int32_t { general = 1 };
134
+
135
+ enum class matmat_request : std::int32_t {
136
+ get_work_estimation_buf_size = 1,
137
+ work_estimation = 2,
138
+
139
+ get_compute_structure_buf_size = 3,
140
+ compute_structure = 4,
141
+ finalize_structure = 5,
142
+
143
+ get_compute_buf_size = 6,
144
+ compute = 7,
145
+ get_nnz = 8,
146
+ finalize = 9,
147
+ };
148
+
149
+ struct matmat_descr;
150
+ typedef matmat_descr *matmat_descr_t;
151
+
152
+ DLL_EXPORT void init_matmat_descr(matmat_descr_t *p_desc);
153
+ DLL_EXPORT void release_matmat_descr(matmat_descr_t *p_desc);
154
+
155
+ /******************************************************************************/
156
+ //
157
+ // Types, Objects and APIs for out-of-place Sparse Matrix to Sparse Matrix
158
+ // conversion (omatconvert)
159
+ //
160
+ enum class omatconvert_alg : std::int32_t {
161
+ default_alg = 0,
162
+ };
163
+
164
+ struct omatconvert_descr;
165
+ typedef omatconvert_descr *omatconvert_descr_t;
166
+
167
+
168
+ DLL_EXPORT void init_omatconvert_descr(sycl::queue &queue, omatconvert_descr_t *p_descr);
169
+ DLL_EXPORT sycl::event release_omatconvert_descr(sycl::queue &queue, omatconvert_descr_t descr, const std::vector<sycl::event> &dependencies = {});
170
+
171
+ /******************************************************************************/
172
+ //
173
+ // Types, Objects and APIs for Sparse Matrix + Sparse Matrix (omatadd) addition
174
+ //
175
+ enum class omatadd_alg : std::int32_t {
176
+ default_alg = 0,
177
+ };
178
+
179
+ struct omatadd_descr;
180
+ typedef omatadd_descr *omatadd_descr_t;
181
+
182
+ DLL_EXPORT void init_omatadd_descr(sycl::queue &queue,
183
+ omatadd_descr_t *p_omatadd_desc);
184
+
185
+ DLL_EXPORT sycl::event release_omatadd_descr(sycl::queue &queue,
186
+ omatadd_descr_t omatadd_desc,
187
+ const std::vector<sycl::event> &dependencies = {});
188
+
189
+ } /* namespace oneapi::mkl::sparse */
190
+ } /* namespace mkl */
191
+ } // namespace oneapi
192
+
193
+ #endif // #ifndef _ONEMKL_SPARSE_STRUCTURES_HPP_
@@ -0,0 +1,32 @@
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 _ONEMKL_SPBLAS_HPP_
16
+ #define _ONEMKL_SPBLAS_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
+ #include "oneapi/mkl/spblas/sparse_operations.hpp"
30
+ #include "oneapi/mkl/spblas/sparse_auxiliary.hpp"
31
+
32
+ #endif /* _ONEMKL_SPBLAS_HPP_ */