5.2. Device API

命名空间

namespace curand_detail

函数

__device__ ​ unsigned int curand ( curandStateMtgp32_t* state )
从 mtgp32 生成器返回 32 位伪随机数。
__device__ ​ unsigned long long curand ( curandStateScrambledSobol64_t* state )
从 scrambled Sobol64 生成器返回 64 位准随机数。
__device__ ​ unsigned long long curand ( curandStateSobol64_t* state )
从 Sobol64 生成器返回 64 位准随机数。
__device__ ​ unsigned int curand ( curandStateScrambledSobol32_t* state )
从 scrambled Sobol32 生成器返回 32 位准随机数。
__device__ ​ unsigned int curand ( curandStateSobol32_t* state )
从 Sobol32 生成器返回 32 位准随机数。
__device__ ​ unsigned int curand ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回 32 位伪随机数。
__device__ ​ unsigned int curand ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回 32 位伪随机数。
__device__ ​ unsigned int curand ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回 32 位伪随机数。
__device__ ​ uint4 curand4 ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回包含 4 个 32 位伪随机数的元组。
__host__ ​__forceinline__ curandStatus_t curandMakeMTGP32Constants ( const mtgp32_params_fast_t params[], mtgp32_kernel_params_t* p )
为 mtgp32 生成器设置常量参数。
__host__ ​__forceinline__ curandStatus_t CURANDAPI curandMakeMTGP32KernelState ( curandStateMtgp32_t* s, mtgp32_params_fast_t params[], mtgp32_kernel_params_t* k, int  n, unsigned long long seed )
为 mtgp32 生成器设置初始状态。
__device__ ​ void curand_init ( curandDirectionVectors64_t direction_vectors, unsigned long long scramble_c, unsigned long long offset, curandStateScrambledSobol64_t* state )
初始化 Scrambled Sobol64 状态。
__device__ ​ void curand_init ( curandDirectionVectors64_t direction_vectors, unsigned long long offset, curandStateSobol64_t* state )
初始化 Sobol64 状态。
__device__ ​ void curand_init ( curandDirectionVectors32_t direction_vectors, unsigned int  scramble_c, unsigned int  offset, curandStateScrambledSobol32_t* state )
初始化 Scrambled Sobol32 状态。
__device__ ​ void curand_init ( curandDirectionVectors32_t direction_vectors, unsigned int  offset, curandStateSobol32_t* state )
初始化 Sobol32 状态。
__device__ ​ void curand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, curandStateMRG32k3a_t* state )
初始化 MRG32k3a 状态。
__device__ ​ void curand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, curandStatePhilox4_32_10_t* state )
初始化 Philox4_32_10 状态。
__device__ ​ void curand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, curandStateXORWOW_t* state )
初始化 XORWOW 状态。
__device__ ​ float curand_log_normal ( curandStateScrambledSobol64_t* state, float  mean, float  stddev )
从 scrambled Sobol64 生成器返回一个对数正态分布的浮点数。
__device__ ​ float curand_log_normal ( curandStateSobol64_t* state, float  mean, float  stddev )
从 Sobol64 生成器返回一个对数正态分布的浮点数。
__device__ ​ float curand_log_normal ( curandStateScrambledSobol32_t* state, float  mean, float  stddev )
从 scrambled Sobol32 生成器返回一个对数正态分布的浮点数。
__device__ ​ float curand_log_normal ( curandStateSobol32_t* state, float  mean, float  stddev )
从 Sobol32 生成器返回一个对数正态分布的浮点数。
__device__ ​ float curand_log_normal ( curandStateMtgp32_t* state, float  mean, float  stddev )
从 MTGP32 生成器返回一个对数正态分布的浮点数。
__device__ ​ float curand_log_normal ( curandStateMRG32k3a_t* state, float  mean, float  stddev )
从 MRG32k3a 生成器返回一个对数正态分布的浮点数。
__device__ ​ float curand_log_normal ( curandStatePhilox4_32_10_t* state, float  mean, float  stddev )
从 Philox4_32_10 生成器返回一个对数正态分布的浮点数。
__device__ ​ float curand_log_normal ( curandStateXORWOW_t* state, float  mean, float  stddev )
从 XORWOW 生成器返回一个对数正态分布的浮点数。
__device__ ​ float2 curand_log_normal2 ( curandStateMRG32k3a_t* state, float  mean, float  stddev )
从 MRG32k3a 生成器返回两个正态分布的浮点数。
__device__ ​ float2 curand_log_normal2 ( curandStatePhilox4_32_10_t* state, float  mean, float  stddev )
从 Philox4_32_10 生成器返回两个正态分布的浮点数。
__device__ ​ float2 curand_log_normal2 ( curandStateXORWOW_t* state, float  mean, float  stddev )
从 XORWOW 生成器返回两个正态分布的浮点数。
__device__ ​ double2 curand_log_normal2_double ( curandStateMRG32k3a_t* state, double  mean, double  stddev )
从 MRG32k3a 生成器返回两个对数正态分布的双精度浮点数。
__device__ ​ double2 curand_log_normal2_double ( curandStatePhilox4_32_10_t* state, double  mean, double  stddev )
从 Philox4_32_10 生成器返回两个对数正态分布的双精度浮点数。
__device__ ​ double2 curand_log_normal2_double ( curandStateXORWOW_t* state, double  mean, double  stddev )
从 XORWOW 生成器返回两个对数正态分布的双精度浮点数。
__device__ ​ float4 curand_log_normal4 ( curandStatePhilox4_32_10_t* state, float  mean, float  stddev )
从 Philox4_32_10 生成器返回四个正态分布的浮点数。
__device__ ​ double curand_log_normal_double ( curandStateScrambledSobol64_t* state, double  mean, double  stddev )
从 scrambled Sobol64 生成器返回一个对数正态分布的双精度浮点数。
__device__ ​ double curand_log_normal_double ( curandStateSobol64_t* state, double  mean, double  stddev )
从 Sobol64 生成器返回一个对数正态分布的双精度浮点数。
__device__ ​ double curand_log_normal_double ( curandStateScrambledSobol32_t* state, double  mean, double  stddev )
从 scrambled Sobol32 生成器返回一个对数正态分布的双精度浮点数。
__device__ ​ double curand_log_normal_double ( curandStateSobol32_t* state, double  mean, double  stddev )
从 Sobol32 生成器返回一个对数正态分布的双精度浮点数。
__device__ ​ double curand_log_normal_double ( curandStateMtgp32_t* state, double  mean, double  stddev )
从 MTGP32 生成器返回一个对数正态分布的双精度浮点数。
__device__ ​ double curand_log_normal_double ( curandStateMRG32k3a_t* state, double  mean, double  stddev )
从 MRG32k3a 生成器返回一个对数正态分布的双精度浮点数。
__device__ ​ double curand_log_normal_double ( curandStatePhilox4_32_10_t* state, double  mean, double  stddev )
从 Philox4_32_10 生成器返回一个对数正态分布的双精度浮点数。
__device__ ​ double curand_log_normal_double ( curandStateXORWOW_t* state, double  mean, double  stddev )
从 XORWOW 生成器返回一个对数正态分布的双精度浮点数。
__device__ ​ float curand_mtgp32_single ( curandStateMtgp32_t* state )
从 mtgp32 生成器返回一个均匀分布的浮点数。
__device__ ​ float curand_mtgp32_single_specific ( curandStateMtgp32_t* state, unsigned char  index, unsigned char  n )
从 mtgp32 生成器中的特定位置返回一个均匀分布的浮点数。
__device__ ​ unsigned int curand_mtgp32_specific ( curandStateMtgp32_t* state, unsigned char  index, unsigned char  n )
从 mtgp32 生成器中的特定位置返回 32 位伪随机数。
__device__ ​ float curand_normal ( curandStateScrambledSobol64_t* state )
从 scrambled Sobol64 生成器返回一个正态分布的浮点数。
__device__ ​ float curand_normal ( curandStateSobol64_t* state )
从 Sobol64 生成器返回一个正态分布的浮点数。
__device__ ​ float curand_normal ( curandStateScrambledSobol32_t* state )
从 scrambled Sobol32 生成器返回一个正态分布的浮点数。
__device__ ​ float curand_normal ( curandStateSobol32_t* state )
从 Sobol32 生成器返回一个正态分布的浮点数。
__device__ ​ float curand_normal ( curandStateMtgp32_t* state )
从 MTGP32 生成器返回一个正态分布的浮点数。
__device__ ​ float curand_normal ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回一个正态分布的浮点数。
__device__ ​ float curand_normal ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个正态分布的浮点数。
__device__ ​ float curand_normal ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回一个正态分布的浮点数。
__device__ ​ float2 curand_normal2 ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回两个正态分布的浮点数。
__device__ ​ float2 curand_normal2 ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回两个正态分布的浮点数。
__device__ ​ float2 curand_normal2 ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回两个正态分布的浮点数。
__device__ ​ double2 curand_normal2_double ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回两个正态分布的双精度浮点数。
__device__ ​ double2 curand_normal2_double ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回两个正态分布的双精度浮点数。
__device__ ​ double2 curand_normal2_double ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回两个正态分布的双精度浮点数。
__device__ ​ float4 curand_normal4 ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回四个正态分布的浮点数。
__device__ ​ double curand_normal_double ( curandStateScrambledSobol64_t* state )
从 scrambled Sobol64 生成器返回一个正态分布的双精度浮点数。
__device__ ​ double curand_normal_double ( curandStateSobol64_t* state )
从 Sobol64 生成器返回一个正态分布的双精度浮点数。
__device__ ​ double curand_normal_double ( curandStateScrambledSobol32_t* state )
从 scrambled Sobol32 生成器返回一个正态分布的双精度浮点数。
__device__ ​ double curand_normal_double ( curandStateSobol32_t* state )
从 Sobol32 生成器返回一个正态分布的双精度浮点数。
__device__ ​ double curand_normal_double ( curandStateMtgp32_t* state )
从 MTGP32 生成器返回一个正态分布的双精度浮点数。
__device__ ​ double curand_normal_double ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回一个正态分布的双精度浮点数。
__device__ ​ double curand_normal_double ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个正态分布的双精度浮点数。
__device__ ​ double curand_normal_double ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回一个正态分布的双精度浮点数。
__device__ ​ unsigned int curand_poisson ( curandStateScrambledSobol64_t* state, double  lambda )
从 scrambled Sobol64 生成器返回一个泊松分布的无符号整数。
__device__ ​ unsigned int curand_poisson ( curandStateSobol64_t* state, double  lambda )
从 Sobol64 生成器返回一个泊松分布的无符号整数。
__device__ ​ unsigned int curand_poisson ( curandStateScrambledSobol32_t* state, double  lambda )
从 scrambled Sobol32 生成器返回一个泊松分布的无符号整数。
__device__ ​ unsigned int curand_poisson ( curandStateSobol32_t* state, double  lambda )
从 Sobol32 生成器返回一个泊松分布的无符号整数。
__device__ ​ unsigned int curand_poisson ( curandStateMtgp32_t* state, double  lambda )
从 MTGP32 生成器返回一个泊松分布的无符号整数。
__device__ ​ unsigned int curand_poisson ( curandStateMRG32k3a_t* state, double  lambda )
从 MRG32k3A 生成器返回一个泊松分布的无符号整数。
__device__ ​ unsigned int curand_poisson ( curandStatePhilox4_32_10_t* state, double  lambda )
从 Philox4_32_10 生成器返回一个泊松分布的无符号整数。
__device__ ​ unsigned int curand_poisson ( curandStateXORWOW_t* state, double  lambda )
从 XORWOW 生成器返回一个泊松分布的无符号整数。
__device__ ​ uint4 curand_poisson4 ( curandStatePhilox4_32_10_t* state, double  lambda )
从 Philox4_32_10 生成器返回四个泊松分布的无符号整数。
__device__ ​ float curand_uniform ( curandStateScrambledSobol64_t* state )
从 scrambled Sobol64 生成器返回一个均匀分布的浮点数。
__device__ ​ float curand_uniform ( curandStateSobol64_t* state )
从 Sobol64 生成器返回一个均匀分布的 float。
__device__ ​ float curand_uniform ( curandStateScrambledSobol32_t* state )
从 scrambled Sobol32 生成器返回一个均匀分布的 float。
__device__ ​ float curand_uniform ( curandStateSobol32_t* state )
从 Sobol32 生成器返回一个均匀分布的 float。
__device__ ​ float curand_uniform ( curandStateMtgp32_t* state )
从 MTGP32 生成器返回一个均匀分布的 float。
__device__ ​ float curand_uniform ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个均匀分布的 float。
__device__ ​ float curand_uniform ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回一个均匀分布的 float。
__device__ ​ float curand_uniform ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回一个均匀分布的 float。
__device__ ​ double2 curand_uniform2_double ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个均匀分布的 2 个 double 的元组。
__device__ ​ float4 curand_uniform4 ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个均匀分布的 4 个 float 的元组。
__device__ ​ double curand_uniform_double ( curandStateScrambledSobol64_t* state )
从 scrambled Sobol64 生成器返回一个均匀分布的 double。
__device__ ​ double curand_uniform_double ( curandStateSobol64_t* state )
从 Sobol64 生成器返回一个均匀分布的 double。
__device__ ​ double curand_uniform_double ( curandStateScrambledSobol32_t* state )
从 scrambled Sobol32 生成器返回一个均匀分布的 double。
__device__ ​ double curand_uniform_double ( curandStateSobol32_t* state )
从 Sobol32 生成器返回一个均匀分布的 double。
__device__ ​ double curand_uniform_double ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个均匀分布的 double。
__device__ ​ double curand_uniform_double ( curandStateMtgp32_t* state )
从 MTGP32 生成器返回一个均匀分布的 double。
__device__ ​ double curand_uniform_double ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回一个均匀分布的 double。
__device__ ​ double curand_uniform_double ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回一个均匀分布的 double。
template < typename T >__device__ ​ CURAND_STD::​enable_if < CURAND_STD::​is_same &lt; curandStateSobol64_t* > ::type skipahead ( unsigned long long n, T state )
更新 Sobol64 状态以跳过 n 个元素。
template < typename T >__device__ ​ CURAND_STD::​enable_if < CURAND_STD::​is_same &lt; curandStateSobol32_t* > ::type skipahead ( unsigned int  n, T state )
更新 Sobol32 状态以跳过 n 个元素。
__device__ ​ void skipahead ( unsigned long long n, curandStateMRG32k3a_t* state )
更新 MRG32k3a 状态以跳过 n 个元素。
__device__ ​ void skipahead ( unsigned long long n, curandStatePhilox4_32_10_t* state )
更新 Philox4_32_10 状态以跳过 n 个元素。
__device__ ​ void skipahead ( unsigned long long n, curandStateXORWOW_t* state )
更新 XORWOW 状态以跳过 n 个元素。
__device__ ​ void skipahead_sequence ( unsigned long long n, curandStateMRG32k3a_t* state )
更新 MRG32k3a 状态以向前跳过 n 个序列。
__device__ ​ void skipahead_sequence ( unsigned long long n, curandStatePhilox4_32_10_t* state )
更新 Philox4_32_10 状态以向前跳过 n 个子序列。
__device__ ​ void skipahead_sequence ( unsigned long long n, curandStateXORWOW_t* state )
更新 XORWOW 状态以向前跳过 n 个子序列。
__device__ ​ void skipahead_subsequence ( unsigned long long n, curandStateMRG32k3a_t* state )
更新 MRG32k3a 状态以向前跳过 n 个子序列。

函数

__device__ ​ unsigned int curand ( curandStateMtgp32_t* state )
从 mtgp32 生成器返回 32 位的伪随机数。
参数
state
- 指向要更新的状态的指针
返回值

32 位的伪随机数,类型为 unsigned int,所有位均有效可用。

描述

从 mtgp32 生成器返回 32 位的伪随机数,如state所示,将生成器的位置增加块中的线程数。请注意,块中的线程数不能超过 256。

__device__ ​ unsigned long long curand ( curandStateScrambledSobol64_t* state )
从 scrambled Sobol64 生成器返回 64 位的准随机数。
参数
state
- 指向要更新的状态的指针
返回值

64 位的准随机数,类型为 unsigned long long,所有位均有效可用。

描述

从 scrambled Sobol32 生成器返回 64 位的准随机数,如state所示,将生成器的位置增加一。

__device__ ​ unsigned long long curand ( curandStateSobol64_t* state )
从 Sobol64 生成器返回 64 位的准随机数。
参数
state
- 指向要更新的状态的指针
返回值

64 位的准随机数,类型为 unsigned long long,所有位均有效可用。

描述

从 Sobol64 生成器返回 64 位的准随机数,如state所示,将生成器的位置增加一。

__device__ ​ unsigned int curand ( curandStateScrambledSobol32_t* state )
从 scrambled Sobol32 生成器返回 32 位的准随机数。
参数
state
- 指向要更新的状态的指针
返回值

32 位的准随机数,类型为 unsigned int,所有位均有效可用。

描述

从 scrambled Sobol32 生成器返回 32 位的准随机数,如state所示,将生成器的位置增加一。

__device__ ​ unsigned int curand ( curandStateSobol32_t* state )
从 Sobol32 生成器返回 32 位的准随机数。
参数
state
- 指向要更新的状态的指针
返回值

32 位的准随机数,类型为 unsigned int,所有位均有效可用。

描述

从 Sobol32 生成器返回 32 位的准随机数,如state所示,将生成器的位置增加一。

__device__ ​ unsigned int curand ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回 32 位的伪随机数。
参数
state
- 指向要更新的状态的指针
返回值

32 位的伪随机数,类型为 unsigned int,所有位均有效可用。

描述

从 MRG32k3a 生成器返回 32 位的伪随机数,如state所示,将生成器的位置增加一。

__device__ ​ unsigned int curand ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回 32 位的伪随机数。
参数
state
- 指向要更新的状态的指针
返回值

32 位的伪随机数,类型为 unsigned int,所有位均有效可用。

描述

从 Philox4_32_10 生成器返回 32 位的伪随机数,如state所示,将生成器的位置增加一。

__device__ ​ unsigned int curand ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回 32 位的伪随机数。
参数
state
- 指向要更新的状态的指针
返回值

32 位的伪随机数,类型为 unsigned int,所有位均有效可用。

描述

从 XORWOW 生成器返回 32 位的伪随机数,如state所示,将生成器的位置增加一。

__device__ ​ uint4 curand4 ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回 4 个 32 位伪随机数的元组。
参数
state
- 指向要更新的状态的指针
返回值

128 位的伪随机数,类型为 uint4,所有位均有效可用。

描述

从 Philox4_32_10 生成器返回 128 位的伪随机数,如state所示,将生成器的位置增加四。

__host__ ​__forceinline__ curandStatus_t curandMakeMTGP32Constants ( const mtgp32_params_fast_t params[], mtgp32_kernel_params_t* p )
为 mtgp32 生成器设置常量参数。
参数
params
- 指向主机内存中 mtgp32_params_fast_t 类型数组的指针
p
- 指向设备内存中 mtgp32_kernel_params_t 类型结构的指针。
返回值

  • 如果无法分配主机内存,则返回 CURAND_STATUS_ALLOCATION_FAILED
  • 如果复制到设备内存失败,则返回 CURAND_STATUS_INITIALIZATION_FAILED
  • 否则返回 CURAND_STATUS_SUCCESS
描述

此主机端辅助函数重新组织 CURAND_NUM_MTGP32_PARAMS 组生成器参数,以便内核函数使用,并将结果复制到设备内存中的指定位置。

__host__ ​__forceinline__ curandStatus_t CURANDAPI curandMakeMTGP32KernelState ( curandStateMtgp32_t* s, mtgp32_params_fast_t params[], mtgp32_kernel_params_t* k, int  n, unsigned long long seed )
为 mtgp32 生成器设置初始状态。
参数
s
- 指向设备内存中状态数组的指针
params
- 指向主机内存中 mtgp32_params_fast_t 类型数组的指针
k
- 指向设备内存中 mtgp32_kernel_params_t 类型结构的指针
n
- 要初始化的参数集/状态的数量
seed
- 种子值
返回值

  • 如果无法分配主机内存状态,则返回 CURAND_STATUS_ALLOCATION_FAILED
  • 如果复制到设备内存失败,则返回 CURAND_STATUS_INITIALIZATION_FAILED
  • 否则返回 CURAND_STATUS_SUCCESS
描述

此主机端辅助函数为 mtgp32 生成器初始化多个状态(每个状态一个参数集)。为了实现这一点,它在主机内存中分配一个状态数组,初始化该数组,并将结果复制到设备内存。

__device__ ​ void curand_init ( curandDirectionVectors64_t direction_vectors, unsigned long long scramble_c, unsigned long long offset, curandStateScrambledSobol64_t* state )
初始化 Scrambled Sobol64 状态。
参数
direction_vectors
- 指向由 64 个 unsigned long long 值组成的数组的指针,该数组表示所需维度的方向向量
scramble_c
Scramble 常数
offset
- 序列中的绝对偏移量
state
- 指向要初始化的状态的指针
描述

state中初始化 Sobol64 状态,使用给定的direction向量offset.

方向向量是指向包含 64 个 unsigned long long 值的数组的设备指针。offset的所有输入值都是合法的。

__device__ ​ void curand_init ( curandDirectionVectors64_t direction_vectors, unsigned long long offset, curandStateSobol64_t* state )
初始化 Sobol64 状态。
参数
direction_vectors
- 指向由 64 个 unsigned long long 值组成的数组的指针,该数组表示所需维度的方向向量
offset
- 序列中的绝对偏移量
state
- 指向要初始化的状态的指针
描述

state中初始化 Sobol64 状态,使用给定的direction向量offset.

方向向量是指向包含 64 个 unsigned long long 值的数组的设备指针。offset的所有输入值都是合法的。

__device__ ​ void curand_init ( curandDirectionVectors32_t direction_vectors, unsigned int  scramble_c, unsigned int  offset, curandStateScrambledSobol32_t* state )
初始化 Scrambled Sobol32 状态。
参数
direction_vectors
- 指向由 32 个 unsigned int 值组成的数组的指针,该数组表示所需维度的方向向量
scramble_c
Scramble 常数
offset
- 序列中的绝对偏移量
state
- 指向要初始化的状态的指针
描述

state中初始化 Sobol64 状态,使用给定的direction向量offset.

中初始化 Sobol32 状态。方向向量是指向包含 32 个 unsigned int 值的数组的设备指针。offset的所有输入值都是合法的。

__device__ ​ void curand_init ( curandDirectionVectors32_t direction_vectors, unsigned int  offset, curandStateSobol32_t* state )
初始化 Sobol32 状态。
参数
direction_vectors
- 指向由 32 个 unsigned int 值组成的数组的指针,该数组表示所需维度的方向向量
offset
- 序列中的绝对偏移量
state
- 指向要初始化的状态的指针
描述

state中初始化 Sobol64 状态,使用给定的direction向量offset.

中初始化 Sobol32 状态。方向向量是指向包含 32 个 unsigned int 值的数组的设备指针。offset的所有输入值都是合法的。

__device__ ​ void curand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, curandStateMRG32k3a_t* state )
初始化 MRG32k3a 状态。
参数
seed
- 用作种子的任意位
subsequence
- 要开始的子序列
offset
- 序列中的绝对偏移量
state
- 指向要初始化的状态的指针
描述

state中初始化 Sobol64 状态,使用给定的seed, subsequenceoffset.

中初始化 MRG32k3a 状态。seed, subsequenceoffset的所有输入值都是合法的。subsequence的所有输入值都将被截断为 51 位,以避免运行到下一个序列中

值 0 表示seed将状态设置为原始发布版本的值MRG32k3a算法。

__device__ ​ void curand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, curandStatePhilox4_32_10_t* state )
初始化 Philox4_32_10 状态。
参数
seed
- 用作种子的任意位
subsequence
- 要开始的子序列
offset
- 子序列中的绝对偏移量
state
- 指向要初始化的状态的指针
描述

state中初始化 Sobol64 状态,使用给定的seed、p\ 子序列和offset.

中初始化 Philox4_32_10 状态。seed, subseqenceoffset的所有输入值都是合法的。seed 的每个 264 个可能值选择一个长度为 2130 的独立序列。跳过序列的前 266 * subsequence + offset 个值。即,子序列的长度为 266

__device__ ​ void curand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, curandStateXORWOW_t* state )
初始化 XORWOW 状态。
参数
seed
- 用作种子的任意位
subsequence
- 要开始的子序列
offset
- 序列中的绝对偏移量
state
- 指向要初始化的状态的指针
描述

state中初始化 Sobol64 状态,使用给定的seed, subsequenceoffset.

中初始化 MRG32k3a 状态。seed, subsequenceoffset中初始化 XORWOW 状态。subsequenceoffset的大值是合法的。

值 0 表示seed将状态设置为原始发布版本的值需要更多计算,因此需要更多时间才能完成。算法。

__device__ ​ float curand_log_normal ( curandStateScrambledSobol64_t* state, float  mean, float  stddev )
从 scrambled Sobol64 生成器返回一个对数正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float,均值为mean,标准差为stddev

描述

从均值为mean,标准差为stddev的正态分布中导出一个对数正态分布的 float,来自state所示,将生成器的位置增加一。

中的 scrambled Sobol64 生成器。该实现使用逆累积分布函数生成正态分布的结果,然后转换为对数正态分布。

__device__ ​ float curand_log_normal ( curandStateSobol64_t* state, float  mean, float  stddev )
从 Sobol64 生成器返回一个对数正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float,均值为mean,标准差为stddev

描述

从均值为mean,标准差为stddev来自state所示,将生成器的位置增加一。

中的 scrambled Sobol64 生成器。该实现使用逆累积分布函数生成正态分布的结果,然后转换为对数正态分布。

__device__ ​ float curand_log_normal ( curandStateScrambledSobol32_t* state, float  mean, float  stddev )
从 scrambled Sobol32 生成器返回一个对数正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float,均值为mean,标准差为stddev

描述

从均值为mean,标准差为stddev来自state所示,将生成器的位置增加一。

中的 scrambled Sobol32 生成器。该实现使用逆累积分布函数生成正态分布的结果,然后将结果转换为对数正态分布。

__device__ ​ float curand_log_normal ( curandStateSobol32_t* state, float  mean, float  stddev )
从 Sobol32 生成器返回一个对数正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float,均值为mean,标准差为stddev

描述

从均值为mean,标准差为stddev来自state所示,将生成器的位置增加一。

中的 scrambled Sobol32 生成器。该实现使用逆累积分布函数生成正态分布的结果,然后将结果转换为对数正态分布。

__device__ ​ float curand_log_normal ( curandStateMtgp32_t* state, float  mean, float  stddev )
从 MTGP32 生成器返回一个对数正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float,均值为mean,标准差为stddev

描述

从均值为mean,标准差为stddev来自state中的 MTGP32 生成器,生成器的位置增加。

中的 scrambled Sobol32 生成器。该实现使用逆累积分布函数生成正态分布的结果,然后将结果转换为对数正态分布。

__device__ ​ float curand_log_normal ( curandStateMRG32k3a_t* state, float  mean, float  stddev )
从 MRG32k3a 生成器返回一个对数正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float,均值为mean,标准差为stddev

描述

从均值为mean,标准差为stddev来自state所示,将生成器的位置增加一。

中的 MRG32k3a 生成器。该实现使用 Box-Muller 变换生成两个正态分布的结果,将它们转换为对数正态分布,然后一次返回一个结果。有关一次返回两个结果的更高效版本,请参见curand_log_normal2()

__device__ ​ float curand_log_normal ( curandStatePhilox4_32_10_t* state, float  mean, float  stddev )
从 Philox4_32_10 生成器返回一个对数正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float,均值为mean,标准差为stddev

描述

从均值为mean,标准差为stddev来自state所示,将生成器的位置增加一。

中的 MRG32k3a 生成器。该实现使用 Box-Muller 变换生成两个正态分布的结果,将它们转换为对数正态分布,然后一次返回一个结果。有关一次返回两个结果的更高效版本,请参见curand_log_normal2()

__device__ ​ float curand_log_normal ( curandStateXORWOW_t* state, float  mean, float  stddev )
从 XORWOW 生成器返回一个对数正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float,均值为mean,标准差为stddev

描述

从均值为mean,标准差为stddev来自state所示,将生成器的位置增加一。

中的 MRG32k3a 生成器。该实现使用 Box-Muller 变换生成两个正态分布的结果,将它们转换为对数正态分布,然后一次返回一个结果。有关一次返回两个结果的更高效版本,请参见curand_log_normal2()

__device__ ​ float2 curand_log_normal2 ( curandStateMRG32k3a_t* state, float  mean, float  stddev )
从 MRG32k3a 生成器返回两个正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float2,其中每个元素来自均值为mean,标准差为stddev

描述

的分布。mean,标准差为stddev来自state返回两个对数正态分布的 float,它们从均值为

的正态分布导出,生成器的位置增加二。

__device__ ​ float2 curand_log_normal2 ( curandStatePhilox4_32_10_t* state, float  mean, float  stddev )
从 Philox4_32_10 生成器返回两个正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float2,其中每个元素来自均值为mean,标准差为stddev

描述

的分布。mean,标准差为stddev来自state返回两个对数正态分布的 float,它们从均值为

的正态分布导出,生成器的位置增加二。

__device__ ​ float2 curand_log_normal2 ( curandStateXORWOW_t* state, float  mean, float  stddev )
从 XORWOW 生成器返回两个正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float2,其中每个元素来自均值为mean,标准差为stddev

描述

的分布。mean,标准差为stddev来自state返回两个对数正态分布的 float,它们从均值为

的正态分布导出,生成器的位置增加二。

__device__ ​ double2 curand_log_normal2_double ( curandStateMRG32k3a_t* state, double  mean, double  stddev )
从 MRG32k3a 生成器返回两个对数正态分布的 double。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double2,其中每个元素来自均值为mean,标准差为stddev

描述

的分布。mean,标准差为stddev来自state返回两个对数正态分布的 float,它们从均值为

返回两个对数正态分布的 double,它们从均值为

__device__ ​ double2 curand_log_normal2_double ( curandStatePhilox4_32_10_t* state, double  mean, double  stddev )
从 Philox4_32_10 生成器返回两个对数正态分布的 double。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double4,其中每个元素来自均值为mean,标准差为stddev

描述

的分布。mean,标准差为stddev来自state所示,将生成器的位置增加四。

返回两个对数正态分布的 double,它们从均值为

__device__ ​ double2 curand_log_normal2_double ( curandStateXORWOW_t* state, double  mean, double  stddev )
从 XORWOW 生成器返回两个对数正态分布的 double。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double2,其中每个元素来自均值为mean,标准差为stddev

描述

的分布。mean,标准差为stddev来自state返回两个对数正态分布的 float,它们从均值为

返回两个对数正态分布的 double,它们从均值为

__device__ ​ float4 curand_log_normal4 ( curandStatePhilox4_32_10_t* state, float  mean, float  stddev )
从 Philox4_32_10 生成器返回四个正态分布的 float。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 float4,其中每个元素来自均值为mean,标准差为stddev

描述

的分布。mean,标准差为stddev来自state所示,将生成器的位置增加四。

的正态分布导出,生成器的位置增加二。

__device__ ​ double curand_log_normal_double ( curandStateScrambledSobol64_t* state, double  mean, double  stddev )
从 scrambled Sobol64 生成器返回一个对数正态分布的 double。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double,均值为mean,标准差为stddev

描述

mean,标准差为stddev的正态分布中导出一个对数正态分布的 float,来自state所示,将生成器的位置增加一。

返回一个从均值为

__device__ ​ double curand_log_normal_double ( curandStateSobol64_t* state, double  mean, double  stddev )
从 Sobol64 生成器返回一个对数正态分布的 double。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double,均值为mean,标准差为stddev

描述

mean,标准差为stddev来自state所示,将生成器的位置增加一。

返回一个从均值为

__device__ ​ double curand_log_normal_double ( curandStateScrambledSobol32_t* state, double  mean, double  stddev )
从 scrambled Sobol32 生成器返回一个对数正态分布的 double。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double,均值为mean,标准差为stddev

描述

返回一个从均值为mean,标准差为stddev来自state所示,将生成器的位置增加一。

的正态分布导出的对数正态分布的 double。该实现使用逆累积分布函数生成正态分布的结果,并将其转换为对数正态分布。

__device__ ​ double curand_log_normal_double ( curandStateSobol32_t* state, double  mean, double  stddev )
从 Sobol32 生成器返回一个对数正态分布的 double。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double,均值为mean,标准差为stddev

描述

返回一个从均值为mean,标准差为stddev来自state所示,将生成器的位置增加一。

的正态分布导出的对数正态分布的 double。该实现使用逆累积分布函数生成正态分布的结果,并将其转换为对数正态分布。

__device__ ​ double curand_log_normal_double ( curandStateMtgp32_t* state, double  mean, double  stddev )
从 MTGP32 生成器返回一个对数正态分布 double 值。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double,均值为mean,标准差为stddev

描述

返回一个从均值为mean,标准差为stddev来自state中的 MTGP32 生成器,生成器的位置增加。

的正态分布导出的对数正态分布的 double。该实现使用逆累积分布函数生成正态分布的结果,并将其转换为对数正态分布。

__device__ ​ double curand_log_normal_double ( curandStateMRG32k3a_t* state, double  mean, double  stddev )
从 MRG32k3a 生成器返回一个对数正态分布 double 值。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double,均值为mean,标准差为stddev

描述

mean,标准差为stddev来自state中的 MTGP32 生成器,生成器的位置增加。

该实现使用 Box-Muller 变换生成两个正态分布结果,将它们转换为对数正态分布,然后一次返回一个结果。有关更高效的版本(一次返回两个结果),请参阅 curand_log_normal2_double()

__device__ ​ double curand_log_normal_double ( curandStatePhilox4_32_10_t* state, double  mean, double  stddev )
从 Philox4_32_10 生成器返回一个对数正态分布 double 值。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double,均值为mean,标准差为stddev

描述

mean,标准差为stddev来自state中的 MTGP32 生成器,生成器的位置增加。

该实现使用 Box-Muller 变换生成两个正态分布结果,将它们转换为对数正态分布,然后一次返回一个结果。有关更高效的版本(一次返回两个结果),请参阅 curand_log_normal2_double()

__device__ ​ double curand_log_normal_double ( curandStateXORWOW_t* state, double  mean, double  stddev )
从 XORWOW 生成器返回一个对数正态分布 double 值。
参数
state
- 指向要更新的状态的指针
mean
- 相关正态分布的均值
stddev
- 相关正态分布的标准差
返回值

对数正态分布的 double,均值为mean,标准差为stddev

描述

mean,标准差为stddev来自state中的 MTGP32 生成器,生成器的位置增加。

该实现使用 Box-Muller 变换生成两个正态分布结果,将它们转换为对数正态分布,然后一次返回一个结果。有关更高效的版本(一次返回两个结果),请参阅 curand_log_normal2_double()

__device__ ​ float curand_mtgp32_single ( curandStateMtgp32_t* state )
从 mtgp32 生成器返回一个均匀分布的 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 float 值,范围在0.0f1.0f

描述

返回一个均匀分布的 float 值,范围在0.0f1.0f来自 mtgp32 生成器,位于state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

注意:此均匀分布 float 值的替代推导是为了与原始源代码的完整性而提供的

__device__ ​ float curand_mtgp32_single_specific ( curandStateMtgp32_t* state, unsigned char  index, unsigned char  n )
从 mtgp32 生成器中的特定位置返回一个均匀分布的 float 值。
参数
state
- 指向要更新的状态的指针
index
- 状态内位置的索引 (0..255),从中抽取并更新
n
- 此调用中正在更新的此状态中的位置总数
返回值

均匀分布的 float 值,范围在0.0f1.0f

描述

返回一个均匀分布的 float 值,范围在0.0f1.0f从位置index的 mtgp32 生成器中,位于state,并将生成器的位置递增n个位置,这必须是线程块在此调用中更新的状态中的位置总数。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

注意 1:线程索引必须在 0...n- 1 范围内。更新的位置数不得超过 256。一个线程块可以更新多个状态,但一个给定的状态不能被多个线程块更新。

注意 2:此均匀分布 float 值的替代推导是为了与原始源代码的完整性而提供的

__device__ ​ unsigned int curand_mtgp32_specific ( curandStateMtgp32_t* state, unsigned char  index, unsigned char  n )
从 mtgp32 生成器中的特定位置返回 32 位的伪随机数。
参数
state
- 指向要更新的状态的指针
index
- 状态内位置的索引 (0..255),从中抽取并更新
n
- 此调用中正在更新的此状态中的位置总数
返回值

32 位的伪随机数,类型为 unsigned int,所有位均有效可用。

描述

从位置index的 mtgp32 生成器中,位于state返回 32 位的伪随机数,并将生成器的位置递增n个位置,这必须是线程块在此调用中更新的状态中的位置总数。

注意:线程索引必须在 0... n - 1 范围内。更新的位置数不得超过 256。一个线程块可以更新多个状态,但一个给定的状态不能被多个线程块更新。

__device__ ​ float curand_normal ( curandStateScrambledSobol64_t* state )
从 scrambled Sobol64 生成器返回一个正态分布 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0f,标准差为1.0f

描述

返回一个均值为0.0f,标准差为1.0f的正态分布中导出一个对数正态分布的 float,来自state所示,将生成器的位置增加一。

返回一个从均值为

__device__ ​ float curand_normal ( curandStateSobol64_t* state )
从 Sobol64 生成器返回一个正态分布 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0f,标准差为1.0f

描述

返回一个均值为0.0f,标准差为1.0f来自state所示,将生成器的位置增加一。

返回一个从均值为

__device__ ​ float curand_normal ( curandStateScrambledSobol32_t* state )
从 scrambled Sobol32 生成器返回一个正态分布 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0f,标准差为1.0f

描述

返回一个均值为0.0f,标准差为1.0f来自state所示,将生成器的位置增加一。

返回一个从均值为

__device__ ​ float curand_normal ( curandStateSobol32_t* state )
从 Sobol32 生成器返回一个正态分布 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0f,标准差为1.0f

描述

返回一个均值为0.0f,标准差为1.0f来自state所示,将生成器的位置增加一。

返回一个从均值为

__device__ ​ float curand_normal ( curandStateMtgp32_t* state )
从 MTGP32 生成器返回一个正态分布 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0f,标准差为1.0f

描述

返回一个均值为0.0f,标准差为1.0f来自state中的 MTGP32 生成器,生成器的位置增加。

返回一个从均值为

__device__ ​ float curand_normal ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回一个正态分布 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0f,标准差为1.0f

描述

返回一个均值为0.0f,标准差为1.0f来自state所示,将生成器的位置增加一。

该实现使用 Box-Muller 变换生成两个正态分布结果,然后一次返回一个结果。有关更高效的版本(一次返回两个结果),请参阅 curand_normal2()

__device__ ​ float curand_normal ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个正态分布 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0f,标准差为1.0f

描述

返回一个均值为0.0f,标准差为1.0f来自state所示,将生成器的位置增加一。

该实现使用 Box-Muller 变换生成两个正态分布结果,然后一次返回一个结果。有关更高效的版本(一次返回两个结果),请参阅 curand_normal2()

__device__ ​ float curand_normal ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回一个正态分布 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0f,标准差为1.0f

描述

返回一个均值为0.0f,标准差为1.0f来自state所示,将生成器的位置增加一。

该实现使用 Box-Muller 变换生成两个正态分布结果,然后一次返回一个结果。有关更高效的版本(一次返回两个结果),请参阅 curand_normal2()

__device__ ​ float2 curand_normal2 ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回两个正态分布的 float。
参数
state
- 指向要更新的状态的指针
返回值

正态分布 float2,其中每个元素都来自均值为0.0f,标准差为1.0f

描述

返回两个均值为0.0f,标准差为1.0f来自state返回两个对数正态分布的 float,它们从均值为

的正态分布 float 值。该实现使用 Box-Muller 变换生成两个正态分布结果。

__device__ ​ float2 curand_normal2 ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回两个正态分布的 float。
参数
state
- 指向要更新的状态的指针
返回值

正态分布 float2,其中每个元素都来自均值为0.0f,标准差为1.0f

描述

返回两个均值为0.0f,标准差为1.0f来自state返回两个对数正态分布的 float,它们从均值为

的正态分布 float 值。该实现使用 Box-Muller 变换生成两个正态分布结果。

__device__ ​ float2 curand_normal2 ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回两个正态分布的 float。
参数
state
- 指向要更新的状态的指针
返回值

正态分布 float2,其中每个元素都来自均值为0.0f,标准差为1.0f

描述

返回两个均值为0.0f,标准差为1.0f来自state返回两个对数正态分布的 float,它们从均值为

的正态分布 float 值。该实现使用 Box-Muller 变换生成两个正态分布结果。

__device__ ​ double2 curand_normal2_double ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回两个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

正态分布 double2,其中每个元素都来自均值为0.0,标准差为1.0

描述

返回两个均值为0.0,标准差为1.0来自state中的 MTGP32 生成器,生成器的位置增加。

的正态分布 float 值。该实现使用 Box-Muller 变换生成两个正态分布结果。

__device__ ​ double2 curand_normal2_double ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回两个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

正态分布 double2,其中每个元素都来自均值为0.0,标准差为1.0

描述

返回两个均值为0.0,标准差为1.0来自state,并将生成器的位置递增 2。

的正态分布 float 值。该实现使用 Box-Muller 变换生成两个正态分布结果。

__device__ ​ double2 curand_normal2_double ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回两个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

正态分布 double2,其中每个元素都来自均值为0.0,标准差为1.0

描述

返回两个均值为0.0,标准差为1.0来自state,并将生成器的位置递增 2。

的正态分布 float 值。该实现使用 Box-Muller 变换生成两个正态分布结果。

__device__ ​ float4 curand_normal4 ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回四个正态分布的 float。
参数
state
- 指向要更新的状态的指针
返回值

正态分布 float2,其中每个元素都来自均值为0.0f,标准差为1.0f

描述

返回四个均值为0.0f,标准差为1.0f来自state所示,将生成器的位置增加四。

的正态分布 float 值。该实现使用 Box-Muller 变换生成两个正态分布结果。

__device__ ​ double curand_normal_double ( curandStateScrambledSobol64_t* state )
从 scrambled Sobol64 生成器返回一个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0,标准差为1.0

描述

返回一个均值为0.0,标准差为1.0的正态分布中导出一个对数正态分布的 float,来自state所示,将生成器的位置增加一。

返回一个从均值为

__device__ ​ double curand_normal_double ( curandStateSobol64_t* state )
从 Sobol64 生成器返回一个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0,标准差为1.0

描述

返回一个均值为0.0,标准差为1.0来自state所示,将生成器的位置增加一。

返回一个从均值为

__device__ ​ double curand_normal_double ( curandStateScrambledSobol32_t* state )
从 scrambled Sobol32 生成器返回一个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0,标准差为1.0

描述

返回一个均值为0.0,标准差为1.0来自state所示,将生成器的位置增加一。

返回一个从均值为

__device__ ​ double curand_normal_double ( curandStateSobol32_t* state )
从 Sobol32 生成器返回一个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0,标准差为1.0

描述

返回一个均值为0.0,标准差为1.0来自state所示,将生成器的位置增加一。

返回一个从均值为

__device__ ​ double curand_normal_double ( curandStateMtgp32_t* state )
从 MTGP32 生成器返回一个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0,标准差为1.0

描述

返回一个均值为0.0,标准差为1.0来自state中的 MTGP32 生成器,生成器的位置增加。

返回一个从均值为

__device__ ​ double curand_normal_double ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回一个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0,标准差为1.0

描述

返回一个均值为0.0,标准差为1.0来自state中的 MTGP32 生成器,生成器的位置增加。

该实现使用 Box-Muller 变换生成两个正态分布结果,然后一次返回一个结果。有关更高效的版本(一次返回两个结果),请参阅 curand_normal2_double()

__device__ ​ double curand_normal_double ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0,标准差为1.0

描述

返回一个均值为0.0,标准差为1.0来自state中的 MTGP32 生成器,生成器的位置增加。

该实现使用 Box-Muller 变换生成两个正态分布结果,然后一次返回一个结果。有关更高效的版本(一次返回两个结果),请参阅 curand_normal2_double()

__device__ ​ double curand_normal_double ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回一个正态分布 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均值为0.0,标准差为1.0

描述

返回一个均值为0.0,标准差为1.0来自state中的 MTGP32 生成器,生成器的位置增加。

该实现使用 Box-Muller 变换生成两个正态分布结果,然后一次返回一个结果。有关更高效的版本(一次返回两个结果),请参阅 curand_normal2_double()

__device__ ​ unsigned int curand_poisson ( curandStateScrambledSobol64_t* state, double  lambda )
从 scrambled Sobol64 生成器返回一个泊松分布的 unsigned int 值。
参数
state
- 指向要更新的状态的指针
lambda
- 泊松分布的 Lambda 参数
返回值

具有 lambda 参数的泊松分布 unsigned int 值lambda

描述

从具有 lambda 参数的泊松分布中返回一个 unsigned int 值lambda的正态分布中导出一个对数正态分布的 float,来自state所示,将生成器的位置增加一。

__device__ ​ unsigned int curand_poisson ( curandStateSobol64_t* state, double  lambda )
从 Sobol64 生成器返回一个泊松分布的 unsigned int 值。
参数
state
- 指向要更新的状态的指针
lambda
- 泊松分布的 Lambda 参数
返回值

具有 lambda 参数的泊松分布 unsigned int 值lambda

描述

从具有 lambda 参数的泊松分布中返回一个 unsigned int 值lambda来自state所示,将生成器的位置增加一。

__device__ ​ unsigned int curand_poisson ( curandStateScrambledSobol32_t* state, double  lambda )
从 scrambled Sobol32 生成器返回一个泊松分布的 unsigned int 值。
参数
state
- 指向要更新的状态的指针
lambda
- 泊松分布的 Lambda 参数
返回值

具有 lambda 参数的泊松分布 unsigned int 值lambda

描述

从具有 lambda 参数的泊松分布中返回一个 unsigned int 值lambda来自state,并将生成器的位置递增 1。

__device__ ​ unsigned int curand_poisson ( curandStateSobol32_t* state, double  lambda )
从 Sobol32 生成器返回一个泊松分布的 unsigned int 值。
参数
state
- 指向要更新的状态的指针
lambda
- 泊松分布的 Lambda 参数
返回值

具有 lambda 参数的泊松分布 unsigned int 值lambda

描述

从具有 lambda 参数的泊松分布中返回一个 unsigned int 值lambda来自state,并将生成器的位置递增 1。

__device__ ​ unsigned int curand_poisson ( curandStateMtgp32_t* state, double  lambda )
从 MTGP32 生成器返回一个泊松分布的 unsigned int 值。
参数
state
- 指向要更新的状态的指针
lambda
- 泊松分布的 Lambda 参数
返回值

具有 lambda 参数的泊松分布 unsigned int 值lambda

描述

从具有 lambda 参数的泊松分布中返回一个 int 值lambda来自state,并将生成器的位置递增 1。

__device__ ​ unsigned int curand_poisson ( curandStateMRG32k3a_t* state, double  lambda )
从 MRG32k3A 生成器返回一个泊松分布的 unsigned int 值。
参数
state
- 指向要更新的状态的指针
lambda
- 泊松分布的 Lambda 参数
返回值

具有 lambda 参数的泊松分布 unsigned int 值lambda

描述

从具有 lambda 参数的泊松分布中返回一个 unsigned int 值lambda来自state,并将生成器的位置递增一个可变的量,具体取决于所使用的算法。

__device__ ​ unsigned int curand_poisson ( curandStatePhilox4_32_10_t* state, double  lambda )
从 Philox4_32_10 生成器返回一个泊松分布的 unsigned int 值。
参数
state
- 指向要更新的状态的指针
lambda
- 泊松分布的 Lambda 参数
返回值

具有 lambda 参数的泊松分布 unsigned int 值lambda

描述

从具有 lambda 参数的泊松分布中返回一个 unsigned int 值lambda来自state,并将生成器的位置递增一个可变的量,具体取决于所使用的算法。

__device__ ​ unsigned int curand_poisson ( curandStateXORWOW_t* state, double  lambda )
从 XORWOW 生成器返回一个泊松分布的 unsigned int 值。
参数
state
- 指向要更新的状态的指针
lambda
- 泊松分布的 Lambda 参数
返回值

具有 lambda 参数的泊松分布 unsigned int 值lambda

描述

从具有 lambda 参数的泊松分布中返回一个 unsigned int 值lambda来自state,并将生成器的位置递增一个可变的量,具体取决于所使用的算法。

__device__ ​ uint4 curand_poisson4 ( curandStatePhilox4_32_10_t* state, double  lambda )
从 Philox4_32_10 生成器返回四个泊松分布的 unsigned int 值。
参数
state
- 指向要更新的状态的指针
lambda
- 泊松分布的 Lambda 参数
返回值

具有 lambda 参数的泊松分布 unsigned int 值lambda

描述

从具有 lambda 参数的泊松分布中返回四个 unsigned int 值lambda来自state,并将生成器的位置递增一个可变的量,具体取决于所使用的算法。

__device__ ​ float curand_uniform ( curandStateScrambledSobol64_t* state )
从 scrambled Sobol64 生成器返回一个均匀分布的 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 float 值,范围在0.0f1.0f

描述

返回一个均匀分布的 float 值,范围在0.0f1.0f的正态分布中导出一个对数正态分布的 float,来自state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

该实现保证使用对curand().

__device__ ​ float curand_uniform ( curandStateSobol64_t* state )
从 Sobol64 生成器返回一个均匀分布的 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 float 值,范围在0.0f1.0f

描述

返回一个均匀分布的 float 值,范围在0.0f1.0f来自state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

该实现保证使用对curand().

__device__ ​ float curand_uniform ( curandStateScrambledSobol32_t* state )
从 scrambled Sobol32 生成器返回一个均匀分布的 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 float 值,范围在0.0f1.0f

描述

返回一个均匀分布的 float 值,范围在0.0f1.0f来自state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

该实现保证使用对curand().

__device__ ​ float curand_uniform ( curandStateSobol32_t* state )
从 Sobol32 生成器返回一个均匀分布的 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 float 值,范围在0.0f1.0f

描述

返回一个均匀分布的 float 值,范围在0.0f1.0f来自state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

该实现保证使用对curand().

__device__ ​ float curand_uniform ( curandStateMtgp32_t* state )
从 MTGP32 生成器返回一个均匀分布的 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 float 值,范围在0.0f1.0f

描述

返回一个均匀分布的 float 值,范围在0.0f1.0f来自state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

__device__ ​ float curand_uniform ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个均匀分布的 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 float 值,范围在0.01.0

描述

返回一个均匀分布的 float 值,范围在0.0f1.0f来自state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

__device__ ​ float curand_uniform ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回一个均匀分布的 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 float 值,范围在0.0f1.0f

描述

返回一个均匀分布的 float 值,范围在0.0f1.0f来自state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

该实现最多返回 23 位的尾数,最小返回值 \( 2^{-32} \)

__device__ ​ float curand_uniform ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回一个均匀分布的 float 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 float 值,范围在0.0f1.0f

描述

返回一个均匀分布的 float 值,范围在0.0f1.0f来自state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

该实现可以使用任意次数的调用curand()以获取足够的随机位来创建返回值。当前的实现使用一次调用。

__device__ ​ double2 curand_uniform2_double ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个均匀分布的 2 个 double 值的元组。
参数
state
- 指向要更新的状态的指针
返回值

2 个均匀分布的 double 值,范围在0.01.0

描述

返回一个均匀分布的 2 个 double 值 (double4),范围在0.01.0来自state,并将生成器的位置递增 4。输出范围不包括0.0但包括1.0。永远不会返回反常化的浮点输出。

__device__ ​ float4 curand_uniform4 ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个均匀分布的 4 个 float 值的元组。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 float 值,范围在0.01.0

描述

返回一个均匀分布的 4 个 float 值,范围在0.0f1.0f来自state,并将生成器的位置递增 4。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

__device__ ​ double curand_uniform_double ( curandStateScrambledSobol64_t* state )
从 scrambled Sobol64 生成器返回一个均匀分布的 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 double 值,范围在0.01.0

描述

返回一个均匀分布的 double 值,范围在0.01.0的正态分布中导出一个对数正态分布的 float,来自state,并递增生成器的位置。输出范围不包括0.0但包括1.0。永远不会返回反常化的浮点输出。

该实现保证使用对curand(),以保持序列的准随机特性。

__device__ ​ double curand_uniform_double ( curandStateSobol64_t* state )
从 Sobol64 生成器返回一个均匀分布的 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 double 值,范围在0.01.0

描述

返回一个均匀分布的 double 值,范围在0.01.0来自state,并递增生成器的位置。输出范围不包括0.0但包括1.0。永远不会返回反常化的浮点输出。

该实现保证使用对curand(),以保持序列的准随机特性。

__device__ ​ double curand_uniform_double ( curandStateScrambledSobol32_t* state )
从 scrambled Sobol32 生成器返回一个均匀分布的 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 double 值,范围在0.01.0

描述

返回一个均匀分布的 double 值,范围在0.01.0来自state,并递增生成器的位置。输出范围不包括0.0但包括1.0。永远不会返回反常化的浮点输出。

该实现保证使用对curand(),以保持序列的准随机特性。

请注意,该实现仅使用 32 个随机位来生成单个双精度值。

__device__ ​ double curand_uniform_double ( curandStateSobol32_t* state )
从 Sobol32 生成器返回一个均匀分布的 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 double 值,范围在0.01.0

描述

返回一个均匀分布的 double 值,范围在0.01.0来自state,并递增生成器的位置。输出范围不包括0.0但包括1.0。永远不会返回反常化的浮点输出。

该实现保证使用对curand(),以保持序列的准随机特性。

请注意,该实现仅使用 32 个随机位来生成单个双精度值。

__device__ ​ double curand_uniform_double ( curandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回一个均匀分布的 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 double 值,范围在0.0f1.0f

描述

返回一个均匀分布的 double 值,范围在0.0f1.0f来自state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

请注意,该实现仅使用 32 个随机位来生成单个双精度值。

建议使用 curand_uniform2_double()以获得更高质量的均匀分布双精度值。

__device__ ​ double curand_uniform_double ( curandStateMtgp32_t* state )
从 MTGP32 生成器返回一个均匀分布的 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 double 值,范围在0.0f1.0f

描述

返回一个均匀分布的 double 值,范围在0.0f1.0f来自state,并递增生成器的位置。输出范围不包括0.0f但包括1.0f。永远不会返回反常化的浮点输出。

请注意,该实现仅使用 32 个随机位来生成单个双精度值。

__device__ ​ double curand_uniform_double ( curandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回一个均匀分布的 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 double 值,范围在0.01.0

描述

返回一个均匀分布的 double 值,范围在0.01.0来自state,并递增生成器的位置。输出范围不包括0.0但包括1.0。永远不会返回反常化的浮点输出。

请注意,该实现最多返回 L'Ecuyer 的开创性论文中概述的 32 位尾数。

__device__ ​ double curand_uniform_double ( curandStateXORWOW_t* state )
从 XORWOW 生成器返回一个均匀分布的 double 值。
参数
state
- 指向要更新的状态的指针
返回值

均匀分布的 double 值,范围在0.01.0

描述

返回一个均匀分布的 double 值,范围在0.01.0来自state,并递增生成器的位置。输出范围不包括0.0但包括1.0。永远不会返回反常化的浮点输出。

该实现可以使用任意次数的调用curand()以获取足够的随机位来创建返回值。当前的实现正好使用两次调用。

template < typename T >

__device__ ​ CURAND_STD::​enable_if < CURAND_STD::​is_same &lt; curandStateSobol64_t* > ::type skipahead ( unsigned long long n, T state ) [inline]
更新 Sobol64 状态以跳过n个元素。
参数
n
- 要跳过的元素数量
state
- 指向要更新的状态的指针
描述

更新state中的 Sobol64 状态以向前跳过n个元素。

的所有值n均有效。

template < typename T >

__device__ ​ CURAND_STD::​enable_if < CURAND_STD::​is_same &lt; curandStateSobol32_t* > ::type skipahead ( unsigned int  n, T state ) [inline]
更新 Sobol32 状态以跳过n个元素。
参数
n
- 要跳过的元素数量
state
- 指向要更新的状态的指针
描述

更新state中的 Sobol64 状态以向前跳过n个元素。

的所有值n均有效。

__device__ ​ void skipahead ( unsigned long long n, curandStateMRG32k3a_t* state )
更新 MRG32k3a 状态以跳过n个元素。
参数
n
- 要跳过的元素数量
state
- 指向要更新的状态的指针
描述

更新state中的 Sobol64 状态以向前跳过n个元素。

的所有值n中的 MRG32k3a 状态。所有值均有效。较大的值需要更多的计算,因此完成时间会更长。

__device__ ​ void skipahead ( unsigned long long n, curandStatePhilox4_32_10_t* state )
更新 Philox4_32_10 状态以跳过n个元素。
参数
n
- 要跳过的元素数量
state
- 指向要更新的状态的指针
描述

更新state中的 Sobol64 状态以向前跳过n个元素。

的所有值n均有效。

__device__ ​ void skipahead ( unsigned long long n, curandStateXORWOW_t* state )
更新 XORWOW 状态以跳过n个元素。
参数
n
- 要跳过的元素数量
state
- 指向要更新的状态的指针
描述

更新state中的 Sobol64 状态以向前跳过n个元素。

的所有值n中的 MRG32k3a 状态。所有值均有效。较大的值需要更多的计算,因此完成时间会更长。

__device__ ​ void skipahead_sequence ( unsigned long long n, curandStateMRG32k3a_t* state )
更新 MRG32k3a 状态以向前跳过n个序列。
参数
n
- 要跳过的序列数
state
- 指向要更新的状态的指针
描述

更新state中的 Sobol64 状态以向前跳过n个序列。每个序列的长度为 2127 个元素,因此这意味着该函数将向前跳过 2127 * n 个元素。

的所有值n中的 MRG32k3a 状态。所有值均有效。较大的值需要更多的计算,因此完成时间会更长。

__device__ ​ void skipahead_sequence ( unsigned long long n, curandStatePhilox4_32_10_t* state )
更新 Philox4_32_10 状态以向前跳过n个子序列。
参数
n
- 要跳过的子序列数
state
- 指向要更新的状态的指针
描述

更新state中的 Sobol64 状态以向前跳过n个子序列。每个子序列的长度为 266 个元素,因此这意味着该函数将向前跳过 266 * n 个元素。

的所有值n均有效。

__device__ ​ void skipahead_sequence ( unsigned long long n, curandStateXORWOW_t* state )
更新 XORWOW 状态以向前跳过n个子序列。
参数
n
- 要跳过的子序列数
state
- 指向要更新的状态的指针
描述

更新state中的 Sobol64 状态以向前跳过n个子序列。每个子序列的长度为 267 个元素,因此这意味着该函数将向前跳过 267 * n 个元素。

的所有值n中的 MRG32k3a 状态。所有值均有效。较大的值需要更多的计算,因此完成时间会更长。

__device__ ​ void skipahead_subsequence ( unsigned long long n, curandStateMRG32k3a_t* state )
更新 MRG32k3a 状态以向前跳过n个子序列。
参数
n
- 要跳过的子序列数
state
- 指向要更新的状态的指针
描述

更新state中的 Sobol64 状态以向前跳过n个子序列。每个子序列的长度为 2127

276 个元素,因此这意味着该函数将向前跳过 267 * n 个元素。

的有效值n为 0 到 251。注意n将被屏蔽为 51 位