我正在使用 CURAND 生成随机数。我创建了一个curandGenerator_t
来填充大约 3600 万个随机数的 3 个数组。这些数组中的每一个都有不同的种子。数字生成或多或少在一个循环内完成,如下所示:
curandGenerator_t randGenerator;
curandCreateGenerator(&randGenerator, CURAND_RNG_PSEUDO_DEFAULT);
for(i = 0; i < 100; i++)
{
curandSetStream(randGenerator, stream[0]);
curandSetPseudoRandomGeneratorSeed(randGenerator, seed[0]);
curandGenerateUniformDouble(randGenerator, d_rv0, N);
curandSetStream(randGenerator, stream[1]);
curandSetPseudoRandomGeneratorSeed(randGenerator, seed[1]);
curandGenerateUniformDouble(randGenerator, d_rv1, N);
curandSetStream(randGenerator, stream[2]);
curandSetPseudoRandomGeneratorSeed(randGenerator, seed[2]);
curandGenerateUniformDouble(randGenerator, d_rv2, N);
}
它工作得很好,因为我得到的结果是预期的,但是在分析应用程序后,我意识到在循环的一些迭代之后,随机数的生成变得更慢。在下图中,蓝绿色项目从 100 毫秒变为 1 秒。
有人可以解释这是否是随机数生成的正常行为吗?
我用三种不同的种子和只有一个 curandGenerator 生成随机数是否做错了?