Генерация случайных чисел с помощью pyCUDA - PullRequest
1 голос
/ 20 марта 2019

Я хочу создать случайные числа с 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 написано, что

класс pycuda.curandom.XORWOWRandomNumberGenerator(seed_getter=None, offset=0)

Параметры :

seed_getter - функция, которая, учитывая целое число, даст int32 GPUArray из семян.

offset - Начальный индекс в последовательности XORWOW с заданным начальным числом.

Что является примером функции seed_getter?

1 Ответ

2 голосов
/ 20 марта 2019

Модуль curandom имеет две встроенные функции для генерации случайных начальных чисел:

  1. seed_getter_uniform, который вернет длину массива N, инициализированную одним случайным начальным числом, и
  2. seed_getter_unique, который вернет массив, инициализированный N различными случайными начальными числами.

Используйте один или другой в зависимости от того, хотите ли вы, чтобы все экземпляры внутреннего генератора использовали одно и то же или уникальное начальное число.

...