NVIDIA GPU上的随机数生成
NVIDIA CUDA随机数生成库(cuRAND)提供高性能的GPU加速的随机数生成(RNG)。cuRAND库使用NVIDIA GPU中提供的数百个处理器内核,将质量随机数提高了8倍。cuRAND库包含在NVIDIA HPC SDK和CUDA Toolkit中。
cuRAND性能
cuRAND还提供两个灵活的接口,使您可以从CPU上运行的主机代码或GPU上运行的CUDA函数/内核中批量生成随机数。多种RNG算法和分发选项意味着可以根据需要选择最佳解决方案。
cuRAND主要特点
- 灵活的使用模式
- 主机API,用于在GPU上批量生成随机数
- 内联实现允许在GPU函数/内核内部或主机代码中使用
- 四种高质量的RNG算法
- MRG32k3a
- MTGP梅赛因捻线机Merseinne Twister
- XORWOW伪随机生成
- Sobol的准随机数生成器,包括对加扰和64位RNG的支持
- 多种RNG分发选项
- 均匀分布
- 正态分布
- 对数正态分布
- 单精度或双精度
- 泊松分布
cuRAND库中提供的随机数生成器和统计分布已针对包括TestUO1在内的著名统计测试电池进行了测试。请参阅cuRAND文档以获取选定的测试结果。
cuRAND可用性
cuRAND库可作为NVIDIA HPC SDK的一部分免费提供 。它也包含在CUDA工具包中。
有关cuRAND和其他CUDA数学库的更多信息:
- 演示如何使用cuRAND库的源代码示例:
- CUDA C蒙特卡洛:单一亚洲选项
- CUDA C蒙特卡洛(Pi)估计(批次QRNG)
- CUDA C Pi的蒙特卡洛估计(PRNG批次)
- CUDA C Pi的蒙特卡洛估计(批量内联QRNG)
- CUDA C Pi的蒙特卡洛估计(在线PRNG)
- 其他GPU加速库