在单独的核心上运行Mathematica进程

时间:2014-06-05 18:36:47

标签: parallel-processing wolfram-mathematica

我需要执行几项操作,每次操作一次需要几个小时才能完成。由于我有8个核心,我应该能够一次性运行它们而不是一个接一个地运行它们。但是,我找不到一种方法来指示mathematica自动单独运行它们或者在核心X上运行它们,我手动设置它们去哪里它们不重叠。这些是完全独立的函数,恰好需要一次运行,而不是任何类型的类似操作组,如在并行性的文档示例中所见(在这种情况下,函数是一堆复杂的无关符号积分,但是如果答案是非特定的,那么答案将更具普遍性。)

1 个答案:

答案 0 :(得分:0)

这在某种程度上取决于你在做什么,但通常你可以使用ParallelizeParallelTableParallelEvaluate等命令。在ParallelEvaluate命令中,你有指定内核的选项。

您可以用非常基本的方式比较这三个:

Clear[a]
a[n_] := a[n] = RandomInteger[10^75]; (*Adjust exponent at your discretion*)
Timing[FactorInteger /@ Table[a[n], {n, 1, 4}]]
Timing[Parallelize[FactorInteger /@ Table[a[n], {n, 1, 4}]]]
%[[2]]==%%[[2]]

如果您要使用ParallelEvaluate,那么您将启动独立运行的内核(这会使上述的头对头比较有点棘手)。

因此,对于您的应用程序,您可能会遇到以下情况:

h[n_][x_] := Integrate[E^t*t^n, {t, 0, n x}]
Timing[Table[FullSimplify[h[n][x]], {n, 1, 10}]]
Timing[ParallelTable[FullSimplify[h[n][x]], {n, 1, 10}]]

即使在这个简单的例子中,你也可以看到相当快的速度。