mkl-devel-dpcpp 2025.1.0__py2.py3-none-win_amd64.whl → 2025.2.0__py2.py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mkl-devel-dpcpp might be problematic. Click here for more details.
- {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.2.0.data}/data/Library/lib/mkl_sycl.lib +0 -0
- mkl_devel_dpcpp-2025.2.0.data/data/Library/lib/mkl_sycl_dft_dll.lib +0 -0
- {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.2.0.data}/data/Library/lib/mkl_sycl_dll.lib +0 -0
- mkl_devel_dpcpp-2025.2.0.data/data/Library/lib/mkl_sycl_lapack_dll.lib +0 -0
- {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.2.0.data}/data/Library/lib/mkl_sycl_rng_dll.lib +0 -0
- mkl_devel_dpcpp-2025.2.0.data/data/Library/lib/mkl_sycl_sparse_dll.lib +0 -0
- {mkl_devel_dpcpp-2025.1.0.dist-info → mkl_devel_dpcpp-2025.2.0.dist-info}/METADATA +4 -3
- mkl_devel_dpcpp-2025.2.0.dist-info/RECORD +15 -0
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/bfloat16.hpp +0 -26
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/buffer.hpp +0 -42
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/buffer_decls.hpp +0 -880
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/spec.hpp +0 -42
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/types.hpp +0 -60
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/usm.hpp +0 -42
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas/usm_decls.hpp +0 -1240
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/blas.hpp +0 -34
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/dft/spec.hpp +0 -42
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/dft.hpp +0 -254
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/dfti.hpp +0 -22
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/exceptions.hpp +0 -110
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/experimental/data_fitting/interpolate.hpp +0 -67
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/experimental/data_fitting/spline_and_data_params.hpp +0 -68
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/experimental/data_fitting/splines.hpp +0 -177
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/experimental/data_fitting.hpp +0 -22
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/export.hpp +0 -25
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack/concepts.hpp +0 -55
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack/exceptions.hpp +0 -75
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack/lapack.hpp +0 -1096
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack/scratchpad.hpp +0 -107
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack/spec.hpp +0 -42
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/lapack.hpp +0 -24
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/detail/engine_base.hpp +0 -48
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/bernoulli_impl.hpp +0 -89
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/beta_impl.hpp +0 -463
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/bits_impl.hpp +0 -71
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/distribution_base.hpp +0 -85
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/engine_base.hpp +0 -43
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/engine_helpers_base.hpp +0 -54
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/exponential_impl.hpp +0 -116
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/gamma_impl.hpp +0 -285
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/gaussian_impl.hpp +0 -270
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/geometric_impl.hpp +0 -99
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/lognormal_impl.hpp +0 -105
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mcg31m1_helpers_impl.hpp +0 -117
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mcg31m1_impl.hpp +0 -223
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mcg59_helpers_impl.hpp +0 -118
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mcg59_impl.hpp +0 -266
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_helpers_impl.hpp +0 -125
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_impl.hpp +0 -385
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/mrg32k3a_skip_ahead_matrix.hpp +0 -3668
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/philox4x32x10_helpers_impl.hpp +0 -141
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/philox4x32x10_impl.hpp +0 -552
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/poisson_impl.hpp +0 -328
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/types.hpp +0 -58
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/uniform_bits_impl.hpp +0 -51
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/uniform_impl.hpp +0 -287
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/detail/vm_wrappers.hpp +0 -183
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/distributions.hpp +0 -700
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/engine_helpers.hpp +0 -116
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/engines.hpp +0 -187
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/functions.hpp +0 -59
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device/types.hpp +0 -79
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/device.hpp +0 -29
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/distributions.hpp +0 -1913
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/engines.hpp +0 -788
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/functions.hpp +0 -163
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng/spec.hpp +0 -42
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/rng.hpp +0 -23
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spblas/sparse_auxiliary.hpp +0 -111
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spblas/sparse_operations.hpp +0 -446
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spblas/sparse_structures.hpp +0 -193
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spblas/spec.hpp +0 -42
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spblas.hpp +0 -33
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/spec.hpp +0 -42
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/stats/spec.hpp +0 -42
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/stats.hpp +0 -357
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/types.hpp +0 -321
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/buffer.hpp +0 -3529
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/decls.hpp +0 -280
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/decls.hpp +0 -81
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/dispatch.hpp +0 -1059
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/ep.hpp +0 -861
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/ha.hpp +0 -860
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/la.hpp +0 -860
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/rts.hpp +0 -4608
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/detail/scalar.hpp +0 -8963
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/device/vm.hpp +0 -460
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/span.hpp +0 -3813
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/spec.hpp +0 -42
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm/usm.hpp +0 -3581
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl/vm.hpp +0 -31
- mkl_devel_dpcpp-2025.1.0.data/data/Library/include/oneapi/mkl.hpp +0 -35
- mkl_devel_dpcpp-2025.1.0.data/data/Library/lib/mkl_sycl_dft_dll.lib +0 -0
- mkl_devel_dpcpp-2025.1.0.data/data/Library/lib/mkl_sycl_lapack_dll.lib +0 -0
- mkl_devel_dpcpp-2025.1.0.data/data/Library/lib/mkl_sycl_sparse_dll.lib +0 -0
- mkl_devel_dpcpp-2025.1.0.dist-info/RECORD +0 -99
- {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.2.0.data}/data/Library/lib/mkl_sycl_blas_dll.lib +0 -0
- {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.2.0.data}/data/Library/lib/mkl_sycl_data_fitting_dll.lib +0 -0
- {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.2.0.data}/data/Library/lib/mkl_sycl_stats_dll.lib +0 -0
- {mkl_devel_dpcpp-2025.1.0.data → mkl_devel_dpcpp-2025.2.0.data}/data/Library/lib/mkl_sycl_vm_dll.lib +0 -0
- {mkl_devel_dpcpp-2025.1.0.dist-info → mkl_devel_dpcpp-2025.2.0.dist-info}/LICENSE.txt +0 -0
- {mkl_devel_dpcpp-2025.1.0.dist-info → mkl_devel_dpcpp-2025.2.0.dist-info}/WHEEL +0 -0
- {mkl_devel_dpcpp-2025.1.0.dist-info → mkl_devel_dpcpp-2025.2.0.dist-info}/top_level.txt +0 -0
|
@@ -1,700 +0,0 @@
|
|
|
1
|
-
/*******************************************************************************
|
|
2
|
-
* Copyright (C) 2020 Intel Corporation
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing,
|
|
11
|
-
* software distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions
|
|
14
|
-
* and limitations under the License.
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
18
|
-
*******************************************************************************/
|
|
19
|
-
|
|
20
|
-
#ifndef _MKL_RNG_DEVICE_DISTRIBUTIONS_HPP_
|
|
21
|
-
#define _MKL_RNG_DEVICE_DISTRIBUTIONS_HPP_
|
|
22
|
-
|
|
23
|
-
#include <limits>
|
|
24
|
-
|
|
25
|
-
#include "oneapi/mkl/rng/device/detail/distribution_base.hpp"
|
|
26
|
-
#include "oneapi/mkl/rng/device/functions.hpp"
|
|
27
|
-
|
|
28
|
-
namespace oneapi::mkl::rng::device {
|
|
29
|
-
|
|
30
|
-
// CONTINUOUS AND DISCRETE RANDOM NUMBER DISTRIBUTIONS
|
|
31
|
-
|
|
32
|
-
// Class template oneapi::mkl::rng::device::uniform
|
|
33
|
-
//
|
|
34
|
-
// Represents continuous and discrete uniform random number distribution
|
|
35
|
-
//
|
|
36
|
-
// Supported types:
|
|
37
|
-
// float
|
|
38
|
-
// double
|
|
39
|
-
// std::int32_t
|
|
40
|
-
// std::uint32_t
|
|
41
|
-
//
|
|
42
|
-
// Supported methods:
|
|
43
|
-
// oneapi::mkl::rng::device::uniform_method::standard
|
|
44
|
-
// oneapi::mkl::rng::device::uniform_method::accurate
|
|
45
|
-
//
|
|
46
|
-
// Input arguments:
|
|
47
|
-
// a - left bound. 0.0 by default
|
|
48
|
-
// b - right bound. 1.0 by default (for std::(u)int32_t std::numeric_limits<std::int32_t>::max()
|
|
49
|
-
// is used for accurate method and 2^23 is used for standard method)
|
|
50
|
-
//
|
|
51
|
-
// Note: using (un)signed integer uniform distribution with uniform_method::standard method may
|
|
52
|
-
// cause incorrect statistics of the produced random numbers (due to rounding error) if
|
|
53
|
-
// (abs(b - a) > 2^23) || (abs(b) > 2^23) || (abs(a) > 2^23)
|
|
54
|
-
// Please use uniform_method::accurate method instead
|
|
55
|
-
//
|
|
56
|
-
template <typename Type, typename Method>
|
|
57
|
-
class uniform : detail::distribution_base<uniform<Type, Method>> {
|
|
58
|
-
public:
|
|
59
|
-
static_assert(std::is_same<Method, uniform_method::standard>::value ||
|
|
60
|
-
std::is_same<Method, uniform_method::accurate>::value,
|
|
61
|
-
"oneMKL: rng/uniform: method is incorrect");
|
|
62
|
-
|
|
63
|
-
static_assert(std::is_same<Type, float>::value || std::is_same<Type, double>::value ||
|
|
64
|
-
std::is_same<Type, std::int32_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,
|
|
68
|
-
"oneMKL: rng/uniform: type is not supported");
|
|
69
|
-
|
|
70
|
-
using method_type = Method;
|
|
71
|
-
using result_type = Type;
|
|
72
|
-
using param_type = typename detail::distribution_base<uniform<Type, Method>>::param_type;
|
|
73
|
-
|
|
74
|
-
uniform()
|
|
75
|
-
: detail::distribution_base<uniform<Type, Method>>(
|
|
76
|
-
Type(0.0),
|
|
77
|
-
std::is_integral<Type>::value
|
|
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)) {}
|
|
84
|
-
|
|
85
|
-
explicit uniform(Type a, Type b) : detail::distribution_base<uniform<Type, Method>>(a, b) {}
|
|
86
|
-
explicit uniform(const param_type& pt)
|
|
87
|
-
: detail::distribution_base<uniform<Type, Method>>(pt.a_, pt.b_) {}
|
|
88
|
-
|
|
89
|
-
Type a() const {
|
|
90
|
-
return detail::distribution_base<uniform<Type, Method>>::a();
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
Type b() const {
|
|
94
|
-
return detail::distribution_base<uniform<Type, Method>>::b();
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
param_type param() const {
|
|
98
|
-
return detail::distribution_base<uniform<Type, Method>>::param();
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
void param(const param_type& pt) {
|
|
102
|
-
detail::distribution_base<uniform<Type, Method>>::param(pt);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
private:
|
|
106
|
-
template <typename Distr, typename Engine>
|
|
107
|
-
friend auto generate(Distr& distr, Engine& engine) ->
|
|
108
|
-
typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
|
|
109
|
-
sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
|
|
110
|
-
|
|
111
|
-
template <typename Distr, typename Engine>
|
|
112
|
-
friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
// Class template oneapi::mkl::rng::device::gaussian
|
|
116
|
-
//
|
|
117
|
-
// Represents continuous normal random number distribution
|
|
118
|
-
//
|
|
119
|
-
// Supported types:
|
|
120
|
-
// float
|
|
121
|
-
// double
|
|
122
|
-
//
|
|
123
|
-
// Supported methods:
|
|
124
|
-
// oneapi::mkl::rng::device::gaussian_method::box_muller2
|
|
125
|
-
// oneapi::mkl::rng::device::gaussian_method::icdf
|
|
126
|
-
//
|
|
127
|
-
// Input arguments:
|
|
128
|
-
// mean - mean. 0 by default
|
|
129
|
-
// stddev - standard deviation. 1.0 by default
|
|
130
|
-
//
|
|
131
|
-
template <typename RealType, typename Method>
|
|
132
|
-
class gaussian : detail::distribution_base<gaussian<RealType, Method>> {
|
|
133
|
-
public:
|
|
134
|
-
static_assert(std::is_same<Method, gaussian_method::box_muller2>::value
|
|
135
|
-
#if MKL_RNG_USE_BINARY_CODE
|
|
136
|
-
|| std::is_same<Method, gaussian_method::icdf>::value
|
|
137
|
-
#endif
|
|
138
|
-
,
|
|
139
|
-
"oneMKL: rng/gaussian: method is incorrect");
|
|
140
|
-
#if !MKL_RNG_USE_BINARY_CODE
|
|
141
|
-
static_assert(!std::is_same<Method, gaussian_method::icdf>::value, "icdf method not supported");
|
|
142
|
-
#endif
|
|
143
|
-
static_assert(std::is_same<RealType, float>::value || std::is_same<RealType, double>::value,
|
|
144
|
-
"oneMKL: rng/gaussian: type is not supported");
|
|
145
|
-
|
|
146
|
-
using method_type = Method;
|
|
147
|
-
using result_type = RealType;
|
|
148
|
-
using param_type = typename detail::distribution_base<gaussian<RealType, Method>>::param_type;
|
|
149
|
-
|
|
150
|
-
gaussian()
|
|
151
|
-
: detail::distribution_base<gaussian<RealType, Method>>(RealType(0.0), RealType(1.0)) {}
|
|
152
|
-
|
|
153
|
-
explicit gaussian(RealType mean, RealType stddev)
|
|
154
|
-
: detail::distribution_base<gaussian<RealType, Method>>(mean, stddev) {}
|
|
155
|
-
explicit gaussian(const param_type& pt)
|
|
156
|
-
: detail::distribution_base<gaussian<RealType, Method>>(pt.mean_, pt.stddev_) {}
|
|
157
|
-
|
|
158
|
-
RealType mean() const {
|
|
159
|
-
return detail::distribution_base<gaussian<RealType, Method>>::mean();
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
RealType stddev() const {
|
|
163
|
-
return detail::distribution_base<gaussian<RealType, Method>>::stddev();
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
param_type param() const {
|
|
167
|
-
return detail::distribution_base<gaussian<RealType, Method>>::param();
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
void param(const param_type& pt) {
|
|
171
|
-
detail::distribution_base<gaussian<RealType, Method>>::param(pt);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
template <typename Distr, typename Engine>
|
|
175
|
-
friend auto generate(Distr& distr, Engine& engine) ->
|
|
176
|
-
typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
|
|
177
|
-
sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
|
|
178
|
-
template <typename Distr, typename Engine>
|
|
179
|
-
friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
|
|
180
|
-
};
|
|
181
|
-
|
|
182
|
-
// Class template oneapi::mkl::rng::device::lognormal
|
|
183
|
-
//
|
|
184
|
-
// Represents continuous lognormal random number distribution
|
|
185
|
-
//
|
|
186
|
-
// Supported types:
|
|
187
|
-
// float
|
|
188
|
-
// double
|
|
189
|
-
//
|
|
190
|
-
// Supported methods:
|
|
191
|
-
// oneapi::mkl::rng::device::lognormal_method::box_muller2
|
|
192
|
-
//
|
|
193
|
-
// Input arguments:
|
|
194
|
-
// m - mean of the subject normal distribution. 0.0 by default
|
|
195
|
-
// s - standard deviation of the subject normal distribution. 1.0 by default
|
|
196
|
-
// displ - displacement. 0.0 by default
|
|
197
|
-
// scale - scalefactor. 1.0 by default
|
|
198
|
-
//
|
|
199
|
-
template <typename RealType, typename Method>
|
|
200
|
-
class lognormal : detail::distribution_base<lognormal<RealType, Method>> {
|
|
201
|
-
public:
|
|
202
|
-
static_assert(std::is_same<Method, lognormal_method::box_muller2>::value,
|
|
203
|
-
"oneMKL: rng/lognormal: method is incorrect");
|
|
204
|
-
|
|
205
|
-
static_assert(std::is_same<RealType, float>::value || std::is_same<RealType, double>::value,
|
|
206
|
-
"oneMKL: rng/lognormal: type is not supported");
|
|
207
|
-
|
|
208
|
-
using method_type = Method;
|
|
209
|
-
using result_type = RealType;
|
|
210
|
-
using param_type = typename detail::distribution_base<lognormal<RealType, Method>>::param_type;
|
|
211
|
-
|
|
212
|
-
lognormal()
|
|
213
|
-
: detail::distribution_base<lognormal<RealType, Method>>(
|
|
214
|
-
RealType(0.0), RealType(1.0), RealType(0.0), RealType(1.0)) {}
|
|
215
|
-
|
|
216
|
-
explicit lognormal(RealType m, RealType s, RealType displ = RealType(0.0),
|
|
217
|
-
RealType scale = RealType(1.0))
|
|
218
|
-
: detail::distribution_base<lognormal<RealType, Method>>(m, s, displ, scale) {}
|
|
219
|
-
explicit lognormal(const param_type& pt)
|
|
220
|
-
: detail::distribution_base<lognormal<RealType, Method>>(pt.m_, pt.s_, pt.displ_,
|
|
221
|
-
pt.scale_) {}
|
|
222
|
-
|
|
223
|
-
RealType m() const {
|
|
224
|
-
return detail::distribution_base<lognormal<RealType, Method>>::m();
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
RealType s() const {
|
|
228
|
-
return detail::distribution_base<lognormal<RealType, Method>>::s();
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
RealType displ() const {
|
|
232
|
-
return detail::distribution_base<lognormal<RealType, Method>>::displ();
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
RealType scale() const {
|
|
236
|
-
return detail::distribution_base<lognormal<RealType, Method>>::scale();
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
param_type param() const {
|
|
240
|
-
return detail::distribution_base<lognormal<RealType, Method>>::param();
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
void param(const param_type& pt) {
|
|
244
|
-
detail::distribution_base<lognormal<RealType, Method>>::param(pt);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
template <typename Distr, typename Engine>
|
|
248
|
-
friend auto generate(Distr& distr, Engine& engine) ->
|
|
249
|
-
typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
|
|
250
|
-
sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
|
|
251
|
-
template <typename Distr, typename Engine>
|
|
252
|
-
friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
|
|
253
|
-
};
|
|
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
|
-
|
|
406
|
-
// Class template oneapi::mkl::rng::device::uniform_bits
|
|
407
|
-
//
|
|
408
|
-
// Represents discrete uniform bits random number distribution
|
|
409
|
-
//
|
|
410
|
-
// Supported types:
|
|
411
|
-
// std::uint32_t
|
|
412
|
-
// std::uint64_t
|
|
413
|
-
//
|
|
414
|
-
template <typename UIntType>
|
|
415
|
-
class uniform_bits : detail::distribution_base<uniform_bits<UIntType>> {
|
|
416
|
-
public:
|
|
417
|
-
static_assert(std::is_same<UIntType, std::uint32_t>::value ||
|
|
418
|
-
std::is_same<UIntType, std::uint64_t>::value,
|
|
419
|
-
"oneMKL: rng/uniform_bits: type is not supported");
|
|
420
|
-
using result_type = UIntType;
|
|
421
|
-
|
|
422
|
-
private:
|
|
423
|
-
template <typename Distr, typename Engine>
|
|
424
|
-
friend auto generate(Distr& distr, Engine& engine) ->
|
|
425
|
-
typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
|
|
426
|
-
sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
|
|
427
|
-
|
|
428
|
-
template <typename Distr, typename Engine>
|
|
429
|
-
friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
|
|
430
|
-
};
|
|
431
|
-
|
|
432
|
-
// Class template oneapi::mkl::rng::device::bits
|
|
433
|
-
//
|
|
434
|
-
// Represents bits of underlying random number engine
|
|
435
|
-
//
|
|
436
|
-
// Supported types:
|
|
437
|
-
// std::uint32_t for philox4x32x10, mrg32k3a and mcg31m1
|
|
438
|
-
// std::uint64_t for mcg59 only
|
|
439
|
-
//
|
|
440
|
-
template <typename UIntType>
|
|
441
|
-
class bits : detail::distribution_base<bits<UIntType>> {
|
|
442
|
-
public:
|
|
443
|
-
static_assert(std::is_same<UIntType, std::uint32_t>::value ||
|
|
444
|
-
std::is_same<UIntType, std::uint64_t>::value,
|
|
445
|
-
"oneMKL: rng/bits: type is not supported");
|
|
446
|
-
using result_type = UIntType;
|
|
447
|
-
|
|
448
|
-
private:
|
|
449
|
-
template <typename Distr, typename Engine>
|
|
450
|
-
friend auto generate(Distr& distr, Engine& engine) ->
|
|
451
|
-
typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
|
|
452
|
-
sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
|
|
453
|
-
|
|
454
|
-
template <typename Distr, typename Engine>
|
|
455
|
-
friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
|
|
456
|
-
};
|
|
457
|
-
|
|
458
|
-
// Class template oneapi::mkl::rng::device::exponential
|
|
459
|
-
//
|
|
460
|
-
// Represents continuous exponential random number distribution
|
|
461
|
-
//
|
|
462
|
-
// Supported types:
|
|
463
|
-
// float
|
|
464
|
-
// double
|
|
465
|
-
//
|
|
466
|
-
// Supported methods:
|
|
467
|
-
// oneapi::mkl::rng::device::exponential_method::icdf
|
|
468
|
-
// oneapi::mkl::rng::device::exponential_method::icdf_accurate
|
|
469
|
-
//
|
|
470
|
-
// Input arguments:
|
|
471
|
-
// displ - displacement. 0.0 by default
|
|
472
|
-
// scale - scalefactor. 1.0 by default
|
|
473
|
-
//
|
|
474
|
-
template <typename RealType, typename Method>
|
|
475
|
-
class exponential : detail::distribution_base<exponential<RealType, Method>> {
|
|
476
|
-
public:
|
|
477
|
-
static_assert(std::is_same<Method, exponential_method::icdf>::value ||
|
|
478
|
-
std::is_same<Method, exponential_method::icdf_accurate>::value,
|
|
479
|
-
"oneMKL: rng/exponential: method is incorrect");
|
|
480
|
-
|
|
481
|
-
static_assert(std::is_same<RealType, float>::value || std::is_same<RealType, double>::value,
|
|
482
|
-
"oneMKL: rng/exponential: type is not supported");
|
|
483
|
-
|
|
484
|
-
using method_type = Method;
|
|
485
|
-
using result_type = RealType;
|
|
486
|
-
using param_type =
|
|
487
|
-
typename detail::distribution_base<exponential<RealType, Method>>::param_type;
|
|
488
|
-
|
|
489
|
-
exponential()
|
|
490
|
-
: detail::distribution_base<exponential<RealType, Method>>(RealType(0.0),
|
|
491
|
-
RealType(1.0)) {}
|
|
492
|
-
|
|
493
|
-
explicit exponential(RealType a, RealType beta)
|
|
494
|
-
: detail::distribution_base<exponential<RealType, Method>>(a, beta) {}
|
|
495
|
-
|
|
496
|
-
explicit exponential(const param_type& pt)
|
|
497
|
-
: detail::distribution_base<exponential<RealType, Method>>(pt.a_, pt.beta_) {}
|
|
498
|
-
|
|
499
|
-
RealType a() const {
|
|
500
|
-
return detail::distribution_base<exponential<RealType, Method>>::a();
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
RealType beta() const {
|
|
504
|
-
return detail::distribution_base<exponential<RealType, Method>>::beta();
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
param_type param() const {
|
|
508
|
-
return detail::distribution_base<exponential<RealType, Method>>::param();
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
void param(const param_type& pt) {
|
|
512
|
-
detail::distribution_base<exponential<RealType, Method>>::param(pt);
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
template <typename Distr, typename Engine>
|
|
516
|
-
friend auto generate(Distr& distr, Engine& engine) ->
|
|
517
|
-
typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
|
|
518
|
-
sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
|
|
519
|
-
template <typename Distr, typename Engine>
|
|
520
|
-
friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
|
|
521
|
-
};
|
|
522
|
-
|
|
523
|
-
// Class template oneapi::mkl::rng::device::poisson
|
|
524
|
-
//
|
|
525
|
-
// Represents discrete poisson random number distribution
|
|
526
|
-
//
|
|
527
|
-
// Supported types:
|
|
528
|
-
// std::int32_t
|
|
529
|
-
// std::uint32_t
|
|
530
|
-
//
|
|
531
|
-
// Supported methods:
|
|
532
|
-
// oneapi::mkl::rng::device::poisson_method::devroye
|
|
533
|
-
//
|
|
534
|
-
// Input arguments:
|
|
535
|
-
// lambda - mean value. 1.0 by default
|
|
536
|
-
//
|
|
537
|
-
template <typename IntType, typename Method>
|
|
538
|
-
class poisson : detail::distribution_base<poisson<IntType, Method>> {
|
|
539
|
-
public:
|
|
540
|
-
static_assert(std::is_same<Method, poisson_method::devroye>::value,
|
|
541
|
-
"oneMKL: rng/poisson: method is incorrect");
|
|
542
|
-
|
|
543
|
-
static_assert(std::is_same<IntType, std::int32_t>::value ||
|
|
544
|
-
std::is_same<IntType, std::uint32_t>::value,
|
|
545
|
-
"oneMKL: rng/poisson: type is not supported");
|
|
546
|
-
|
|
547
|
-
using method_type = Method;
|
|
548
|
-
using result_type = IntType;
|
|
549
|
-
using param_type = typename detail::distribution_base<poisson<IntType, Method>>::param_type;
|
|
550
|
-
|
|
551
|
-
poisson() : detail::distribution_base<poisson<IntType, Method>>(0.5) {}
|
|
552
|
-
|
|
553
|
-
explicit poisson(double lambda) : detail::distribution_base<poisson<IntType, Method>>(lambda) {}
|
|
554
|
-
explicit poisson(const param_type& pt)
|
|
555
|
-
: detail::distribution_base<poisson<IntType, Method>>(pt.lambda_) {}
|
|
556
|
-
|
|
557
|
-
double lambda() const {
|
|
558
|
-
return detail::distribution_base<poisson<IntType, Method>>::lambda();
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
param_type param() const {
|
|
562
|
-
return detail::distribution_base<poisson<IntType, Method>>::param();
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
void param(const param_type& pt) {
|
|
566
|
-
detail::distribution_base<poisson<IntType, Method>>::param(pt);
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
template <typename Distr, typename Engine>
|
|
570
|
-
friend auto generate(Distr& distr, Engine& engine) ->
|
|
571
|
-
typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
|
|
572
|
-
sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
|
|
573
|
-
template <typename Distr, typename Engine>
|
|
574
|
-
friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
|
|
575
|
-
};
|
|
576
|
-
|
|
577
|
-
// Class template oneapi::mkl::rng::device::bernoulli
|
|
578
|
-
//
|
|
579
|
-
// Represents discrete Bernoulli random number distribution
|
|
580
|
-
//
|
|
581
|
-
// Supported types:
|
|
582
|
-
// std::uint32_t
|
|
583
|
-
// std::int32_t
|
|
584
|
-
// std::uint16_t
|
|
585
|
-
// std::int16_t
|
|
586
|
-
// std::uint8_t
|
|
587
|
-
// std::int8_t
|
|
588
|
-
//
|
|
589
|
-
// Supported methods:
|
|
590
|
-
// oneapi::mkl::rng::bernoulli_method::icdf;
|
|
591
|
-
//
|
|
592
|
-
// Input arguments:
|
|
593
|
-
// p - success probablity of a trial. 0.5 by default
|
|
594
|
-
//
|
|
595
|
-
template <typename IntType, typename Method>
|
|
596
|
-
class bernoulli : detail::distribution_base<bernoulli<IntType, Method>> {
|
|
597
|
-
public:
|
|
598
|
-
static_assert(std::is_same<Method, bernoulli_method::icdf>::value,
|
|
599
|
-
"oneMKL: rng/bernoulli: method is incorrect");
|
|
600
|
-
|
|
601
|
-
static_assert(std::is_same<IntType, std::int32_t>::value ||
|
|
602
|
-
std::is_same<IntType, std::uint32_t>::value ||
|
|
603
|
-
std::is_same<IntType, std::int16_t>::value ||
|
|
604
|
-
std::is_same<IntType, std::uint16_t>::value ||
|
|
605
|
-
std::is_same<IntType, std::int8_t>::value ||
|
|
606
|
-
std::is_same<IntType, std::uint8_t>::value,
|
|
607
|
-
"oneMKL: rng/bernoulli: type is not supported");
|
|
608
|
-
|
|
609
|
-
using method_type = Method;
|
|
610
|
-
using result_type = IntType;
|
|
611
|
-
using param_type = typename detail::distribution_base<bernoulli<IntType, Method>>::param_type;
|
|
612
|
-
|
|
613
|
-
bernoulli() : detail::distribution_base<bernoulli<IntType, Method>>(0.5f) {}
|
|
614
|
-
|
|
615
|
-
explicit bernoulli(float p) : detail::distribution_base<bernoulli<IntType, Method>>(p) {}
|
|
616
|
-
explicit bernoulli(const param_type& pt)
|
|
617
|
-
: detail::distribution_base<bernoulli<IntType, Method>>(pt.p_) {}
|
|
618
|
-
|
|
619
|
-
float p() const {
|
|
620
|
-
return detail::distribution_base<bernoulli<IntType, Method>>::p();
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
param_type param() const {
|
|
624
|
-
return detail::distribution_base<bernoulli<IntType, Method>>::param();
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
void param(const param_type& pt) {
|
|
628
|
-
detail::distribution_base<bernoulli<IntType, Method>>::param(pt);
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
template <typename Distr, typename Engine>
|
|
632
|
-
friend auto generate(Distr& distr, Engine& engine) ->
|
|
633
|
-
typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
|
|
634
|
-
sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
|
|
635
|
-
template <typename Distr, typename Engine>
|
|
636
|
-
friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
|
|
637
|
-
};
|
|
638
|
-
|
|
639
|
-
// Class template oneapi::mkl::rng::device::geometric
|
|
640
|
-
//
|
|
641
|
-
// Represents discrete geometric random number distribution
|
|
642
|
-
//
|
|
643
|
-
// Supported types:
|
|
644
|
-
// std::uint32_t
|
|
645
|
-
// std::int32_t
|
|
646
|
-
// std::uint64_t
|
|
647
|
-
// std::int64_t
|
|
648
|
-
//
|
|
649
|
-
// Supported methods:
|
|
650
|
-
// oneapi::mkl::rng::geometric_method::icdf;
|
|
651
|
-
//
|
|
652
|
-
// Input arguments:
|
|
653
|
-
// p - success probablity of a trial. 0.5 by default
|
|
654
|
-
//
|
|
655
|
-
template <typename IntType, typename Method>
|
|
656
|
-
class geometric : detail::distribution_base<geometric<IntType, Method>> {
|
|
657
|
-
public:
|
|
658
|
-
static_assert(std::is_same<Method, geometric_method::icdf>::value,
|
|
659
|
-
"oneMKL: rng/geometric: method is incorrect");
|
|
660
|
-
|
|
661
|
-
static_assert(std::is_same<IntType, std::int32_t>::value ||
|
|
662
|
-
std::is_same<IntType, std::uint32_t>::value ||
|
|
663
|
-
std::is_same<IntType, std::int64_t>::value ||
|
|
664
|
-
std::is_same<IntType, std::uint64_t>::value,
|
|
665
|
-
"oneMKL: rng/geometric: type is not supported");
|
|
666
|
-
|
|
667
|
-
using method_type = Method;
|
|
668
|
-
using result_type = IntType;
|
|
669
|
-
using param_type = typename detail::distribution_base<geometric<IntType, Method>>::param_type;
|
|
670
|
-
|
|
671
|
-
geometric() : detail::distribution_base<geometric<IntType, Method>>(0.5f) {}
|
|
672
|
-
|
|
673
|
-
explicit geometric(float p) : detail::distribution_base<geometric<IntType, Method>>(p) {}
|
|
674
|
-
explicit geometric(const param_type& pt)
|
|
675
|
-
: detail::distribution_base<geometric<IntType, Method>>(pt.p_) {}
|
|
676
|
-
|
|
677
|
-
float p() const {
|
|
678
|
-
return detail::distribution_base<geometric<IntType, Method>>::p();
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
param_type param() const {
|
|
682
|
-
return detail::distribution_base<geometric<IntType, Method>>::param();
|
|
683
|
-
}
|
|
684
|
-
|
|
685
|
-
void param(const param_type& pt) {
|
|
686
|
-
detail::distribution_base<geometric<IntType, Method>>::param(pt);
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
template <typename Distr, typename Engine>
|
|
690
|
-
friend auto generate(Distr& distr, Engine& engine) ->
|
|
691
|
-
typename std::conditional<Engine::vec_size == 1, typename Distr::result_type,
|
|
692
|
-
sycl::vec<typename Distr::result_type, Engine::vec_size>>::type;
|
|
693
|
-
|
|
694
|
-
template <typename Distr, typename Engine>
|
|
695
|
-
friend typename Distr::result_type generate_single(Distr& distr, Engine& engine);
|
|
696
|
-
};
|
|
697
|
-
|
|
698
|
-
} // namespace oneapi::mkl::rng::device
|
|
699
|
-
|
|
700
|
-
#endif // _MKL_RNG_DEVICE_DISTRIBUTIONS_HPP_
|