gpt4 book ai didi

random - 在 CURAND 中播种 QUASI_SCRAMBLED_SOBOL64

转载 作者:行者123 更新时间:2023-12-05 03:13:00 25 4
gpt4 key购买 nike

如何为 CURAND_RNG_QUASI_SCRAMBLED_SOBOL64 生成器播种?因为它每次运行时都会给我相同的数字,而且我不能使用 curandSetPseudoRandomGeneratorSeedCURAND_RNG_QUASI_SCRAMBLED_SOBOL64 来生成 64 位随机整数和 curandGenerateLongLong .

我将如何在以下代码中播种生成器?

size_t n = 10;
curandGenerator_t gen;
unsigned long long *devData, *hostData;

hostData = (unsigned long long *)calloc(n, sizeof(unsigned long long));

cudaMalloc(&devData, n*sizeof(unsigned long long));
curandCreateGenerator(&gen, curandRngType_t::CURAND_RNG_QUASI_SCRAMBLED_SOBOL64);

for (size_t j = 0; j < 3; j++)
{
curandGenerateLongLong(gen, devData, n);
cudaMemcpy(hostData, devData, n * sizeof(unsigned long long), cudaMemcpyDeviceToHost);
for (size_t i = 0; i < 3; i++) {
printf("%llx\n", hostData[i]);
}
printf("\n\n");
}

curandDestroyGenerator(gen);
cudaFree(devData);
free(hostData);

最佳答案

根据 documentation ,准随机生成器,如您正在使用的 SOBOL 生成器,不使用种子。他们使用偏移量和维度向量来初始化生成器。

所以你代码中的初始化序列应该是这样的

curandCreateGenerator(&gen, curandRngType_t::CURAND_RNG_QUASI_SCRAMBLED_SOBOL64);
curandSetGeneratorOffset (gen, std::time(0));
curandSetQuasiRandomGeneratorDimensions(gen, 10);

关于random - 在 CURAND 中播种 QUASI_SCRAMBLED_SOBOL64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31488100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com