TaskLocalRandom: A Statistically Sound Substitute to Pseudorandom Number Generation in Parallel Java Tasks Frameworks
Résumé
Several software efforts have been produced over the past few years in various
programming languages to help developers handle pseudorandom streams partitioning. Parallel
and Distributed Stochastic Simulations (PDSS) can obviously benefit from this kind of high-level
tools. The latest release of the Java Development Kit (JDK 7) tries to tackle this problem by
providing facilities to partition a pseudorandom stream across various threads thanks to the new
class ThreadLocalRandom. Meanwhile, Java 7 offers a framework to split a problem in a divide and
conquer way through the new class called ForkJoinPool. As any other Java Thread Pool, ForkJoin
exploits threads as workers and manipulates the tasks that will be run on the workers. In Thread-
LocalRandom, pseudorandom number generation is handled at a thread level. As a consequence,
a scientific application taking advantage of a Java Thread Pool to parallelize its computation may
suffer from a bad pseudorandom stream partitioning due to the behaviour of ThreadLocalRandom.
The present work introduces TaskLocalRandom, a task-level alternative to ThreadLocalRandom
that solves this partitioning problem and assigns an independent pseudorandom stream to each
task run in the thread pool. TaskLocalRandom is compatible with existing Java thread pools such
as Executors or ForkJoin.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...