What algorithm does CURAND use?

What algorithm does the random number generator in the CURAND library use?
I’m just wondering because I’m using a linear feedback shift register RNG in Cuda Fortran, which is a random number generator based on the park-miller minimal standard (the original rng can be found here, but I’ve edited and parallelised it). If the CURAND random number generator is more efficient/better quality, then it might be worth interfacing my fortran code to Cuda C and using CURAND.


The CURAND documentation


says that it is the XORWOW algorithm and cites this paper:


The CURAND documentation indicates that they are using the version of this algorithm with a period of 2**192 - 1. You can actually see the NVIDIA implementation by looking at the curand_init() and curand() functions in curand_kernel.h starting near line 433. (In my version of the toolkit, anyway.)