使用pyCUDA生成随机数

时间:2019-03-20 10:32:17

标签: cuda 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上说

  

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

     

参数

     

seed_getter –给定一个   整数,将产生int32个GPUArray的种子。

     

offset –   给定种子,进入XORWOW序列的起始索引。

seed_getter函数的示例是什么?

1 个答案:

答案 0 :(得分:2)

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

  1. seed_getter_uniform,它将返回使用单个随机种子初始化的数组长度N,以及
  2. seed_getter_unique,它将返回以N个不同的随机种子初始化的数组。

根据您希望所有内部生成器实例使用相同的种子还是唯一的种子来使用一个或另一个。