是否可以使用其他计算机的 RAM 来协助 Mathematica Light Grid Server 7 并行计算?如果可以,如何操作?
答案1
Mathematica 通过使用多个内核(多个进程)实现并行计算,这些内核甚至可以在不同的机器上运行。有一个主内核供您直接交互,还有多个子内核(由主内核控制)负责工作。
简而言之,你不能拥有直接的访问其他机器的内存,但您可以通过在每台机器上运行子内核来充分利用它。
您没有提到要解决的具体问题,但如果您需要并行处理一台机器内存无法容纳的大型数据集,您可以这样做:
首先,将数据分成可管理的块。
让每个子内核加载一个块并对其进行处理,获得不占用大量内存的结果。
有多种方法可以控制子内核,从完全手动到完全自动。
ParallelEvaluate[]
将为您提供对每个内核的细粒度控制。您还可以使用变量$KernelID$
来决定应将数据集的哪一部分加载到每个内核中。请参阅文档了解详情。最后,结果要么被收集到主内核(如果结果不占用太多内存),要么从每个子内核写入磁盘(如果结果与输入数据一样大)
重要的一点:为了明确防止某些变量在内核之间自动共享(并占用宝贵的内存),您需要将它们放入单独的上下文中,如此处及其链接所述。