GSL手册推荐Mersenne Twister.
Mersenne Twister的作者有一个Nvidia GPU的版本.我考虑将此移植到R包gputools但发现我需要过多的绘制(数百万,我认为)之前'生成GPU并使R可用'的组合比仅仅绘制R更快(仅使用R) CPU).
它实际上是一种计算/通信权衡.
我的同事和我有一个预印本,出现在SC11会议上,重新审视了一种替代技术,用于生成非常适合GPU的随机数.这个想法是第n个随机数是:
x_n = f(n)
Run Code Online (Sandbox Code Playgroud)
与传统方法相比
x_n = f(x_{n-1})
Run Code Online (Sandbox Code Playgroud)
源代码可用,它实现了几个不同的生成器.提供2 ^ 64或更多的流,每个流的周期为2 ^ 128或更多.所有这些都通过了各种各样的测试(TestU01 Crush和BigCrush套件),包括流内和流间统计独立性.该库还包括允许您在GSL框架中使用我们的生成器的适配器.
GPU所需的大规模并行随机生成是一个难题.这是一个活跃的研究课题.你必须要小心,不仅要有一个好的顺序随机生成器(这些你在文献中找到),而是要保证它们是独立的.成对独立性不足以进行良好的蒙特卡罗模拟.AFAIK没有好的公共域代码.