curand可以在GPU上产生吗?速度快不快?
curand本身就是一个基于CUDA开发的运行在GPU上产生随机数的库,能够产生伪随机和拟随机数。至于速度的问题,要看产生数的规模,GPU适合数量非常大的运算,只有这样才能体现出GPU运算速度快的优势,规模很小的时候甚至比CPU要慢!
curand,顾名思义,显然就是用GPU实现伪随机数的函数。
具体的使用方法分为两种:
1)host端调用,此时分为两种类型,第一型是GPU生成伪随机数,存储于global memory,可以被kernel调用或者copy回host;第二型是CPU生成伪随机数,存储于host memory。第二型和一般的CPU端伪随机数生成函数类似。
2)device端调用,此种方法可以在kernel中立即获取GPU生成的伪随机数,而不需要先存储在global memory中。
值得说明的是,上述两种用法,需要的头文件是不同的。
详情请查阅CUDA自带的curand说明文件CURAND_library.pdf,包括详细使用方法,伪随机数类型选择等。
该文档可以在toolkit目录下找到,也可以在如下网址下载:
http://developer.download.nvidia.com/compute/DevZone/docs/html/CUDALibraries/doc/CURAND_Library.pdf
关于速度快慢,建议LZ结合自己的硬件 ,写段代码测试一下,看看能否满足要求。
嗯,好的,谢谢了大侠