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
7
#include "
alpaka/rand/Philox/PhiloxStateless.hpp
"
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
*/
23
class
PhiloxStateless4x32x10Vector
24
:
public
alpaka::rand::engine::PhiloxStateless
<engine::PhiloxParams<4, 32, 10>>
25
,
public
interface::Implements
<ConceptRand, PhiloxStateless4x32x10Vector>
26
{
27
public
:
28
using
EngineParams
=
engine::PhiloxParams<4, 32, 10>
;
29
};
30
}
// namespace alpaka::rand
PhiloxStateless.hpp
alpaka::rand::PhiloxStateless4x32x10Vector
Definition:
RandPhiloxStateless.hpp:26
alpaka::rand::engine::PhiloxStateless
Definition:
PhiloxStateless.hpp:39
alpaka::rand
Definition:
MultiplyAndSplit64to32.hpp:12
Traits.hpp
alpaka::interface::Implements
Tag used in class inheritance hierarchies that describes that a specific interface (TInterface) is im...
Definition:
Interface.hpp:15
alpaka::rand::engine::PhiloxParams
Definition:
PhiloxStateless.hpp:24
include
alpaka
rand
RandPhiloxStateless.hpp
Generated on Thu Dec 12 2024 11:51:45 for alpaka by
1.9.1