CUDA 产生随机数的方法

请问一下版主,CUDA编程中有没有效率比较高的随机数产生方法??

请参考cuRand库,用于产生随机数的!

楼主您好:

我推荐您使用curand。curand是基于xorshift的高质量和高性能随机数发生器。成熟,业界在大量使用。我建议您直接使用它。

此外,如果您要自己写,可能效率高过curand, 但一般情况下,高性能和高质量是成反比的。请您注意了。

感谢来访。

谢谢版主的回答,我去试试

请问有没有能在kernel里面可以直接调用的随机函数?
比如:
global void RandFill(float * s)
{
int i = blockDim.x * blockIdx.x + threadIdx.x;
s[i]=rand()/(RAND_MAX+1)>0.2?0:1;
}
rand()并不能在kernel里工作,但是有没有类似功能的库可以实现?

s[i]的括号i没有显示出来。。

rheet您好:

curand library提供了device端的函数,您可以直接在kernel中使用。

同时curand library也提供了host端的函数,您可以用host端的函数生成一批所需要的随机数存放在global memory中,然后被您的kernel函数读入并使用。

详情请参阅curand library的手册。

祝您编码顺利~

已解决,感谢版主回复~

不客气的,欢迎您常来~