如何在 Mathematica 中共享内存以进行并行计算?

如何在 Mathematica 中共享内存以进行并行计算?

是否可以使用其他计算机的 RAM 来协助 Mathematica Light Grid Server 7 并行计算?如果可以,如何操作?

答案1

Mathematica 通过使用多个内核(多个进程)实现并行计算,这些内核甚至可以在不同的机器上运行。有一个主内核供您直接交互,还有多个子内核(由主内核控制)负责工作。

简而言之,你不能拥有直接的访问其他机器的内存,但您可以通过在每台机器上运行子内核来充分利用它。

您没有提到要解决的具体问题,但如果您需要并行处理一台机器内存无法容纳的大型数据集,您可以这样做:

  1. 首先,将数据分成可管理的块。

  2. 让每个子内核加载一个块并对其进行处理,获得不占用大量内存的结果。

    有多种方法可以控制子内核,从完全手动到完全自动。 ParallelEvaluate[]将为您提供对每个内核的细粒度控制。您还可以使用变量$KernelID$来决定应将数据集的哪一部分加载到每个内核中。请参阅文档了解详情。

  3. 最后,结果要么被收集到主内核(如果结果不占用太多内存),要么从每个子内核写入磁盘(如果结果与输入数据一样大)

重要的一点:为了明确防止某些变量在内核之间自动共享(并占用宝贵的内存),您需要将它们放入单独的上下文中,如此处及其链接所述

相关内容