Archived: 30 January 2004
University of Adelaide Honours thesis, November 2003.
Supervisor: Paul Coddington
Scientific computing has long been pushing the boundaries of computational requirements in computer science. An important aspect of scientific computing is the generation of large quantities of random numbers, especially in parallel to take advantage of parallel architectures. Many science and engineering programs require random numbers for applications like Monte Carlo simulation. Such an environment suitable for parallel computing is Java, though rarely used for scientific applications due to its perceived slowness when compared to complied languages like C. Through research and recommendations, Java is slowly being shaped into a viable language for such computational intense applications. Java has the potential for such large scale applications, since it is a modern language with a large programmer base and many well received features such as built-in support for parallelism using threads. With improved performance from better compilers, Java is becoming more commonly used for scientific computing but Java still lacks a number of features like optimised scientific software libraries. This project looks at the effectiveness and efficiency of implementing a parallel random number library in Java using threads, and explores the options for creating a high-quality parallel generator. The parallel random number generator library extends the current java.util.Random to add features, like generator selection, and has been implemented as a set of high-quality generators that can be used sequentially or in parallel without requiring synchronisation. The implementation is efficient with a selection of tests verifying both efficiency and effectiveness. This project has a viable parallel Random API implementation that can be used in parallel scientific applications efficiently and effectively, unlike the current standard Java random generators.
Postscript version (gzip compressed)