vSMC
vSMC: Scalable Monte Carlo
mkl_brng_defines.hpp
Go to the documentation of this file.
1 //============================================================================
2 // vSMC/rng/internal/mkl_brng_defines.hpp
3 //----------------------------------------------------------------------------
4 // vSMC: Scalable Monte Carlo
5 //----------------------------------------------------------------------------
6 // Copyright (c) 2013-2016, 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 #ifdef VSMC_DEFINE_RNG_MKL_BRNG
33 
34 VSMC_DEFINE_RNG_MKL_BRNG(std::mt19937, mt19937)
35 VSMC_DEFINE_RNG_MKL_BRNG(std::minstd_rand0, minstd_rand0)
36 VSMC_DEFINE_RNG_MKL_BRNG(std::minstd_rand, minstd_rand)
37 VSMC_DEFINE_RNG_MKL_BRNG(std::mt19937_64, mt19937_64)
38 VSMC_DEFINE_RNG_MKL_BRNG(std::ranlux24_base, ranlux24_base)
39 VSMC_DEFINE_RNG_MKL_BRNG(std::ranlux48_base, ranlux48_base)
40 VSMC_DEFINE_RNG_MKL_BRNG(std::ranlux24, ranlux24)
41 VSMC_DEFINE_RNG_MKL_BRNG(std::ranlux48, ranlux48)
42 VSMC_DEFINE_RNG_MKL_BRNG(std::knuth_b, knuth_b)
43 
48 
53 #if VSMC_HAS_AVX2
58 #endif // VSMC_HAS_AVX2
59 #if VSMC_HAS_SSE2
64 #endif // VSMC_HAS_SSE2
65 
66 #if VSMC_HAS_AES_NI
99 #endif // VSMC_HAS_AES_NI
100 
101 #if VSMC_HAS_RDRAND
104 #endif // VSMC_HAS_RDRAND
105 
106 #endif // VSMC_DEFINE_RNG_MKL_BRNG
RDRAND generator.
Definition: rdrand.hpp:100
AES256Engine< std::uint64_t, 2 > AES256_2x64
AES-256 RNG engine with 64-bits integers output and 2 blocks.
Definition: aes.hpp:755
ThreefryEngine< std::uint64_t, 2 > Threefry2x64
Threefry2x64 RNG engine.
Definition: threefry.hpp:385
Definition: monitor.hpp:49
ARSEngine< std::uint64_t, 5, 4 > ARS_4x64
ARS RNG engine with 64-bits integers output, 4 blocks and default rounds.
Definition: ars.hpp:161
ARSEngine< std::uint32_t, 5, 2 > ARS_2x32
ARS RNG engine with 32-bits integers output, 2 blocks and default rounds.
Definition: ars.hpp:136
ThreefryEngineAVX2< std::uint64_t, 4 > Threefry4x64AVX2
Threefry4x64 RNG engine using AVX2.
Definition: threefry.hpp:809
PhiloxEngine< std::uint64_t, 4 > Philox4x64
Philox4x64 RNG engine.
Definition: philox.hpp:317
ARSEngine< std::uint32_t, 5, 8 > ARS_8x32
ARS RNG engine with 32-bits integers output, 8 blocks and default rounds.
Definition: ars.hpp:146
AES256Engine< std::uint32_t, 1 > AES256_1x32
AES-256 RNG engine with 32-bits integers output and 1 block.
Definition: aes.hpp:735
RDRANDEngine< std::uint64_t > RDRAND64
C++11 Engine using 64-bits RDRAND instruction.
Definition: rdrand.hpp:218
AES128Engine< std::uint64_t, 1 > AES128_1x64
AES-128 RNG engine with 64-bits integers output and 1 block.
Definition: aes.hpp:671
STL namespace.
AES128Engine< std::uint32_t, 2 > AES128_2x32
AES-128 RNG engine with 32-bits integers output and 2 blocks.
Definition: aes.hpp:659
Counter based RNG engine.
Definition: counter.hpp:289
AES192Engine< std::uint32_t, 8 > AES192_8x32
AES-192 RNG engine with 32-bits integers output and 8 blocks.
Definition: aes.hpp:707
AES192Engine< std::uint64_t, 1 > AES192_1x64
AES-192 RNG engine with 64-bits integers output and 1 block.
Definition: aes.hpp:711
ARSEngine< std::uint32_t, 5, 1 > ARS_1x32
ARS RNG engine with 32-bits integers output, 1 block and default rounds.
Definition: ars.hpp:131
AES192Engine< std::uint64_t, 8 > AES192_8x64
AES-192 RNG engine with 64-bits integers output and 8 blocks.
Definition: aes.hpp:723
ARSEngine< std::uint64_t, 5, 2 > ARS_2x64
ARS RNG engine with 64-bits integers output, 2 blocks and default rounds.
Definition: ars.hpp:156
ARSEngine< std::uint64_t, 5, 8 > ARS_8x64
ARS RNG engine with 64-bits integers output, 8 blocks and default rounds.
Definition: ars.hpp:166
AES192Engine< std::uint32_t, 4 > AES192_4x32
AES-192 RNG engine with 32-bits integers output and 4 blocks.
Definition: aes.hpp:703
PhiloxEngine< std::uint32_t, 4 > Philox4x32
Philox4x32 RNG engine.
Definition: philox.hpp:309
AES256Engine< std::uint32_t, 4 > AES256_4x32
AES-256 RNG engine with 32-bits integers output and 4 blocks.
Definition: aes.hpp:743
ThreefryEngine< std::uint32_t, 4 > Threefry4x32
Threefry4x32 RNG engine.
Definition: threefry.hpp:381
AES256Engine< std::uint64_t, 4 > AES256_4x64
AES-256 RNG engine with 64-bits integers output and 4 blocks.
Definition: aes.hpp:759
ThreefryEngine< std::uint64_t, 4 > Threefry4x64
Threefry4x64 RNG engine.
Definition: threefry.hpp:389
AES192Engine< std::uint32_t, 1 > AES192_1x32
AES-192 RNG engine with 32-bits integers output and 1 block.
Definition: aes.hpp:695
AES128Engine< std::uint32_t, 4 > AES128_4x32
AES-128 RNG engine with 32-bits integers output and 4 blocks.
Definition: aes.hpp:663
ThreefryEngineAVX2< std::uint64_t, 2 > Threefry2x64AVX2
Threefry2x64 RNG engine using AVX2.
Definition: threefry.hpp:805
#define VSMC_DEFINE_RNG_MKL_BRNG(RNGType, name)
Definition: mkl_brng.hpp:39
ThreefryEngineSSE2< std::uint64_t, 4 > Threefry4x64SSE2
Threefry4x64 RNG engine using SSE2.
Definition: threefry.hpp:595
PhiloxEngine< std::uint64_t, 2 > Philox2x64
Philox2x64 RNG engine.
Definition: philox.hpp:313
AES128Engine< std::uint64_t, 2 > AES128_2x64
AES-128 RNG engine with 64-bits integers output and 2 blocks.
Definition: aes.hpp:675
AES256Engine< std::uint64_t, 8 > AES256_8x64
AES-256 RNG engine with 64-bits integers output and 8 blocks.
Definition: aes.hpp:763
AES128Engine< std::uint64_t, 8 > AES128_8x64
AES-128 RNG engine with 64-bits integers output and 8 blocks.
Definition: aes.hpp:683
AES192Engine< std::uint64_t, 2 > AES192_2x64
AES-192 RNG engine with 64-bits integers output and 2 blocks.
Definition: aes.hpp:715
AES128Engine< std::uint64_t, 4 > AES128_4x64
AES-128 RNG engine with 64-bits integers output and 4 blocks.
Definition: aes.hpp:679
AES128Engine< std::uint32_t, 8 > AES128_8x32
AES-128 RNG engine with 32-bits integers output and 8 blocks.
Definition: aes.hpp:667
ThreefryEngineSSE2< std::uint64_t, 2 > Threefry2x64SSE2
Threefry2x64 RNG engine using SSE2.
Definition: threefry.hpp:591
AES256Engine< std::uint64_t, 1 > AES256_1x64
AES-256 RNG engine with 64-bits integers output and 1 block.
Definition: aes.hpp:751
ThreefryEngine< std::uint32_t, 2 > Threefry2x32
Threefry2x32 RNG engine.
Definition: threefry.hpp:377
AES256Engine< std::uint32_t, 2 > AES256_2x32
AES-256 RNG engine with 32-bits integers output and 2 blocks.
Definition: aes.hpp:739
AES256Engine< std::uint32_t, 8 > AES256_8x32
AES-256 RNG engine with 32-bits integers output and 8 blocks.
Definition: aes.hpp:747
AES192Engine< std::uint32_t, 2 > AES192_2x32
AES-192 RNG engine with 32-bits integers output and 2 blocks.
Definition: aes.hpp:699
AES192Engine< std::uint64_t, 4 > AES192_4x64
AES-192 RNG engine with 64-bits integers output and 4 blocks.
Definition: aes.hpp:719
ThreefryEngineSSE2< std::uint32_t, 4 > Threefry4x32SSE2
Threefry4x32 RNG engine using SSE2.
Definition: threefry.hpp:587
ARSEngine< std::uint32_t, 5, 4 > ARS_4x32
ARS RNG engine with 32-bits integers output, 4 blocks and default rounds.
Definition: ars.hpp:141
ThreefryEngineAVX2< std::uint32_t, 4 > Threefry4x32AVX2
Threefry4x32 RNG engine using AVX2.
Definition: threefry.hpp:801
PhiloxEngine< std::uint32_t, 2 > Philox2x32
Philox2x32 RNG engine.
Definition: philox.hpp:305
ARSEngine< std::uint64_t, 5, 1 > ARS_1x64
ARS RNG engine with 64-bits integers output, 1 block and default rounds.
Definition: ars.hpp:151