I am trying to solve numerically a huge group of stochastic differential equations. Each equation has its own stochastic term, a brownian, which is totally independent of the others.
For doing this I need to run several monte carlo simulations and afterwards join the results. Each thread each calculating the value for one equation.
For generating the random numbers I am using curand, with just one seed and different sequence numbers for each thread. The curand guide says: “Sequences generated with the same seed and different sequence numbers will not have statistically correlated values.”
This is not really happening as I am running some test using the device API and the correlations can reach values up to 0.3. I attach an image with a graph where the vertical axis shows correlation values and the horizontal axis has the number of the trial.
In each trial instead of solving the equation I just returned a random number generated the way I wrote before. I run 100 simulations, and computed the correlations. As at each time steps random numbers where returned the correlation of this values should show the correlations in the generator.
The value that the correlation is giving me is quite high, at least higher than what I need.
Does anyone knows a good way of generating uncorrelated random numbers in CUDA?
For example, using python and numpy, I can make something like np.random.multivariate_normal(noise_mean,noise_covariance,n_steps) to generate all the random number needed. If in the covariance I put 0 everywhere except in the diagonal I can get uncorrelated random numbers.
Thanks in advance for your help and comments