alpaka
Abstraction Library for Parallel Kernel Acceleration
alpaka::rand::PhiloxStateless4x32x10Vector Class Reference

#include <RandPhiloxStateless.hpp>

+ Inheritance diagram for alpaka::rand::PhiloxStateless4x32x10Vector:

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: $ \sqrt{3}-1 $. 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)
 

Detailed Description

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 $4 \times 32 = 128$ 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.

Member Typedef Documentation

◆ EngineParams


The documentation for this class was generated from the following file: