vSMC
vSMC: Scalable Monte Carlo
Main Page
Modules
Namespaces
Classes
Files
File List
File Members
include
vsmc
rng
engine.hpp
Go to the documentation of this file.
1
//============================================================================
2
// vSMC/include/vsmc/rng/engine.hpp
3
//----------------------------------------------------------------------------
4
// vSMC: Scalable Monte Carlo
5
//----------------------------------------------------------------------------
6
// Copyright (c) 2013-2015, Yan Zhou
7
// All rights reserved.
8
//
9
// Redistribution and use in source and binary forms, with or without
10
// modification, are permitted provided that the following conditions are met:
11
//
12
// Redistributions of source code must retain the above copyright notice,
13
// this list of conditions and the following disclaimer.
14
//
15
// Redistributions in binary form must reproduce the above copyright notice,
16
// this list of conditions and the following disclaimer in the documentation
17
// and/or other materials provided with the distribution.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS
20
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
// POSSIBILITY OF SUCH DAMAGE.
30
//============================================================================
31
32
#ifndef VSMC_RNG_ENGINE_HPP
33
#define VSMC_RNG_ENGINE_HPP
34
35
#include <
vsmc/internal/config.h
>
36
39
#ifndef VSMC_RNG_TYPE
40
#if VSMC_HAS_AES_NI
41
#define VSMC_RNG_TYPE ::vsmc::ARS
42
#elif VSMC_HAS_AVX2
43
#define VSMC_RNG_TYPE ::vsmc::ThreefryAVX2
44
#elif VSMC_HAS_SSE2
45
#define VSMC_RNG_TYPE ::vsmc::ThreefrySSE2
46
#else
47
#define VSMC_RNG_TYPE ::vsmc::Threefry
48
#endif
49
#endif
50
51
#include <
vsmc/rng/philox.hpp
>
52
#include <
vsmc/rng/threefry.hpp
>
53
54
#if VSMC_HAS_AES_NI
55
#include <
vsmc/rng/aes.hpp
>
56
#include <
vsmc/rng/aes_ni.hpp
>
57
#include <
vsmc/rng/ars.hpp
>
58
#endif
59
60
#if VSMC_HAS_RDRAND
61
#include <
vsmc/rng/rdrand.hpp
>
62
#endif
63
64
#if VSMC_HAS_MKL
65
#include <
vsmc/rng/mkl.hpp
>
66
#endif
67
68
namespace
vsmc
69
{
70
71
using
RNG
=
VSMC_RNG_TYPE
;
72
73
}
// namespace vsmc
74
75
#endif // VSMC_RNG_ENGINE_HPP
vsmc
Definition:
monitor.hpp:49
VSMC_RNG_TYPE
#define VSMC_RNG_TYPE
Default RNG type.
Definition:
engine.hpp:47
mkl.hpp
config.h
vsmc::CounterEngine
Counter based RNG engine.
Definition:
counter.hpp:290
ars.hpp
rdrand.hpp
aes_ni.hpp
philox.hpp
aes.hpp
threefry.hpp
Generated by
1.8.11