mt2203#
The mt2203 engine is the set of 6024 Mersenne Twister pseudorandom number generators MT2203 [Matsumoto98], [Matsumoto00].
Description
The set of 6024 basic pseudorandom number generators MT2203 is a natural addition to the MT19937 generator. MT2203 generators are intended for use in large scale Monte Carlo simulations performed on multi-processor computer systems.
Generation algorithm
For \(j = 1,..., 6024\):
\(x_{n, j} =x_{n - (69 - 34), j} \oplus ( (x_{n - 69, j} \& 0xFFFFFFE0) | (x_{n + 69 + 1, j} \& 0x1F) ) A_{j}\)
\(y_{n, j} = x_{n, j}\)
\(y_{n, j} = y_{n, j} \oplus (y_{n, j} >> 12)\)
\(y_{n, j} = y_{n, j} \oplus ( (y_{n, j} << 7) \& b_j)\)
\(y_{n, j} = y_{n, j} \oplus ( (y_{n, j} << 15) \& c_j)\)
\(y_{n, j} = y_{n, j} \oplus (y_{n, j} >> 18)\)
Matrix \(A_j(32x32)\) has the following format:
class mt2203#
Syntax
namespace oneapi::math::rng {
class mt2203 {
public:
static constexpr std::uint32_t default_seed = 1;
mt2203(sycl::queue queue, std::uint32_t seed = default_seed);
mt2203(sycl::queue queue, std::uint32_t seed, std::uint32_t engine_idx);
mt2203(sycl::queue queue, std::initializer_list<std::uint32_t> seed);
mt2203(sycl::queue queue, std::initializer_list<std::uint32_t> seed, std::uint32_t engine_idx);
mt2203(const mt2203& other);
mt2203(mt2203&& other);
mt2203& operator=(const mt2203& other);
mt2203& operator=(mt2203&& other);
~mt2203();
};
}
Class Members
Routine |
Description |
---|---|
mt2203(sycl::queue queue, std::uint32_t seed = default_seed) |
Constructor for common seed initialization of the engine (for this case multiple generators of the set would be used) |
mt2203(sycl::queue queue, std::uint32_t seed, std::uint32_t engine_idx) |
Constructor for common seed initialization of the engine (for this case single generator of the set would be used) |
mt2203(sycl::queue queue, std::initializer_list<std::uint32_t> seed) |
Constructor for extended seed initialization of the engine (for this case multiple generators of the set would be used) |
mt2203(sycl::queue queue, std::initializer_list<std::uint32_t> seed, std::uint32_t engine_idx) |
Constructor for extended seed initialization of the engine (for this case single generator of the set would be used) |
Copy constructor |
|
Move constructor |
|
Copy assignment operator |
|
Move assignment operator |
Constructors
mt2203::mt2203(sycl::queue queue, std::uint32_t seed = default_seed)
Input Parameters
- queue
Valid
sycl::queue
object, calls of the oneapi::math::rng::generate() routine submits kernels in this queue to obtain random numbers from a given engine.- seed
The initial conditions of the generator state. The initialization algorithm described in [MT2203].
mt2203::mt2203(sycl::queue queue, std::uint32_t seed, std::uint32_t engine_idx)
Input Parameters
- queue
Valid
sycl::queue
object, calls of the oneapi::math::rng::generate() routine submits kernels in this queue to obtain random numbers from a given engine.- seed
The initial conditions of the generator state. The initialization algorithm described in [MT2203].
- engine_idx
The index of the set 1, …, 6024.
Throws
- oneapi::math::invalid_argument
Exception is thrown when \(idx > 6024\)
mt2203::mt2203(sycl::queue queue, std::initializer_list<std::uint32_t> seed)
Input Parameters
- queue
Valid
sycl::queue
object, calls of the oneapi::math::rng::generate() routine submits kernels in this queue to obtain random numbers from a given engine.- seed
The initial conditions of the generator state. The initialization algorithm described in [MT2203].
mt2203::mt2203(sycl::queue queue, std::initializer_list<std::uint32_t> seed, std::uint32_t engine_idx)
Input Parameters
- queue
Valid
sycl::queue
object, calls of the oneapi::math::rng::generate() routine submits kernels in this queue to obtain random numbers from a given engine.- seed
The initial conditions of the generator state. The initialization algorithm described in [MT2203].
- engine_idx
The index of the set 1, …, 6024.
mt2203::mt2203(const mt2203& other)
Input Parameters
- other
Valid
mt2203
object. Thequeue
and state of the other engine is copied and applied to the current engine.
mt2203::mt2203(mt2203&& other)
Input Parameters
- other
Valid
mt2203
object. Thequeue
and state of the other engine is moved to the current engine.
mt2203::mt2203& operator=(const mt2203& other)
Input Parameters
- other
Valid
mt2203
object. Thequeue
and state of the other engine is copied and applied to the current engine.
mt2203::mt2203& operator=(mt2203&& other)
Input Parameters
- other
Valid
mt2203
r-value object. Thequeue
and state of the other engine is moved to the current engine.
Parent topic: Host Engines (Basic Random Number Generators)