alpaka
Abstraction Library for Parallel Kernel Acceleration
|
#include <RandPhiloxStateless.hpp>
Public Types | |
using | EngineParams = engine::PhiloxParams< 4, 32, 10 > |
Public Types inherited from alpaka::rand::engine::PhiloxStateless< engine::PhiloxParams< 4, 32, 10 > > | |
using | Constants = PhiloxConstants< engine::PhiloxParams< 4, 32, 10 > > |
using | Counter = alpaka::Vec< alpaka::DimInt< TParams::counterSize >, std::uint32_t > |
using | Key = alpaka::Vec< alpaka::DimInt< TParams::counterSize/2 >, std::uint32_t > |
Additional Inherited Members | |
Static Public Member Functions inherited from alpaka::rand::engine::PhiloxStateless< engine::PhiloxParams< 4, 32, 10 > > | |
static ALPAKA_FN_HOST_ACC auto | generate (Counter const &counter, Key const &key) -> Counter |
Static Public Member Functions inherited from alpaka::rand::engine::PhiloxConstants< TParams > | |
static constexpr std::uint32_t | MULTIPLITER_4x32_0 () |
First Philox S-box multiplier. More... | |
static constexpr std::uint32_t | MULTIPLITER_4x32_1 () |
Second Philox S-box multiplier. More... | |
static constexpr std::uint32_t | WEYL_32_0 () |
1st Weyl sequence parameter, 32 bits More... | |
static constexpr std::uint32_t | WEYL_32_1 () |
2nd Weyl sequence parameter, 32 bits More... | |
static constexpr std::uint64_t | WEYL_64_0 () |
First Weyl sequence parameter: the golden ratio. More... | |
static constexpr std::uint64_t | WEYL_64_1 () |
Second Weyl sequence parameter: . More... | |
Static Protected Member Functions inherited from alpaka::rand::engine::PhiloxStateless< engine::PhiloxParams< 4, 32, 10 > > | |
static ALPAKA_FN_HOST_ACC auto | bumpKey (Key const &key) |
static ALPAKA_FN_HOST_ACC auto | nRounds (Counter const &counter_in, Key const &key_in) -> Counter |
static ALPAKA_FN_HOST_ACC auto | singleRound (Counter const &counter, Key const &key) |
Most common Philox engine variant, stateless, outputs a 4-vector of floats
This is a variant of the Philox engine generator which outputs a vector containing 4 floats. The counter size is bits. Since the engine returns the whole generated vector, it is up to the user to extract individual floats as they need. The benefit is smaller state size since the state does not contain the intermediate results. The total size of the state is 192 bits = 24 bytes.
Ref.: J. K. Salmon, M. A. Moraes, R. O. Dror and D. E. Shaw, "Parallel random numbers: As easy as 1, 2, 3," SC '11: Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis, 2011, pp. 1-12, doi: 10.1145/2063384.2063405.
Definition at line 23 of file RandPhiloxStateless.hpp.
using alpaka::rand::PhiloxStateless4x32x10Vector::EngineParams = engine::PhiloxParams<4, 32, 10> |
Definition at line 28 of file RandPhiloxStateless.hpp.