alpaka
Abstraction Library for Parallel Kernel Acceleration
RandPhiloxStateless.hpp
Go to the documentation of this file.
1 /* Copyright 2022 Jeffrey Kelling
2  * SPDX-License-Identifier: MPL-2.0
3  */
4 
5 #pragma once
6 
8 #include "alpaka/rand/Traits.hpp"
9 
10 namespace alpaka::rand
11 {
12  /** Most common Philox engine variant, stateless, outputs a 4-vector of floats
13  *
14  * This is a variant of the Philox engine generator which outputs a vector containing 4 floats. The counter
15  * size is \f$4 \times 32 = 128\f$ bits. Since the engine returns the whole generated vector, it is up to the
16  * user to extract individual floats as they need. The benefit is smaller state size since the state does not
17  * contain the intermediate results. The total size of the state is 192 bits = 24 bytes.
18  *
19  * Ref.: J. K. Salmon, M. A. Moraes, R. O. Dror and D. E. Shaw, "Parallel random numbers: As easy as 1, 2, 3,"
20  * SC '11: Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and
21  * Analysis, 2011, pp. 1-12, doi: 10.1145/2063384.2063405.
22  */
24  : public alpaka::rand::engine::PhiloxStateless<engine::PhiloxParams<4, 32, 10>>
25  , public concepts::Implements<ConceptRand, PhiloxStateless4x32x10Vector>
26  {
27  public:
29  };
30 } // namespace alpaka::rand
Tag used in class inheritance hierarchies that describes that a specific concept (TConcept) is implem...
Definition: Concepts.hpp:15