主要内容

GPU上的随机数流

缺省情况下,随机数生成函数兰德兰迪,randn在GPU上使用不同的生成器设置来进行计算。您可以改变随机数生成器的行为,以在GPU和CPU上生成可重复的随机数序列。

下表总结了客户端和worker MATLAB上的GPU和CPU的默认设置®届:

发电机 种子 正常的变换
客户端CPU “旋风”“mt19937ar” 0 “神”
工人CPU “Threefry”“Threefry4x64_20” 0 “反转”
GPU(在客户端或worker上) “Threefry”“Threefry4x64_20” 0 “BoxMuller”

在大多数情况下,GPU上的默认随机数生成器与客户端或worker CPU上的默认生成器不一样并不重要。然而,如果你需要在GPU和CPU上复制相同的结果,你可以相应地设置生成器。

客户端CPU和GPU

在一个新的MATLAB会话中,MATLAB在CPU和GPU上生成不同序列的随机数。

Rc =兰德(1、4)
Rc = 0.8147 0.9058 0.1270 0.9134
Rg =兰德(1,4,“gpuArray”
Rg = 0.3640 0.5421 0.6543 0.7436

如果您需要在GPU和CPU上生成相同的随机数序列,您可以设置生成器设置来匹配。

GPU上有三种随机数生成器算法:“Threefry”“Philox”,“CombRecursive”.CPU支持所有功金宝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

您可以使用rnggpurng,分别在CPU和GPU上设置生成器算法和种子。

sc = rng (1,“Threefry”);Rc =兰德(1、4)
Rc = 0.1404 0.8197 0.1073 0.4131
sg = gpurng (1,“Threefry”);Rg =兰德(1,4,“gpuArray”
Rg = 0.1404 0.8197 0.1073 0.4131

兰德兰迪现在在客户端CPU和GPU上生成相同的随机数序列。

Worker CPU和GPU

一个并行工作CPU使用相同的默认随机数生成器类型和种子作为客户端GPU和工作GPU,如果它有一个。GPU和CPU不共享流。默认情况下,兰德兰迪在GPU和worker CPU上生成相同的数字序列。

与客户端CPU设置不一致。有关更多信息,请参见控制工人上的随机数流

如果您需要在每个worker上生成不同的随机数,您可以更改生成器设置。在这个例子中,每个worker在其GPU和CPU上创建相同的序列,但在每个worker上生成不同的序列。

p = parpool (2);spmdrng (labindex“Threefry”);rrc = rand(1,4) gpurng(labindex,)“Threefry”);Rg =兰德(1,4,“gpuArray”结束删除(p)

正态分布随机数

为正态分布随机数创建randn函数时,MATLAB在客户端CPU、工作CPU和GPU上产生不同的结果。均匀随机数转化为正态分布随机数是由NormalTransform设置。你可以在GPU上使用parallel.gpu.RandStream

在客户端CPU上,默认“NormalTransform”设置是“神”.在worker CPU上,默认设置为“反转”

除非另有说明,GPU代码使用“BoxMuller”变换的“Threefry”“Philox”发电机和“反转”变换的“CombRecursive”发电机。

你可以在CPU和GPU上设置相同的生成器和转换来获得相同的效果randn序列。CPU和GPU都支持的唯一转换是金宝app“反转”变换。

sc = RandStream (“Threefry”“NormalTransform”“反转”“种子”1);sg = parallel.gpu.RandStream(“Threefry”“NormalTransform”“反转”“种子”1);parallel.gpu.RandStream.setGlobalStream (sg);Rc = randn(1、4)
Rc = -1.0783 0.9144 -1.2412 -0.2196
Rg = randn (1, 4,“gpuArray”
Rg = -1.0783 0.9144 -1.2412 -0.2196

另请参阅

|||

相关的话题