【发布时间】:2015-07-07 00:58:52
【问题描述】:
我对 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 函数应该在每次启动时改变,对吧?
【问题讨论】:
-
每次启动每个线程时都使用相同的种子,即其线程 ID。你怎么能期望序列不同?
-
其实我每次都想利用时间设置一个新的种子,但是我不确定这个解决方案