FreeTensor
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | List of all members
freetensor::OpenMPRandomEngine Class Reference

#include <random.h>

Public Types

typedef RNG::result_type result_type
 sub-engines for each thread
 

Public Member Functions

 OpenMPRandomEngine (RNG::result_type seed)
 
 OpenMPRandomEngine (OpenMPRandomEngine &&)=default
 
OpenMPRandomEngineoperator= (OpenMPRandomEngine &&)=default
 
RNG::result_type operator() ()
 
 OpenMPRandomEngine (const OpenMPRandomEngine &)=delete
 
OpenMPRandomEngineoperator= (const OpenMPRandomEngine &)=delete
 

Static Public Member Functions

static constexpr RNG::result_type min ()
 
static constexpr RNG::result_type max ()
 

Detailed Description

Thread-safe random engine for OpenMP threads

Each thread owns its private sub- random engine, and calls to OpenMPRandomEngine is lock-free

For debugging with deterministic psudo random numbers, just ensure two things:

  1. The seed is deterministic
  2. Tasks are distrubuted to threads in a deterministic way (parallel for schedule(static))

Member Typedef Documentation

◆ result_type

sub-engines for each thread

Constructor & Destructor Documentation

◆ OpenMPRandomEngine() [1/3]

freetensor::OpenMPRandomEngine::OpenMPRandomEngine ( RNG::result_type  seed)

Requried by STL, but not enforced in std::uniform_random_bit_generator

◆ OpenMPRandomEngine() [2/3]

freetensor::OpenMPRandomEngine::OpenMPRandomEngine ( const OpenMPRandomEngine )
delete

Disable copy so we won't accidentally repeat some sequences

◆ OpenMPRandomEngine() [3/3]

freetensor::OpenMPRandomEngine::OpenMPRandomEngine ( OpenMPRandomEngine &&  )
default

Member Function Documentation

◆ max()

static constexpr RNG::result_type freetensor::OpenMPRandomEngine::max ( )
inlinestaticconstexpr

◆ min()

static constexpr RNG::result_type freetensor::OpenMPRandomEngine::min ( )
inlinestaticconstexpr

◆ operator()()

OpenMPRandomEngine::RNG::result_type freetensor::OpenMPRandomEngine::operator() ( )

◆ operator=() [1/2]

OpenMPRandomEngine & freetensor::OpenMPRandomEngine::operator= ( const OpenMPRandomEngine )
delete

◆ operator=() [2/2]

OpenMPRandomEngine & freetensor::OpenMPRandomEngine::operator= ( OpenMPRandomEngine &&  )
default

The documentation for this class was generated from the following files: