cuRAND

Provides pseudo-random number generator (PRNG) and quasi-random generator (QRNG). See NVIDIA cuRAND.

class PRNG

class accelerate.cuda.rand.PRNG(*args, **kws)

cuRAND pseudo random number generator

Parameters:
  • rndtype – Algorithm type. All possible values are listed as class attributes of this class, e.g. TEST, DEFAULT, XORWOW, MRG32K3A, MTGP32.
  • seed – Seed for the RNG.
  • offset – Offset to the random number stream.
  • stream – CUDA stream.

Example:

>>> from accelerate.cuda import rand
>>> from numpy import empty
>>> prng = rand.PRNG(rndtype=rand.PRNG.XORWOW)
>>> r = empty(10)
>>> prng.uniform(r)
>>> r
array([ ... ])
lognormal(ary, mean, sigma, size=None)
Generate floating point random number sampled
from a log-normal distribution and fill into ary.
Parameters:
  • ary – Numpy array or cuda device array.
  • mean – Center of the distribution.
  • sigma – Standard deviation of the distribution.
  • size – Number of samples. Default to array size.
normal(ary, mean, sigma, size=None)

Generate floating point random number sampled from a normal distribution and fill into ary.

Parameters:
  • ary – Numpy array or cuda device array.
  • mean – Center of the distribution.
  • sigma – Standard deviation of the distribution.
  • size – Number of samples. Default to array size.
poisson(ary, lmbd, size=None)

Generate floating point random number sampled from a poisson distribution and fill into ary.

Parameters:
  • ary – Numpy array or cuda device array.
  • lmbda – Lambda for the distribution.
  • size – Number of samples. Default to array size.
seed

Mutatable attribute for the seed for the RNG

stream

Associate a CUDA stream to the generator object. All subsequent calls will use this stream.

uniform(ary, size=None)
Generate floating point random number sampled
from a uniform distribution and fill into ary.
Parameters:
  • ary – Numpy array or cuda device array.
  • size – Number of samples. Default to array size.

class QRNG

class accelerate.cuda.rand.QRNG(*args, **kws)

cuRAND quasi random number generator

Parameters:
  • rndtype – Algorithm type. Also control output data type. All possible values are listed as class attributes of this class, e.g. TEST, DEFAULT, SOBOL32, SCRAMBLED_SOBOL32, SOBOL64, SCRAMABLED_SOBOL64.
  • ndim – Number of dimension for the QRNG.
  • offset – Offset to the random number stream.
  • stream – CUDA stream.
generate(ary, size=None)

Generate quasi random number in ary.

Parameters:
  • ary – Numpy array or cuda device array.
  • size – Number of samples; Default to array size. Must be multiple of ndim.
ndim

Mutatable attribute for number of dimension for the QRNG.

stream

Associate a CUDA stream to the generator object. All subsequent calls will use this stream.

Top Level PRNG Functions

Simple interface to the PRNG methods.

Note

This methods automatically create a PRNG object.

accelerate.cuda.rand.uniform(size, dtype=<type 'float'>, device=False)

Generate floating point random number sampled from a uniform distribution

Parameters:
  • size – Number of samples.
  • dtype – np.float32 or np.float64.
  • device – Set to True to return a device array instead or numpy array.
Returns:

A numpy array or a device array.

>>> from accelerate.cuda import rand
>>> rand.uniform(size=10)
array([...])
accelerate.cuda.rand.normal(mean, sigma, size, dtype=<type 'float'>, device=False)

Generate floating point random number sampled from a normal distribution

Parameters:
  • mean – Center point of the distribution.
  • sigma – Standard deviation of the distribution.
  • size – — Number of samples.
  • dtype – np.float32 or np.float64.
  • device – Set to True to return a device array instead or ndarray.
Returns:

A numpy array or a device array.

>>> from accelerate.cuda import rand
>>> rand.normal(mean=0, sigma=1, size=10)
array([...])
accelerate.cuda.rand.lognormal(mean, sigma, size, dtype=<type 'float'>, device=False)

Generate floating point random number sampled from a log-normal distribution.

Parameters:
  • mean – Center point of the distribution.
  • sigma – Standard deviation of the distribution.
  • size – Number of samples.
  • dtype – np.float32 or np.float64.
  • device – set to True to return a device array instead or ndarray.
Returns:

A numpy array or a device array.

>>> from accelerate.cuda import rand
>>> rand.lognormal(mean=0, sigma=1, size=10)
array([...])
accelerate.cuda.rand.poisson(lmbd, size, device=False)

Generate int32 random number sampled from a poisson distribution.

Parameters:
  • lmbda – Lambda of the distribution.
  • size – Number of samples
  • device – Set to True to return a device array instead or ndarray.
Returns:

A numpy array or a device array.

>>> from accelerate.cuda import rand
>>> rand.poisson(lmbd=1, size=10)
array([...], dtype=uint32)

Top Level QRNG Functions

Simple interface to the QRNG methods.

Note

This methods automatically create a QRNG object.

accelerate.cuda.rand.quasi(size, bits=32, nd=1, device=False)

Generate quasi random number using SOBOL{bits} RNG type.

Parameters:
  • size – Number of samples.
  • bits – Bit length of output element; e.g. 32 or 64.
  • nd – Number of dimension .
  • device – Set to True to return a device array instead or ndarray.
Returns:

A numpy array or a device array.

>>> from accelerate.cuda import rand
>>> rand.quasi(10)
array([...], dtype=uint32)