请问一下版主,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的手册。
祝您编码顺利~
已解决,感谢版主回复~
不客气的,欢迎您常来~