主要内容

gpurng

控制GPU计算的随机数生成

描述

gpurng (种子设置GPU计算中使用的随机数生成器的起点或种子,因此兰德兰迪,randn产生可预测的数字序列。

gpurng(“洗牌”)根据当前时间设置随机数生成器的种子,以便兰德兰迪,randn每次打完电话后,都要说出不同的数字序列gpurng

gpurng (种子发电机gpurng(“洗牌”,发电机选择使用的随机数生成器的类型兰德兰迪,randn

gpurng(“违约”)将随机数生成器的设置返回为默认值。产生的随机数与重新启动MATLAB时相同®.默认设置为Threefry带有种子的发电机0

年代= gpurng返回随机数生成器的当前状态,作为一个包含“Type”、“Seed”和“state”字段的结构。使用此结构可将随机数生成器恢复到稍后捕获的设置gpurng (年代

gpurng (年代使用先前捕获的设置恢复随机数生成器的状态S = gpurng

年代= gpurng (___在更改种子或生成器类型的设置之前,将随机数生成器的当前状态返回为结构。

例子

全部折叠

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

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

gpurng (“默认”)提高(“默认”

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

GPUdef = gpurng
GPUdef =带有字段的结构:类型:' threfry '种子:0状态:[17×1 uint32]

设置CPU随机数发生器与GPU默认设置相匹配。

rng (GPUdef)

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

rGPU = rand(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 = rand(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,种子和生成器类型是相同的,因此数组是相同的。

isequal (rGPU rCPU)
ans =逻辑1

gpurng状态不保存用于生成正态分布随机数集的转换的设置。即使种子和生成器类型在GPU和CPU上是相同的,但正态分布随机数集是不同的。

nGPU = randn(1,1000,“gpuArray”);nCPU = randn(1,1000);图保存nGPU直方图(nCPU)图例(“图形”“CPU”)标题(“正态分布随机数”)包含(“价值”) ylabel (“数”)举行

随机数的正态分布在GPU和CPU上的统计结果一致。

默认情况下,CPU使用“神”转换,而GPU使用“BoxMuller”的算法“Threefry”发电机。CPU和GPU支持的唯一转换方法是金宝app“反转”变换。

可在GPU上修改转换方式parallel.gpu.RandStream

输入参数

全部折叠

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

例子:gpurng (7)

随机数生成器,指定为字符向量或字符串,用于任何支持多个流和子流的有效随机数生成器。金宝appGPU支持三种随机数生成算法。金宝app

关键字 发电机 多流和子流支持金宝app 全精度近似周期
“Threefry”“Threefry4x64_20” 三炸4x64发电机,20发子弹 是的 2514(2256长度为2的溪流258
“Philox”“Philox4x32_10” Philox 4x32发电机,10发子弹 是的 2193(264长度为2的溪流129
“CombRecursive”“mrg32k3a” 组合多递归发生器 是的 2191(263长度为2的溪流127

默认生成器为Threefry

有关在GPU和CPU上生成随机数的区别的更多信息,请参见控制工人上的随机数流

例子:gpurng (0, ' Philox ')

先前的随机数生成器状态,指定为先前使用创建的结构S = gpurng

例子:S = gpurng捕获随机数生成器的当前状态gpurng (S)将生成器恢复到这些设置。

数据类型:结构体

输出参数

全部折叠

随机数生成器状态,作为带有字段的结构返回“类型”“种子”,“状态”

例子:S = gpurng捕获随机数生成器的当前状态gpurng (S)将生成器恢复到这些设置。

数据类型:结构体

版本历史

在R2011b中介绍

全部展开

R2019a的行为发生了变化

在R2018a中,行为发生了变化