Hello, I have also a question on the order of using the Host API of Sobol sequence.
My question is now I need to use different Gaussian random sequence. I want to use QMC, so I need different Sobol sequences (let’s say 10). I follow toolkit documentation and it says:
"
32 and 64 bit SOBOL and Scrambled SOBOL quasirandom generators
CURAND_ORDERING_QUASI_DEFAULT
When generating n results in d dimensions, the output will consist of n / d results from dimension 1, followed by n / d results from dimension 2, and so on up to dimension d . Only exact multiples of the dimension size may be generated. The dimension parameter d is set with curandSetQuasiRandomGeneratorDimensions() and defaults to 1.
"
Here, if I use
float*hostData;
hostData = (float *)calloc(n,sizeof(float));
curandCreateGeneratorHost(&gen,CURAND_RNG_QUASI_SOBOL32);
curandSetQuasiRandomGeneratorDimensions(gen,10);
curandGenerateNormal(gen,hostData,1000,0,1);
Finally in hostData, I am confused which sequence I get
(1) (hostData[1],…,hostData[100]), (hostData[101],…,hostData[200]),…,(hostData[991],…,hostData[1000])
where
(hostData[1],…,hostData[100]) is Gaussian sequence transferred by Sobol sequence in dim 1
(hostData[101],…,hostData[200]) is Gaussian sequence transferred by Sobol sequence in dim 2
and so on
or I get
(2) (hostData[1],…,hostData[1000]) is Gaussian sequence, and transferred by
({Sobol_1[1], Sobol_1[2],…,Sobol_1[100]} , {Sobol_2[1],Sobol_2[2],…,Sobol_2[100]},…,{Sobol_100[1],Sobol_100[2],…,Sobol_100[100]})
where Sobol_i[j] is the j-th elements of the i-dimensional Sobol sequence.