CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-cupy-rocm-4-3

CuPy: NumPy & SciPy for GPU - A NumPy/SciPy-compatible array library for GPU-accelerated computing with Python, specifically built for AMD ROCm 4.3 platform

Pending
Overview
Eval results
Files

random.mddocs/

Random Number Generation

GPU-accelerated random number generation supporting multiple probability distributions and random number generators. Provides both legacy RandomState interface and modern numpy-compatible Generator interface with high-performance GPU implementations.

Capabilities

Random Number Generators

Core random number generator classes and state management.

class RandomState:
    """
    Legacy random number generator for backward compatibility.
    
    Parameters:
    - seed: int or None, random seed
    """
    def __init__(self, seed=None): ...
    
    def seed(self, seed=None):
        """Initialize random number generator state."""
    
    def get_state(self):
        """Return current random number generator state."""
    
    def set_state(self, state):
        """Set random number generator state."""

class Generator:
    """
    Modern random number generator with improved algorithms.
    
    Parameters:
    - bit_generator: BitGenerator instance
    """
    def __init__(self, bit_generator): ...

class BitGenerator:
    """Base class for bit generators used by Generator."""

class XORWOW(BitGenerator):
    """XORWOW bit generator (CuPy default)."""

class MRG32k3a(BitGenerator):
    """MRG32k3a bit generator for high-quality randomness."""

class Philox4x3210(BitGenerator):  
    """Philox 4x32x10 counter-based bit generator."""

def default_rng(seed=None):
    """
    Create default random number generator.
    
    Parameters:
    - seed: int or None, random seed
    
    Returns:
    cupy.random.Generator: Random number generator instance
    """

def get_random_state():
    """Get global RandomState instance."""

def set_random_state(rs):
    """Set global RandomState instance."""

def seed(seed=None):
    """Set random seed for global RandomState."""

def reset_states():
    """Reset all random number generator states."""

Simple Random Data

Basic random number generation functions.

def random(size=None):
    """
    Generate random floats in [0.0, 1.0).
    
    Parameters:
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Random floats
    """

def rand(*args):
    """
    Generate random floats in [0.0, 1.0) with given shape.
    
    Parameters:
    - args: ints, dimensions of output array
    
    Returns:
    cupy.ndarray: Random floats with shape args
    """

def randn(*args):
    """
    Generate samples from standard normal distribution.
    
    Parameters:
    - args: ints, dimensions of output array
    
    Returns:
    cupy.ndarray: Standard normal random numbers
    """

def randint(low, high=None, size=None, dtype=int):
    """
    Generate random integers from low (inclusive) to high (exclusive).
    
    Parameters:
    - low: int, lowest (signed) integer to draw, or highest if high=None
    - high: int or None, highest (signed) integer to draw
    - size: int or tuple, output shape
    - dtype: data type, output data type
    
    Returns:
    cupy.ndarray: Random integers
    """

def random_sample(size=None):
    """Generate random floats in [0.0, 1.0) (alias for random)."""

def ranf(size=None):
    """Generate random floats in [0.0, 1.0) (alias for random)."""

def sample(size=None):
    """Generate random floats in [0.0, 1.0) (alias for random)."""

def choice(a, size=None, replace=True, p=None):
    """
    Generate random sample from array.
    
    Parameters:
    - a: array-like or int, if int, equivalent to arange(a)
    - size: int or tuple, output shape
    - replace: bool, whether sampling is with replacement
    - p: array-like, probabilities for each element (must sum to 1)
    
    Returns:
    cupy.ndarray: Random samples from a
    """

def bytes(length):
    """
    Generate random bytes (NumPy wrapper).
    
    Parameters:
    - length: int, number of bytes
    
    Returns:
    bytes: Random byte string
    """

Discrete Distributions

Random sampling from discrete probability distributions.

def binomial(n, p, size=None):
    """
    Draw samples from binomial distribution.
    
    Parameters:
    - n: int or array-like, number of trials
    - p: float or array-like, probability of success in each trial
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from binomial distribution
    """

def geometric(p, size=None):
    """
    Draw samples from geometric distribution.
    
    Parameters:
    - p: float or array-like, probability of success
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from geometric distribution
    """

def hypergeometric(ngood, nbad, nsample, size=None):
    """
    Draw samples from hypergeometric distribution.
    
    Parameters:
    - ngood: int or array-like, number of good items
    - nbad: int or array-like, number of bad items  
    - nsample: int or array-like, number of items sampled
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from hypergeometric distribution
    """

def negative_binomial(n, p, size=None):
    """Draw samples from negative binomial distribution."""

def poisson(lam=1.0, size=None):
    """
    Draw samples from Poisson distribution.
    
    Parameters:
    - lam: float or array-like, expected number of events
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from Poisson distribution
    """

def power(a, size=None):
    """Draw samples from power distribution."""

def zipf(a, size=None):
    """Draw samples from Zipf distribution."""

def logseries(p, size=None):
    """Draw samples from logarithmic series distribution."""

def multinomial(n, pvals, size=None):
    """
    Draw samples from multinomial distribution.
    
    Parameters:
    - n: int, number of trials
    - pvals: sequence of floats, probabilities (must sum to 1)
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from multinomial distribution
    """

Continuous Distributions

Random sampling from continuous probability distributions.

def normal(loc=0.0, scale=1.0, size=None):
    """
    Draw samples from normal (Gaussian) distribution.
    
    Parameters:
    - loc: float or array-like, mean of distribution
    - scale: float or array-like, standard deviation  
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from normal distribution
    """

def uniform(low=0.0, high=1.0, size=None):
    """
    Draw samples from uniform distribution.
    
    Parameters:
    - low: float or array-like, lower boundary
    - high: float or array-like, upper boundary
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from uniform distribution
    """

def exponential(scale=1.0, size=None):
    """
    Draw samples from exponential distribution.
    
    Parameters:
    - scale: float or array-like, scale parameter (1/rate)
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from exponential distribution
    """

def gamma(shape, scale=1.0, size=None):
    """
    Draw samples from gamma distribution.
    
    Parameters:
    - shape: float or array-like, shape parameter
    - scale: float or array-like, scale parameter
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from gamma distribution
    """

def beta(a, b, size=None):
    """
    Draw samples from beta distribution.
    
    Parameters:
    - a: float or array-like, alpha parameter
    - b: float or array-like, beta parameter
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from beta distribution
    """

def chisquare(df, size=None):
    """Draw samples from chi-square distribution."""

def f(dfnum, dfden, size=None):
    """Draw samples from F distribution."""

def lognormal(mean=0.0, sigma=1.0, size=None):
    """Draw samples from log-normal distribution."""

def laplace(loc=0.0, scale=1.0, size=None):
    """Draw samples from Laplace distribution."""

def logistic(loc=0.0, scale=1.0, size=None):
    """Draw samples from logistic distribution."""

def pareto(a, size=None):
    """Draw samples from Pareto distribution."""

def rayleigh(scale=1.0, size=None):
    """Draw samples from Rayleigh distribution."""

def standard_cauchy(size=None):
    """Draw samples from standard Cauchy distribution."""

def standard_exponential(size=None):
    """Draw samples from standard exponential distribution."""

def standard_gamma(shape, size=None):
    """Draw samples from standard gamma distribution."""

def standard_normal(size=None):
    """Draw samples from standard normal distribution."""

def standard_t(df, size=None):
    """Draw samples from Student's t distribution."""

def triangular(left, mode, right, size=None):
    """
    Draw samples from triangular distribution.
    
    Parameters:
    - left: float or array-like, lower limit
    - mode: float or array-like, mode value
    - right: float or array-like, upper limit
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from triangular distribution
    """

def vonmises(mu, kappa, size=None):
    """Draw samples from von Mises distribution."""

def wald(mean, scale, size=None):
    """Draw samples from Wald (inverse Gaussian) distribution."""

def weibull(a, size=None):
    """Draw samples from Weibull distribution."""

def gumbel(loc=0.0, scale=1.0, size=None):
    """Draw samples from Gumbel distribution."""

def noncentral_chisquare(df, nonc, size=None):
    """Draw samples from noncentral chi-square distribution."""

def noncentral_f(dfnum, dfden, nonc, size=None):
    """Draw samples from noncentral F distribution."""

Multivariate Distributions

Random sampling from multivariate probability distributions.

def multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8):
    """
    Draw samples from multivariate normal distribution.
    
    Parameters:
    - mean: array-like, mean of distribution (N,)
    - cov: array-like, covariance matrix (N, N)
    - size: int or tuple, output shape
    - check_valid: {'warn', 'raise', 'ignore'}, behavior for invalid covariance
    - tol: float, tolerance for checking covariance matrix
    
    Returns:
    cupy.ndarray: Samples from multivariate normal (..., N)
    """

def dirichlet(alpha, size=None):
    """
    Draw samples from Dirichlet distribution.
    
    Parameters:
    - alpha: array-like, concentration parameters
    - size: int or tuple, output shape
    
    Returns:
    cupy.ndarray: Samples from Dirichlet distribution
    """

Permutations

Functions for shuffling and permuting arrays.

def shuffle(x):
    """
    Modify sequence by shuffling contents in-place.
    
    Parameters:
    - x: cupy.ndarray, array to shuffle along first axis
    
    Returns:
    None: Modifies x in-place
    """

def permutation(x):
    """
    Return random permutation of sequence or range.
    
    Parameters:
    - x: int or array-like, if int, permutation of arange(x)
    
    Returns:
    cupy.ndarray: Permuted sequence
    """

Usage Examples

Basic Random Number Generation

import cupy as cp

# Set random seed for reproducibility
cp.random.seed(42)

# Generate basic random arrays
random_floats = cp.random.random((1000, 1000))
random_ints = cp.random.randint(0, 100, size=(500, 500))
normal_data = cp.random.normal(0, 1, size=10000)

# Using the modern Generator interface
rng = cp.random.default_rng(seed=12345)
better_random = rng.random((100, 100))

Statistical Distributions

import cupy as cp

# Sample from various distributions
uniform_samples = cp.random.uniform(-1, 1, size=1000)
exponential_samples = cp.random.exponential(2.0, size=1000)
gamma_samples = cp.random.gamma(2.0, 2.0, size=1000)

# Discrete distributions
binomial_trials = cp.random.binomial(10, 0.3, size=1000)
poisson_events = cp.random.poisson(5.0, size=1000)

# Multivariate normal
mean = cp.array([0, 0])
cov = cp.array([[1, 0.5], [0.5, 1]])
mvn_samples = cp.random.multivariate_normal(mean, cov, size=500)

Advanced Usage

import cupy as cp

# Multiple random number generators
rng1 = cp.random.default_rng(seed=1)
rng2 = cp.random.default_rng(seed=2)

# Independent random streams
stream1_data = rng1.normal(0, 1, size=1000)
stream2_data = rng2.normal(0, 1, size=1000)

# Random choice with probabilities  
categories = cp.array(['A', 'B', 'C', 'D'])
probabilities = cp.array([0.4, 0.3, 0.2, 0.1])
choices = cp.random.choice(4, size=1000, p=probabilities)

# Shuffling arrays
data = cp.arange(100)
cp.random.shuffle(data)  # In-place shuffle

# Permutations
permuted = cp.random.permutation(100)

Performance Considerations

import cupy as cp

# Generate large arrays efficiently
large_random = cp.random.random((10000, 10000))

# Memory pool management with random generation
mempool = cp.get_default_memory_pool()
with mempool:
    random_data = cp.random.normal(0, 1, size=(5000, 5000))
    processed = cp.sin(random_data) + cp.cos(random_data)

Install with Tessl CLI

npx tessl i tessl/pypi-cupy-rocm-4-3

docs

array-creation.md

cuda-integration.md

custom-kernels.md

data-types.md

extended-functionality.md

fft.md

index.md

io-functions.md

linear-algebra.md

logic-functions.md

mathematical-functions.md

polynomial.md

random.md

statistics.md

utilities.md

tile.json