主要内容

gpurng

用于GPU计算的控制随机数生成

描述

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

gpurng(“洗牌”)根据当前时间设置随机数生成器的种子,以便兰德兰迪,randn每次呼叫后生成不同的数字序列gpurng

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

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

年代= gpurng返回随机数生成器的当前状态,作为带有字段“类型”、“种子”和“状态”的结构。使用此结构将随机数生成器在稍后的时间恢复到捕获的设置gpurng (年代

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

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

例子

全部折叠

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

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

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

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

GPUdef = gpurng
GPUdef =结构体字段:类型:'threefry' Seed: 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 =兰德(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 (1000,“gpuArray”);nCPU = randn (1000);图保存直方图(nGPU)直方图(nCPU)传说(“图形”“CPU”)标题(“正态分布随机数”)包含(“价值”) ylabel (“数”)举行

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

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

可通过图形处理器修改转换方式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)将生成器恢复到这些设置。

数据类型:结构体

兼容性的考虑

全部展开

行为在R2019a中改变

R2018a中行为改变

介绍了R2011b