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-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 #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
54 VSMC_DEFINE_RNG_MKL_BRNG(::vsmc::Threefry2x32AVX2, threefry2x32avx2)
55 VSMC_DEFINE_RNG_MKL_BRNG(::vsmc::Threefry4x32AVX2, threefry4x32avx2)
56 VSMC_DEFINE_RNG_MKL_BRNG(::vsmc::Threefry2x64AVX2, threefry2x64avx2)
57 VSMC_DEFINE_RNG_MKL_BRNG(::vsmc::Threefry4x64AVX2, threefry4x64avx2)
58 #endif // VSMC_HAS_AVX2
59 #if VSMC_HAS_SSE2
60 VSMC_DEFINE_RNG_MKL_BRNG(::vsmc::Threefry2x32SSE2, threefry2x32sse2)
61 VSMC_DEFINE_RNG_MKL_BRNG(::vsmc::Threefry4x32SSE2, threefry4x32sse2)
62 VSMC_DEFINE_RNG_MKL_BRNG(::vsmc::Threefry2x64SSE2, threefry2x64sse2)
63 VSMC_DEFINE_RNG_MKL_BRNG(::vsmc::Threefry4x64SSE2, threefry4x64sse2)
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:113
AES256Engine< std::uint64_t, 2 > AES256_2x64
AES-256 RNG engine with 64-bits integers output and 2 blocks.
Definition: aes.hpp:752
ThreefryEngine< std::uint64_t, 2 > Threefry2x64
Threefry2x64 RNG engine.
Definition: threefry.hpp:394
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
PhiloxEngine< std::uint64_t, 4 > Philox4x64
Philox4x64 RNG engine.
Definition: philox.hpp:354
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:732
RDRANDEngine< std::uint64_t > RDRAND64
C++11 Engine using 64-bits RDRAND instruction.
Definition: rdrand.hpp:226
AES128Engine< std::uint64_t, 1 > AES128_1x64
AES-128 RNG engine with 64-bits integers output and 1 block.
Definition: aes.hpp:668
STL namespace.
AES128Engine< std::uint32_t, 2 > AES128_2x32
AES-128 RNG engine with 32-bits integers output and 2 blocks.
Definition: aes.hpp:656
Counter based RNG engine.
Definition: counter.hpp:290
AES192Engine< std::uint32_t, 8 > AES192_8x32
AES-192 RNG engine with 32-bits integers output and 8 blocks.
Definition: aes.hpp:704
AES192Engine< std::uint64_t, 1 > AES192_1x64
AES-192 RNG engine with 64-bits integers output and 1 block.
Definition: aes.hpp:708
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:720
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:700
PhiloxEngine< std::uint32_t, 4 > Philox4x32
Philox4x32 RNG engine.
Definition: philox.hpp:346
AES256Engine< std::uint32_t, 4 > AES256_4x32
AES-256 RNG engine with 32-bits integers output and 4 blocks.
Definition: aes.hpp:740
ThreefryEngine< std::uint32_t, 4 > Threefry4x32
Threefry4x32 RNG engine.
Definition: threefry.hpp:390
AES256Engine< std::uint64_t, 4 > AES256_4x64
AES-256 RNG engine with 64-bits integers output and 4 blocks.
Definition: aes.hpp:756
ThreefryEngine< std::uint64_t, 4 > Threefry4x64
Threefry4x64 RNG engine.
Definition: threefry.hpp:398
AES192Engine< std::uint32_t, 1 > AES192_1x32
AES-192 RNG engine with 32-bits integers output and 1 block.
Definition: aes.hpp:692
AES128Engine< std::uint32_t, 4 > AES128_4x32
AES-128 RNG engine with 32-bits integers output and 4 blocks.
Definition: aes.hpp:660
#define VSMC_DEFINE_RNG_MKL_BRNG(RNGType, name)
Definition: mkl_brng.hpp:39
PhiloxEngine< std::uint64_t, 2 > Philox2x64
Philox2x64 RNG engine.
Definition: philox.hpp:350
AES128Engine< std::uint64_t, 2 > AES128_2x64
AES-128 RNG engine with 64-bits integers output and 2 blocks.
Definition: aes.hpp:672
AES256Engine< std::uint64_t, 8 > AES256_8x64
AES-256 RNG engine with 64-bits integers output and 8 blocks.
Definition: aes.hpp:760
AES128Engine< std::uint64_t, 8 > AES128_8x64
AES-128 RNG engine with 64-bits integers output and 8 blocks.
Definition: aes.hpp:680
AES192Engine< std::uint64_t, 2 > AES192_2x64
AES-192 RNG engine with 64-bits integers output and 2 blocks.
Definition: aes.hpp:712
AES128Engine< std::uint64_t, 4 > AES128_4x64
AES-128 RNG engine with 64-bits integers output and 4 blocks.
Definition: aes.hpp:676
AES128Engine< std::uint32_t, 8 > AES128_8x32
AES-128 RNG engine with 32-bits integers output and 8 blocks.
Definition: aes.hpp:664
AES256Engine< std::uint64_t, 1 > AES256_1x64
AES-256 RNG engine with 64-bits integers output and 1 block.
Definition: aes.hpp:748
ThreefryEngine< std::uint32_t, 2 > Threefry2x32
Threefry2x32 RNG engine.
Definition: threefry.hpp:386
AES256Engine< std::uint32_t, 2 > AES256_2x32
AES-256 RNG engine with 32-bits integers output and 2 blocks.
Definition: aes.hpp:736
AES256Engine< std::uint32_t, 8 > AES256_8x32
AES-256 RNG engine with 32-bits integers output and 8 blocks.
Definition: aes.hpp:744
AES192Engine< std::uint32_t, 2 > AES192_2x32
AES-192 RNG engine with 32-bits integers output and 2 blocks.
Definition: aes.hpp:696
AES192Engine< std::uint64_t, 4 > AES192_4x64
AES-192 RNG engine with 64-bits integers output and 4 blocks.
Definition: aes.hpp:716
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
PhiloxEngine< std::uint32_t, 2 > Philox2x32
Philox2x32 RNG engine.
Definition: philox.hpp:342
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