Skip to main content

Parallel Generation

OpenMP Parallelization

# Enable parallel generation
createPRNG(list(
  parallel = TRUE,
  num_threads = 4
))

# Generate large dataset in parallel
large_dataset <- generatePRNG(10000000)

Jump-Ahead for Independent Streams

# Create base generator
createPRNG()

# Jump ahead for independent sequences
jumpAheadPRNG(1000000)

# Now generating from different part of sequence
independent_values <- generatePRNG(1000)

Thread-Safe Generation

library(parallel)

# Parallel generation with mclapply
results <- mclapply(1:4, function(i) {
  createPRNG(list(seed = i))
  values <- generatePRNG(1000)
  cleanupPRNG()
  return(values)
}, mc.cores = 4)

Performance Considerations

  • Use parallel = TRUE for datasets > 100,000 values
  • Thread-local caching reduces contention
  • SIMD vectorization automatically enabled when available
  • Optimal thread count usually equals CPU cores