简介

cuRAND库提供了专注于简单高效生成高质量伪随机数和准随机数的功能。伪随机数列满足真正随机数列的大部分统计特性,但由确定性算法生成。准随机数列是由确定性算法生成的 n 维点集,该算法设计用于均匀填充 n 维空间。

cuRAND由两部分组成:主机(CPU)端的库和设备(GPU)端的头文件。主机端的库与其他CPU库类似:用户包含头文件 /include/curand.h以获取函数声明,然后链接该库。随机数可以在设备端或主机CPU上生成。对于设备端生成,对库的调用发生在主机上,但实际的随机数生成工作发生在设备端。生成的随机数存储在设备的全局内存中。用户随后可以调用自己的内核来使用这些随机数,或者将随机数复制回主机进行进一步处理。对于主机CPU生成,所有工作都在主机上完成,随机数存储在主机内存中。

cuRAND的第二个组成部分是设备头文件, /include/curand_kernel.h。该文件定义了用于设置随机数生成器状态和生成随机数序列的设备函数。用户代码可以包含此头文件,用户编写的内核随后可以调用头文件中定义的设备函数。这样可以在用户内核中直接生成并立即使用随机数,而无需将随机数写入全局内存后再从中读取。