在 GPU 上进行蒙特卡洛计算的入门教程?

计算科学 matlab 显卡
2021-12-14 17:24:42

MATLAB 的蒙特卡洛模拟有时需要大量的 CPU 使用,在某些情况下可能需要很长时间。MATLAB 提供了一些结构以实现并行处理。但我一直对使用图形卡(GPU)的处理器很感兴趣......

是否有使用 GPU 以在 MATLAB 中执行并行处理的教程?

3个回答

请参阅 MathWorks 示例在 GPU 上计算 Mandelbrot 集,该示例解释了如何使用并行计算工具箱在 GPU 上运行简单的“令人尴尬的并行”作业。

或者,您可能对PyCUDAPyOpenCL项目感兴趣,它们提供了类似的交互启动 GPU 内核的功能。

Nvidia Cuda 和 AMD APP SDK 包含可以帮助您入门的示例代码。过去我已经成功地进行了一些工作,对于简单的实现,性能收益大约是 32 倍。

此处列出的一些参考资料可能是有益的,尽管这是在使用 OpenCL 进行 GPGPU 计算仍处于起步阶段时编写的。与 CPU 相比,还有一些性能指标。

对于伪随机数生成的绝对速度,您可以查看用于 GPU 的 Mersenne Twister (MTGP)此实现仅存在于 CUDA 中,但与通过 OpenCL 相比,它可能更容易使用 GPU。AMD 的 SDK Monte Carlo 示例包含该算法的一个变体,因此您不必拘泥于仅使用 Cuda。最好先确定您的要求,然后选择最合适的语言来执行您的任务。

您可以考虑单独使用它们,或者通过 MEX 文件接口与 MATLAB 连接。

如果您想使用标准马尔可夫链方法,GPU 是蒙特卡洛方法的错误方法。原因是马尔可夫链本质上是顺序的,而 GPU 只有在您可以并行化算法时才适用。设计并行马尔可夫链蒙特卡罗(MCMC)方法非常困难。