mkl-devel-dpcpp 2024.2.2__py2.py3-none-win_amd64.whl → 2025.0.1__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.

Files changed (97) hide show
  1. mkl_devel_dpcpp-2024.2.2.data/data/Library/include/oneapi/mkl/dfti.hpp → mkl_devel_dpcpp-2025.0.1.data/data/Library/include/oneapi/mkl/dft.hpp +82 -36
  2. mkl_devel_dpcpp-2025.0.1.data/data/Library/include/oneapi/mkl/dfti.hpp +22 -0
  3. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/lapack/lapack.hpp +90 -90
  4. mkl_devel_dpcpp-2025.0.1.data/data/Library/include/oneapi/mkl/rng/device/detail/beta_impl.hpp +464 -0
  5. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/distribution_base.hpp +8 -0
  6. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/exponential_impl.hpp +7 -0
  7. mkl_devel_dpcpp-2025.0.1.data/data/Library/include/oneapi/mkl/rng/device/detail/gamma_impl.hpp +285 -0
  8. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/mcg31m1_impl.hpp +4 -12
  9. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/mcg59_impl.hpp +8 -20
  10. mkl_devel_dpcpp-2025.0.1.data/data/Library/include/oneapi/mkl/rng/device/detail/uniform_impl.hpp +289 -0
  11. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/vm_wrappers.hpp +42 -0
  12. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/distributions.hpp +172 -15
  13. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/engines.hpp +1 -7
  14. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/types.hpp +12 -0
  15. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/distributions.hpp +11 -80
  16. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/spblas/sparse_auxiliary.hpp +43 -0
  17. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/spblas/sparse_operations.hpp +69 -6
  18. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/spblas/sparse_structures.hpp +33 -34
  19. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl.hpp +1 -1
  20. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/lib/mkl_sycl.lib +0 -0
  21. mkl_devel_dpcpp-2025.0.1.data/data/Library/lib/mkl_sycl_blas_dll.lib +0 -0
  22. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/lib/mkl_sycl_data_fitting_dll.lib +0 -0
  23. mkl_devel_dpcpp-2025.0.1.data/data/Library/lib/mkl_sycl_dft_dll.lib +0 -0
  24. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/lib/mkl_sycl_dll.lib +0 -0
  25. mkl_devel_dpcpp-2025.0.1.data/data/Library/lib/mkl_sycl_lapack_dll.lib +0 -0
  26. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/lib/mkl_sycl_rng_dll.lib +0 -0
  27. mkl_devel_dpcpp-2025.0.1.data/data/Library/lib/mkl_sycl_sparse_dll.lib +0 -0
  28. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/lib/mkl_sycl_stats_dll.lib +0 -0
  29. mkl_devel_dpcpp-2025.0.1.data/data/Library/lib/mkl_sycl_vm_dll.lib +0 -0
  30. {mkl_devel_dpcpp-2024.2.2.dist-info → mkl_devel_dpcpp-2025.0.1.dist-info}/METADATA +3 -3
  31. mkl_devel_dpcpp-2025.0.1.dist-info/RECORD +90 -0
  32. mkl_devel_dpcpp-2024.2.2.data/data/Library/include/oneapi/mkl/rng/device/detail/uniform_impl.hpp +0 -131
  33. mkl_devel_dpcpp-2024.2.2.data/data/Library/lib/mkl_sycl_blas_dll.lib +0 -0
  34. mkl_devel_dpcpp-2024.2.2.data/data/Library/lib/mkl_sycl_dft_dll.lib +0 -0
  35. mkl_devel_dpcpp-2024.2.2.data/data/Library/lib/mkl_sycl_lapack_dll.lib +0 -0
  36. mkl_devel_dpcpp-2024.2.2.data/data/Library/lib/mkl_sycl_sparse_dll.lib +0 -0
  37. mkl_devel_dpcpp-2024.2.2.data/data/Library/lib/mkl_sycl_vm_dll.lib +0 -0
  38. mkl_devel_dpcpp-2024.2.2.dist-info/RECORD +0 -87
  39. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/bfloat16.hpp +0 -0
  40. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/blas/buffer.hpp +0 -0
  41. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/blas/buffer_decls.hpp +0 -0
  42. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/blas/types.hpp +0 -0
  43. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/blas/usm.hpp +0 -0
  44. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/blas/usm_decls.hpp +0 -0
  45. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/blas.hpp +0 -0
  46. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/exceptions.hpp +0 -0
  47. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/experimental/data_fitting/interpolate.hpp +0 -0
  48. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/experimental/data_fitting/spline_and_data_params.hpp +0 -0
  49. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/experimental/data_fitting/splines.hpp +0 -0
  50. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/experimental/data_fitting.hpp +0 -0
  51. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/export.hpp +0 -0
  52. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/lapack/concepts.hpp +0 -0
  53. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/lapack/exceptions.hpp +0 -0
  54. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/lapack/scratchpad.hpp +0 -0
  55. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/lapack.hpp +0 -0
  56. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/detail/engine_base.hpp +0 -0
  57. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/bernoulli_impl.hpp +0 -0
  58. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/bits_impl.hpp +0 -0
  59. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/engine_base.hpp +0 -0
  60. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/engine_helpers_base.hpp +0 -0
  61. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/gaussian_impl.hpp +0 -0
  62. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/lognormal_impl.hpp +0 -0
  63. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/mcg31m1_helpers_impl.hpp +0 -0
  64. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/mcg59_helpers_impl.hpp +0 -0
  65. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_helpers_impl.hpp +0 -0
  66. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_impl.hpp +0 -0
  67. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_skip_ahead_matrix.hpp +0 -0
  68. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/philox4x32x10_helpers_impl.hpp +0 -0
  69. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/philox4x32x10_impl.hpp +0 -0
  70. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/poisson_impl.hpp +0 -0
  71. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/types.hpp +0 -0
  72. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/detail/uniform_bits_impl.hpp +0 -0
  73. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/engine_helpers.hpp +0 -0
  74. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device/functions.hpp +0 -0
  75. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/device.hpp +0 -0
  76. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/engines.hpp +0 -0
  77. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng/functions.hpp +0 -0
  78. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/rng.hpp +0 -0
  79. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/spblas.hpp +0 -0
  80. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/stats.hpp +0 -0
  81. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/types.hpp +0 -0
  82. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/buffer.hpp +0 -0
  83. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/decls.hpp +0 -0
  84. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/device/detail/decls.hpp +0 -0
  85. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/device/detail/dispatch.hpp +0 -0
  86. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/device/detail/ep.hpp +0 -0
  87. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/device/detail/ha.hpp +0 -0
  88. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/device/detail/la.hpp +0 -0
  89. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/device/detail/rts.hpp +0 -0
  90. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/device/detail/scalar.hpp +0 -0
  91. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/device/vm.hpp +0 -0
  92. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/span.hpp +0 -0
  93. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm/usm.hpp +0 -0
  94. {mkl_devel_dpcpp-2024.2.2.data → mkl_devel_dpcpp-2025.0.1.data}/data/Library/include/oneapi/mkl/vm.hpp +0 -0
  95. {mkl_devel_dpcpp-2024.2.2.dist-info → mkl_devel_dpcpp-2025.0.1.dist-info}/LICENSE.txt +0 -0
  96. {mkl_devel_dpcpp-2024.2.2.dist-info → mkl_devel_dpcpp-2025.0.1.dist-info}/WHEEL +0 -0
  97. {mkl_devel_dpcpp-2024.2.2.dist-info → mkl_devel_dpcpp-2025.0.1.dist-info}/top_level.txt +0 -0
@@ -112,6 +112,48 @@ static inline DataType ln_wrapper(DataType a) {
112
112
  #endif // MKL_RNG_USE_BINARY_CODE
113
113
  }
114
114
 
115
+ template <typename DataType>
116
+ static inline DataType pow_wrapper(DataType a, DataType b) {
117
+ #if MKL_RNG_USE_BINARY_CODE
118
+ DataType t;
119
+ if constexpr (std::is_same_v<DataType, double>)
120
+ vm_d::pow(&a, &b, &t, vm_d::mode::ep);
121
+ else
122
+ t = sycl::pow(a, b);
123
+ return t;
124
+ #else
125
+ return sycl::pow(a, b);
126
+ #endif // MKL_RNG_USE_BINARY_CODE
127
+ }
128
+
129
+ template <typename DataType>
130
+ static inline DataType powr_wrapper(DataType a, DataType b) {
131
+ #if MKL_RNG_USE_BINARY_CODE
132
+ DataType t;
133
+ if constexpr (std::is_same_v<DataType, double>)
134
+ vm_d::powr(&a, &b, &t, vm_d::mode::ep);
135
+ else
136
+ t = sycl::powr(a, b);
137
+ return t;
138
+ #else
139
+ return sycl::powr(a, b);
140
+ #endif // MKL_RNG_USE_BINARY_CODE
141
+ }
142
+
143
+ template <typename DataType>
144
+ static inline DataType exp_wrapper(DataType a) {
145
+ #if MKL_RNG_USE_BINARY_CODE
146
+ DataType t;
147
+ if constexpr (std::is_same_v<DataType, double>)
148
+ vm_d::exp(&a, &t, vm_d::mode::ep);
149
+ else
150
+ t = sycl::exp(a);
151
+ return t;
152
+ #else
153
+ return sycl::exp(a);
154
+ #endif // MKL_RNG_USE_BINARY_CODE
155
+ }
156
+
115
157
  #if MKL_RNG_USE_BINARY_CODE
116
158
  template <typename RealType>
117
159
  inline RealType erf_inv_wrapper(RealType x) {
@@ -62,7 +62,9 @@ public:
62
62
 
63
63
  static_assert(std::is_same<Type, float>::value || std::is_same<Type, double>::value ||
64
64
  std::is_same<Type, std::int32_t>::value ||
65
- std::is_same<Type, std::uint32_t>::value,
65
+ std::is_same<Type, std::uint32_t>::value ||
66
+ std::is_same<Type, std::int64_t>::value ||
67
+ std::is_same<Type, std::uint64_t>::value,
66
68
  "oneMKL: rng/uniform: type is not supported");
67
69
 
68
70
  using method_type = Method;
@@ -71,12 +73,14 @@ public:
71
73
 
72
74
  uniform()
73
75
  : detail::distribution_base<uniform<Type, Method>>(
74
- static_cast<Type>(0.0),
76
+ Type(0.0),
75
77
  std::is_integral<Type>::value
76
- ? (std::is_same<Method, uniform_method::standard>::value
77
- ? (1 << 23)
78
- : (std::numeric_limits<Type>::max)())
79
- : static_cast<Type>(1.0)) {}
78
+ ? ((std::is_same_v<Type, std::uint64_t> || std::is_same_v<Type, std::int64_t>)
79
+ ? (std::numeric_limits<Type>::max)()
80
+ : (std::is_same<Method, uniform_method::standard>::value
81
+ ? (1 << 23)
82
+ : (std::numeric_limits<Type>::max)()))
83
+ : Type(1.0)) {}
80
84
 
81
85
  explicit uniform(Type a, Type b) : detail::distribution_base<uniform<Type, Method>>(a, b) {}
82
86
  explicit uniform(const param_type& pt)
@@ -144,8 +148,7 @@ public:
144
148
  using param_type = typename detail::distribution_base<gaussian<RealType, Method>>::param_type;
145
149
 
146
150
  gaussian()
147
- : detail::distribution_base<gaussian<RealType, Method>>(static_cast<RealType>(0.0),
148
- static_cast<RealType>(1.0)) {}
151
+ : detail::distribution_base<gaussian<RealType, Method>>(RealType(0.0), RealType(1.0)) {}
149
152
 
150
153
  explicit gaussian(RealType mean, RealType stddev)
151
154
  : detail::distribution_base<gaussian<RealType, Method>>(mean, stddev) {}
@@ -208,11 +211,10 @@ public:
208
211
 
209
212
  lognormal()
210
213
  : detail::distribution_base<lognormal<RealType, Method>>(
211
- static_cast<RealType>(0.0), static_cast<RealType>(1.0),
212
- static_cast<RealType>(0.0), static_cast<RealType>(1.0)) {}
214
+ RealType(0.0), RealType(1.0), RealType(0.0), RealType(1.0)) {}
213
215
 
214
- explicit lognormal(RealType m, RealType s, RealType displ = static_cast<RealType>(0.0),
215
- RealType scale = static_cast<RealType>(1.0))
216
+ explicit lognormal(RealType m, RealType s, RealType displ = RealType(0.0),
217
+ RealType scale = RealType(1.0))
216
218
  : detail::distribution_base<lognormal<RealType, Method>>(m, s, displ, scale) {}
217
219
  explicit lognormal(const param_type& pt)
218
220
  : detail::distribution_base<lognormal<RealType, Method>>(pt.m_, pt.s_, pt.displ_,
@@ -250,6 +252,157 @@ public:
250
252
  friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
251
253
  };
252
254
 
255
+ // Class template oneapi::mkl::rng::device::beta
256
+ //
257
+ // Represents continuous beta random number distribution
258
+ //
259
+ // Supported types:
260
+ // float
261
+ // double
262
+ //
263
+ // Supported methods:
264
+ // oneapi::mkl::rng::device::beta_method::cja
265
+ // oneapi::mkl::rng::device::beta_method::cja_accurate
266
+ //
267
+ // Input arguments:
268
+ // p - shape. 1.0 by default
269
+ // q - shape. 0.0 by default
270
+ // a - displacement. 1.0 by default
271
+ // b - scalefactor. 1.0 by default
272
+ //
273
+ template <typename RealType, typename Method>
274
+ class beta : detail::distribution_base<beta<RealType, Method>> {
275
+ public:
276
+ static_assert(std::is_same<Method, beta_method::cja>::value ||
277
+ std::is_same<Method, beta_method::cja_accurate>::value,
278
+ "oneMKL: rng/beta: method is incorrect");
279
+
280
+ static_assert(std::is_same<RealType, float>::value || std::is_same<RealType, double>::value,
281
+ "oneMKL: rng/beta: type is not supported");
282
+
283
+ using method_type = Method;
284
+ using result_type = RealType;
285
+ using param_type = typename detail::distribution_base<beta<RealType, Method>>::param_type;
286
+
287
+ beta()
288
+ : detail::distribution_base<beta<RealType, Method>>(RealType(1.0), RealType(1.0),
289
+ RealType(0.0), RealType(1.0)) {}
290
+
291
+ explicit beta(RealType p, RealType q, RealType a, RealType b)
292
+ : detail::distribution_base<beta<RealType, Method>>(p, q, a, b) {}
293
+
294
+ explicit beta(const param_type& pt)
295
+ : detail::distribution_base<beta<RealType, Method>>(pt.p_, pt.q_, pt.a_, pt.b_) {}
296
+
297
+ RealType p() const {
298
+ return detail::distribution_base<beta<RealType, Method>>::p();
299
+ }
300
+
301
+ RealType q() const {
302
+ return detail::distribution_base<beta<RealType, Method>>::q();
303
+ }
304
+
305
+ RealType a() const {
306
+ return detail::distribution_base<beta<RealType, Method>>::a();
307
+ }
308
+
309
+ RealType b() const {
310
+ return detail::distribution_base<beta<RealType, Method>>::b();
311
+ }
312
+
313
+ param_type param() const {
314
+ return detail::distribution_base<beta<RealType, Method>>::param();
315
+ }
316
+
317
+ std::size_t count_rejected_numbers() const {
318
+ return detail::distribution_base<beta<RealType, Method>>::count_rejected_numbers();
319
+ }
320
+
321
+ void param(const param_type& pt) {
322
+ detail::distribution_base<beta<RealType, Method>>::param(pt);
323
+ }
324
+
325
+ template <typename Distr, typename Engine>
326
+ friend auto generate(Distr& distr, Engine& engine) ->
327
+ typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
328
+ sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
329
+ template <typename Distr, typename Engine>
330
+ friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
331
+ };
332
+
333
+ // Class template oneapi::mkl::rng::device::gamma
334
+ //
335
+ // Represents continuous gamma random number distribution
336
+ //
337
+ // Supported types:
338
+ // float
339
+ // double
340
+ //
341
+ // Supported methods:
342
+ // oneapi::mkl::rng::device::gamma_method::marsaglia
343
+ // oneapi::mkl::rng::device::gamma_method::marsaglia_accurate
344
+ //
345
+ // Input arguments:
346
+ // alpha - shape. 1.0 by default
347
+ // a - displacement. 0.0 by default
348
+ // beta - scalefactor. 1.0 by default
349
+ //
350
+ template <typename RealType, typename Method>
351
+ class gamma : detail::distribution_base<gamma<RealType, Method>> {
352
+ public:
353
+ static_assert(std::is_same<Method, gamma_method::marsaglia>::value ||
354
+ std::is_same<Method, gamma_method::marsaglia_accurate>::value,
355
+ "oneMKL: rng/gamma: method is incorrect");
356
+
357
+ static_assert(std::is_same<RealType, float>::value || std::is_same<RealType, double>::value,
358
+ "oneMKL: rng/gamma: type is not supported");
359
+
360
+ using method_type = Method;
361
+ using result_type = RealType;
362
+ using param_type = typename detail::distribution_base<gamma<RealType, Method>>::param_type;
363
+
364
+ gamma()
365
+ : detail::distribution_base<gamma<RealType, Method>>(RealType(1.0), RealType(0.0),
366
+ RealType(1.0)) {}
367
+
368
+ explicit gamma(RealType alpha, RealType a, RealType beta)
369
+ : detail::distribution_base<gamma<RealType, Method>>(alpha, a, beta) {}
370
+
371
+ explicit gamma(const param_type& pt)
372
+ : detail::distribution_base<gamma<RealType, Method>>(pt.alpha_, pt.a_, pt.beta_) {}
373
+
374
+ RealType alpha() const {
375
+ return detail::distribution_base<gamma<RealType, Method>>::alpha();
376
+ }
377
+
378
+ RealType a() const {
379
+ return detail::distribution_base<gamma<RealType, Method>>::a();
380
+ }
381
+
382
+ RealType beta() const {
383
+ return detail::distribution_base<gamma<RealType, Method>>::beta();
384
+ }
385
+
386
+ std::size_t count_rejected_numbers() const {
387
+ return detail::distribution_base<gamma<RealType, Method>>::count_rejected_numbers();
388
+ }
389
+
390
+ param_type param() const {
391
+ return detail::distribution_base<gamma<RealType, Method>>::param();
392
+ }
393
+
394
+ void param(const param_type& pt) {
395
+ detail::distribution_base<gamma<RealType, Method>>::param(pt);
396
+ }
397
+
398
+ template <typename Distr, typename Engine>
399
+ friend auto generate(Distr& distr, Engine& engine) ->
400
+ typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
401
+ sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
402
+ template <typename Distr, typename Engine>
403
+ friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
404
+ };
405
+
253
406
  // Class template oneapi::mkl::rng::device::uniform_bits
254
407
  //
255
408
  // Represents discrete uniform bits random number distribution
@@ -334,8 +487,8 @@ public:
334
487
  typename detail::distribution_base<exponential<RealType, Method>>::param_type;
335
488
 
336
489
  exponential()
337
- : detail::distribution_base<exponential<RealType, Method>>(
338
- static_cast<RealType>(0.0), static_cast<RealType>(1.0)) {}
490
+ : detail::distribution_base<exponential<RealType, Method>>(RealType(0.0),
491
+ RealType(1.0)) {}
339
492
 
340
493
  explicit exponential(RealType a, RealType beta)
341
494
  : detail::distribution_base<exponential<RealType, Method>>(a, beta) {}
@@ -442,7 +595,11 @@ public:
442
595
  "oneMKL: rng/bernoulli: method is incorrect");
443
596
 
444
597
  static_assert(std::is_same<IntType, std::int32_t>::value ||
445
- std::is_same<IntType, std::uint32_t>::value,
598
+ std::is_same<IntType, std::uint32_t>::value ||
599
+ std::is_same<IntType, std::int16_t>::value ||
600
+ std::is_same<IntType, std::uint16_t>::value ||
601
+ std::is_same<IntType, std::int8_t>::value ||
602
+ std::is_same<IntType, std::uint8_t>::value,
446
603
  "oneMKL: rng/bernoulli: type is not supported");
447
604
 
448
605
  using method_type = Method;
@@ -139,9 +139,6 @@ public:
139
139
  mcg31m1(std::uint32_t seed, std::uint64_t offset = 0)
140
140
  : detail::engine_base<mcg31m1<VecSize>>(seed, offset) {}
141
141
 
142
- mcg31m1(std::initializer_list<std::uint32_t> seed, std::uint64_t offset = 0)
143
- : detail::engine_base<mcg31m1<VecSize>>(seed.size(), seed.begin(), offset) {}
144
-
145
142
  private:
146
143
  template <typename Engine>
147
144
  friend void skip_ahead(Engine& engine, std::uint64_t num_to_skip);
@@ -170,12 +167,9 @@ public:
170
167
 
171
168
  mcg59() : detail::engine_base<mcg59<VecSize>>(default_seed) {}
172
169
 
173
- mcg59(std::uint32_t seed, std::uint64_t offset = 0)
170
+ mcg59(std::uint64_t seed, std::uint64_t offset = 0)
174
171
  : detail::engine_base<mcg59<VecSize>>(seed, offset) {}
175
172
 
176
- mcg59(std::initializer_list<std::uint32_t> seed, std::uint64_t offset = 0)
177
- : detail::engine_base<mcg59<VecSize>>(seed.size(), seed.begin(), offset) {}
178
-
179
173
  private:
180
174
  template <typename Engine>
181
175
  friend void skip_ahead(Engine& engine, std::uint64_t num_to_skip);
@@ -57,6 +57,18 @@ struct icdf {};
57
57
  using by_default = icdf;
58
58
  } // namespace bernoulli_method
59
59
 
60
+ namespace beta_method {
61
+ struct cja {};
62
+ struct cja_accurate {};
63
+ using by_default = cja;
64
+ } // namespace beta_method
65
+
66
+ namespace gamma_method {
67
+ struct marsaglia {};
68
+ struct marsaglia_accurate {};
69
+ using by_default = marsaglia;
70
+ } // namespace gamma_method
71
+
60
72
  } // namespace oneapi::mkl::rng::device
61
73
 
62
74
  #endif // _MKL_RNG_DEVICE_TYPES_HPP_
@@ -261,22 +261,12 @@ public:
261
261
  static constexpr layout layout_type = Layout;
262
262
 
263
263
  struct param_type {
264
- [[deprecated("Use the constructor with sycl::span instead")]]
265
- param_type(std::uint32_t dimen, std::vector<RealType> mean, std::vector<RealType> matrix)
266
- : dimen_(dimen),
267
- mean_(mean),
268
- matrix_(matrix) {
269
- mean_span_ = sycl::span<RealType>{mean_.data(), mean_.size()};
270
- matrix_span_ = sycl::span<RealType>{matrix_.data(), matrix_.size()};
271
- }
272
264
  param_type(std::uint32_t dimen, sycl::span<RealType> mean, sycl::span<RealType> matrix)
273
265
  : dimen_(dimen),
274
266
  mean_span_(mean),
275
267
  matrix_span_(matrix) {}
276
268
 
277
269
  std::uint32_t dimen_;
278
- std::vector<RealType> mean_;
279
- std::vector<RealType> matrix_;
280
270
  sycl::span<RealType> mean_span_;
281
271
  sycl::span<RealType> matrix_span_;
282
272
  };
@@ -295,28 +285,8 @@ public:
295
285
  }
296
286
  }
297
287
 
298
- [[deprecated("Use the constructor with sycl::span instead")]]
299
- explicit gaussian_mv(std::uint32_t dimen, std::vector<RealType> mean,
300
- std::vector<RealType> matrix)
301
- : dimen_(dimen),
302
- mean_(mean),
303
- matrix_(matrix) {
304
- mean_span_ = sycl::span<RealType>{mean_.data(), mean_.size()};
305
- matrix_span_ = sycl::span<RealType>{matrix_.data(), matrix_.size()};
306
-
307
- if ((mean.size() != dimen)) {
308
- throw oneapi::mkl::invalid_argument("rng", "gaussian_mv", "'mean' vector size is incorrect");
309
- }
310
- if ((matrix.size() != dimen * dimen) && (matrix.size() != dimen) &&
311
- (matrix.size() != dimen * (dimen + 1) / 2)) {
312
- throw oneapi::mkl::invalid_argument("rng", "gaussian_mv", "'matrix' size is incorrect");
313
- }
314
- }
315
-
316
288
  explicit gaussian_mv(const param_type& pt)
317
289
  : dimen_(pt.dimen_),
318
- mean_(pt.mean_),
319
- matrix_(pt.matrix_),
320
290
  mean_span_(pt.mean_span_),
321
291
  matrix_span_(pt.matrix_span_) {
322
292
 
@@ -332,12 +302,12 @@ public:
332
302
  return dimen_;
333
303
  }
334
304
 
335
- std::vector<RealType> mean() const {
336
- return std::vector<RealType>(mean_span_.begin(), mean_span_.end());
305
+ sycl::span<RealType> mean() const {
306
+ return mean_span_;
337
307
  }
338
308
 
339
- std::vector<RealType> matrix() const {
340
- return std::vector<RealType>(matrix_span_.begin(), matrix_span_.end());
309
+ sycl::span<RealType> matrix() const {
310
+ return matrix_span_;
341
311
  }
342
312
 
343
313
  param_type param() const {
@@ -352,16 +322,12 @@ public:
352
322
  throw oneapi::mkl::invalid_argument("rng", "gaussian_mv", "'matrix' size is < 0");
353
323
  }
354
324
  dimen_ = pt.dimen_;
355
- mean_ = pt.mean_;
356
- matrix_ = pt.matrix_;
357
325
  mean_span_ = pt.mean_span_;
358
326
  matrix_span_ = pt.matrix_span_;
359
327
  }
360
328
 
361
329
  private:
362
330
  std::uint32_t dimen_;
363
- std::vector<RealType> mean_;
364
- std::vector<RealType> matrix_;
365
331
  sycl::span<RealType> mean_span_;
366
332
  sycl::span<RealType> matrix_span_;
367
333
  };
@@ -1628,28 +1594,12 @@ public:
1628
1594
  using result_type = IntType;
1629
1595
 
1630
1596
  struct param_type {
1631
- [[deprecated("Use the constructor with sycl::span instead")]]
1632
- param_type(std::int32_t ntrial, std::vector<double> p) : ntrial_(ntrial), p_(p) {
1633
- p_span_ = sycl::span<double>{p_.data(), p_.size()};
1634
- }
1635
1597
  param_type(std::int32_t ntrial, sycl::span<double> p) : ntrial_(ntrial), p_span_(p) {}
1636
1598
 
1637
1599
  std::int32_t ntrial_;
1638
- std::vector<double> p_;
1639
1600
  sycl::span<double> p_span_;
1640
1601
  };
1641
1602
 
1642
- [[deprecated("Use the constructor with sycl::span instead")]]
1643
- explicit multinomial(std::int32_t ntrial, std::vector<double> p) : ntrial_(ntrial), p_(p) {
1644
- p_span_ = sycl::span<double>{p_.data(), p_.size()};
1645
- if (ntrial < 0) {
1646
- throw oneapi::mkl::invalid_argument("rng", "multinomial", "ntrial < 0");
1647
- }
1648
- if (p.size() < 1) {
1649
- throw oneapi::mkl::invalid_argument("rng", "multinomial", "size of p < 1");
1650
- }
1651
- }
1652
-
1653
1603
  explicit multinomial(std::int32_t ntrial, sycl::span<double> p) : ntrial_(ntrial), p_span_(p) {
1654
1604
  if (ntrial < 0) {
1655
1605
  throw oneapi::mkl::invalid_argument("rng", "multinomial", "ntrial < 0");
@@ -1659,7 +1609,7 @@ public:
1659
1609
  }
1660
1610
  }
1661
1611
 
1662
- explicit multinomial(const param_type& pt) : ntrial_(pt.ntrial_), p_(pt.p_), p_span_(pt.p_span_) {
1612
+ explicit multinomial(const param_type& pt) : ntrial_(pt.ntrial_), p_span_(pt.p_span_) {
1663
1613
  if (pt.ntrial_ < 0) {
1664
1614
  throw oneapi::mkl::invalid_argument("rng", "multinomial", "ntrial < 0");
1665
1615
  }
@@ -1672,8 +1622,8 @@ public:
1672
1622
  return ntrial_;
1673
1623
  }
1674
1624
 
1675
- std::vector<double> p() const {
1676
- return std::vector<double>(p_span_.begin(), p_span_.end());
1625
+ sycl::span<double> p() const {
1626
+ return p_span_;
1677
1627
  }
1678
1628
 
1679
1629
  param_type param() const {
@@ -1688,13 +1638,11 @@ public:
1688
1638
  throw oneapi::mkl::invalid_argument("rng", "multinomial", "size of p < 1");
1689
1639
  }
1690
1640
  ntrial_ = pt.ntrial_;
1691
- p_ = pt.p_;
1692
1641
  p_span_ = pt.p_span_;
1693
1642
  }
1694
1643
 
1695
1644
  private:
1696
1645
  std::int32_t ntrial_;
1697
- std::vector<double> p_;
1698
1646
  sycl::span<double> p_span_;
1699
1647
  };
1700
1648
 
@@ -1867,7 +1815,7 @@ private:
1867
1815
  // oneapi::mkl::rng::poisson_v_method::gaussian_icdf_based
1868
1816
  //
1869
1817
  // Input arguments:
1870
- // lambda - vector of distribution parameters
1818
+ // lambda - span of distribution parameters
1871
1819
 
1872
1820
  namespace poisson_v_method {
1873
1821
  struct gaussian_icdf_based {};
@@ -1888,26 +1836,11 @@ public:
1888
1836
  using result_type = IntType;
1889
1837
 
1890
1838
  struct param_type {
1891
- [[deprecated("Use the constructor with sycl::span instead")]]
1892
- param_type(std::vector<double> lambda) : lambda_(lambda) {
1893
- lambda_span_ = sycl::span<double>{lambda_.data(), lambda_.size()};
1894
- }
1895
1839
  param_type(sycl::span<double> lambda) : lambda_span_(lambda) {}
1896
1840
 
1897
- std::vector<double> lambda_;
1898
1841
  sycl::span<double> lambda_span_;
1899
1842
  };
1900
1843
 
1901
- [[deprecated("Use the constructor with sycl::span instead")]]
1902
- explicit poisson_v(std::vector<double> lambda) : lambda_(lambda)
1903
- {
1904
- lambda_span_ = sycl::span<double>{lambda_.data(), lambda_.size()};
1905
- if ((lambda.size() <= 0)) {
1906
- throw oneapi::mkl::invalid_argument("rng", "poisson_v",
1907
- "size of lambda < 0");
1908
- }
1909
- }
1910
-
1911
1844
  explicit poisson_v(sycl::span<double> lambda) : lambda_span_(lambda) {
1912
1845
  if ((lambda.size() <= 0)) {
1913
1846
  throw oneapi::mkl::invalid_argument("rng", "poisson_v",
@@ -1915,14 +1848,14 @@ public:
1915
1848
  }
1916
1849
  }
1917
1850
 
1918
- explicit poisson_v(const param_type& pt) : lambda_(pt.lambda_), lambda_span_(pt.lambda_span_) {
1851
+ explicit poisson_v(const param_type& pt) : lambda_span_(pt.lambda_span_) {
1919
1852
  if ((pt.lambda_span_.size() <= 0)) {
1920
1853
  throw oneapi::mkl::invalid_argument("rng", "poisson_v", "size of lambda < 0");
1921
1854
  }
1922
1855
  }
1923
1856
 
1924
- std::vector<double> lambda() const {
1925
- return std::vector<double>(lambda_span_.begin(), lambda_span_.end());
1857
+ sycl::span<double> lambda() const {
1858
+ return lambda_span_;
1926
1859
  }
1927
1860
 
1928
1861
  param_type param() const {
@@ -1933,12 +1866,10 @@ public:
1933
1866
  if ((pt.lambda_span_.size() <= 0)) {
1934
1867
  throw oneapi::mkl::invalid_argument("rng", "poisson_v", "size of lambda < 0");
1935
1868
  }
1936
- lambda_ = pt.lambda_;
1937
1869
  lambda_span_ = pt.lambda_span_;
1938
1870
  }
1939
1871
 
1940
1872
  private:
1941
- std::vector<double> lambda_;
1942
1873
  sycl::span<double> lambda_span_;
1943
1874
  };
1944
1875
 
@@ -38,6 +38,49 @@ DLL_EXPORT sycl::event omatcopy(sycl::queue &queue,
38
38
  matrix_handle_t spMat_out,
39
39
  const std::vector<sycl::event> &dependencies = {});
40
40
 
41
+ /******************************************************************************/
42
+ DLL_EXPORT void omatconvert_buffer_size(
43
+ sycl::queue &queue,
44
+ matrix_handle_t spMat_in,
45
+ matrix_handle_t spMat_out,
46
+ omatconvert_alg alg,
47
+ omatconvert_descr_t descr,
48
+ std::int64_t &sizeTempWorkspace);
49
+
50
+ DLL_EXPORT void omatconvert_analyze(
51
+ sycl::queue &queue,
52
+ matrix_handle_t spMat_in,
53
+ matrix_handle_t spMat_out,
54
+ omatconvert_alg alg,
55
+ omatconvert_descr_t descr,
56
+ sycl::buffer<std::uint8_t, 1> *tempWorkspace);
57
+
58
+ DLL_EXPORT sycl::event omatconvert_analyze(
59
+ sycl::queue &queue,
60
+ matrix_handle_t spMat_in,
61
+ matrix_handle_t spMat_out,
62
+ omatconvert_alg alg,
63
+ omatconvert_descr_t descr,
64
+ void *tempWorkspace,
65
+ const std::vector<sycl::event> &dependencies = {});
66
+
67
+ DLL_EXPORT void omatconvert_get_nnz(
68
+ sycl::queue &queue,
69
+ matrix_handle_t spMat_in,
70
+ matrix_handle_t spMat_out,
71
+ omatconvert_alg alg,
72
+ omatconvert_descr_t descr,
73
+ std::int64_t &nnzOut,
74
+ const std::vector<sycl::event> &dependencies = {});
75
+
76
+ DLL_EXPORT sycl::event omatconvert (
77
+ sycl::queue &queue,
78
+ oneapi::mkl::sparse::matrix_handle_t spMat_in,
79
+ oneapi::mkl::sparse::matrix_handle_t spMat_out,
80
+ omatconvert_alg alg,
81
+ omatconvert_descr_t descr,
82
+ const std::vector<sycl::event> &dependencies = {});
83
+
41
84
  /******************************************************************************/
42
85
  DLL_EXPORT sycl::event sort_matrix(sycl::queue &queue,
43
86
  matrix_handle_t spMat,