G燃烧

GPU计算的随机数生成控制

说明

G燃烧(种子)设置GPU计算中使用的随机数生成器的起点或种子,以便兰特,兰迪,和兰登产生可预测的数字序列。

gpurng('shuffle')基于当前时间设置随机数生成器的种子,以便兰特,兰迪,和兰登每次通话后产生不同的数字序列G燃烧.

G燃烧(种子,发电机)gpurng('shuffle',发电机)选择所使用的随机数生成器的类型兰特,兰迪,和兰登.

gpurng('默认值')将随机数生成器的设置返回到其默认值。生成的随机数与重新启动MATLAB时的随机数相同®. 默认设置为三人组种子发生器0.

S=G燃烧将随机数生成器的当前状态返回为具有字段“Type”、“Seed”和“state”的结构。使用此结构可在稍后使用将随机数生成器还原为捕获的设置G燃烧(S).

G燃烧(S)使用以前捕获的设置还原随机数生成器的状态S=G旋转.

S=G燃烧(___)在更改种子或生成器类型的设置之前,将随机数生成器的当前状态作为结构返回。

示例

全部折叠

捕获GPU生成器设置,并将CPU随机数生成器的状态设置为与GPU生成器设置匹配。在CPU和GPU上创建可预测的随机数数组。

在CPU和GPU上将生成器类型和种子恢复为其默认值。

G燃烧('默认')rng公司('默认')

保存GPU随机数生成器的默认种子和生成器类型。

GPUdef=gpurng
GPUdef公司=带字段的结构:类型:“threefry”种子:0状态:[17×1 uint32]

将CPU随机数生成器设置为与默认GPU设置匹配。

rng(GPUdef)

在GPU上创建均匀分布的随机数数组。

rGPU=兰特(1,10,“gpuArray”)
rGPU=0.3640 0.5421 0.6543 0.7436 0.0342 0.8311 0.7040 0.2817 0.1163 0.5671

在CPU上创建一个随机数数组。

rCPU=兰特(1,10)
rCPU公司=1×100.3640 0.5421 0.6543 0.7436 0.0342 0.8311 0.7040 0.2817 0.1163 0.5671

GPU和CPU的种子类型和生成器类型相同,因此阵列是相同的。

等质量(rGPU、rCPU)
答案=符合逻辑的1.

这个G燃烧状态不保存用于生成正态分布随机数集的转换的设置。尽管GPU和CPU上的种子和生成器类型相同,但正态分布随机数集是不同的。

nGPU=兰登(11000,“gpuArray”); nCPU=兰登(11000);数字保持直方图(nGPU)直方图(nCPU)图例('GPU','中央处理器')职务('正态分布随机数')xlabel公司('值')伊莱贝尔('计数')保持

随机数正态分布的统计在GPU和CPU上是相同的。

默认情况下,CPU使用“Ziggurat”转换,而GPU使用“博克斯穆勒”算法“三人组”发电机。CPU和GPU上唯一支持的转换方法是万博1manbetx'反转'转变。

您可以使用更改GPU上的转换方法并行.gpu.RandStream.

输入参数

全部折叠

随机数种子,指定为非负整数。种子指定算法生成随机数的起点。当需要可复制的结果时,请指定种子。默认种子为0.

例子:G转弯(7)

随机数生成器,指定为支持多个流和子流的任何有效随机数生成器的字符向量或字符串。GPU上支持三种随机数生成器算法。万博1manbetx

关键字 发电机 多流和子流支持万博1manbetx 全精度近似周期
“三人组”“3x4x64\u 20” 3Fry 4x64发电机,20发 是的 2.514(2256长度为2的溪流258)
“菲洛克斯”'Philox4x32\u 10' Philox 4x32发电机,带10发子弹 是的 2.193(264长度为2的溪流129)
'组合递归''mrg32k3a' 组合多重递归发生器 是的 2.191(263长度为2的溪流127)

默认生成器为三人组.

有关在GPU和CPU上生成随机数之间的差异的更多信息,请参阅控制工人的随机数流.

例子:gpurng(0,'Philox')

以前的随机数生成器状态,指定为以前使用S=G旋转.

例子:S=G旋转捕获随机数生成器的当前状态,以及G转弯将生成器恢复为这些设置。

数据类型:结构

输出参数

全部折叠

随机数生成器状态,作为带字段的结构返回'类型','种子',和'州'.

例子:S=G旋转捕获随机数生成器的当前状态,以及G转弯将生成器恢复为这些设置。

数据类型:结构

兼容性考虑

全部展开

R2019a中的行为改变

R2018a中的行为改变

R2011b引入