MATLAB 的蒙特卡洛模拟有时需要大量的 CPU 使用,在某些情况下可能需要很长时间。MATLAB 提供了一些结构以实现并行处理。但我一直对使用图形卡(GPU)的处理器很感兴趣......
是否有使用 GPU 以在 MATLAB 中执行并行处理的教程?
MATLAB 的蒙特卡洛模拟有时需要大量的 CPU 使用,在某些情况下可能需要很长时间。MATLAB 提供了一些结构以实现并行处理。但我一直对使用图形卡(GPU)的处理器很感兴趣......
是否有使用 GPU 以在 MATLAB 中执行并行处理的教程?
请参阅 MathWorks 示例在 GPU 上计算 Mandelbrot 集,该示例解释了如何使用并行计算工具箱在 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)方法非常困难。