使用 pyCUDA 生成随机数

Random number generation with pyCUDA

我想用pyCUDA生成随机数。

为此,我使用了以下代码,我在 Kaggle 虚拟机上 运行:

import numpy           as np
import time

import pycuda.gpuarray as     gpuarray
import pycuda.driver   as     cuda
import pycuda.autoinit
from pycuda.compiler   import SourceModule

N = 10

from pycuda.curandom import XORWOWRandomNumberGenerator
rng   = XORWOWRandomNumberGenerator()
d_x   = rng.gen_uniform((N,), dtype = np.float32)

我的问题是如何为随机数生成器提供种子。

pyCUDA documentation page,它说

class pycuda.curandom.XORWOWRandomNumberGenerator(seed_getter=None, offset=0)

Parameters:

seed_getter – a function that, given an integer count, will yield an int32 GPUArray of seeds.

offset – Starting index into the XORWOW sequence, given seed.

seed_getter函数的例子是什么?

curandom 模块有两个用于生成随机种子的内置函数:

  1. seed_getter_uniform 将 return 长度为 N 的数组用单个随机种子初始化,并且
  2. seed_getter_unique 这将 return 一个用 N 个不同的随机种子初始化的数组。

根据您是希望所有内部生成器实例使用相同种子还是唯一种子来使用其中之一。