gpt4 book ai didi

随机生成器和 CUDA

转载 作者:行者123 更新时间:2023-12-01 02:27:25 24 4
gpt4 key购买 nike

我有一个关于 CUDA 中的随机生成器的问题。我正在使用 Curand 通过以下代码生成随机数:

__device__ float priceValue(int threadid){

unsigned int seed = threadid ;
curandState s;
curand_init (seed , 0, 0, &s);

float randomWalk = 2;
while (abs(randomWalk)> 1) {
randomWalk = curand_normal(&s);
}
return randomWalk;
}

我曾多次尝试重新启动此代码,但输出始终相同。我找不到这段代码有什么问题。线程提供相同的 ID,但 curand_normal 函数应该在每次启动时更改,对吗?

最佳答案

每次您要求随机值时,您都在运行 init。相反,您应该在代码开头的单独内核中运行一次 curand_init()。然后当你想要一个新的随机值时,只需调用 curand_normal() 。然后每次调用设备函数时这些值都会改变。

有关示例,请参阅我的回答 here

如果你想使用时间作为种子而不是线程 ID,那么传递 the value 返回的 clock() 或任何你最喜欢的时间函数:

unsigned int seed = (unsigned int) clock64();

关于随机生成器和 CUDA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15297168/

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