next up previous contents
Next: Feynman-Kac plugin description Up: Example: Feynman Kac plugin Previous: Example: Feynman Kac plugin   Contents

Seed management

An important fundament of science is to guarantee reproducibility of results. However, the Gnutella system does not allow providing nodes with different initial parameters; all packets addressed to the nodes contain the same command string. Therefore, it is not possible to pass a different, initial seed for the pseudo-random generator [19] to the nodes. Assuming it would be possible to pass different initial seeds to the nodes, reproducibility of results would be ensured by passing the same seeds to the same nodes each time.

GPU solves the issue as follows: each time a new GPU is installed and executed for the first time, the standard Delphi generator is seeded with the clock (with millisecond resolution) and date. Using this random generator, a seed file with 256 words is generated and stored in a file, once. Each new GPU gets in this way another seed file with high probability, unless they are installed on the same millisecond.

ISAAC[19] is a powerful pseudo-random generator implemented in
isaacrnd.dll by Sebastian Sauvage. ISAAC loads the 256 words previously stored by the standard Delphi-generator to initialize itself. From then on, each node will provide a different sequence of pseudorandom numbers. However, if we restart all GPUs, each machine will regenerate the same sequence.

Reproducibility of results on one machine, not connected to other machines, is therefore guaranteed.

Ensuring reproducibility of results in GPU while running on a network requires more work: we have to ensure all GPUs are started afresh; we have to know the seed file for each node and we have to connect GPUs with each other in the same manner we did before. Consequently, reproducibility of results is theoretically possible, although different operating system load might introduce an additional uncertainty in how jobs spread in the network.


next up previous contents
Next: Feynman-Kac plugin description Up: Example: Feynman Kac plugin Previous: Example: Feynman Kac plugin   Contents
Tiziano Mengotti 2004-03-27