Parallel Random Number Generation Using Thread-Specific Generators
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing parallelized random number generation techniques often result in codependent sequences due to shared random number generators, leading to undesirable overlapping portions and higher failure rates in statistical randomness tests.
Innovation Solution
A system and method for parallelized random number generation where each thread uses a unique random number generator from a collection, allocating tasks to threads to generate independent elements in a sequence, stored in a destination vector, ensuring non-codependent sequences.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If multiple threads share the same random number generator initialized with different seeds, then parallel generation is achieved, but codependent sequences with overlapping portions occur
Solution Approach 1:
The patent divides the sequence generation task into independent segments by allocating different ranges of sequence indices to different threads. Each thread generates random numbers only for its assigned index range using a dedicated random number generator, eliminating overlap and codependency between threads while maintaining parallel execution.
2Reliability
If a collection of random number generators is used to allocate tasks to threads, then codependency is reduced, but device complexity increases
Solution Approach 1:
The patent creates a pool of random number generators that can be dynamically allocated to different threads based on task requirements. Each generator in the pool can serve multiple threads at different times, reducing the total number of generators needed while maintaining sequence independence. The system manages this pool efficiently to provide the necessary independence without proportionally increasing complexity.
Data Source
AI summary
Parallelized generation of random numbers. A vector, in a memory component, is allocated that is configured to store a sequence of random numbers. A first thread of a plurality of threads is assigned to a first random number generator of a plurality of random number generators. A second thread of the plurality of threads is assigned to a second random number generator of the plurality of random number generators. A first random number designated for a first index position in the sequence of random numbers and a second random number designated for a second index position in the sequence of random numbers are generated in parallel by the first and second thread, respectively. The first random number in the first index position of the sequence of random numbers and the second random number in the second index position of the sequence of random numbers are stored in the allocated vector.


