主要内容

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

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

nGPU = randn(1,1000,“gpuArray”);nCPU = randn(1,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中引入